:root{--bg: #0a0f17;--bg-2: #0e1520;--surface: #121b28;--surface-2: #172233;--border: #223047;--border-strong: #2e4060;--text: #e5ecf5;--text-2: #a9b6c8;--muted: #7d8ca3;--accent: #5cc8e8;--accent-ink: #04202b;--accent-soft: rgba(92, 200, 232, .12);--ok: #43d39e;--ok-soft: rgba(67, 211, 158, .13);--warn: #f2b45a;--warn-soft: rgba(242, 180, 90, .13);--bad: #ff7b7b;--bad-soft: rgba(255, 123, 123, .13);--violet: #a99bff;--fill: var(--accent);--primary-bg: var(--accent);--primary-ink: var(--accent-ink);--radius: 14px;--radius-sm: 9px;--shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 8px 24px rgba(0, 0, 0, .25);--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, monospace;--nav-h: 64px;color-scheme:dark}[data-theme=light]{--bg: #f3f6fa;--bg-2: #eaeff6;--surface: #ffffff;--surface-2: #f5f8fc;--border: #d9e1ec;--border-strong: #c3cfdf;--text: #121b28;--text-2: #3c4a5e;--muted: #64748b;--accent: #0f7fa3;--accent-ink: #ffffff;--accent-soft: rgba(15, 127, 163, .1);--ok: #138a5e;--ok-soft: rgba(19, 138, 94, .1);--warn: #a8650b;--warn-soft: rgba(168, 101, 11, .1);--bad: #c43c3c;--bad-soft: rgba(196, 60, 60, .09);--violet: #5b4bd6;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 6px 18px rgba(15, 23, 42, .05);color-scheme:light}[data-theme=lime]{--bg: #f6f9f1;--bg-2: #eef4e4;--surface: #ffffff;--surface-2: #f7fbf0;--border: #dfe9d1;--border-strong: #c7d8b0;--text: #15210b;--text-2: #3b4f27;--muted: #627456;--accent: #4d7c0f;--accent-ink: #ffffff;--accent-soft: rgba(132, 204, 22, .16);--fill: #84cc16;--primary-bg: #a3e635;--primary-ink: #1a2e05;--ok: #15803d;--ok-soft: rgba(21, 128, 61, .1);--warn: #b45309;--warn-soft: rgba(180, 83, 9, .1);--bad: #c2410c;--bad-soft: rgba(194, 65, 12, .09);--violet: #6d28d9;--shadow: 0 1px 2px rgba(21, 33, 11, .05), 0 6px 18px rgba(21, 33, 11, .05);color-scheme:light}[data-theme=lime] .card.accent{background:linear-gradient(180deg,rgba(163,230,53,.22),transparent 75%),var(--surface);border-color:#b7dc7a}[data-theme=lime] .sidebar{background:#f1f7e7}[data-theme=lime] .brand-mark{background:#ecfccb;border-color:#bef264}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;line-height:1.25;letter-spacing:-.01em}h1{font-size:1.45rem;font-weight:650}h2{font-size:1.12rem;font-weight:620}h3{font-size:.98rem;font-weight:600}p{margin:0}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.text-2{color:var(--text-2)}.small{font-size:.84rem}.tiny{font-size:.75rem}.upper{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:600;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.shell{display:flex;min-height:100%}.sidebar{width:236px;flex-shrink:0;background:var(--bg-2);border-right:1px solid var(--border);padding:18px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px}.brand-mark{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);border:1px solid var(--border-strong)}.brand-name{font-weight:700;letter-spacing:.12em;font-size:.82rem}.brand-sub{font-size:.68rem;color:var(--muted);letter-spacing:.04em}.nav-link{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;color:var(--text-2);font-weight:500;font-size:.92rem;border:1px solid transparent}.nav-link:hover{background:var(--surface);text-decoration:none;color:var(--text)}.nav-link.active{background:var(--surface);color:var(--text);border-color:var(--border)}.nav-link.active svg{color:var(--accent)}.nav-link svg{width:18px;height:18px;flex-shrink:0}.sidebar-foot{margin-top:auto;padding:10px;display:flex;flex-direction:column;gap:8px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 28px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:20}.topbar-title{font-weight:600;font-size:.98rem}.content{padding:24px 28px 48px;max-width:1120px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head p{color:var(--muted);margin-top:4px}.bottom-nav,.fab{display:none}@media (max-width: 860px){.sidebar{display:none}.topbar{padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top))}.content{padding:16px 14px calc(var(--nav-h) + 90px)}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:color-mix(in srgb,var(--bg-2) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--nav-h);color:var(--muted);font-size:.68rem;font-weight:600;background:none;border:0;font-family:inherit;cursor:pointer}.bottom-nav a.active{color:var(--accent);text-decoration:none}.bottom-nav svg{width:22px;height:22px}.fab{display:grid;place-items:center;position:fixed;right:16px;bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));z-index:31;width:52px;height:52px;border-radius:16px;background:var(--surface-2);color:var(--warn);border:1px solid var(--border-strong);box-shadow:var(--shadow);cursor:pointer}.fab svg{width:24px;height:24px}.hide-mobile{display:none!important}}@media (min-width: 861px){.hide-desktop{display:none!important}}.grid{display:grid;gap:16px}.grid-2{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.dash-grid{display:grid;gap:16px;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}@media (max-width: 960px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid{grid-template-columns:1fr}}@media (max-width: 640px){.grid-2,.grid-3{grid-template-columns:1fr}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.stack-sm{display:flex;flex-direction:column;gap:6px}.stack-lg{display:flex;flex-direction:column;gap:20px}.grow{flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card-tight{padding:14px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card.accent{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:linear-gradient(180deg,var(--accent-soft),transparent 70%),var(--surface)}.card.warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--border))}.divider{height:1px;background:var(--border);margin:14px 0}.stat{padding:14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border)}.stat-label{font-size:.74rem;color:var(--muted);font-weight:600;letter-spacing:.02em}.stat-value{font-family:var(--mono);font-size:1.45rem;font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums}.stat-sub{font-size:.76rem;color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;border-radius:11px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit;font-weight:600;font-size:.92rem;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,transform .05s}.btn:hover{border-color:var(--muted);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:18px;height:18px}.btn-primary{background:var(--primary-bg);color:var(--primary-ink);border-color:transparent}.btn-primary:hover{background:color-mix(in srgb,var(--primary-bg) 88%,white);border-color:transparent}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);border-color:var(--border)}.btn-danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--border));background:var(--bad-soft)}.btn-ok{background:var(--ok);color:#03231a;border-color:transparent}.btn-lg{min-height:54px;font-size:1.02rem;padding:0 22px;border-radius:13px}.btn-sm{min-height:34px;padding:0 11px;font-size:.84rem;border-radius:9px}.btn-block{width:100%}.icon-btn{width:38px;height:38px;padding:0;min-height:0}.field{display:flex;flex-direction:column;gap:6px}.field label,.label{font-size:.82rem;font-weight:600;color:var(--text-2)}.field .hint{font-size:.76rem;color:var(--muted)}.field .err{font-size:.78rem;color:var(--bad)}.input,.select,.textarea{width:100%;min-height:44px;padding:10px 12px;border-radius:10px;border:1px solid var(--border-strong);background:var(--bg-2);color:var(--text);font:inherit;font-size:16px}.textarea{min-height:84px;resize:vertical;line-height:1.45}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--bad)}.check{display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}.check input{width:20px;height:20px;accent-color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-2);font:inherit;font-size:.88rem;font-weight:550;cursor:pointer}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--fill);color:var(--text);font-weight:650}.chip.mood-up[aria-pressed=true]{background:var(--ok-soft);border-color:var(--ok)}.chip.mood-low[aria-pressed=true]{background:var(--warn-soft);border-color:var(--warn)}.chip:disabled{opacity:.6}.seg{display:inline-flex;padding:3px;border-radius:11px;background:var(--bg-2);border:1px solid var(--border);gap:2px;flex-wrap:wrap}.seg button{min-height:34px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-weight:600;font-size:.84rem;cursor:pointer}.seg button[aria-pressed=true]{background:var(--surface-2);color:var(--text);box-shadow:0 0 0 1px var(--border-strong)}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:.74rem;font-weight:650;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}.badge.ok{color:var(--ok);background:var(--ok-soft);border-color:transparent}.badge.warn{color:var(--warn);background:var(--warn-soft);border-color:transparent}.badge.bad{color:var(--bad);background:var(--bad-soft);border-color:transparent}.badge.info{color:var(--accent);background:var(--accent-soft);border-color:transparent}.badge.violet{color:var(--violet);background:color-mix(in srgb,var(--violet) 14%,transparent);border-color:transparent}.badge.plain:before{display:none}.alert{padding:12px 14px;border-radius:11px;border:1px solid var(--border);background:var(--surface-2);font-size:.9rem;display:flex;gap:10px;align-items:flex-start}.alert.bad{border-color:color-mix(in srgb,var(--bad) 40%,var(--border));background:var(--bad-soft)}.alert.warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--border));background:var(--warn-soft)}.alert.ok{border-color:color-mix(in srgb,var(--ok) 40%,var(--border));background:var(--ok-soft)}.alert.info{border-color:color-mix(in srgb,var(--accent) 35%,var(--border));background:var(--accent-soft)}.alert ul{margin:4px 0 0;padding-left:18px}.bar{height:8px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border);overflow:hidden}.bar>span{display:block;height:100%;background:var(--fill);border-radius:999px;transition:width .3s}.bar.ok>span{background:var(--ok)}.ring-wrap{position:relative;display:grid;place-items:center}.ring-label{position:absolute;text-align:center}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.list-item:last-child{border-bottom:0}.habit-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid var(--border);background:var(--surface-2);min-height:56px;cursor:pointer;width:100%;text-align:left;color:var(--text);font:inherit}.habit-row[aria-pressed=true]{border-color:color-mix(in srgb,var(--ok) 45%,var(--border));background:var(--ok-soft)}.tick{width:26px;height:26px;border-radius:8px;border:2px solid var(--border-strong);display:grid;place-items:center;flex-shrink:0}.habit-row[aria-pressed=true] .tick{background:var(--ok);border-color:var(--ok);color:#04241a}.kv{display:grid;grid-template-columns:130px 1fr;gap:6px 14px;font-size:.9rem}.kv dt{color:var(--muted);font-weight:600;font-size:.8rem;padding-top:2px}.kv dd{margin:0;white-space:pre-wrap;word-break:break-word}@media (max-width: 520px){.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:8px}}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}@media (max-width: 1100px){.week{grid-template-columns:1fr}}.day{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:12px;min-height:150px;display:flex;flex-direction:column;gap:8px}.day.today{border-color:var(--accent)}.day.deep{background:linear-gradient(180deg,color-mix(in srgb,var(--violet) 10%,transparent),transparent 60%),var(--surface)}.day-head{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.task-chip{text-align:left;border:1px solid var(--border);background:var(--surface-2);border-radius:10px;padding:10px;color:var(--text);font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:6px;width:100%}.task-chip:hover{border-color:var(--border-strong)}.task-chip .t{font-weight:600;font-size:.9rem;line-height:1.3}.add-slot{border:1px dashed var(--border-strong);border-radius:10px;padding:14px;color:var(--muted);background:transparent;font:inherit;font-weight:600;cursor:pointer;min-height:56px}.add-slot:hover{color:var(--text);border-color:var(--accent)}.focus-wrap{max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.timer{font-family:var(--mono);font-size:clamp(3.2rem,15vw,5.4rem);font-weight:600;text-align:center;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}.phase-track{display:flex;gap:4px}.phase-track>div{height:8px;border-radius:4px;background:var(--bg-2);border:1px solid var(--border);overflow:hidden}.phase-track>div>span{display:block;height:100%;background:var(--fill)}.phase-track>div.break>span{background:var(--violet)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#03070c9e;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .15s ease}.modal{width:100%;max-width:560px;max-height:calc(100vh - 40px);overflow:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;padding:20px;box-shadow:0 20px 60px #00000073}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}@media (max-width: 640px){.overlay{align-items:flex-end;padding:0}.modal{max-width:none;border-radius:18px 18px 0 0;max-height:92vh;padding:18px 16px calc(18px + env(safe-area-inset-bottom));animation:slide .2s ease}}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{transform:translateY(30px);opacity:.5}}.toast-wrap{position:fixed;left:50%;transform:translate(-50%);bottom:24px;z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;width:calc(100% - 32px);max-width:420px;pointer-events:none}@media (max-width: 860px){.toast-wrap{bottom:calc(var(--nav-h) + 80px)}}.toast{pointer-events:auto;padding:11px 14px;border-radius:11px;background:var(--surface-2);border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:.9rem;font-weight:550;width:100%}.toast.bad{border-color:var(--bad)}.toast.ok{border-color:var(--ok)}.sync{display:inline-flex;align-items:center;gap:7px;font-size:.76rem;color:var(--muted);font-weight:600}.sync .dot{width:8px;height:8px;border-radius:50%;background:var(--ok)}.sync.offline .dot{background:var(--warn)}.sync.error .dot{background:var(--bad)}.sync.saving .dot{background:var(--accent);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.35}}.empty{text-align:center;padding:34px 18px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:10px}.empty h3{color:var(--text)}.spinner{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--border-strong);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-page{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:100%;max-width:420px}.steps{display:flex;gap:6px}.steps>span{flex:1;height:4px;border-radius:2px;background:var(--border)}.steps>span.on{background:var(--fill)}.quote{border-left:3px solid var(--accent);padding:6px 0 6px 12px;color:var(--text-2);font-style:italic;white-space:pre-wrap}.pre{white-space:pre-wrap;word-break:break-word}table.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{text-align:left;font-size:.74rem;color:var(--muted);font-weight:650;padding:8px;border-bottom:1px solid var(--border)}.table td{padding:9px 8px;border-bottom:1px solid var(--border);vertical-align:top}.table-wrap{overflow-x:auto}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
