@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.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: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}:root{--bg: #f6efe1;--surface: #fffdf8;--surface-2: #efe6d3;--ink: #3a2e20;--ink-2: #5f5140;--muted: #94826a;--line: #ece1cd;--line-strong: #dccdb1;--tint: #ffffff;--brand: #3f8a63;--brand-2: #2f6b4b;--brand-deep: #2f6b4b;--brand-soft: #dcebe0;--accent: #c47a32;--accent-soft: #f6e6d2;--glow: #e0954a;--logo: #d76a43;--danger: #c0392b;--ring: rgba(63, 138, 99, .18);--font-body: "Hanken Grotesk Variable", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-display: "Fraunces Variable", Georgia, "Times New Roman", serif;--radius: 18px;--radius-sm: 12px;--ease: cubic-bezier(.3, .8, .3, 1);--shadow-sm: 0 1px 2px rgba(58, 46, 32, .06), 0 4px 10px -6px rgba(58, 46, 32, .18);--shadow: 0 1px 2px rgba(58, 46, 32, .05), 0 10px 24px -14px rgba(58, 46, 32, .28);--shadow-lg: 0 2px 8px rgba(58, 46, 32, .07), 0 26px 56px -18px rgba(58, 46, 32, .32);--cat-travel: #3f847a;--cat-school: #5468b8;--cat-activity: #c1861f;--cat-medical: #bf4d67;--cat-birthday: #94559f;--cat-other: #8a7c68}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;touch-action:manipulation}body{font-family:var(--font-body);background:var(--bg);color:var(--ink);line-height:1.6;font-size:15.5px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;touch-action:manipulation}h1,h2,h3{font-family:var(--font-display);line-height:1.12;font-weight:600;letter-spacing:-.015em}a{color:var(--brand-2);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}::selection{background:var(--brand-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:none;border-radius:999px;padding:.6rem 1.4rem;background:linear-gradient(180deg,var(--brand),var(--brand-deep));color:#fff;font-weight:700;font-size:.95rem;cursor:pointer;text-decoration:none;box-shadow:inset 0 1px #fff3,0 4px 12px -4px #2f6b4b80;transition:transform .2s var(--ease),box-shadow .2s ease,filter .15s ease}.btn:hover{text-decoration:none;transform:translateY(-1px);filter:brightness(1.05);box-shadow:inset 0 1px #fff3,0 8px 18px -6px #2f6b4b8c}.btn:active{transform:translateY(0);filter:brightness(.98)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn.secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);box-shadow:var(--shadow-sm)}.btn.secondary:hover{background:var(--surface-2);filter:none}.btn.ghost{background:transparent;color:var(--ink-2);box-shadow:none;border:none}.btn.ghost:hover{background:var(--surface-2);transform:none;filter:none}.btn.small{padding:.38rem .95rem;font-size:.85rem}.btn.danger{background:transparent;color:var(--danger);box-shadow:none}.btn.danger:hover{background:#fbeae7;transform:none;filter:none}input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],select,textarea{width:100%;padding:.58rem .85rem;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3.5px var(--ring)}input::placeholder,textarea::placeholder{color:#b3aa9c}label{font-size:.78rem;font-weight:700;color:var(--muted);display:block;margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.05em}input[type=checkbox]{width:1.15rem;height:1.15rem;accent-color:var(--accent);cursor:pointer}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.4rem}.field{margin-bottom:1rem}.error-msg{color:var(--danger);font-size:.9rem;margin:.5rem 0}.check-inline{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--muted);margin:.25rem 0 1rem;cursor:pointer}.check-inline input{width:auto;margin:0}.verify-banner{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;background:#fff4e2;border:1px solid #f0d3a3;color:#7a5a1e;border-radius:12px;padding:.7rem .9rem;margin-bottom:1rem}.verify-banner .vb-text{flex:1;font-size:.92rem;min-width:12rem}.verify-banner .vb-ico{display:inline-block;width:15px;height:15px;vertical-align:-3px}.verify-banner .vb-actions{display:flex;align-items:center;gap:.4rem}.muted{color:var(--muted)}.small{font-size:.86rem}.badge{display:inline-block;font-size:.7rem;font-weight:800;padding:.12rem .6rem;border-radius:999px;text-transform:capitalize;letter-spacing:.01em;color:var(--cat-other);background:color-mix(in srgb,var(--cat-other) 12%,var(--tint));border:1px solid color-mix(in srgb,var(--cat-other) 22%,var(--tint))}.badge.travel{color:var(--cat-travel);background:color-mix(in srgb,var(--cat-travel) 12%,var(--tint));border-color:color-mix(in srgb,var(--cat-travel) 24%,var(--tint))}.badge.school{color:var(--cat-school);background:color-mix(in srgb,var(--cat-school) 12%,var(--tint));border-color:color-mix(in srgb,var(--cat-school) 24%,var(--tint))}.badge.activity{color:var(--cat-activity);background:color-mix(in srgb,var(--cat-activity) 14%,var(--tint));border-color:color-mix(in srgb,var(--cat-activity) 26%,var(--tint))}.badge.medical{color:var(--cat-medical);background:color-mix(in srgb,var(--cat-medical) 12%,var(--tint));border-color:color-mix(in srgb,var(--cat-medical) 24%,var(--tint))}.badge.birthday{color:var(--cat-birthday);background:color-mix(in srgb,var(--cat-birthday) 12%,var(--tint));border-color:color-mix(in srgb,var(--cat-birthday) 24%,var(--tint))}.badge.role{color:var(--ink-2);background:var(--surface-2);border-color:var(--line)}.auth-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem;position:relative;overflow:hidden}.auth-page:before{content:"";position:absolute;inset:-20% -10% auto;height:70%;background:radial-gradient(38% 45% at 22% 30%,rgba(224,149,74,.1),transparent 70%),radial-gradient(34% 42% at 78% 22%,rgba(63,138,99,.1),transparent 70%);pointer-events:none}.auth-card{width:100%;max-width:430px;padding:2rem;position:relative}.auth-card h1{margin-bottom:.3rem;font-size:1.7rem;font-family:var(--font-display)}.auth-card .sub{color:var(--muted);margin-bottom:1.4rem}.wordmark{font-weight:800;font-size:1.2rem;color:var(--ink);letter-spacing:-.02em;text-decoration:none;position:relative;display:inline-flex;align-items:center;gap:.34em}.wordmark .wm>span{color:var(--logo)}a.wordmark:hover{text-decoration:none}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1.25rem;padding:.65rem 1.25rem;background:color-mix(in srgb,var(--bg) 96%,transparent);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.app-nav{display:flex;gap:.2rem;flex:1;flex-wrap:wrap}.app-nav a{display:inline-flex;align-items:center;gap:.4rem;padding:.38rem .95rem;border-radius:999px;color:var(--muted);font-weight:700;font-size:.92rem;transition:color .15s,background .15s}.app-nav a .navicon{display:none}.app-nav a.router-link-exact-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm);border:1px solid var(--line);padding:calc(.38rem - 1px) calc(.95rem - 1px)}.app-nav a:hover{text-decoration:none;color:var(--ink)}.whoami{display:flex;align-items:center;gap:.6rem}.avatar{width:2rem;height:2rem;border-radius:999px;background:linear-gradient(160deg,var(--brand),var(--brand-deep));color:#fff;font-weight:800;font-size:.8rem;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 1px #ffffff40}@media(max-width:760px){.topbar{gap:.6rem;padding:.5rem .95rem;position:static}.whoami{margin-left:auto;gap:.45rem}.whoami .fam-name{display:none}.app-nav{position:fixed;left:.7rem;right:.7rem;bottom:calc(.55rem + env(safe-area-inset-bottom));z-index:40;flex:none;gap:.15rem;justify-content:space-around;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:0 10px 30px -8px #3c2d1e47,0 2px 6px -2px #3c2d1e1f;padding:.4rem .3rem}.app-nav a{flex:1 1 0;flex-direction:column;gap:3px;padding:.4rem 0;border-radius:14px;font-size:.63rem;font-weight:700;color:var(--muted);transition:color .15s ease,background .15s ease}.app-nav a .navicon{display:block}.app-nav a.router-link-exact-active{color:var(--brand);background:var(--brand-soft);box-shadow:none;border:none;padding:.4rem 0}}.main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:1.75rem 1.25rem 4rem}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.4rem;flex-wrap:wrap}.page-head h1{font-size:1.8rem;font-family:var(--font-display);font-weight:600}.settings-tabs{display:flex;gap:.4rem;margin-bottom:1.25rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:2px}.settings-tabs::-webkit-scrollbar{display:none}.stab{flex:0 0 auto;padding:.45rem 1rem;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-weight:700;font-size:.88rem;cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}.stab:hover{color:var(--ink)}.stab.active{background:var(--brand-soft);color:var(--brand-2);border-color:transparent}.page-sub{color:var(--muted);font-size:.92rem;margin-top:.15rem}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:start}.grid-2>*{min-width:0}@media(max-width:760px){.grid-2{grid-template-columns:1fr}}.manual-card{padding-top:1rem;padding-bottom:1rem}.manual-card>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.4rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--muted)}.manual-card>summary::-webkit-details-marker{display:none}.manual-card>summary:after{content:"›";margin-left:auto;font-size:1.15rem;line-height:1;transition:transform .2s ease}.manual-card[open]>summary:after{transform:rotate(90deg)}.section-title{display:flex;align-items:center;gap:.4rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:var(--muted);margin-bottom:.7rem}.event-row{display:flex;align-items:flex-start;gap:.7rem;padding:.6rem 0;border-bottom:1px dashed var(--line)}.event-row:last-child{border-bottom:none}.event-row .when{font-size:.78rem;font-weight:700;color:var(--muted);min-width:4.75rem;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:.12rem}.event-row .badge{flex:none;margin-top:.02rem}.event-row .grow{flex:1}.ev-body{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .45rem}.ev-title{font-weight:600;color:var(--ink);line-height:1.3}.ev-who{color:var(--muted);font-size:.85rem}.range-chip{font-size:.7rem;font-weight:700;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.04rem .5rem;white-space:nowrap;font-variant-numeric:tabular-nums}.srow{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;border-bottom:1px dashed var(--line)}.srow:last-child{border-bottom:none}.srow-body{flex:1 1 auto;min-width:0}.srow-title{font-weight:600;overflow-wrap:anywhere;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.srow-meta{margin-top:.1rem}.srow-actions{flex:0 0 auto;display:flex;gap:.4rem;align-items:center;margin-left:auto}.srow-actions select{width:auto;min-width:0}.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;padding:0;flex:0 0 auto;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.icon-btn:hover{color:var(--ink);background:var(--surface-2)}.icon-btn.danger:hover{color:var(--danger);border-color:#f0c9c0;background:#fbeae7}.icon-btn[data-tip]:after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%) translateY(3px);background:var(--ink);color:#fff;font-size:.72rem;font-weight:600;letter-spacing:.01em;padding:.22rem .5rem;border-radius:7px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease;z-index:30}.icon-btn[data-tip]:hover:after,.icon-btn[data-tip]:focus-visible:after{opacity:1;transform:translate(-50%) translateY(0)}.empty{color:var(--muted);font-size:.88rem;padding:.9rem 1rem;background:var(--surface-2);border-radius:var(--radius-sm);border:1px dashed var(--line-strong)}.quick-add{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.quick-add input[type=text]{flex:1;min-width:180px}.quick-add select,.quick-add input[type=date]{width:auto;min-width:0;max-width:100%}.cal-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line)}.cal-head{background:var(--surface-2);padding:.5rem;text-align:center;font-size:.68rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.cal-cell{background:var(--surface);min-height:104px;min-width:0;overflow:hidden;padding:.35rem;cursor:pointer;transition:background .12s}.cal-cell:nth-child(7n-1),.cal-cell:nth-child(7n){background:#fdfaf5}.cal-cell:hover{background:var(--brand-soft)}.cal-cell.other-month{background:var(--surface-2)}.cal-cell.other-month .daynum{color:#c0b7a8}.cal-cell .daynum{font-size:.78rem;font-weight:700;color:var(--ink-2);display:inline-flex;width:1.55rem;height:1.55rem;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}.cal-cell.today .daynum{background:linear-gradient(180deg,var(--brand),var(--brand-deep));color:#fff;border-radius:999px;box-shadow:0 2px 6px -1px #2f6b4b80}.chip{display:block;font-size:.72rem;font-weight:700;border-radius:6px;padding:.05rem .4rem .05rem .5rem;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--cat-other);background:color-mix(in srgb,var(--cat-other) 11%,var(--tint));border-left:3px solid var(--cat-other);transition:transform .1s}.chip:hover{transform:translate(1px)}.chip.travel{color:var(--cat-travel);background:color-mix(in srgb,var(--cat-travel) 11%,var(--tint));border-left-color:var(--cat-travel)}.chip.school{color:var(--cat-school);background:color-mix(in srgb,var(--cat-school) 11%,var(--tint));border-left-color:var(--cat-school)}.chip.activity{color:var(--cat-activity);background:color-mix(in srgb,var(--cat-activity) 13%,var(--tint));border-left-color:var(--cat-activity)}.chip.medical{color:var(--cat-medical);background:color-mix(in srgb,var(--cat-medical) 11%,var(--tint));border-left-color:var(--cat-medical)}.chip.birthday{color:var(--cat-birthday);background:color-mix(in srgb,var(--cat-birthday) 11%,var(--tint));border-left-color:var(--cat-birthday)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#221f1b66;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50;animation:fade-in .18s ease}.modal{width:100%;max-width:500px;max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);border-radius:20px;padding:1.75rem;animation:rise-in .22s cubic-bezier(.2,.9,.3,1)}.modal h2{font-family:var(--font-display);font-weight:600}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px) scale(.985)}}.check-row{display:flex;align-items:center;gap:.65rem;padding:.45rem 0;border-bottom:1px dashed var(--line);transition:opacity .15s}.check-row:last-child{border-bottom:none}.check-row .grow{flex:1}.check-row.done{opacity:.7}.check-row.done .grow{text-decoration:line-through;color:var(--muted)}.check-row.notif-row{align-items:flex-start;text-transform:none;letter-spacing:normal}.check-row.notif-row .grow{font-size:.92rem;font-weight:600;color:var(--ink);line-height:1.35}.check-row.notif-row .grow .small{font-weight:400}.inline-form{display:flex;gap:.5rem;margin-top:.85rem}.inline-form input[type=text]{flex:1}table.plain{width:100%;border-collapse:collapse}table.plain th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:.45rem .5rem;border-bottom:1px solid var(--line)}table.plain td{padding:.6rem .5rem;border-bottom:1px dashed var(--line)}.copy-box{display:flex;gap:.5rem;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.55rem .8rem;font-family:ui-monospace,SF Mono,monospace;font-size:.78rem;overflow-wrap:anywhere}.cal-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.cal-buttons .btn{flex:1 1 auto;justify-content:center;min-width:9rem}.status-strip{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1.25rem}.status-pill{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .95rem;border-radius:999px;font-size:.9rem;font-weight:600;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.status-pill .dot{width:.55rem;height:.55rem;border-radius:999px}.status-pill.school .dot{background:var(--cat-school)}.status-pill.school{color:var(--cat-school);background:color-mix(in srgb,var(--cat-school) 8%,var(--tint));border-color:color-mix(in srgb,var(--cat-school) 22%,var(--tint))}.status-pill.holiday .dot{background:var(--brand)}.status-pill.holiday{color:var(--brand-2);background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,var(--tint))}.status-pill.muted-pill{color:var(--muted);background:var(--surface);border-color:var(--line)}.status-pill.muted-pill .dot{background:var(--muted)}.chip.holiday{color:var(--brand-2);background:var(--brand-soft);border-left-color:var(--brand);font-weight:800}.cal-cell.is-holiday{background:color-mix(in srgb,var(--brand) 5%,var(--tint))}.badge.holiday{color:var(--brand-2);background:var(--brand-soft)}.cal-cell.is-school-break{background:color-mix(in srgb,var(--cat-school) 7%,var(--tint))}.cal-cell.is-school-break.is-holiday{background:color-mix(in srgb,var(--brand) 6%,color-mix(in srgb,var(--cat-school) 7%,var(--tint)))}.chip.school-break{color:var(--cat-school);background:color-mix(in srgb,var(--cat-school) 12%,var(--tint));border-left-color:var(--cat-school);font-weight:800}.badge.school-break{color:var(--cat-school);background:color-mix(in srgb,var(--cat-school) 12%,var(--tint))}.dot-color{width:.75rem;height:.75rem;border-radius:999px;flex:0 0 auto;box-shadow:inset 0 0 0 1px #00000014}.review-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;margin-bottom:.35rem}.review-label-ico{display:flex;align-items:center;gap:.35rem}.review-label-ico .uiicon{width:14px;height:14px}.review-row{margin-bottom:.4rem;align-items:center}.review-row input[type=date]{flex:0 0 auto}.ai-badge{display:inline-flex;align-items:center;gap:.32rem;padding:.22rem .62rem;border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#fff;white-space:nowrap;vertical-align:middle;background:linear-gradient(110deg,#7b5cff,#b559e6,#c8553d,#7b5cff);background-size:300% 100%;animation:ai-shimmer 7s linear infinite;box-shadow:0 2px 10px #7b5cff47}.ai-badge .spark{display:inline-flex;animation:ai-twinkle 2.4s ease-in-out infinite}.ai-badge .spark .uiicon{width:12px;height:12px}@keyframes ai-shimmer{to{background-position:300% 0}}@keyframes ai-twinkle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.78) rotate(-8deg)}}@media(prefers-reduced-motion:reduce){.ai-badge,.ai-badge .spark{animation:none}}.ai-import{border:1px dashed color-mix(in srgb,#7b5cff 45%,var(--line));border-radius:12px;padding:.9rem;background:linear-gradient(180deg,color-mix(in srgb,#7b5cff 5%,var(--surface)),var(--surface))}.ai-head{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:480px}.cal-agenda{display:none;margin-top:1rem}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:2px;gap:2px}.seg-btn{border:none;background:transparent;cursor:pointer;padding:.4rem .7rem;border-radius:8px;line-height:1;font-size:.9rem;color:var(--muted);display:inline-flex;align-items:center;gap:.3rem}.seg-btn.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #3c2d1e14;font-weight:700}.seg-btn .uiicon{width:16px;height:16px}.btn.icon-only{display:inline-flex;align-items:center;justify-content:center}.btn.icon-only .uiicon{width:17px;height:17px}.chip-ico{display:inline-block;width:11px;height:11px;vertical-align:-1px;margin-right:3px}.chip-rec{display:inline-block;width:10px;height:10px;vertical-align:-1px;margin-left:3px;opacity:.7}.cal-view-list .cal-wrap{display:none}.cal-view-list .cal-agenda{display:block;margin-top:0}.show-earlier{border:none;background:transparent;color:var(--brand-2);font-weight:700;font-size:.85rem;cursor:pointer;padding:.35rem 0;margin:.1rem 0 .25rem}.show-earlier:hover{text-decoration:underline}.cal-agenda .agenda-day{margin-top:1rem;font-weight:800;font-size:.82rem;color:var(--ink-2)}.cal-agenda .agenda-day:first-of-type{margin-top:.25rem}@media(max-width:640px){input[type=text],input[type=email],input[type=password],input[type=date],input[type=time],select,textarea{font-size:16px;padding:.65rem .9rem}.btn{padding:.65rem 1.35rem}.btn.small{padding:.5rem 1rem}.main{padding:1.1rem .9rem calc(92px + env(safe-area-inset-bottom))}.card{padding:1.1rem;border-radius:14px}.page-head{margin-bottom:1rem}.page-head h1{font-size:1.45rem}.quick-add input[type=text]{flex-basis:100%;order:-1}.quick-add>input[type=date],.quick-add>input[type=time],.quick-add>select{flex:1 1 100%;width:100%}.srow{flex-wrap:wrap}.srow-actions{justify-content:flex-end}.cal-cell{min-height:58px;padding:.25rem}.cal-cell .daynum{width:1.35rem;height:1.35rem;font-size:.72rem}.chip{display:inline-block;font-size:0;width:7px;height:7px;padding:0;margin:3px 2px 0 0;border-radius:999px;border-left:none;background:currentColor;vertical-align:middle}.cal-agenda{display:block}.cal-agenda .event-row{cursor:pointer}.modal-backdrop{align-items:flex-end;padding:0}.modal{max-width:none;max-height:90vh;border-radius:22px 22px 0 0;padding:1.5rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom));animation:sheet-in .26s cubic-bezier(.2,.9,.3,1)}body:has(.modal-backdrop) .app-nav{display:none}.modal .grid-2{grid-template-columns:1fr;gap:0}.modal .field{margin-bottom:.85rem}.copy-box{flex-wrap:wrap}.copy-box .btn{margin-left:auto}.cal-buttons{flex-wrap:wrap}}@keyframes sheet-in{0%{transform:translateY(40px);opacity:.6}}@media(min-width:641px)and (max-width:1024px){.main{max-width:860px}.cal-cell{min-height:92px}.modal{max-width:560px}}@media(min-width:641px)and (max-width:760px){.grid-2{grid-template-columns:1fr}}.appshell{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.appbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);border-bottom:1px solid var(--line);-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px)}.appbar-inner{max-width:620px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem}.appbar .wordmark{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-display);font-weight:700;font-size:1.2rem;letter-spacing:-.02em;color:var(--ink)}.appbar .wordmark .wm>span{color:var(--logo)}.appbar-right{display:flex;align-items:center;gap:.55rem}.iconbtn{width:40px;height:40px;border-radius:13px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);display:grid;place-items:center;box-shadow:var(--shadow-sm);cursor:pointer;transition:color .15s,background .15s}.iconbtn:hover{color:var(--ink);background:var(--surface-2);text-decoration:none}.iconbtn .uiicon{width:20px;height:20px}.avatar-btn{display:inline-flex}.avatar-btn:hover{text-decoration:none}.appmain{flex:1;width:100%;max-width:620px;margin:0 auto;padding:.6rem 1rem calc(104px + env(safe-area-inset-bottom))}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(.6rem + env(safe-area-inset-bottom));width:calc(100% - 1.4rem);max-width:560px;display:flex;align-items:flex-end;justify-content:space-around;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:0 12px 34px -10px #3c2d1e52,0 2px 6px -2px #3c2d1e1f;padding:.4rem;z-index:40}.tab{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:.4rem 0;border-radius:14px;color:var(--muted);font-size:.65rem;font-weight:700;letter-spacing:.01em;background:none;border:0;cursor:pointer;text-decoration:none;transition:color .15s,background .15s}.tab:hover{text-decoration:none;color:var(--ink-2)}.tab .uiicon{width:23px;height:23px}.tab.router-link-exact-active{color:var(--brand)}.fab{flex:none;width:54px;height:54px;border-radius:18px;margin:-26px .2rem 0;border:0;color:#fff;display:grid;place-items:center;cursor:pointer;background:linear-gradient(150deg,var(--brand),var(--brand-deep));box-shadow:0 10px 20px -6px #2f6b4b8c,inset 0 1px #ffffff40;transition:transform .12s ease,filter .12s ease}.fab:hover{filter:brightness(1.05);transform:translateY(-1px)}.fab:active{transform:translateY(0);filter:brightness(.97)}.fab .uiicon{width:26px;height:26px}.screen-head{padding:.5rem 0 .2rem}.screen-head .eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.screen-head h1{font-family:var(--font-display);font-weight:500;letter-spacing:-.015em;font-size:1.85rem;margin-top:.15rem;line-height:1.08}.screen-head h1 .dim{color:var(--muted);font-weight:600}.rail-head{display:flex;align-items:center;justify-content:space-between;margin:1.1rem 0 .7rem}.rail-head .rh-label{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.rail-head a{font-size:.85rem;font-weight:700}.presence{display:flex;gap:14px;overflow-x:auto;padding:8px 6px;margin:-6px -6px -2px;scrollbar-width:none}.presence::-webkit-scrollbar{display:none}.person{position:relative;flex:none;width:62px;display:flex;flex-direction:column;align-items:center;gap:7px;background:none;border:0;padding:0;cursor:pointer}.person .p-av{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;font-size:1.15rem;font-weight:800;color:#fff}.person .p-av.all{background:var(--surface);color:var(--brand);box-shadow:inset 0 0 0 2px var(--line-strong)}.person .p-av.all .uiicon{width:24px;height:24px}.person .p-ring{position:absolute;top:-5px;left:50%;transform:translate(-50%);width:64px;height:64px;border-radius:50%;border:2.5px solid transparent;transition:border-color .15s ease}.person.active .p-ring{border-color:currentColor}.person .p-name{font-size:.78rem;font-weight:600;color:var(--ink-2);white-space:nowrap}.person.active .p-name{color:var(--ink);font-weight:700}.sec-head{display:flex;align-items:baseline;justify-content:space-between;margin:1.5rem 0 .8rem}.sec-head h2{font-family:var(--font-display);font-size:1.25rem;font-weight:600;letter-spacing:-.01em}.sec-head .sh-note{font-size:.82rem;font-weight:700;color:var(--muted)}.upnext{display:block;width:100%;text-align:left;border:0;cursor:pointer;color:var(--ink);border-radius:var(--radius);padding:1.1rem 1.15rem 1.1rem 1.4rem;position:relative;overflow:hidden;background:var(--surface);box-shadow:var(--shadow);transition:transform .25s var(--ease),box-shadow .25s ease}.upnext:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--heroc, var(--brand))}.upnext:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.upnext:active{transform:scale(.99)}.upnext .un-top{display:flex;align-items:center;gap:8px}.upnext .un-label{display:inline-flex;align-items:center;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--heroc, var(--brand))}.upnext .un-label i{position:relative;width:8px;height:8px;border-radius:50%;background:currentColor}.upnext .un-label.soon i:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;animation:ping 2.2s ease-out infinite}.upnext .un-at{margin-left:auto;font-size:.8rem;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.upnext h3{font-family:var(--font-display);font-size:1.45rem;font-weight:500;letter-spacing:-.015em;margin:.55rem 0 .25rem;line-height:1.15;color:var(--ink)}.upnext .hero-meta{font-size:.92rem;font-weight:500;color:var(--ink-2)}.upnext .hero-who{display:inline-flex;align-items:center;gap:8px;margin-top:.85rem;background:var(--surface-2);padding:5px 13px 5px 5px;border-radius:999px;font-size:.84rem;font-weight:700}.upnext .hero-who .mini-av{width:24px;height:24px;font-size:.66rem}@keyframes ping{0%{transform:scale(1);opacity:.5}to{transform:scale(3.2);opacity:0}}.mini-av{border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;flex:none;width:30px;height:30px;font-size:.75rem}.av-stack{display:inline-flex;align-items:center}.av-stack .mini-av+.mini-av{margin-left:-10px;box-shadow:0 0 0 2px var(--surface)}.allday{display:flex;flex-wrap:wrap;gap:8px;margin:.2rem 0 0}.allday .ad-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:6px 12px;border-radius:999px;font-size:.82rem;font-weight:700;background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow-sm)}.allday .ad-chip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.allday .ad-chip .d{width:8px;height:8px;border-radius:3px;flex:none}.timeline{position:relative;--tl-gutter: 72px;--tl-spine: 56px;--tl-node: 14px;--tl-time-w: 46px;padding-left:var(--tl-gutter);margin-top:.9rem}.timeline:before{content:"";position:absolute;left:calc(var(--tl-spine) - 1px);top:13px;bottom:13px;width:2px;background:var(--line-strong);border-radius:2px}.tl-item{position:relative;margin-bottom:12px}.tl-time{position:absolute;left:calc(-1 * var(--tl-gutter));top:6px;width:var(--tl-time-w);text-align:right;font-size:.78rem;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums;line-height:1.15}.tl-time small{display:block;font-size:.62rem;font-weight:600;color:var(--muted)}.tl-node{position:absolute;top:6px;left:calc(var(--tl-spine) - var(--tl-gutter) - (var(--tl-node) / 2));width:var(--tl-node);height:var(--tl-node);border-radius:50%;background:var(--surface);border:3px solid currentColor;z-index:2}.tl-card{width:100%;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);padding:.75rem .8rem;box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:.7rem;cursor:pointer;transition:transform .1s ease,box-shadow .15s ease}.tl-card:hover{box-shadow:var(--shadow)}.tl-card:active{transform:scale(.99)}.tl-card .tl-body{flex:1;min-width:0}.tl-card .tl-title{font-family:var(--font-display);font-size:1.04rem;font-weight:500;letter-spacing:-.01em;color:var(--ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.tl-card .tl-title .uiicon{width:14px;height:14px;color:var(--muted);flex:none}.tl-card .tl-sub{font-size:.8rem;color:var(--ink-2);margin-top:3px;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.tl-card .tl-sub .dur{color:var(--muted);font-weight:600}.glance{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:.4rem}.gcard{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);padding:.9rem;box-shadow:var(--shadow-sm);text-align:left;display:block;color:inherit;cursor:pointer;transition:box-shadow .15s ease}.gcard:hover{box-shadow:var(--shadow);text-decoration:none}.gcard .g-top{display:flex;align-items:center;justify-content:space-between}.gcard .g-ic{width:34px;height:34px;border-radius:10px;display:grid;place-items:center}.gcard .g-ic .uiicon{width:18px;height:18px}.gcard .g-chev{color:var(--muted)}.gcard .g-chev .uiicon{width:18px;height:18px}.gcard .g-num{font-family:var(--font-display);font-size:1.6rem;font-weight:700;letter-spacing:-.02em;margin-top:.6rem;font-variant-numeric:tabular-nums}.gcard .g-label{font-size:.82rem;color:var(--ink-2);font-weight:600;margin-top:1px}.listcard{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin-bottom:1rem}.listcard .lc-head{padding:.9rem 1rem .75rem;display:flex;align-items:center;gap:.75rem;border-bottom:1px solid var(--line)}.lc-head .lc-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none}.lc-head .lc-ic .uiicon{width:20px;height:20px}.lc-head h3{font-family:var(--font-display);font-size:1.05rem;font-weight:700;letter-spacing:-.01em}.lc-head .lc-sub{font-size:.8rem;color:var(--ink-2);font-weight:600;margin-top:1px}.lc-head .lc-actions{margin-left:auto;display:flex;gap:.25rem}.litem{display:flex;align-items:center;gap:.8rem;padding:.72rem 1rem;margin:0;border:0;border-bottom:1px solid var(--line);width:100%;text-align:left;background:none;color:inherit;cursor:pointer;text-transform:none;letter-spacing:normal}.litem:last-of-type{border-bottom:0}.litem .lcheck{width:24px;height:24px;border-radius:8px;border:2px solid var(--line-strong);flex:none;display:grid;place-items:center;transition:background .12s,border-color .12s}.litem .lcheck .uiicon{width:14px;height:14px;color:#fff;opacity:0}.litem.done .lcheck{background:var(--accent);border-color:var(--accent)}.litem.done .lcheck .uiicon{opacity:1}.litem .ltext{flex:1;font-size:.98rem;font-weight:600}.litem .ltext .lqty{color:var(--muted);font-weight:500;font-size:.85rem}.litem.done .ltext{color:var(--muted);text-decoration:line-through}.litem .l-del{opacity:0}.litem:hover .l-del{opacity:1}.ladd{display:flex;align-items:center;gap:.55rem;padding:.75rem 1rem}.ladd input{border:0;background:none;padding:.35rem 0;box-shadow:none}.ladd input:focus{box-shadow:none}.ladd .ladd-ic{color:var(--brand);flex:none}.ladd .ladd-ic .uiicon{width:18px;height:18px}.weekstrip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:.5rem 0 .4rem}.wday{border:0;background:none;padding:.5rem 0;border-radius:14px;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ink);cursor:pointer}.wday .wdow{font-size:.68rem;font-weight:700;color:var(--muted);letter-spacing:.03em}.wday .wnum{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;width:34px;height:34px;display:grid;place-items:center;border-radius:50%}.wday .wdots{display:flex;gap:3px;height:6px}.wday .wdots i{width:5px;height:5px;border-radius:50%}.wday.sel .wnum{background:var(--brand);color:#fff}.wday.today .wdow{color:var(--brand)}.section-title .uiicon{width:15px;height:15px;flex:none;color:var(--muted)}.srow-title .uiicon{display:inline-block!important;width:15px;height:15px;vertical-align:-2px;margin-right:.35rem;color:var(--muted)}.st-inline{display:inline-block!important;width:13px;height:13px;vertical-align:-2px;color:var(--cat-school)}.school-row{display:flex;flex-wrap:wrap;gap:8px;margin:.9rem .2rem 0}.school-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 12px;border-radius:999px;font-size:.8rem;font-weight:700;background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow-sm)}.school-chip .sc-dot{width:8px;height:8px;border-radius:50%;flex:none}.cal-topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.5rem 0 0}.cal-nav{display:flex;align-items:center;gap:.4rem;flex:none}.cal-controls{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:.9rem 0 1rem;flex-wrap:wrap}.famcard{display:flex;align-items:center;gap:.9rem;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:.9rem 1rem;margin-bottom:.8rem;text-align:left;width:100%;cursor:pointer;color:inherit;transition:box-shadow .15s}.famcard:hover{box-shadow:var(--shadow);text-decoration:none}.famcard .fc-av{width:48px;height:48px;font-size:1.05rem}.famcard .fc-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.famcard .fc-name{font-family:var(--font-display);font-weight:700;font-size:1.05rem;letter-spacing:-.01em;color:var(--ink)}.famcard .fc-role{font-size:.8rem;color:var(--muted);font-weight:600;text-transform:capitalize}.famcard .fc-next{font-size:.85rem;color:var(--ink-2);margin-top:.15rem}.famcard .fc-chev{color:var(--muted);flex:none}.famcard .fc-chev .uiicon{width:18px;height:18px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#1e140c6b;display:flex;align-items:flex-end;justify-content:center;animation:sheetfade .2s ease}@keyframes sheetfade{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:620px;background:var(--surface);color:var(--ink);border-radius:26px 26px 0 0;box-shadow:var(--shadow-lg);padding:.6rem 1.2rem calc(1.6rem + env(safe-area-inset-bottom));max-height:88vh;overflow-y:auto;animation:sheetup .3s cubic-bezier(.22,.9,.3,1)}@keyframes sheetup{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet .grabber{width:40px;height:5px;border-radius:3px;background:var(--line-strong);margin:.4rem auto 1rem}.sheet h2{font-family:var(--font-display);font-weight:600;font-size:1.35rem;margin-bottom:.9rem}.sheet-hint{font-size:.85rem;color:var(--ink-2);line-height:1.5;margin:.9rem .1rem 0}@media(prefers-reduced-motion:reduce){.sheet,.sheet-backdrop,.upnext .un-label i:after{animation:none!important}}@media(max-width:640px){.modal-backdrop{align-items:flex-end;padding:0}.modal{width:100%;max-width:100%;border-radius:26px 26px 0 0;max-height:90vh}}@media(min-width:641px){.sheet-backdrop{align-items:center}.sheet{border-radius:var(--radius);max-height:84vh}}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #1a1611;--surface: #25201a;--surface-2: #302921;--ink: #f3ebdd;--ink-2: #cdbda6;--muted: #9d8b73;--line: #362e24;--line-strong: #4a3f31;--tint: #201b15;--brand: #5aa67d;--brand-2: #8fd0a9;--brand-deep: #3b7c59;--glow: #e8a65c;--logo: #e8845c;--ring: rgba(109, 187, 141, .22);--brand-soft: #1f3328;--accent: #e0a45e;--accent-soft: #3a2a17;--danger: #e5786e;--cat-travel: #5fb0a4;--cat-school: #8b9be6;--cat-activity: #e0b25a;--cat-medical: #e07a92;--cat-birthday: #c491d3;--cat-other: #b6a48c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 26px -14px rgba(0, 0, 0, .6);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 26px 56px -18px rgba(0, 0, 0, .7)}}:root[data-theme=dark]{color-scheme:dark;--bg: #1a1611;--surface: #25201a;--surface-2: #302921;--ink: #f3ebdd;--ink-2: #cdbda6;--muted: #9d8b73;--line: #362e24;--line-strong: #4a3f31;--tint: #201b15;--brand: #5aa67d;--brand-2: #8fd0a9;--brand-deep: #3b7c59;--glow: #e8a65c;--logo: #e8845c;--ring: rgba(109, 187, 141, .22);--brand-soft: #1f3328;--accent: #e0a45e;--accent-soft: #3a2a17;--danger: #e5786e;--cat-travel: #5fb0a4;--cat-school: #8b9be6;--cat-activity: #e0b25a;--cat-medical: #e07a92;--cat-birthday: #c491d3;--cat-other: #b6a48c;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 26px -14px rgba(0, 0, 0, .6);--shadow-lg: 0 2px 8px rgba(0, 0, 0, .5), 0 26px 56px -18px rgba(0, 0, 0, .7)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--danger-soft: #3a1f1c;--banner-bg: #33240f;--banner-line: #5a4020;--banner-ink: #e6c98d;--cell-alt: #2c231b}}:root[data-theme=dark]{--danger-soft: #3a1f1c;--banner-bg: #33240f;--banner-line: #5a4020;--banner-ink: #e6c98d;--cell-alt: #2c231b}:root{--danger-soft: #fbeae7;--banner-bg: #fff4e2;--banner-line: #f0d3a3;--banner-ink: #7a5a1e;--cell-alt: #fdfaf5}.btn.danger:hover{background:var(--danger-soft)}.icon-btn.danger:hover{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 35%,var(--tint))}.verify-banner{background:var(--banner-bg);border-color:var(--banner-line);color:var(--banner-ink)}.cal-cell:nth-child(7n-1),.cal-cell:nth-child(7n){background:var(--cell-alt)}.status-pill.holiday{border-color:color-mix(in srgb,var(--brand) 30%,var(--tint))}@property --hs-sky1{syntax: "<color>"; inherits: true; initial-value: #f5dfc0;}@property --hs-sky2{syntax: "<color>"; inherits: true; initial-value: #f6cda2;}@property --hs-sky3{syntax: "<color>"; inherits: true; initial-value: #f2b682;}@property --hs-glow{syntax: "<color>"; inherits: true; initial-value: #f5bd6e;}@property --hs-sun{syntax: "<color>"; inherits: true; initial-value: #f7c46c;}@property --hs-hill1{syntax: "<color>"; inherits: true; initial-value: #e8bd84;}@property --hs-hill2{syntax: "<color>"; inherits: true; initial-value: #d6a86a;}@property --hs-hill3{syntax: "<color>"; inherits: true; initial-value: #a2b477;}@property --hs-hill4{syntax: "<color>"; inherits: true; initial-value: #8ea464;}@property --hs-tree1{syntax: "<color>"; inherits: true; initial-value: #6b9656;}@property --hs-tree2{syntax: "<color>"; inherits: true; initial-value: #7aa362;}@property --hs-tree3{syntax: "<color>"; inherits: true; initial-value: #5f874d;}@property --hs-trunk{syntax: "<color>"; inherits: true; initial-value: #7e5236;}@property --hs-wall{syntax: "<color>"; inherits: true; initial-value: #fbf0e0;}@property --hs-roof{syntax: "<color>"; inherits: true; initial-value: #cc6448;}@property --hs-chim{syntax: "<color>"; inherits: true; initial-value: #ab5039;}@property --hs-door{syntax: "<color>"; inherits: true; initial-value: #7e5236;}@property --hs-cloud{syntax: "<color>"; inherits: true; initial-value: #fbdcc0;}@property --hs-smoke{syntax: "<color>"; inherits: true; initial-value: #efdcc2;}@property --hs-bird{syntax: "<color>"; inherits: true; initial-value: #b77e4f;}@property --hs-win{syntax: "<number>"; inherits: true; initial-value: .7;}@property --hs-stars{syntax: "<number>"; inherits: true; initial-value: 0;}@property --hs-birds{syntax: "<number>"; inherits: true; initial-value: .75;}@property --hs-clouds{syntax: "<number>"; inherits: true; initial-value: .55;}.sky-art{position:absolute;top:0;right:0;bottom:0;left:0;transition:--hs-sky1 1.4s ease,--hs-sky2 1.4s ease,--hs-sky3 1.4s ease,--hs-glow 1.4s ease,--hs-sun 1.4s ease,--hs-hill1 1.4s ease,--hs-hill2 1.4s ease,--hs-hill3 1.4s ease,--hs-hill4 1.4s ease,--hs-tree1 1.4s ease,--hs-tree2 1.4s ease,--hs-tree3 1.4s ease,--hs-trunk 1.4s ease,--hs-wall 1.4s ease,--hs-roof 1.4s ease,--hs-chim 1.4s ease,--hs-door 1.4s ease,--hs-cloud 1.4s ease,--hs-smoke 1.4s ease,--hs-bird 1.4s ease,--hs-win 1.4s ease,--hs-stars 1.6s ease,--hs-birds 1.2s ease,--hs-clouds 1.4s ease}.sky-art svg{display:block;width:100%;height:100%}.home-scene{position:relative;height:212px;margin:-.6rem -1rem 0;overflow:hidden}.home-scene .hs-fade{position:absolute;left:0;right:0;bottom:0;height:64px;background:linear-gradient(180deg,transparent,var(--bg))}@media(min-width:641px){.home-scene{margin:.4rem 0 0;height:236px;border-radius:24px 24px 0 0}}.sky-art[data-phase=dawn]{--hs-sky1: #e8d3dc;--hs-sky2: #f5dac8;--hs-sky3: #f8cda6;--hs-glow: #f9d0a4;--hs-sun: #f7bf8a;--hs-hill1: #e6c7a1;--hs-hill2: #d4b18a;--hs-hill3: #a9b98a;--hs-hill4: #95a877;--hs-tree1: #6f9a5c;--hs-tree2: #7ea869;--hs-tree3: #628c52;--hs-trunk: #8a5a3c;--hs-wall: #fbf1e6;--hs-roof: #cf6a4f;--hs-chim: #b5573e;--hs-door: #8a5a3c;--hs-cloud: #fff1ea;--hs-smoke: #f3e4d6;--hs-bird: #b98a6e;--hs-win: .35;--hs-stars: .12;--hs-birds: .7;--hs-clouds: .75}.sky-art[data-phase=day]{--hs-sky1: #b9d9e6;--hs-sky2: #d7eae6;--hs-sky3: #eef0dc;--hs-glow: #fff6d6;--hs-sun: #fff0bc;--hs-hill1: #d8d49b;--hs-hill2: #c3c98a;--hs-hill3: #a3c27a;--hs-hill4: #8db26a;--hs-tree1: #6fa25a;--hs-tree2: #80b168;--hs-tree3: #5f9150;--hs-trunk: #8a5a3c;--hs-wall: #fffaf2;--hs-roof: #d56d50;--hs-chim: #b5573e;--hs-door: #8a5a3c;--hs-cloud: #ffffff;--hs-smoke: #f4efe6;--hs-bird: #6f7f86;--hs-win: 0;--hs-stars: 0;--hs-birds: .7;--hs-clouds: .95}.sky-art[data-phase=dusk]{--hs-sky1: #f5dfc0;--hs-sky2: #f6cda2;--hs-sky3: #f2b682;--hs-glow: #f5bd6e;--hs-sun: #f7c46c;--hs-hill1: #e8bd84;--hs-hill2: #d6a86a;--hs-hill3: #a2b477;--hs-hill4: #8ea464;--hs-tree1: #6b9656;--hs-tree2: #7aa362;--hs-tree3: #5f874d;--hs-trunk: #7e5236;--hs-wall: #fbf0e0;--hs-roof: #cc6448;--hs-chim: #ab5039;--hs-door: #7e5236;--hs-cloud: #fbdcc0;--hs-smoke: #efdcc2;--hs-bird: #b77e4f;--hs-win: .7;--hs-stars: 0;--hs-birds: .75;--hs-clouds: .55}.sky-art[data-phase=night]{--hs-sky1: #1d2442;--hs-sky2: #313559;--hs-sky3: #574b66;--hs-glow: #574b66;--hs-sun: #574b66;--hs-hill1: #3b3f5d;--hs-hill2: #33384f;--hs-hill3: #2d3f37;--hs-hill4: #25342f;--hs-tree1: #2e4a36;--hs-tree2: #36553d;--hs-tree3: #294130;--hs-trunk: #3a2a20;--hs-wall: #c9bca4;--hs-roof: #7a483c;--hs-chim: #5c352b;--hs-door: #4a3424;--hs-cloud: #474a6b;--hs-smoke: #7c7d97;--hs-bird: #000000;--hs-win: 1;--hs-stars: 1;--hs-birds: 0;--hs-clouds: .4}.hs-sun,.hs-moon{transition:transform 1.6s var(--ease),opacity 1.2s ease}.sky-art[data-phase=dawn] .hs-sun{transform:translate(-190px,22px)}.sky-art[data-phase=day] .hs-sun{transform:translate(-80px,-92px)}.sky-art[data-phase=night] .hs-sun{transform:translate(40px,150px)}.sky-art.wide[data-phase=dawn] .hs-sun{transform:translate(-560px,6px)}.sky-art.wide[data-phase=day] .hs-sun{transform:translate(-140px,-200px)}.sky-art.wide[data-phase=night] .hs-sun{transform:translate(60px,260px)}.hs-moon{transform:translateY(-120px);opacity:0}.sky-art.wide .hs-moon{transform:translateY(-170px)}.sky-art[data-phase=night] .hs-moon{transform:none;opacity:1}.hs-stars{opacity:var(--hs-stars)}.hs-clouds{opacity:var(--hs-clouds)}.hs-birds{opacity:var(--hs-birds)}.hs-halo{opacity:var(--hs-win)}.hs-glow,.hs-halo-c{transform-box:fill-box;transform-origin:center;animation:hs-breathe 7s ease-in-out infinite alternate}.hs-halo-c{animation-duration:3.4s}@keyframes hs-breathe{to{transform:scale(1.07)}}.hs-stars circle{animation:hs-twinkle 3.2s ease-in-out infinite;animation-delay:var(--d, 0s)}@keyframes hs-twinkle{0%,to{opacity:1}50%{opacity:.25}}.hs-cloud-a{animation:hs-drift 38s ease-in-out infinite alternate}.hs-cloud-b{animation:hs-drift 46s ease-in-out infinite alternate-reverse}@keyframes hs-drift{0%{transform:translate(-26px)}to{transform:translate(26px)}}.hs-flock{animation:hs-fly 22s ease-in-out infinite alternate}@keyframes hs-fly{0%{transform:translate(-30px,4px)}to{transform:translate(40px,-6px)}}.hs-flap{transform-box:fill-box;transform-origin:center;animation:hs-flap 1.1s ease-in-out infinite}@keyframes hs-flap{50%{transform:scaleY(.55)}}.hs-puff{fill:var(--hs-smoke);transform-box:fill-box;transform-origin:center;opacity:0;animation:hs-puff 5.4s ease-out infinite;animation-delay:var(--d, 0s)}@keyframes hs-puff{0%{opacity:0;transform:translate(0) scale(.5)}15%{opacity:.8}to{opacity:0;transform:translate(10px,-38px) scale(1.7)}}.today-head{position:relative;z-index:1;margin-top:-.6rem;padding:0 .1rem}.today-head .eyebrow{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.today-head h1{font-family:var(--font-display);font-weight:500;font-size:1.95rem;line-height:1.06;letter-spacing:-.015em;margin-top:.2rem}.today-head h1 em{font-style:italic;color:var(--brand-2)}.today-head .today-sub{margin-top:.35rem;color:var(--ink-2);font-size:.98rem;font-weight:500;line-height:1.45}.tl-item{transition:opacity .6s ease}.tl-item.past{opacity:.5}.tl-item.past .tl-node{background:currentColor}.tl-item.next .tl-node:after,.tl-item.now .tl-node:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;border:2px solid currentColor;animation:ping 2.2s ease-out infinite}.tl-item.now .tl-node{background:currentColor}.tl-tag{display:inline-block;padding:1px 8px;border-radius:999px;font-family:var(--font-body);font-size:.64rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--brand-2);background:var(--brand-soft)}.person .p-av{transition:transform .2s var(--ease)}.person:active .p-av{transform:scale(.92)}.person.active .p-av{animation:pop .38s var(--ease)}@keyframes pop{40%{transform:scale(1.1)}}.rise{animation:rise .6s var(--ease) both;animation-delay:var(--d, 0s)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.sky-art,.sky-art *,.rise,.tl-item,.tl-node:after,.person .p-av,.upnext{animation:none!important;transition:none!important}.hs-puff{opacity:0}}
