:root{--bg: #150e10;--surface: #1e1418;--surface-2: #2a1c21;--border: #402b32;--text: #f2e9eb;--text-dim: #a8929a;--accent: #e0475e;--accent-soft: #f27d8e;--accent-ink: #2b0a10;--ok: #58c98a;--danger: #e0475e;--radius: 12px;--radius-sm: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--tabbar-h: 60px;--font-editor: Georgia, "Times New Roman", serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}input,textarea,select{font:inherit;font-size:16px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;width:100%;min-height:44px}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}a{color:var(--accent-soft)}.app{max-width:640px;margin:0 auto;min-height:100dvh}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:calc(env(safe-area-inset-top) + var(--space-3)) var(--space-4) var(--space-3);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.topbar-title{font-size:18px;font-weight:650;margin:0;letter-spacing:.2px}.topbar-spacer{width:44px}.content{padding:var(--space-4) var(--space-4) calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--space-5))}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:5;display:flex;max-width:640px;margin:0 auto;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) 0;min-height:var(--tabbar-h);justify-content:center;color:var(--text-dim);text-decoration:none;font-size:11px}.tab-active{color:var(--accent-soft)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-sm);color:var(--text-dim)}.icon-btn:active{background:var(--surface-2)}.icon-btn.danger{color:var(--danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:10px 18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);font-weight:600;text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:disabled{opacity:.6}.btn-ghost{background:transparent}.btn-big{width:100%;min-height:52px;font-size:17px}.btn-link{color:var(--accent-soft);min-height:44px;display:inline-flex;align-items:center;font-size:15px}.btn-link.danger{color:var(--danger)}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.field>span{font-size:13px;color:var(--text-dim)}.form-error{color:var(--accent-soft);font-size:14px;margin:var(--space-3) 0}.muted{color:var(--text-dim)}.small{font-size:13px}.empty-state{text-align:center;padding:var(--space-5) var(--space-3)}.section-title{font-size:14px;font-weight:650;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);margin:0 0 var(--space-3)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.toast{position:fixed;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + var(--space-4));left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:8px 18px;font-size:14px;z-index:20;white-space:nowrap}.splash{min-height:100dvh;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;color:var(--accent-soft)}.auth-screen{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--space-5);max-width:420px;margin:0 auto}.auth-brand{font-size:34px;margin:0;color:var(--accent-soft)}.auth-sub{color:var(--text-dim);margin:var(--space-1) 0 var(--space-5);font-size:14px}.auth-form{width:100%;display:flex;flex-direction:column}.offline-banner{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);font-size:14px;color:var(--text-dim);margin:0 0 var(--space-4)}.streak-card{text-align:center;padding:var(--space-5) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-4)}.streak-number{font-size:64px;font-weight:750;line-height:1;margin:0;color:var(--accent-soft);font-variant-numeric:tabular-nums}.streak-label{color:var(--text-dim);margin:var(--space-2) 0 var(--space-4)}.streak-bar{height:8px;border-radius:999px;background:var(--surface-2);overflow:hidden}.streak-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent-soft));transition:width .4s ease}.streak-goal{margin:var(--space-2) 0 0;font-size:13px;color:var(--text-dim)}.btn-dive{width:100%;min-height:56px;font-size:18px;letter-spacing:.3px;margin-bottom:var(--space-4)}.intro-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4)}.intro-card h2{font-size:16px;margin:0 0 var(--space-2)}.intro-card p{margin:0;color:var(--text-dim);font-size:14px}.days-card{margin-bottom:var(--space-4)}.days-grid{display:grid;grid-template-columns:repeat(14,1fr);gap:6px}.day-dot{aspect-ratio:1;border-radius:4px;background:var(--surface-2);border:1px solid var(--border)}.day-dot.done{background:var(--accent);border-color:var(--accent)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);display:flex;flex-direction:column;gap:2px}.stat-num{font-size:24px;font-weight:700;color:var(--accent-soft);font-variant-numeric:tabular-nums}.stat-lbl{font-size:12px;color:var(--text-dim)}.prepare-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:calc(env(safe-area-inset-top) + var(--space-4)) var(--space-4) calc(env(safe-area-inset-bottom) + var(--space-5));max-width:520px;margin:0 auto}.prepare-back{align-self:flex-start;color:var(--text-dim)}.prepare-kicker{color:var(--text-dim);margin:var(--space-5) 0 0;font-size:14px}.prepare-word{font-size:44px;margin:var(--space-2) 0;font-family:var(--font-editor);font-weight:600;text-align:center;overflow-wrap:anywhere}.prepare-change{margin-bottom:var(--space-5);color:var(--text-dim);font-size:14px;min-height:44px}.prepare-word-long{font-size:26px;line-height:1.3}.prepare-lists{display:flex;flex-direction:column;gap:var(--space-3);margin:var(--space-2) 0 var(--space-3);width:100%}.prepare-list{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;justify-content:center}.prepare-list-name{flex-basis:100%;text-align:center;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.prepare-list .chip{font-family:var(--font-editor);font-size:16px;color:var(--text)}.rules-prompt{font-family:var(--font-editor);color:var(--text)}.rules-card{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--space-5)}.rules-head{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);font-weight:650;min-height:48px}.rules-chevron{color:var(--text-dim);font-size:20px}.rules-list{margin:0;padding:0 var(--space-4) var(--space-4) calc(var(--space-4) + 18px);color:var(--text-dim);font-size:14px;display:flex;flex-direction:column;gap:var(--space-2)}.prepare-note{color:var(--text-dim);font-size:13px;margin:var(--space-3) 0 0}.write-screen{position:fixed;top:var(--vvtop, 0px);left:0;right:0;height:var(--vvh, 100dvh);display:flex;flex-direction:column;max-width:640px;margin:0 auto;background:var(--bg);padding:0 var(--space-4)}.write-bar{display:flex;justify-content:space-between;align-items:baseline;padding:calc(env(safe-area-inset-top) + var(--space-3)) 0 var(--space-2)}.write-word{font-family:var(--font-editor);font-size:18px;color:var(--text-dim)}.write-timer{font-variant-numeric:tabular-nums;font-size:15px;color:var(--text-dim)}.write-timer-low{color:var(--accent-soft)}.editor{flex:1;min-height:0;background:transparent;border:none;border-radius:0;padding:var(--space-2) 0;resize:none;font-family:var(--font-editor);font-size:19px;line-height:1.65;caret-color:var(--accent)}.editor:focus{outline:none}.editor::placeholder{color:color-mix(in srgb,var(--text-dim) 55%,transparent)}.write-foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0 calc(env(safe-area-inset-bottom) + var(--space-2));border-top:1px solid var(--border)}.senses-strip{font-size:11px;letter-spacing:.4px;color:color-mix(in srgb,var(--text-dim) 70%,transparent);overflow-x:auto;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}.senses-strip::-webkit-scrollbar{display:none}.write-status{font-size:11px;color:color-mix(in srgb,var(--text-dim) 70%,transparent);white-space:nowrap}.write-warning{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 64px);left:var(--space-4);right:var(--space-4);background:var(--surface-2);border:1px solid var(--accent);border-radius:var(--radius);padding:var(--space-3);font-size:14px;margin:0;z-index:3}.write-abandon{position:absolute;top:calc(env(safe-area-inset-top) + var(--space-3));left:50%;transform:translate(-50%);color:color-mix(in srgb,var(--text-dim) 60%,transparent);font-size:13px;min-height:0}.session-loading,.session-gone{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-5);color:var(--text-dim);text-align:center}.harvest{padding:calc(env(safe-area-inset-top) + var(--space-4)) var(--space-4) calc(env(safe-area-inset-bottom) + 96px);max-width:640px;margin:0 auto}.harvest-head{margin-bottom:var(--space-4)}.harvest-when{color:var(--text-dim);font-size:13px;margin:0}.harvest-word{font-family:var(--font-editor);font-size:32px;margin:var(--space-1) 0}.harvest-badge{display:inline-block;font-size:12px;border-radius:999px;padding:3px 10px;margin:0}.harvest-badge.ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.harvest-badge.partial{background:var(--surface-2);color:var(--text-dim)}.harvest-hint{color:var(--text-dim);font-size:13px;margin:0 0 var(--space-3)}.harvest-exercise{color:var(--accent-soft)}.harvest-context{font-family:var(--font-editor);font-size:14px;color:var(--text-dim);margin:0 0 var(--space-2)}.exercises-intro{font-size:14px;margin:0 0 var(--space-4)}.exercise-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.exercise-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4)}.exercise-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.exercise-name{font-size:18px;margin:0}.exercise-mins{font-size:12px;color:var(--text-dim);white-space:nowrap}.exercise-tagline{color:var(--accent-soft);font-size:14px;margin:var(--space-1) 0}.exercise-desc{color:var(--text-dim);font-size:14px;margin:0 0 var(--space-3)}.exercise-tag{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-soft)}.harvest-text{font-family:var(--font-editor);font-size:18px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-4);-webkit-user-select:text;user-select:text}.harvest-text .empty{color:var(--text-dim);font-style:italic}.harvest-text::selection,.harvest-text *::selection{background:color-mix(in srgb,var(--accent) 45%,transparent)}.harvest-lines{margin-bottom:var(--space-4)}.line-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.line-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);font-family:var(--font-editor);font-size:15px}.harvest-actions{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.harvest-actions .btn{width:100%}.harvest-fab{position:fixed;bottom:calc(env(safe-area-inset-bottom) + var(--space-4));left:50%;transform:translate(-50%);background:var(--accent);color:#fff;font-weight:650;border-radius:999px;padding:14px 22px;min-height:48px;box-shadow:0 6px 24px color-mix(in srgb,var(--accent) 40%,transparent);z-index:15;white-space:nowrap}.search{margin-bottom:var(--space-3)}.chips{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-2);margin-bottom:var(--space-3);-webkit-overflow-scrolling:touch}.chip{flex:0 0 auto;border:1px solid var(--border);border-radius:999px;padding:6px 14px;min-height:36px;font-size:14px;color:var(--text-dim);background:var(--surface)}.chip-on{background:color-mix(in srgb,var(--accent) 22%,var(--surface));border-color:var(--accent);color:var(--text)}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.session-row{width:100%;display:flex;align-items:center;gap:var(--space-2);text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);color:var(--text-dim)}.session-row-main{flex:1;min-width:0}.session-row-top{display:flex;align-items:center;gap:var(--space-2)}.session-row-word{font-family:var(--font-editor);font-size:17px;color:var(--text)}.dot-badge{font-size:11px;border-radius:999px;padding:2px 8px}.dot-badge.ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}.dot-badge.partial{background:var(--surface-2);color:var(--text-dim)}.session-row-excerpt{margin:var(--space-1) 0;font-size:14px;color:var(--text-dim);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.session-row-meta{margin:0;font-size:12px;color:color-mix(in srgb,var(--text-dim) 75%,transparent)}.line-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.line-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3) var(--space-4)}.line-card-text{font-family:var(--font-editor);font-size:17px;line-height:1.55;margin:0 0 var(--space-2);overflow-wrap:anywhere}.line-card-foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.line-card-foot .btn-link{font-size:13px;min-height:36px}.line-card-actions{display:flex}.switch-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);min-height:44px}.switch-row input[type=checkbox]{width:48px;min-height:28px;height:28px;appearance:none;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);position:relative;flex:0 0 auto;padding:0;cursor:pointer}.switch-row input[type=checkbox]:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--text-dim);transition:transform .15s ease,background .15s ease}.switch-row input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.switch-row input[type=checkbox]:checked:after{transform:translate(20px);background:#fff}.settings-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.crash-screen{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:var(--space-5);max-width:480px;margin:0 auto}.crash-title{color:var(--accent-soft)}.crash-text{color:var(--text-dim)}.crash-detail{font-family:monospace;font-size:12px;color:var(--text-dim);background:var(--surface);border-radius:var(--radius-sm);padding:var(--space-3);overflow-wrap:anywhere}.crash-actions{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-3)}
