:root{--ink:#102037;--muted:#637086;--paper:#f5f6f3;--card:#fff;--line:#dfe4e8;--navy:#10223c;--navy2:#19385d;--mint:#25c6a4;--mint-dark:#087b68;--amber:#ffc760;--blue:#418ee8;--danger:#bd493e;--shadow:0 18px 48px rgba(15,31,52,.1);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
[hidden]{display:none!important}
*{box-sizing:border-box}html{min-height:100%;background:var(--paper)}body{margin:0;min-width:280px;min-height:100vh;background:radial-gradient(circle at 15% -5%,#e4fff7 0,transparent 28rem),var(--paper);overflow-x:hidden}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit}.topbar{position:sticky;z-index:20;top:0;display:flex;align-items:center;justify-content:space-between;min-height:72px;padding:12px max(20px,calc((100vw - 1180px)/2));background:rgba(16,34,60,.96);color:#fff;border-bottom:3px solid var(--mint);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none}.brand img{width:46px;height:46px;border-radius:13px}.brand span{display:grid;line-height:1.05}.brand b{font-size:1.12rem}.brand small{margin-top:5px;color:#afc0d2;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.top-actions{display:flex;align-items:center;gap:10px}.account-link,.icon-button{display:grid;place-items:center;min-height:42px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:transparent;color:#fff;text-decoration:none;font-weight:800}.account-link{padding:0 17px}.icon-button{width:42px;font-size:1.2rem}.account-link:hover,.icon-button:hover{background:rgba(255,255,255,.1)}main{width:min(1180px,100%);margin:auto;padding:38px 24px 80px}.center-card{display:grid;place-items:center;gap:14px;min-height:65vh;color:var(--muted)}.signal-loader{display:flex;align-items:end;gap:6px;height:44px}.signal-loader i{display:block;width:9px;border-radius:8px;background:var(--mint);animation:pulse 1s ease-in-out infinite}.signal-loader i:nth-child(1){height:16px}.signal-loader i:nth-child(2){height:28px;animation-delay:.12s}.signal-loader i:nth-child(3){height:42px;animation-delay:.24s}@keyframes pulse{50%{opacity:.25;transform:scaleY(.75)}}.login-view{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(340px,1.1fr);align-items:center;gap:clamp(36px,8vw,100px);min-height:70vh}.login-art{position:relative;min-height:480px;border-radius:48px;overflow:hidden;background:linear-gradient(160deg,#173759,#081423);box-shadow:var(--shadow)}.login-art:before{content:"";position:absolute;inset:30% -20% -20%;border-radius:50% 50% 0 0;background:linear-gradient(#274967,#152941)}.moon{position:absolute;right:54px;top:36px;color:var(--amber);font-size:8rem;line-height:1}.house{position:absolute;z-index:2;right:25%;bottom:16%;color:#fff;font-size:9rem;filter:drop-shadow(0 12px 22px #07101d)}.route{position:absolute;left:-30px;bottom:22%;width:64%;height:25%;border-top:18px solid var(--mint);border-radius:50%;transform:rotate(-12deg)}.route:after{content:"";position:absolute;right:-4px;top:-31px;width:42px;height:42px;border-radius:50%;background:var(--mint)}.login-copy h1,.view-head h1,.evening-hero h1{margin:.15em 0;font-size:clamp(2.45rem,7vw,5rem);line-height:.93;letter-spacing:-.055em}.login-copy h1 em{font-style:normal;color:var(--mint-dark)}.login-copy>p:not(.eyebrow){max-width:620px;color:var(--muted);font-size:1.14rem;line-height:1.65}.eyebrow{margin:0 0 8px;color:var(--mint-dark);font-size:.73rem;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.primary-button,.secondary-button,.text-button,.back-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:15px;font-weight:850;text-decoration:none}.primary-button{border:1px solid var(--navy);background:var(--navy);color:#fff;box-shadow:0 9px 20px rgba(16,34,60,.15)}.primary-button:hover{background:var(--navy2)}.secondary-button{border:1px solid var(--line);background:#fff;color:var(--ink)}.secondary-button:hover{border-color:#a9b7c5}.text-button,.back-button{border:0;background:transparent;color:var(--mint-dark);padding-inline:8px}.text-link{display:inline-block;margin-left:18px;color:var(--muted);font-weight:750}.view-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:12px 0 40px}.view-head.compact h1{font-size:clamp(2.7rem,7vw,4.8rem)}.view-head>div>p:not(.eyebrow){max-width:650px;color:var(--muted);line-height:1.6}.head-actions{display:flex;gap:10px;flex-wrap:wrap}.group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.group-card{position:relative;min-height:216px;padding:25px;border:1px solid var(--line);border-radius:26px;background:var(--card);box-shadow:0 10px 28px rgba(15,31,52,.06);overflow:hidden}.group-card:before{content:"";position:absolute;right:-30px;top:-38px;width:135px;height:135px;border-radius:50%;background:#d9fff4}.group-card button{position:absolute;inset:0;width:100%;border:0;background:transparent}.group-card>*:not(button){position:relative;pointer-events:none}.group-card h2{margin:40px 0 8px;font-size:1.65rem;letter-spacing:-.035em}.group-card p{margin:0;color:var(--muted)}.group-card .next{display:inline-flex;margin-top:25px;padding:7px 11px;border-radius:999px;background:#edf8f5;color:var(--mint-dark);font-size:.77rem;font-weight:850}.empty-state{display:grid;place-items:center;padding:60px 24px;border:1px dashed #b8c5ce;border-radius:30px;text-align:center}.empty-state>span{display:grid;place-items:center;width:78px;height:78px;border-radius:24px;background:#dffaf3;color:var(--mint-dark);font-size:2.3rem}.empty-state h2{margin:20px 0 6px}.empty-state p{margin:0 0 24px;color:var(--muted)}.privacy-note{display:flex;gap:15px;align-items:center;margin-top:32px;padding:18px 22px;border-radius:20px;background:#e7f4f0;color:#36504d}.privacy-note>span{font-size:2rem}.privacy-note strong{color:#173c37}.privacy-note p{margin:3px 0 0}.back-button{margin:0 0 12px}.group-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.65fr);gap:28px}.group-main{display:grid;gap:40px}.group-side{display:grid;align-content:start;gap:18px}.side-card,.checkin-card,.overview-card{padding:24px;border:1px solid var(--line);border-radius:26px;background:var(--card);box-shadow:0 10px 30px rgba(15,31,52,.055)}.side-card h2{margin:.1em 0 20px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin-bottom:16px}.section-head h2{margin:0;font-size:1.9rem;letter-spacing:-.035em}.evening-list,.history-list{display:grid;gap:12px}.evening-card,.history-card{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:17px;border:1px solid var(--line);border-radius:20px;background:#fff}.evening-card button,.history-card button{position:absolute;inset:0;border:0;background:transparent}.date-tile{display:grid;place-items:center;width:58px;height:64px;border-radius:16px;background:var(--navy);color:#fff;line-height:1}.date-tile b{font-size:1.4rem}.date-tile small{text-transform:uppercase}.evening-copy b{display:block;font-size:1.08rem}.evening-copy small{color:var(--muted)}.mini-counts{display:flex;gap:5px}.mini-counts span{display:grid;place-items:center;min-width:31px;height:31px;border-radius:999px;font-size:.77rem;font-weight:900}.mini-counts .traveling{background:#e5f1ff;color:#286bad}.mini-counts .home{background:#dcf8ef;color:#087b68}.mini-counts .unknown{background:#eef0f2;color:#6a7480}.empty-line{padding:20px;border:1px dashed #c5cdd3;border-radius:18px;color:var(--muted)}.member-list,.activity-list{display:grid;gap:12px}.member-row{display:flex;align-items:center;gap:10px}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#dff8f1;color:#096c5d;font-weight:900}.member-row div{display:grid}.member-row small{color:var(--muted)}.activity-row{padding-left:13px;border-left:2px solid #d9e2e8}.activity-row p{margin:0;font-size:.9rem;line-height:1.35}.activity-row time{color:var(--muted);font-size:.75rem}.evening-hero{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:8px 0 30px;padding:32px;border-radius:30px;background:linear-gradient(145deg,var(--navy),#214b74);color:#fff;box-shadow:var(--shadow)}.evening-hero h1{font-size:clamp(2.5rem,7vw,4.7rem)}.evening-hero .eyebrow{color:#75e8cd}.evening-hero p:last-child{color:#cfdae7}.state-pill{padding:10px 16px;border-radius:999px;background:var(--mint);color:#062e26;font-weight:900}.state-pill.closed{background:#d8dfe5;color:#465463}.evening-layout{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr);gap:24px}.checkin-card h2,.overview-card h2{margin:0 0 20px;font-size:2rem}.status-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.status-buttons button{display:grid;place-items:center;gap:6px;min-height:88px;border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--muted);font-weight:850}.status-buttons button span{font-size:1.4rem}.status-buttons button[data-status=traveling].active{border-color:var(--blue);background:#e9f3ff;color:#286bad}.status-buttons button[data-status=home].active{border-color:var(--mint);background:#e2faf4;color:#087b68}.status-buttons button[data-status=unknown].active{border-color:#9aa7b3;background:#f0f2f4;color:#465463}.time-field,.dialog-card label{display:grid;gap:7px;margin-top:22px}.time-field span,.dialog-card label span{font-size:.84rem;font-weight:850}.time-field input,.dialog-card input{width:100%;min-height:50px;padding:0 13px;border:1px solid #cdd5db;border-radius:13px;background:#fff;color:var(--ink)}.time-field small,.dialog-card small{color:var(--muted);line-height:1.4}.saved-line{min-height:22px;margin:14px 0 0;color:var(--mint-dark);font-weight:750}.count-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:20px}.count-card{padding:13px;border-radius:16px;text-align:center}.count-card b{display:block;font-size:1.65rem}.count-card small{font-weight:750}.count-card.unknown{background:#eef0f2}.count-card.traveling{background:#e5f1ff;color:#286bad}.count-card.home{background:#dcf8ef;color:#087b68}.status-roster{display:grid;gap:8px}.status-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding:12px;border-radius:16px;background:#f7f8f8}.status-row .status-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:#e6eaed;font-weight:900}.status-row.traveling .status-icon{background:#dcebff;color:#286bad}.status-row.home .status-icon{background:#d7f6ed;color:#087b68}.status-row div{display:grid}.status-row small{color:var(--muted)}dialog{width:min(520px,calc(100% - 28px));padding:0;border:0;border-radius:28px;background:transparent;box-shadow:var(--shadow)}dialog::backdrop{background:rgba(6,16,29,.67);backdrop-filter:blur(5px)}.dialog-card{position:relative;margin:0;padding:30px;border-radius:28px;background:#fff}.dialog-card h2{margin:.1em 0 .5em;font-size:2rem;letter-spacing:-.04em}.dialog-card>.primary-button{width:100%;margin-top:24px}.dialog-close{position:absolute;right:16px;top:16px;display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:#eef1f2;color:var(--ink);font-size:1.4rem}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}.invite-code{padding:18px;border-radius:18px;background:var(--navy);color:#fff;text-align:center;font-size:2rem;font-weight:900;letter-spacing:.18em}.toast{position:fixed;z-index:50;left:50%;bottom:max(22px,env(safe-area-inset-bottom));translate:-50% 0;width:min(500px,calc(100% - 30px));padding:14px 18px;border-radius:15px;background:var(--navy);color:#fff;text-align:center;font-weight:800;box-shadow:var(--shadow)}.toast.error{background:var(--danger)}
@media(max-width:850px){main{padding:24px 16px 90px}.login-view{grid-template-columns:1fr}.login-art{min-height:310px}.login-copy{padding-bottom:40px}.group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.group-layout,.evening-layout{grid-template-columns:1fr}.group-side{grid-template-columns:1fr 1fr}.view-head{align-items:start;flex-direction:column}.evening-hero{align-items:start;flex-direction:column}}
@media(max-width:560px){.topbar{min-height:64px;padding:9px 13px}.brand img{width:42px;height:42px}.brand small{display:none}.account-link{padding:0 13px;min-height:40px}main{padding-top:20px}.login-art{min-height:260px;border-radius:30px}.house{font-size:6rem}.moon{font-size:5rem}.login-copy h1{font-size:2.7rem}.login-copy>p:not(.eyebrow){font-size:1rem}.login-copy .primary-button{width:100%}.text-link{display:block;margin:15px 0;text-align:center}.view-head{margin-bottom:27px}.view-head h1,.view-head.compact h1{font-size:2.65rem}.head-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.head-actions button{padding-inline:12px}.group-grid{grid-template-columns:1fr}.group-card{min-height:180px}.group-side{grid-template-columns:1fr}.evening-card,.history-card{grid-template-columns:auto 1fr}.mini-counts{grid-column:2}.evening-hero{padding:23px;border-radius:23px}.evening-hero h1{font-size:2.7rem}.checkin-card,.overview-card,.side-card{padding:18px;border-radius:22px}.status-buttons button{min-height:78px;font-size:.76rem}.count-strip{gap:6px}.status-row{grid-template-columns:auto 1fr}.status-row>time{grid-column:2}.dialog-card{padding:25px 20px}.invite-code{font-size:1.65rem}.dialog-actions{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Mobile/PWA hardening. Kept separate so older cached shells degrade safely. */
.topbar{min-height:calc(72px + env(safe-area-inset-top));padding-top:max(12px,env(safe-area-inset-top))}
.offline-card{max-width:560px;text-align:center}.offline-card h1{margin:0;color:var(--ink);font-size:clamp(2rem,7vw,3.4rem);letter-spacing:-.05em}.offline-card p{max-width:480px;margin:0 0 10px;line-height:1.6}.offline-mark{display:grid;place-items:center;width:82px;height:82px;border-radius:26px;background:#e4edf1;color:var(--navy);font-size:3rem;font-weight:900}
.group-actions-card p:not(.eyebrow){color:var(--muted);line-height:1.5}.group-actions-card .secondary-button{width:100%;margin-top:10px}.danger-outline{border-color:#e4bbb7;color:var(--danger)}.danger-outline:hover{border-color:var(--danger);background:#fff5f4}.save-time-button{width:100%;margin-top:12px}
dialog{max-height:calc(100dvh - max(28px,env(safe-area-inset-top)) - max(28px,env(safe-area-inset-bottom)));overflow:auto}.dialog-card{padding-bottom:max(30px,env(safe-area-inset-bottom))}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb,var(--blue) 65%,#fff);outline-offset:3px}
@media(max-width:560px){.topbar{padding-top:max(9px,env(safe-area-inset-top));padding-left:max(13px,env(safe-area-inset-left));padding-right:max(13px,env(safe-area-inset-right))}.time-field input,.dialog-card input{font-size:16px}.offline-card{min-height:58vh}.group-actions-card{grid-column:1}.dialog-card{padding-bottom:max(25px,env(safe-area-inset-bottom))}}
