@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display: "Fraunces Variable", "Georgia", serif;--font-body: "Figtree Variable", "Segoe UI", sans-serif;--radius-s: 8px;--radius-m: 14px;--radius-l: 22px;--dur: .22s;--ease: cubic-bezier(.33, 1, .68, 1);--evt-or: #c99a3f;--evt-lavande: #8b79d9;--evt-aurore: #d96c8a;--evt-foret: #4f9d6b;--evt-ocean: #4f86b8;--evt-braise: #c96b45}:root,:root[data-theme=dark]{color-scheme:dark;--bg: #0a0a18;--bg-deep: #060612;--elev: #12122a;--elev-2: #1a1a38;--ink: #eae7f8;--ink-dim: #9a94c4;--ink-faint: #625d8c;--line: rgba(170, 180, 220, .13);--line-strong: rgba(170, 180, 220, .26);--gold: #d9b36c;--gold-soft: rgba(217, 179, 108, .16);--silver: #aab4d4;--violet: #8b79d9;--violet-soft: rgba(139, 121, 217, .16);--today-halo: 0 0 0 1.5px var(--gold), 0 0 18px rgba(217, 179, 108, .35);--moon-lit: #e9dfc0;--moon-dark: #23233f;--shadow: 0 14px 40px rgba(0, 0, 0, .5);--scrim: rgba(6, 6, 18, .72);--danger: #d96c6c;--starfield-opacity: 1}:root[data-theme=light]{color-scheme:light;--bg: #f6f2e9;--bg-deep: #efe9dc;--elev: #fdfbf5;--elev-2: #ffffff;--ink: #2b2547;--ink-dim: #6f6899;--ink-faint: #a49ec4;--line: rgba(64, 55, 110, .13);--line-strong: rgba(64, 55, 110, .26);--gold: #a97f35;--gold-soft: rgba(169, 127, 53, .14);--silver: #7d87ab;--violet: #6a55c2;--violet-soft: rgba(106, 85, 194, .12);--today-halo: 0 0 0 1.5px var(--gold), 0 0 14px rgba(169, 127, 53, .3);--moon-lit: #f0e6c8;--moon-dark: #cfc8e6;--shadow: 0 14px 36px rgba(64, 55, 110, .16);--scrim: rgba(43, 37, 71, .4);--danger: #b84f4f;--starfield-opacity: .18}*{margin:0;padding:0;box-sizing:border-box}html{height:100%}body{min-height:100%;overflow-x:clip;background:var(--bg);background-image:radial-gradient(1200px 700px at 80% -10%,var(--violet-soft),transparent 60%),radial-gradient(900px 600px at -10% 110%,var(--gold-soft),transparent 55%);background-attachment:fixed;color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,.display{font-family:var(--font-display);font-weight:560;letter-spacing:.01em}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,select,textarea{font:inherit;color:var(--ink);background:var(--elev-2);border:1px solid var(--line-strong);border-radius:var(--radius-s);padding:8px 10px;width:100%}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:1px}::selection{background:var(--gold-soft)}*{scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;max-width:1180px;margin:0 auto;padding:0 clamp(10px,3vw,28px) calc(env(safe-area-inset-bottom,0px) + 10px);width:100%}.shell>main{flex:1;display:flex;flex-direction:column}.shell>main>section{flex:1}.topbar{display:flex;align-items:center;justify-content:space-between;padding:clamp(18px,3.5vh,30px) 2px 4px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 2px 6px}.toolbar-nav{display:flex;gap:4px;align-items:center}.toolbar-right{margin-left:auto}.brand{font-family:var(--font-display);font-size:21px;font-weight:620;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);-webkit-user-select:none;user-select:none}.brand .tilde{color:var(--ink-faint)}.header-title{display:flex;align-items:baseline;gap:10px}.header-title .month{font-family:var(--font-display);font-size:clamp(24px,5vw,34px);font-weight:560}.header-title .era{color:var(--ink-dim);font-size:15px}.header-nav{display:flex;gap:4px;align-items:center}.icon-btn{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;color:var(--ink-dim);font-size:17px;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.icon-btn:hover{background:var(--elev-2);color:var(--ink)}.pill-btn{padding:7px 14px;border-radius:999px;border:1px solid var(--line-strong);color:var(--ink-dim);font-size:13px;transition:all var(--dur) var(--ease)}.pill-btn:hover{color:var(--gold);border-color:var(--gold)}.new-btn{padding:9px 18px;border-radius:999px;background:linear-gradient(140deg,var(--gold),color-mix(in srgb,var(--gold) 60%,var(--violet)));color:#14101f;font-weight:600;font-size:13.5px;box-shadow:0 4px 14px #00000040;transition:filter var(--dur) var(--ease),transform var(--dur) var(--ease)}.new-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}.sys-switcher{position:relative}.sys-current{display:inline-flex;align-items:center;gap:6px}.sys-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:270px;background:var(--elev);border:1px solid var(--line-strong);border-radius:var(--radius-m);box-shadow:var(--shadow);padding:6px;display:flex;flex-direction:column;gap:2px;animation:rise .18s var(--ease) both}.sys-option{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--radius-s);text-align:left;transition:background var(--dur) var(--ease)}.sys-option:hover{background:var(--elev-2)}.sys-option.active{background:var(--gold-soft)}.sys-option .ico{font-size:19px;color:var(--gold);width:22px;text-align:center}.sys-option .lbl{display:flex;flex-direction:column}.sys-option .name{font-size:14px}.sys-option .today{font-size:11.5px;color:var(--ink-dim)}.pwd-field{position:relative}.pwd-field input{padding-right:42px}.pwd-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:var(--ink-dim)}.pwd-eye:hover{color:var(--ink);background:var(--elev-2)}.option-card{position:relative;padding-right:46px}.option-card .chev{position:absolute;right:8px;top:12px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:var(--ink-dim);transition:transform var(--dur) var(--ease),background var(--dur) var(--ease)}.option-card .chev:hover{background:var(--elev-2);color:var(--ink)}.option-card .chev.open{transform:rotate(180deg)}.option-card .head-row{display:flex;align-items:center;gap:10px}.option-card .head-row .ico{font-size:20px;color:var(--gold)}.option-card .details{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:13px;color:var(--ink-dim);line-height:1.6;animation:rise .2s var(--ease) both}.danger-zone{border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);border-radius:var(--radius-m);padding:14px 16px;display:flex;flex-direction:column;gap:10px}.danger-zone h3{color:var(--danger);font-size:15px}.btn-danger-solid{background:var(--danger);color:#fff;font-weight:600;padding:9px 18px;border-radius:999px;align-self:flex-start}.view-chips{display:flex;gap:6px;padding:4px 2px 14px;overflow-x:auto;scrollbar-width:none}.view-chips::-webkit-scrollbar{display:none}.chip{padding:7px 15px;border-radius:999px;font-size:13.5px;color:var(--ink-dim);border:1px solid transparent;white-space:nowrap;transition:all var(--dur) var(--ease)}.chip:hover{color:var(--ink)}.chip.active{color:var(--gold);border-color:var(--gold);background:var(--gold-soft)}.month-card{background:color-mix(in srgb,var(--elev) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius-l);padding:clamp(8px,2vw,20px);box-shadow:var(--shadow);animation:rise .34s var(--ease) both;display:flex;flex-direction:column}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.weekday-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:4px 0 8px}.weekday-row span{text-align:center;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}.day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:1fr;gap:4px;flex:1}.day-cell{min-height:clamp(56px,8vh,140px);border-radius:var(--radius-s);border:1px solid transparent;background:color-mix(in srgb,var(--elev-2) 45%,transparent);padding:5px 6px;display:flex;flex-direction:column;gap:2px;text-align:left;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),transform var(--dur) var(--ease);overflow:hidden}.day-cell:hover{border-color:var(--line-strong);transform:translateY(-1px)}.day-cell.today{box-shadow:var(--today-halo);background:var(--gold-soft)}.day-cell.out{opacity:.38}.day-cell.out:hover{opacity:.7}.day-cell .num-row{display:flex;align-items:center;justify-content:space-between;gap:4px}.day-cell .num{font-family:var(--font-display);font-size:clamp(14px,2.4vw,18px);font-weight:560}.day-cell .greg{font-size:10px;color:var(--ink-faint);line-height:1.2}.day-cell .marker{font-size:10px;color:var(--gold);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.evt-dots{display:flex;gap:3px;flex-wrap:wrap;margin-top:auto}.evt-dot{width:6px;height:6px;border-radius:50%}.evt-line{font-size:10.5px;border-radius:4px;padding:1px 5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--evt-color, var(--violet));background:color-mix(in srgb,var(--evt-color, var(--violet)) 18%,transparent)}.special-banner{margin-top:8px;border:1px dashed var(--gold);border-radius:var(--radius-m);background:var(--gold-soft);padding:12px 16px;display:flex;align-items:center;gap:12px;cursor:pointer}.special-banner .name{font-family:var(--font-display);font-size:17px;color:var(--gold);letter-spacing:.06em}.special-banner .greg{color:var(--ink-dim);font-size:12.5px}.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.mini-month{background:color-mix(in srgb,var(--elev) 82%,transparent);border:1px solid var(--line);border-radius:var(--radius-m);padding:10px;text-align:left;transition:transform var(--dur) var(--ease),border-color var(--dur) var(--ease)}.mini-month:hover{transform:translateY(-2px);border-color:var(--gold)}.mini-month .name{font-family:var(--font-display);font-size:13.5px;color:var(--violet);margin-bottom:6px;display:flex;justify-content:space-between;align-items:center}.mini-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.mini-day{aspect-ratio:1;display:grid;place-items:center;font-size:8.5px;color:var(--ink-faint);border-radius:3px}.mini-day.today{background:var(--gold);color:var(--bg);font-weight:700}.day-header{display:flex;flex-direction:column;gap:2px;padding:6px 2px 14px}.day-header .big{font-family:var(--font-display);font-size:clamp(26px,6vw,38px);font-weight:560}.day-header .sub{color:var(--ink-dim);font-size:14px}.sun-strip{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-dim);padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-m);background:color-mix(in srgb,var(--elev) 82%,transparent);margin-bottom:14px}.timeline{position:relative;border:1px solid var(--line);border-radius:var(--radius-m);background:color-mix(in srgb,var(--elev) 82%,transparent);overflow:hidden}.timeline .hour{height:48px;border-top:1px solid var(--line);font-size:10px;color:var(--ink-faint);padding:2px 6px}.timeline .hour:first-child{border-top:none}.timeline .evt-block{position:absolute;left:56px;right:8px;border-radius:6px;border-left:3px solid var(--evt-color, var(--violet));background:color-mix(in srgb,var(--evt-color, var(--violet)) 22%,var(--elev-2));padding:3px 8px;font-size:12px;overflow:hidden;cursor:pointer;min-height:18px}.allday-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:8px;overflow-x:auto;padding-bottom:6px}.week-col{border:1px solid var(--line);border-radius:var(--radius-m);background:color-mix(in srgb,var(--elev) 82%,transparent);padding:8px;min-height:220px}.week-col.today{box-shadow:var(--today-halo)}.week-col .col-head{text-align:center;padding-bottom:6px;border-bottom:1px solid var(--line);margin-bottom:6px;cursor:pointer}.week-col .col-head .n{font-family:var(--font-display);font-size:19px}.week-col .col-head .w{font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em}.agenda-day{margin-bottom:18px}.agenda-day .head{display:flex;align-items:baseline;gap:10px;padding-bottom:6px;border-bottom:1px solid var(--line);margin-bottom:8px}.agenda-day .head .d{font-family:var(--font-display);font-size:17px}.agenda-day .head .g{color:var(--ink-faint);font-size:12px}.agenda-item{display:flex;gap:12px;align-items:center;padding:8px 10px;border-radius:var(--radius-s);cursor:pointer;transition:background var(--dur) var(--ease);width:100%;text-align:left}.agenda-item:hover{background:var(--elev-2)}.agenda-item .time{color:var(--ink-dim);font-size:12.5px;min-width:88px}.agenda-item .bar{width:3px;align-self:stretch;border-radius:2px;background:var(--evt-color, var(--violet))}.sky-hero{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 0 18px;text-align:center}.sky-hero .phase-name{font-family:var(--font-display);font-size:26px}.sky-hero .illum{color:var(--ink-dim);font-size:14px}.sky-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.sky-card{border:1px solid var(--line);border-radius:var(--radius-m);background:color-mix(in srgb,var(--elev) 82%,transparent);padding:16px}.sky-card h3{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:10px;font-weight:560}.sky-card .row{display:flex;justify-content:space-between;padding:5px 0;font-size:14px;border-bottom:1px dashed var(--line)}.sky-card .row:last-child{border-bottom:none}.sky-card .row .k{color:var(--ink-dim)}.sky-card .row .v{font-variant-numeric:tabular-nums}.settings{max-width:560px;display:flex;flex-direction:column;gap:22px}.settings h2{font-size:20px}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12.5px;color:var(--ink-dim);letter-spacing:.06em;text-transform:uppercase}.option-cards{display:grid;gap:8px}.option-card{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid var(--line-strong);border-radius:var(--radius-m);padding:12px 14px;transition:all var(--dur) var(--ease)}.option-card:hover{border-color:var(--gold)}.option-card.active{border-color:var(--gold);background:var(--gold-soft)}.option-card .t{font-family:var(--font-display);font-size:16px}.option-card .d{font-size:12.5px;color:var(--ink-dim)}.seg{display:inline-flex;align-self:flex-start;width:fit-content;border:1px solid var(--line-strong);border-radius:999px;overflow:hidden}.seg button{padding:7px 16px;font-size:13px;color:var(--ink-dim)}.seg button.active{background:var(--gold-soft);color:var(--gold)}.fab{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(20px,calc(env(safe-area-inset-bottom) + 16px));width:58px;height:58px;border-radius:50%;background:linear-gradient(140deg,var(--gold),color-mix(in srgb,var(--gold) 60%,var(--violet)));color:#14101f;font-size:27px;display:grid;place-items:center;box-shadow:0 8px 26px #00000059;transition:transform var(--dur) var(--ease);z-index:40}.fab:hover{transform:scale(1.06) rotate(90deg)}@media(min-width:900px){.fab{display:none}}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;display:flex;align-items:flex-end;justify-content:center}@media(min-width:640px){.modal-scrim{align-items:center}}.modal{background:var(--elev);border:1px solid var(--line-strong);border-radius:var(--radius-l) var(--radius-l) 0 0;width:min(560px,100%);max-height:92vh;overflow-y:auto;padding:22px 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;animation:rise .26s var(--ease) both}@media(min-width:640px){.modal{border-radius:var(--radius-l)}}.modal h2{font-size:20px}.modal .row-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.color-row{display:flex;gap:8px}.color-swatch{width:30px;height:30px;border-radius:50%;border:2px solid transparent;transition:transform var(--dur) var(--ease)}.color-swatch.active{border-color:var(--ink);transform:scale(1.12)}.modal-actions{display:flex;gap:10px;justify-content:flex-end;align-items:center}.btn-primary{background:var(--gold);color:#14101f;font-weight:600;padding:10px 22px;border-radius:999px;transition:filter var(--dur) var(--ease)}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{color:var(--ink-dim);padding:10px 14px}.btn-danger{color:var(--danger);margin-right:auto;padding:10px 0}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.switch-row input{width:auto}.welcome{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px}.welcome-card{max-width:480px;display:flex;flex-direction:column;gap:18px;text-align:center;animation:rise .5s var(--ease) both}.welcome-card .logo{font-family:var(--font-display);font-size:38px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}.welcome-card p{color:var(--ink-dim)}.empty-note{color:var(--ink-faint);text-align:center;padding:30px 0;font-style:italic}.footer{display:flex;gap:8px;justify-content:center;align-items:baseline;flex-wrap:wrap;padding:22px 8px 10px;font-size:11.5px;color:var(--ink-faint)}.cookie-link{color:var(--violet);text-decoration:underline;text-underline-offset:2px;font-size:inherit}.cookie-link:hover{color:var(--gold)}.cookie-banner{position:fixed;left:12px;right:12px;margin:0 auto;bottom:max(14px,env(safe-area-inset-bottom));z-index:70;max-width:640px;display:flex;align-items:center;gap:14px;padding:13px 18px;background:var(--elev);border:1px solid var(--line-strong);border-radius:var(--radius-m);box-shadow:var(--shadow);font-size:13px;color:var(--ink-dim);animation:rise .4s var(--ease) both}.cookie-banner .btn-primary{flex-shrink:0}.legal .legal-block h3{font-size:14px;color:var(--gold);margin:14px 0 4px}.legal .legal-block p{font-size:13.5px;color:var(--ink-dim);line-height:1.7}.legal a{color:var(--violet)}.legal a:hover{color:var(--gold)}.legal code{background:var(--elev-2);padding:1px 5px;border-radius:4px;font-size:12px}
