body{margin:0}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:18px}.season-winter{--bg:#ebe5e0;--bg2:#ddd5ce;--accent:#5b8fc7;--accent2:#3d5a80;--text:#2a1f1a;--text-sub:#7a6960;--card:#fffcfaeb;--dot:#5b8fc7;--today-bg:#c7b8ad;--today-fg:#2a1f1a;--header-bg:#5b8fc7;--header-fg:#fff;--shadow:#5b8fc738}.season-spring{--bg:#faf5f8;--bg2:#f0e8f0;--accent:#c896d8;--accent2:#9d6fb8;--text:#3a1f35;--text-sub:#9b7a8a;--card:#fffafcf0;--dot:#c896d8;--today-bg:#f0d5e8;--today-fg:#5a1f4a;--header-bg:#c896d8;--header-fg:#fff;--shadow:#c896d838}.season-summer{--bg:#fffdf5;--bg2:#fdf8eb;--accent:#d4a574;--accent2:#a67e4c;--text:#4a3520;--text-sub:#8b7355;--card:#fffcf5f2;--dot:#d4a574;--today-bg:#f5ddb0;--today-fg:#6a3a00;--header-bg:#d4a574;--header-fg:#fff;--shadow:#d4a5743d}.season-fall{--bg:#f9eee5;--bg2:#f0e0d0;--accent:#c97f3e;--accent2:#a85a2a;--text:#3a2415;--text-sub:#8a6540;--card:#fffaf5eb;--dot:#c97f3e;--today-bg:#f5d9c0;--today-fg:#6a2810;--header-bg:#c97f3e;--header-fg:#fff;--shadow:#c97f3e3d}.theme-halloween{--bg:#1a0a2e;--bg2:#2d1044;--accent:#ff6b1a;--accent2:#c40;--text:#f5e6d0;--text-sub:#c8a070;--card:#280f3ceb;--dot:#ff6b1a;--today-bg:#4a1a00;--today-fg:#f94;--header-bg:#c40;--header-fg:#fff;--shadow:#ff6b1a4d}.theme-christmas{--bg:#f5faf5;--bg2:#e8f5e8;--accent:#c0392b;--accent2:#922b21;--text:#1a3a1a;--text-sub:#5a7a5a;--card:#ffffffeb;--dot:#c0392b;--today-bg:#fde8e6;--today-fg:#922b21;--header-bg:#c0392b;--header-fg:#fff;--shadow:#c0392b38}.theme-valentine{--bg:#fff0f5;--bg2:#ffe0ec;--accent:#e91e8c;--accent2:#c0146e;--text:#3a0a20;--text-sub:#9a4a70;--card:#fff5faf0;--dot:#e91e8c;--today-bg:#ffd0e8;--today-fg:#8a0048;--header-bg:#e91e8c;--header-fg:#fff;--shadow:#e91e8c40}.splash{background:radial-gradient(ellipse 65% 45% at 50% 50%, color-mix(in srgb, var(--accent) 20%, transparent), transparent 70%), linear-gradient(160deg, var(--bg) 0%, var(--bg2) 100%);justify-content:center;align-items:center;min-height:100svh;animation:.5s fadeIn;display:flex}.splash-text{color:var(--accent2);text-align:center;letter-spacing:.01em;padding:0 1.5rem;font-family:Dancing Script,Georgia,cursive;font-size:clamp(2.2rem,9vw,3.6rem);animation:1.4s cubic-bezier(.34,1.56,.64,1) forwards heartbeat}@keyframes heartbeat{0%{opacity:0;transform:scale(.8)}45%{opacity:1;transform:scale(1.08)}65%{transform:scale(.96)}82%{transform:scale(1.03)}to{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes floatUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.app{background:repeating-linear-gradient(90deg, transparent, transparent 3px, #ffffff0a 3px, #ffffff0a 6px), linear-gradient(160deg, var(--bg) 0%, var(--bg2) 100%);justify-content:center;align-items:flex-start;min-height:100svh;padding:1.5rem 1rem 2rem;animation:.5s fadeIn;display:flex;position:relative;overflow:hidden}.app-inner{z-index:1;width:100%;max-width:480px;position:relative}.app-top{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding:0 .25rem;display:flex}.app-title{color:var(--text);white-space:nowrap;text-shadow:0 1px 4px color-mix(in srgb, var(--accent) 30%, transparent);font-family:Dancing Script,Georgia,cursive;font-size:clamp(1.5rem,5.5vw,2rem);font-weight:700;animation:.6s cubic-bezier(.34,1.56,.64,1) both floatUp}.app-clock{flex-direction:column;align-items:flex-end;gap:.1rem;animation:.6s cubic-bezier(.34,1.56,.64,1) .1s both floatUp;display:flex}.clock-time{color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.03em;font-family:Nunito,sans-serif;font-size:clamp(1.1rem,4.5vw,1.45rem);font-weight:600}.clock-date{color:var(--text-sub);text-transform:capitalize;text-align:right;font-family:Nunito,sans-serif;font-size:clamp(.7rem,2.6vw,.85rem)}.calendar{background:var(--card);box-shadow:0 2px 8px #0000000f, 0 12px 40px var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #0000000a;border-radius:1.5rem;animation:.7s cubic-bezier(.34,1.56,.64,1) .2s both floatUp;overflow:hidden}.cal-header{background:linear-gradient(135deg, var(--header-bg) 0%, color-mix(in srgb, var(--header-bg) 78%, #000) 100%);color:var(--header-fg);text-transform:capitalize;justify-content:space-between;align-items:center;padding:1rem 1.25rem;font-family:Dancing Script,Georgia,cursive;font-size:clamp(1.25rem,5vw,1.55rem);font-weight:700;display:flex}.cal-header button{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;min-width:2.75rem;min-height:2.75rem;font-family:sans-serif;font-size:clamp(1.8rem,6vw,2.2rem);line-height:1;transition:background .15s,transform .15s;display:flex}.cal-header button:disabled{opacity:.2;cursor:default}.cal-header button:not(:disabled):active{background:#ffffff38;transform:scale(.92)}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;padding:.75rem .5rem 1.25rem;display:grid}.cal-weekday{text-align:center;color:var(--text-sub);letter-spacing:.05em;text-transform:uppercase;padding-bottom:.6rem;font-family:Nunito,sans-serif;font-size:clamp(.6rem,2.2vw,.72rem);font-weight:700}.cal-day{aspect-ratio:1;cursor:default;color:#ccc;-webkit-user-select:none;user-select:none;animation:dayAppear .4s calc(var(--day-i,0) * 18ms) both;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;font-family:Nunito,sans-serif;font-size:clamp(.88rem,3.2vw,1.05rem);transition:background .22s,transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s;display:flex;position:relative}@keyframes dayAppear{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.cal-day.past{color:var(--text)}.cal-day.future{color:#d0d0d0}.cal-day.today{background:linear-gradient(135deg, var(--today-bg) 0%, color-mix(in srgb, var(--today-bg) 68%, var(--accent) 32%) 100%);color:var(--today-fg);box-shadow:0 0 0 2px var(--accent), 0 0 0 5px color-mix(in srgb, var(--accent) 22%, transparent);font-weight:700;animation:.5s cubic-bezier(.34,1.56,.64,1) both dayAppear,3s ease-in-out 1s infinite todayPulse}@keyframes todayPulse{0%,to{box-shadow:0 0 0 2px var(--accent), 0 0 0 5px color-mix(in srgb, var(--accent) 22%, transparent)}50%{box-shadow:0 0 0 2px var(--accent), 0 0 0 9px color-mix(in srgb, var(--accent) 10%, transparent)}}.cal-day.clickable{cursor:pointer}.cal-day.clickable:active{background:color-mix(in srgb, var(--accent) 28%, transparent);transform:scale(.91)}@media (hover:hover){.cal-day.clickable:hover{background:color-mix(in srgb, var(--accent) 16%, transparent);transform:scale(1.1)}.cal-header button:not(:disabled):hover{background:#ffffff38;transform:scale(1.12)}}.cal-day.birthday{border:2px dashed color-mix(in srgb, var(--accent2) 60%, transparent)}.cal-day.birthday .day-num{color:var(--accent2);font-weight:700}@keyframes birthdayBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.dot{border-radius:50%;width:7px;height:7px;position:absolute;bottom:4px}.dot--new{background:var(--dot);box-shadow:0 0 6px color-mix(in srgb, var(--dot) 80%, transparent);animation:1.6s ease-in-out infinite dotPulse}@keyframes dotPulse{0%,to{opacity:1;box-shadow:0 0 6px color-mix(in srgb, var(--dot) 80%, transparent);transform:scale(1)}50%{opacity:.85;box-shadow:0 0 12px color-mix(in srgb, var(--dot) 60%, transparent);transform:scale(1.5)}}.dot--seen{background:color-mix(in srgb, var(--text-sub) 40%, transparent);box-shadow:none;opacity:.5;animation:none}.modal-backdrop{z-index:200;background:#00000061;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal{background:#fefbf8;border:1px solid #0000000d;border-radius:1.75rem 1.75rem 0 0;width:100%;max-width:520px;max-height:90svh;padding:1.5rem 1.75rem 2.5rem;animation:.3s cubic-bezier(.34,1.56,.64,1) slideUp;position:relative;overflow-y:auto;box-shadow:0 -4px 12px #0000000f,0 -12px 48px #0000001f}@keyframes slideUp{0%{opacity:0;transform:translateY(80px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-close{background:color-mix(in srgb, var(--accent,#b07cc6) 12%, white);border:1px solid color-mix(in srgb, var(--accent,#b07cc6) 20%, transparent);cursor:pointer;width:2.2rem;height:2.2rem;color:var(--accent2,#9060b0);border-radius:50%;justify-content:center;align-items:center;font-size:.9rem;transition:background .15s;display:flex;position:absolute;top:1.1rem;right:1.1rem}.modal-close:active{background:color-mix(in srgb, var(--accent,#b07cc6) 22%, white)}.modal-date{color:var(--accent,#b07cc6);text-transform:capitalize;margin-bottom:1rem;font-family:Dancing Script,Georgia,cursive;font-size:1rem;font-weight:700}.modal-media{object-fit:contain;border-radius:1rem;width:100%;max-height:260px;margin-bottom:1rem}.modal-content{color:#2a2a2a;font-family:Nunito,Georgia,sans-serif;font-size:clamp(1.05rem,4vw,1.2rem);line-height:1.75}.modal-caption{color:#b09080;margin-top:.75rem;font-family:Nunito,sans-serif;font-size:.88rem;font-style:italic}.modal--wallpaper{background-position:50%;background-repeat:no-repeat;background-size:cover;padding:0;overflow:hidden}.modal-wallpaper-overlay{pointer-events:none;z-index:0;background:linear-gradient(#00000026 0%,#00000059 50%,#000000b8 100%);position:absolute;inset:0}.modal-content-wrap{z-index:1;padding:1.5rem 1.75rem 2.5rem;position:relative}.modal:not(.modal--wallpaper):before{content:"";background:color-mix(in srgb, var(--accent,#b07cc6) 40%, transparent);border-radius:2px;width:2.5rem;height:4px;margin:0 auto 1.5rem;display:block}.modal--wallpaper .modal-date{color:#ffffffd9}.modal--wallpaper .modal-content{color:#fff;text-shadow:0 1px 4px #00000080}.modal--wallpaper .modal-caption{color:#ffffffa6}.modal--wallpaper .modal-close{color:#fff;background:#00000059;border-color:#fff3;top:.75rem;right:.75rem}.welcome-modal{text-align:center}.welcome-title{color:var(--accent,#b07cc6);margin-bottom:.65rem;font-family:Dancing Script,Georgia,cursive;font-size:clamp(1.7rem,6vw,2.2rem);font-weight:700}.welcome-body{color:#4a3a30;margin-bottom:1.25rem;font-family:Nunito,sans-serif;font-size:clamp(.95rem,3.5vw,1.05rem);line-height:1.6}.welcome-list{text-align:left;color:#3a2a20;background:linear-gradient(135deg, color-mix(in srgb, var(--accent,#b07cc6) 9%, transparent) 0%, color-mix(in srgb, var(--accent,#b07cc6) 4%, transparent) 100%);border-left:4px solid var(--accent,#b07cc6);border-radius:0 .75rem .75rem 0;flex-direction:column;gap:.8rem;margin-bottom:1.25rem;padding:1rem 1.25rem;font-family:Nunito,sans-serif;font-size:clamp(.93rem,3.4vw,1.04rem);line-height:1.55;list-style:none;display:flex}.welcome-hint{color:#b0a090;margin-bottom:1.5rem;font-family:Nunito,sans-serif;font-size:clamp(.8rem,3vw,.9rem);font-style:italic}.welcome-btn{background:var(--accent,#b07cc6);color:#fff;cursor:pointer;width:100%;box-shadow:0 4px 18px color-mix(in srgb, var(--accent,#b07cc6) 45%, transparent);border:none;border-radius:2.5rem;padding:.95rem 2.5rem;font-family:Nunito,sans-serif;font-size:clamp(1rem,4vw,1.15rem);font-weight:700;transition:all .25s cubic-bezier(.34,1.56,.64,1)}.welcome-btn:active{filter:brightness(.92);transform:scale(.96)}@media (hover:hover){.welcome-btn:hover{box-shadow:0 8px 26px color-mix(in srgb, var(--accent,#b07cc6) 55%, transparent);filter:brightness(1.07);transform:translateY(-3px)}}.snowflakes{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.flake{color:#c4d9ed;filter:drop-shadow(0 0 2px #5b8fc733);animation:linear infinite snowfall;position:absolute;top:-2rem}@keyframes snowfall{0%{transform:translateY(-2rem)rotate(0)}to{transform:translateY(110vh)rotate(360deg)}}.leaves{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.leaf{animation:linear infinite leaffall;position:absolute;top:-2rem}@keyframes leaffall{0%{transform:translateY(-2rem)rotate(0)translate(0)}50%{transform:translateY(55vh)rotate(180deg)translate(35px)}to{transform:translateY(110vh)rotate(360deg)translate(-15px)}}.pumpkins{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.pumpkin{animation:linear infinite pumpkinfall;position:absolute;top:-2rem}@keyframes pumpkinfall{0%{transform:translateY(-2rem)rotate(0)translate(0)}40%{transform:translateY(45vh)rotate(120deg)translate(25px)}to{transform:translateY(110vh)rotate(300deg)translate(-20px)}}.hearts{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.heart{animation:linear infinite heartrise;position:absolute;top:-2rem}@keyframes heartrise{0%{opacity:0;transform:translateY(110vh)scale(.8)translate(0)}10%{opacity:1}50%{transform:translateY(50vh)scale(1.1)translate(20px)}90%{opacity:1}to{opacity:0;transform:translateY(-2rem)scale(.9)translate(-10px)}}.cal-day.holiday .day-num{color:var(--accent2);font-weight:700}.day-badge{margin-top:-1px;font-size:clamp(.44rem,1.6vw,.54rem);line-height:1;animation:2.5s ease-in-out infinite birthdayBounce}.holiday-badge{animation:3s ease-in-out infinite holidayWiggle}@keyframes holidayWiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}.theme-halloween .app{background:radial-gradient(80% 50% at 50% 100%,#ff6b1a1f,#0000),linear-gradient(#1a0a2e 0%,#2d1044 100%)}.theme-halloween .cal-day.today{text-shadow:0 0 8px #ff6b1acc}.theme-christmas .app{background:radial-gradient(60% 40% at 30% 20%,#c0392b1a,#0000),radial-gradient(50% 35% at 70% 80%,#2e7d321a,#0000),linear-gradient(160deg,#f5faf5 0%,#e8f5e8 100%)}.theme-christmas .cal-header{background:linear-gradient(135deg,#c0392b 0%,#27ae60 100%)}.theme-valentine .app{background:radial-gradient(70% 50%,#e91e8c14,#0000),linear-gradient(160deg,#fff0f5 0%,#ffe0ec 100%)}.signature{text-align:center;color:var(--text-sub);opacity:.7;letter-spacing:.02em;margin-top:1.1rem;font-family:Dancing Script,cursive;font-size:clamp(.78rem,2.8vw,.92rem);animation:.8s .5s both floatUp}.cal-header button:focus-visible,.modal-close:focus-visible,.welcome-btn:focus-visible{outline:3px solid var(--accent,#b07cc6);outline-offset:3px}@media (prefers-reduced-motion:reduce){.splash-text,.app-title,.app-clock,.calendar,.cal-day{opacity:1;animation:none;transform:none}.splash-text{animation:.3s forwards fadeIn}.modal,.dot--new,.dot--seen,.birthday-icon{animation:none}.snowflakes,.leaves{display:none}}@media (width>=600px){.app{align-items:center;padding:2rem}.modal-backdrop{align-items:center;padding:1rem}.modal{border-radius:1.75rem;max-width:440px;animation:.28s cubic-bezier(.34,1.56,.64,1) pop}.modal:before{display:none}.welcome-modal{border-radius:1.75rem}}@keyframes pop{0%{opacity:0;transform:scale(.88)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}
