:root{--bg: #0f0f1a;--surface: #1a1a2e;--surface-2: #16213e;--accent: #e94560;--accent-2: #0f3460;--text: #eaeaea;--muted: #a0a0b0;--success: #4ecca3;--warning: #f0a500;--radius: 12px;--nav-height: 64px}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100dvh}.loading{display:grid;place-items:center;min-height:100dvh;color:var(--muted)}.app-shell{min-height:100dvh;display:flex;flex-direction:column;padding-bottom:var(--nav-height)}.app-header{padding:1rem 1.25rem;background:var(--surface);border-bottom:1px solid #2a2a40}.app-header h1{margin:0;font-size:1.1rem}.app-main{flex:1;padding:1rem 1.25rem 2rem;max-width:720px;margin:0 auto;width:100%}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:var(--nav-height);display:grid;grid-template-columns:repeat(4,1fr);background:var(--surface);border-top:1px solid #2a2a40}.bottom-nav a{display:flex;align-items:center;justify-content:center;color:var(--muted);text-decoration:none;font-size:.85rem}.bottom-nav a.active{color:var(--accent);font-weight:600}.auth-page{min-height:100dvh;display:grid;place-items:center;padding:1rem}.auth-card{width:100%;max-width:400px;background:var(--surface);border-radius:var(--radius);padding:2rem}.auth-card h1{margin:0 0 .25rem}.subtitle{color:var(--muted);margin:0 0 1.5rem}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1.5rem}.auth-tabs button{padding:.6rem;border:1px solid #2a2a40;background:transparent;color:var(--text);border-radius:8px;cursor:pointer}.auth-tabs button.active{background:var(--accent-2);border-color:var(--accent)}label{display:block;margin-bottom:1rem;font-size:.9rem}input,select{display:block;width:100%;margin-top:.35rem;padding:.65rem .75rem;border-radius:8px;border:1px solid #2a2a40;background:var(--bg);color:var(--text);font-size:1rem}button{cursor:pointer;border:none;border-radius:8px;padding:.65rem 1rem;font-size:.95rem}button.primary{background:var(--accent);color:#fff;width:100%}button.ghost{background:transparent;color:var(--muted);border:1px solid #2a2a40}.error{color:var(--accent);font-size:.9rem}.divider{text-align:center;color:var(--muted);margin:1.25rem 0}.offline-screen{min-height:100dvh;display:grid;place-items:center;padding:1rem}.offline-card{background:var(--surface);border-radius:var(--radius);padding:2rem;max-width:400px;text-align:center}.muted{color:var(--muted)}.banner{background:var(--surface-2);border-left:4px solid var(--accent);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.banner.warning{border-left-color:var(--warning)}.onboarding-banners{margin-bottom:1rem}.onboarding-flow{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--bg)}.onboarding-card{width:min(100%,28rem);background:var(--surface);border-radius:var(--radius);padding:2rem;display:flex;flex-direction:column;gap:1rem}.onboarding-card h2{margin:0}.onboarding-card p{color:var(--muted);margin:0}.notification-denied{margin-bottom:1rem}.now-next{display:grid;gap:.75rem;margin-bottom:1.5rem}.now-card,.next-card{background:var(--surface);border-radius:var(--radius);padding:1rem 1.25rem}.now-card{border-left:4px solid var(--accent)}.next-card{border-left:4px solid var(--accent-2)}.now-card .label,.next-card .label{display:block;font-size:.75rem;color:var(--muted);letter-spacing:.05em}.now-card strong,.next-card strong{display:block;font-size:1.2rem;margin:.25rem 0}.time{color:var(--muted);font-size:.9rem}.timeline-scroll{max-height:min(60vh,32rem);overflow-y:auto;scroll-behavior:smooth;margin:0 -.25rem;padding:0 .25rem}.timeline{display:flex;flex-direction:column;gap:.5rem}.timeline-day-heading{margin:1rem 0 .25rem;font-size:.85rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.timeline-day-heading:first-child{margin-top:0}.timeline-block{display:grid;grid-template-columns:4rem 1fr auto;gap:.5rem;align-items:center;background:var(--surface);border-radius:8px;padding:.75rem 1rem;cursor:pointer;border:2px solid transparent}.timeline-block[draggable=true]{cursor:grab}.timeline-block[draggable=true]:active{cursor:grabbing}.timeline-block.past{opacity:.45}.timeline-block.completed{opacity:.5}.timeline-block.completed .state{color:var(--accent-2)}.timeline-block.missed{opacity:.4;text-decoration:line-through}.timeline-block.missed .state{color:var(--warning)}.timeline-block.current{border-color:var(--accent)}.timeline-block.user-moved{outline:1px dashed var(--muted)}.timeline-block .name{text-transform:capitalize}.timeline-block .state{font-size:.75rem;color:var(--muted);text-transform:capitalize}.timeline-block.type-shift{border-left:3px solid #e94560}.timeline-block.type-sleep{border-left:3px solid #533483}.timeline-block.type-game_dev{border-left:3px solid #4ecca3}.timeline-block.type-workout{border-left:3px solid #f0a500}.empty{color:var(--muted);text-align:center;padding:2rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:end center;padding:1rem;z-index:100}@media(min-width:768px){.modal-overlay{place-items:center}}.modal{background:var(--surface);border-radius:var(--radius);padding:1.5rem;width:100%;max-width:400px}.modal-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.hint{font-size:.8rem;color:var(--muted);margin-top:1rem}.roster-list{display:flex;flex-direction:column;gap:.75rem;margin:1.5rem 0}.roster-row{display:grid;grid-template-columns:6rem 5rem 1fr auto 1fr;gap:.5rem;align-items:center;background:var(--surface);padding:.75rem;border-radius:8px}.day-name{font-weight:600}.day-off{display:flex;align-items:center;gap:.35rem;font-size:.85rem}.roster-actions{display:flex;flex-direction:column;gap:.75rem}.goal-summary{display:flex;flex-wrap:wrap;gap:1rem;color:var(--muted);font-size:.9rem}.replan-btn{margin-top:1.5rem}.settings-page section{margin-bottom:2rem}.settings-page h3{margin-bottom:1rem;font-size:1rem;color:var(--muted)}@media(min-width:768px){.app-shell{padding-bottom:0}.bottom-nav{position:static;max-width:720px;margin:0 auto;border-radius:var(--radius);border:1px solid #2a2a40;margin-bottom:1rem}.roster-row{grid-template-columns:7rem 6rem 8rem auto 8rem}}
