:root{--bg: #070c16;--surface: #101828;--surface-alt: #182233;--text: #f3f8ff;--muted: #94a3b8;--accent: #29d3f7;--border: #223247;--danger: #ff6f7f}*{box-sizing:border-box}body{margin:0;font-family:Avenir Next,Segoe UI,sans-serif;background:radial-gradient(circle at top right,#11203a,var(--bg) 45%);color:var(--text)}h1,h2,h3,h4,p{margin:0}a{color:var(--accent)}button,input{font:inherit}input{width:100%;border-radius:10px;border:1px solid var(--border);padding:12px;background:var(--surface-alt);color:var(--text)}button{border:0;border-radius:10px;padding:11px 14px;background:var(--accent);color:#02141a;font-weight:700}.app-shell{min-height:100vh;padding:16px 16px 86px}.page{max-width:900px;margin:0 auto}.centered{min-height:100vh;display:grid;place-items:center}.auth-page{padding:16px}.card{background:color-mix(in oklab,var(--surface) 92%,#000);border:1px solid var(--border);border-radius:16px;padding:16px}.auth-card{width:min(440px,100%)}.stack{display:grid;gap:12px}.stack-lg{display:grid;gap:16px}.muted{color:var(--muted)}.error{color:var(--danger)}.top-bar{max-width:900px;margin:0 auto 16px;display:flex;justify-content:space-between;align-items:center;gap:12px}.top-actions{display:flex;gap:8px}.ghost-btn,.ghost-link{background:transparent;border:1px solid var(--border);color:var(--text);text-decoration:none;padding:9px 12px;border-radius:10px}.tab-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:6px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#070c16eb;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.tab-nav a{text-decoration:none;text-align:center;color:var(--muted);border-radius:10px;padding:10px}.tab-nav a.active{background:var(--surface-alt);color:var(--text)}.week-header{display:flex;justify-content:space-between;align-items:center}.week-controls{display:flex;gap:8px}.score-pill{display:flex;justify-content:space-between;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface)}.habit-card{display:grid;gap:12px}.habit-head{display:flex;justify-content:space-between;align-items:baseline}.progress-track{width:100%;height:8px;border-radius:999px;background:var(--surface-alt);overflow:hidden}.progress-track span{display:block;height:100%;background:var(--accent)}.day-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day-cell{display:grid;justify-items:center;gap:6px;width:100%}.day-toggle{width:100%;height:40px;border-radius:11px;border:1px solid var(--border);background:transparent;color:var(--muted);padding:0;display:grid;place-items:center}.day-toggle.done{background:var(--accent);border-color:transparent;color:#00212a}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px}.trend-svg{width:100%;max-width:320px;margin-top:8px}.chart-labels{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;color:var(--muted);font-size:11px}.badge-grid{display:grid;gap:10px}.badge-card{border:1px solid var(--border);border-radius:12px;padding:12px}.badge-card.earned{border-color:color-mix(in oklab,var(--accent) 50%,var(--border))}.plain-list,.leaderboard-list{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:8px}.plain-list li,.leaderboard-list li{display:flex;justify-content:space-between;gap:8px;padding:10px;border-radius:10px;border:1px solid var(--border)}.leaderboard-list li.current-user{border-color:color-mix(in oklab,var(--accent) 60%,var(--border));background:color-mix(in oklab,var(--accent) 10%,transparent)}.toggle-row{display:flex;align-items:center;gap:8px}.toggle-row input{width:auto}@media (min-width: 768px){.app-shell{padding-bottom:20px}.tab-nav{position:static;max-width:900px;margin:16px auto 0;grid-template-columns:repeat(4,max-content);justify-content:start;background:transparent;border:0;padding:0;-webkit-backdrop-filter:none;backdrop-filter:none}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.habit-settings-list{display:grid;gap:10px}.habit-setting-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--border);border-radius:12px;padding:10px 12px}.habit-target-input{width:90px;text-align:center;font-weight:700}.today-dot{width:6px;height:6px;border-radius:999px;background:transparent}.today-dot.visible{background:var(--accent)}
