@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e1aab0933260df4d-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/b7387a63dd068245-s.woff2) format("woff2");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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/36966cca54120369-s.p.woff2) format("woff2");unicode-range:u+00??,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:Space Grotesk Fallback;src:local("Arial");ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.00%;size-adjust:109.69%}.__className_6b9622{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.__variable_6b9622{--font-display:"Space Grotesk","Space Grotesk Fallback"}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");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;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");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;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");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;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");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;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,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:Hanken Grotesk Fallback;src:local("Arial");ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.00%;size-adjust:100.94%}.__className_c8454b{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.__variable_c8454b{--font-sans:"Hanken Grotesk","Hanken Grotesk Fallback"}:root{--bg:#0e0f12;--surface:#15171b;--surface-2:#1b1e23;--surface-3:#23272d;--surface-hover:#20242a;--border:#282d34;--border-soft:#1f242a;--text:#edeef0;--text-dim:#a4abb3;--text-faint:#717880;--text-mute:#565d65;--ink:#edeef0;--ink-press:#cfd2d6;--on-ink:#14161a;--accent:#7c8794;--src-personal:#8b929b;--src-team:#2f9e8f;--danger:#e0524e;--danger-press:#c2443f;--danger-soft:rgba(224,82,78,0.12);--danger-line:rgba(224,82,78,0.4);--danger-fg:#f1a7a4;--ok:#3aa564;--ok-soft:rgba(58,165,100,0.16);--ok-fg:#74d39b;--warn:#e6c965;--warn-soft:rgba(242,194,0,0.1);--warn-line:rgba(242,194,0,0.35);--r-card:14px;--r-md:10px;--r-sm:7px;--sidebar-w:244px;--space-0-5:2px;--space-1:4px;--space-1-5:6px;--space-2:8px;--space-2-5:10px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--gap:var(--space-4);--text-2xs:11px;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:19px;--text-2xl:22px;--text-3xl:25px;--text-4xl:30px;--font-fallback:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--shadow-pop:0 12px 32px -8px rgba(0,0,0,0.55),0 0 0 1px var(--border);color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:var(--font-sans),var(--font-fallback);background:var(--bg);color:var(--text);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-family:var(--font-display),var(--font-fallback);font-weight:600;letter-spacing:-.02em;line-height:1.15}.bar-row,.day-num,.stat-num,.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.eyebrow{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:9px 14px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font:inherit;font-size:var(--text-base);font-weight:500;cursor:pointer;transition:background .13s ease,border-color .13s ease,transform .05s ease}.btn:hover{background:var(--surface-hover);border-color:var(--surface-3)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--ink);border-color:var(--ink);color:var(--on-ink);font-weight:600}.btn-primary:hover{background:var(--ink-press);border-color:var(--ink-press)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-hover)}.btn-sm{padding:5px 10px;font-size:var(--text-sm)}.btn-block{width:100%}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}.btn-danger:hover{background:var(--danger-press);border-color:var(--danger-press)}.btn-danger-soft{color:var(--danger);border-color:var(--danger-line)}.btn-danger-soft:hover{background:var(--danger-soft);border-color:var(--danger-line)}.flex-1{flex:1 1}.text-right{text-align:right}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-actions{align-items:center;justify-content:flex-end;margin-top:var(--space-1)}.field,.modal-actions{display:flex;gap:var(--space-2)}.field{flex-direction:column;margin-bottom:var(--space-4)}.field label{font-size:var(--text-xs);font-weight:500;color:var(--text-dim)}.input{padding:10px 13px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:var(--text-base);transition:border-color .13s ease,background .13s ease}.input::placeholder{color:var(--text-mute)}.input:focus{outline:none;border-color:var(--accent);background:var(--surface)}.input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.form-error{background:var(--danger-soft);border:1px solid var(--danger-line);color:var(--danger-fg);padding:10px 13px;border-radius:var(--r-sm);font-size:var(--text-sm);margin-bottom:var(--space-4)}.field-hint{font-size:var(--text-xs);color:var(--text-faint)}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);background:radial-gradient(120% 80% at 50% -10%,rgba(47,158,143,.06),transparent 60%),var(--bg)}.auth-card{width:100%;max-width:384px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:30px 28px}.auth-brand{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;letter-spacing:-.02em;margin-bottom:var(--space-1)}.auth-tag{margin:0 0 24px}.auth-switch,.auth-tag{color:var(--text-dim);font-size:var(--text-sm)}.auth-switch{margin-top:var(--space-5);text-align:center}.auth-switch a{color:var(--text);font-weight:600;border-bottom:1px solid var(--text-mute);padding-bottom:1px}.auth-switch a:hover{border-color:var(--text)}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border-soft);display:flex;flex-direction:column;padding:18px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;letter-spacing:-.02em;padding:4px 10px 22px}.nav{display:flex;flex-direction:column;gap:var(--space-0-5)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:9px 11px;border-radius:var(--r-sm);color:var(--text-dim);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:background .12s ease,color .12s ease}.nav-item:hover{background:var(--surface-hover);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text);font-weight:600}.nav-icon{display:inline-flex;color:var(--text-faint)}.nav-item.active .nav-icon,.nav-item:hover .nav-icon{color:var(--text)}.sidebar-spacer{flex:1 1}.avatar-menu{position:relative;border-top:1px solid var(--border-soft);padding-top:var(--space-3)}.avatar-btn{display:flex;align-items:center;gap:var(--space-2-5);width:100%;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer;border:none;background:transparent;color:var(--text);font:inherit;text-align:left}.avatar-btn:hover{background:var(--surface-hover)}.avatar-circle{width:30px;height:30px;border-radius:9px;background:var(--surface-3);color:var(--text);display:grid;place-items:center;font-family:var(--font-display);font-size:var(--text-xs);font-weight:600;flex-shrink:0}.avatar-meta,.avatar-name{overflow:hidden}.avatar-name{font-size:var(--text-sm);font-weight:600;white-space:nowrap;text-overflow:ellipsis}.avatar-sub{font-size:var(--text-2xs);color:var(--text-faint)}.popover{position:absolute;bottom:calc(100% + 8px);left:0;right:0;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--space-1-5);box-shadow:var(--shadow-pop)}.popover a,.popover button{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;padding:8px 10px;border-radius:var(--r-sm);font-size:var(--text-sm);color:var(--text-dim);background:transparent;border:none;font:inherit;cursor:pointer}.popover a:hover,.popover button:hover{background:var(--surface-hover);color:var(--text)}.content{padding:26px 32px 64px;max-width:1120px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.page-title{font-size:var(--text-3xl)}.page-sub{color:var(--text-dim);font-size:var(--text-sm);margin-top:var(--space-1)}.chips{display:flex;flex-wrap:wrap}.chip,.chips{gap:var(--space-2)}.chip{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:var(--text-sm);font-weight:500;color:var(--text-dim);cursor:pointer;transition:color .12s ease,border-color .12s ease}.chip.active,.chip:hover{color:var(--text)}.chip.active{border-color:var(--text-mute);background:var(--surface-2)}.source-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.panel{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-card);padding:var(--space-4)}.content>*+*{margin-top:var(--gap)}.panel-title{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin-bottom:var(--space-4)}.grid{display:grid;grid-gap:var(--gap);gap:var(--gap)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.card-tile{display:flex;flex-direction:column}.card-tile-tags{margin-top:auto;padding-top:var(--space-2-5)}.train-card{display:flex;align-items:stretch;border:1px solid var(--border-soft);border-radius:var(--r-md);background:var(--surface-2);overflow:hidden;transition:border-color .13s ease,background .13s ease,transform .13s ease,box-shadow .13s ease}.train-card:hover{border-color:var(--border);transform:translateY(-1px);box-shadow:0 3px 12px rgba(0,0,0,.2)}.train-card:active{transform:translateY(0);box-shadow:none}@media (prefers-reduced-motion:reduce){.train-card:hover{transform:none}}.train-load{width:5px;flex-shrink:0}.train-body{padding:11px 14px;flex:1 1;min-width:0}.train-head{display:flex;justify-content:space-between}.train-head,.train-title{align-items:center;gap:var(--space-2)}.train-title{display:inline-flex;font-size:var(--text-base);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.train-title svg{color:var(--text-faint);flex-shrink:0}.train-meta{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-1-5);font-size:var(--text-xs)}.badge,.train-meta{color:var(--text-dim)}.badge{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:999px;background:var(--surface-3)}.badge-done{background:var(--ok-soft);color:var(--ok-fg)}.badge-skipped{background:var(--danger-soft);color:var(--danger-fg)}.badge-cancelled{background:var(--surface-3);color:var(--text-faint)}.train-card.is-cancelled{opacity:.6}.train-card.is-cancelled .train-title{text-decoration:line-through;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.week{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:var(--space-2);gap:var(--space-2)}.day-col{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-md);min-height:210px;display:flex;flex-direction:column}.day-col.today{border-color:var(--text-mute);background:var(--surface-2)}.day-head{padding:9px 11px;border-bottom:1px solid var(--border-soft);display:flex;justify-content:space-between;align-items:baseline}.day-dow{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.day-col.today .day-dow{color:var(--text)}.day-num{font-family:var(--font-display);font-weight:600;font-size:var(--text-md)}.day-cards{padding:var(--space-2);display:flex;flex-direction:column;gap:var(--space-2);flex:1 1}.day-add{margin:0 8px 8px;border:1px dashed var(--border);border-radius:var(--r-sm);color:var(--text-mute);background:transparent;padding:var(--space-1-5);font:inherit;font-size:var(--text-xs);cursor:pointer;transition:color .12s ease,border-color .12s ease}.day-add:hover:not(:disabled){color:var(--text-dim);border-color:var(--text-faint)}.day-add:disabled{cursor:not-allowed}.view-fade{animation:view-fade .2s ease}@keyframes view-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.view-fade{animation:none}}.view-switch{display:flex;gap:var(--space-0-5);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--space-0-5)}.view-switch button{padding:5px 12px;border:none;background:transparent;color:var(--text-dim);font:inherit;font-size:var(--text-sm);border-radius:5px;cursor:pointer}.view-switch button.active{background:var(--surface-hover);color:var(--text);font-weight:600}.month,.month-dow-head{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:var(--space-2);gap:var(--space-2)}.month-dow-head{margin-bottom:var(--space-1-5)}.month-dow-head span{font-family:var(--font-display);font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);text-align:center}.month-cell{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-sm);min-height:96px;padding:var(--space-1-5);display:flex;flex-direction:column;gap:var(--space-0-5)}.month-cell.today{border-color:var(--text-mute);background:var(--surface-2)}.month-cell.dim{opacity:.45}.month-daynum{font-family:var(--font-display);font-size:var(--text-xs);font-weight:600;color:var(--text-dim);align-self:flex-start;cursor:pointer;border-radius:5px;padding:1px 5px;margin:-1px -3px;transition:background .12s ease,color .12s ease}.month-daynum:hover{background:var(--surface-hover);color:var(--text)}.month-cell.today .month-daynum{color:var(--text)}.month-card{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-2xs);color:var(--text-dim);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;transition:color .12s ease}.month-card:hover{color:var(--text)}.month-card .bar{width:3px;height:11px;border-radius:2px;flex-shrink:0}.stat{display:flex;flex-direction:column;gap:var(--space-1)}.stat-num{font-family:var(--font-display);font-size:var(--text-4xl);font-weight:600;letter-spacing:-.02em;line-height:1}.stat-label{font-size:var(--text-xs);color:var(--text-dim)}.bar-row{display:grid;grid-template-columns:130px 1fr 52px;align-items:center;grid-gap:var(--space-3);gap:var(--space-3);font-size:var(--text-sm);margin-bottom:var(--space-2-5)}.bar-row>span:first-child{display:inline-flex;align-items:center;gap:var(--space-2)}.bar-row svg{color:var(--text-faint)}.bar-track{height:7px;background:var(--surface-3);border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--text-dim);border-radius:999px}.muted{color:var(--text-dim)}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);font-size:var(--text-sm);padding:26px 22px;text-align:center;border:1px dashed var(--border);border-radius:var(--r-md)}.empty,.empty-icon{color:var(--text-faint)}.empty-icon{opacity:.65}.center-screen{min-height:100vh;display:grid;place-items:center;color:var(--text-dim);font-size:var(--text-base)}.row{display:flex;align-items:center;gap:var(--space-2-5)}.spread{justify-content:space-between}.tabs{display:flex;gap:var(--space-0-5);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.tab{background:transparent;font:inherit;padding:9px 15px;font-size:var(--text-base);font-weight:500;color:var(--text-faint);cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s ease}.tab:hover{color:var(--text-dim)}.tab.active{color:var(--text);border-bottom-color:var(--text)}.member-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border-soft)}.member-row:last-child{border-bottom:none}.pill{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:500;letter-spacing:.02em;padding:2px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border-soft);color:var(--text-dim)}.overlay-backdrop{position:fixed;inset:0;z-index:50;background:rgba(6,7,9,.62);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;animation:overlay-in .14s ease}.overlay-backdrop.center{align-items:center;justify-content:center;padding:var(--space-6)}.overlay-backdrop.right{justify-content:flex-end}@keyframes overlay-in{0%{opacity:0}}.modal{width:100%;max-width:460px;max-height:88vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-pop);animation:modal-in .16s ease}.modal-lg{max-width:600px}@keyframes modal-in{0%{transform:translateY(8px);opacity:0}}.drawer{width:100%;max-width:480px;height:100vh;overflow-y:auto;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-pop);animation:drawer-in .18s ease}@keyframes drawer-in{0%{transform:translateX(24px);opacity:.4}}@keyframes sheet-in{0%{transform:translateY(100%)}}.overlay-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:18px 20px;border-bottom:1px solid var(--border-soft);position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:1}.overlay-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.overlay-body{padding:var(--space-5)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-sm);border:none;background:transparent;color:var(--text-dim);cursor:pointer}.icon-btn:hover{background:var(--surface-hover);color:var(--text)}.load-picker{display:flex;flex-wrap:wrap;gap:var(--space-2)}.swatch{display:inline-flex;align-items:center;gap:var(--space-2);padding:7px 11px 7px 8px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font:inherit;font-size:var(--text-sm);cursor:pointer;transition:border-color .12s ease,color .12s ease}.swatch.selected,.swatch:hover{color:var(--text)}.swatch.selected{border-color:var(--text)}.swatch-dot{width:14px;height:14px;border-radius:4px;flex-shrink:0}.pick-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:46vh;overflow-y:auto}.pick-row{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border-soft);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;transition:border-color .12s ease,background .12s ease}.pick-row:hover{border-color:var(--border);background:var(--surface-hover)}.pick-load{width:4px;align-self:stretch;border-radius:999px;flex-shrink:0}.detail-section{margin-bottom:var(--space-6)}.detail-plan{border:1px solid var(--border-soft);border-radius:var(--r-md)}.detail-layer,.detail-plan{padding:var(--space-4);background:var(--surface-2)}.detail-layer{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-md)}.detail-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);font-size:var(--text-sm);padding:5px 0}.detail-row+.detail-row{border-top:1px solid var(--border-soft)}.detail-row .muted{color:var(--text-faint);white-space:nowrap}.detail-row>span:last-child{text-align:right}.divider{height:1px;background:var(--border-soft);margin:14px 0}.field-row{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-dim);margin:10px 0;cursor:pointer}.checkbox{width:16px;height:16px;accent-color:var(--accent)}.detail-context{gap:var(--space-2);font-size:var(--text-sm);color:var(--text-dim);margin-bottom:var(--space-3)}.detail-context,.detail-facts{display:flex;align-items:center}.detail-facts{flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4)}.detail-facts .fact{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-sm)}.status-badge{font-family:var(--font-display);font-size:var(--text-2xs);font-weight:600;letter-spacing:.02em;padding:3px 10px;border-radius:999px;background:var(--surface-3);color:var(--text-faint)}.status-badge.is-done{background:var(--ok-soft);color:var(--ok-fg)}.status-badge.is-partial{background:var(--warn-soft);color:var(--warn)}.status-badge.is-cancelled{background:var(--surface-3);color:var(--text-faint)}.cancel-banner{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-dim)}.detail-actions{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);margin-bottom:var(--space-6)}.detail-actions .rsvp-prompt{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.detail-actions .rsvp-prompt>span{font-size:var(--text-sm);font-weight:500}.collapsible{border-top:1px solid var(--border-soft)}.collapsible-head{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-3) 0;background:none;border:none;color:var(--text-dim);font-family:var(--font-display);font-size:var(--text-sm);font-weight:500;cursor:pointer;text-align:left}.collapsible-head:hover{color:var(--text)}.collapsible-chevron{transition:transform .15s ease;flex-shrink:0}.collapsible-chevron.open{transform:rotate(90deg)}.collapsible-body{padding:0 0 var(--space-4)}.rsvp{gap:var(--space-1-5)}.rsvp,.rsvp-opt{display:inline-flex}.rsvp-opt{align-items:center;gap:5px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);font:inherit;font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.rsvp-opt:hover:not(:disabled){color:var(--text)}.rsvp-opt:disabled{opacity:.5;cursor:default}.rsvp-opt.in[aria-pressed=true]{background:var(--ok-soft);border-color:var(--ok);color:var(--ok-fg)}.rsvp-opt.out[aria-pressed=true]{background:var(--danger-soft);border-color:var(--danger);color:var(--danger-fg)}.att-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:var(--text-2xs);font-weight:600}.att-in{background:var(--ok-soft);color:var(--ok-fg)}.att-out{background:var(--danger-soft);color:var(--danger-fg)}.att-open{background:var(--surface-3);color:var(--text-faint)}.att-dot{flex-shrink:0}.att-dot-in{color:var(--ok)}.att-dot-out{color:var(--danger)}.tag-input{display:flex;flex-wrap:wrap;gap:var(--space-1-5);align-items:center;padding:7px 8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2)}.tag-input:focus-within{border-color:var(--accent)}.tag-chip{gap:var(--space-1);padding:3px 4px 3px 10px;border-radius:999px;background:var(--surface-3);font-size:var(--text-xs);color:var(--text)}.tag-chip,.tag-chip button{display:inline-flex;align-items:center}.tag-chip button{justify-content:center;width:16px;height:16px;border:none;border-radius:50%;background:transparent;color:var(--text-faint);cursor:pointer}.tag-chip button:hover{background:var(--surface-hover);color:var(--text)}.tag-input-field{flex:1 1;min-width:110px;border:none;background:transparent;color:var(--text);font:inherit;font-size:var(--text-base);outline:none;padding:var(--space-0-5)}.spin{animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spin{animation-duration:1.6s}}.skeleton{display:block;background:var(--surface-3);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.05),transparent);animation:skeleton-shimmer 1.4s ease-in-out infinite}@keyframes skeleton-shimmer{to{transform:translateX(100%)}}.skeleton-card{display:flex;align-items:center;gap:var(--space-2-5);padding:11px 12px;border:1px solid var(--border-soft);border-radius:var(--r-md);background:var(--surface)}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.toast-container{position:fixed;bottom:20px;right:20px;z-index:100;flex-direction:column;max-width:360px;pointer-events:none}.toast,.toast-container{display:flex;gap:var(--space-2)}.toast{align-items:center;padding:11px 14px;border-radius:var(--r-md);border:1px solid var(--border);border-left-width:3px;background:var(--surface-2);box-shadow:var(--shadow-pop);color:var(--text);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;pointer-events:auto;animation:toast-in .18s ease}.toast svg{flex-shrink:0}.toast-success{border-left-color:var(--ok)}.toast-success svg{color:var(--ok)}.toast-error{border-left-color:var(--danger)}.toast-error svg{color:var(--danger)}.toast-info svg{color:var(--text-mute)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.mobile-tabbar,.mobile-topbar{display:none}.mobile-brand{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:-.02em}.mobile-avatar{position:relative}.mobile-avatar-btn{border:none;background:transparent;padding:0;cursor:pointer}.mobile-avatar .popover{top:calc(100% + 8px);bottom:auto;left:auto;right:0;width:230px}.tab-item{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:var(--space-0-5);padding:7px 0;border-radius:var(--r-sm);color:var(--text-faint);font-size:var(--text-2xs);font-weight:600;text-decoration:none;transition:color .12s ease}.tab-item.active{color:var(--text)}@media (max-width:768px){.shell{grid-template-columns:1fr}.sidebar{display:none}.mobile-topbar{align-items:center;justify-content:space-between;top:0;height:52px;padding:0 16px;border-bottom:1px solid var(--border-soft)}.mobile-tabbar,.mobile-topbar{display:flex;position:fixed;left:0;right:0;z-index:50;background:var(--surface)}.mobile-tabbar{bottom:0;gap:var(--space-0-5);padding:4px 4px calc(4px + env(safe-area-inset-bottom, 0px));border-top:1px solid var(--border-soft)}.content{padding:68px 16px calc(76px + env(safe-area-inset-bottom, 0px));max-width:100%}.topbar{flex-wrap:wrap;align-items:flex-start}.week{grid-template-columns:1fr;gap:var(--space-2-5)}.day-col{min-height:0}.month,.month-dow-head{gap:var(--space-0-5)}.month-cell{min-height:68px;padding:var(--space-1)}.grid-2,.grid-3{grid-template-columns:1fr}.overlay-backdrop.center{align-items:flex-end;justify-content:stretch;padding:0}.modal,.modal-lg{width:100%;max-width:100%;max-height:92vh;border-radius:var(--r-card) var(--r-card) 0 0;border-bottom:none;animation:sheet-in .24s ease}.modal:before{content:"";display:block;width:36px;height:4px;border-radius:999px;background:var(--surface-3);margin:9px auto 2px}.toast-container{left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom, 0px));max-width:none}}