:root{--bg: #ebeced;--elev-1: #fafafb;--elev-2: #e0e2e4;--border: #d0d3d6;--ink-1: #1b1d20;--ink-2: #52565b;--ink-3: #83888d;--accent: #5b4fcf;--accent-hover: #6e63d8;--accent-pressed: #4a40b5;--accent-soft: rgba(91, 79, 207, .13);--danger: #ff5a5a;--danger-bg: rgba(255, 90, 90, .07);--danger-border: rgba(255, 90, 90, .2);--success: #4caf50;--amber: #d9a407;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-pill: 9999px;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-md: .9375rem;--fs-lg: 1rem;--fs-heading: 1.375rem;--fs-display: 2rem;--fs-clock: 3.25rem;--fs-done: 2.25rem;--dur-fast: .12s;--dur-base: .18s;--ease-standard: cubic-bezier(.22, 1, .36, 1)}@media (prefers-color-scheme: dark){:root{--bg: #080808;--elev-1: #0e0e10;--elev-2: #1a1a1e;--border: rgba(255, 255, 255, .08);--ink-1: #ededed;--ink-2: #a1a1aa;--ink-3: #71717a;--danger: #f87171;--danger-bg: rgba(248, 113, 113, .12);--danger-border: rgba(248, 113, 113, .28);--success: #34d399;--amber: #fbbf24}}*{box-sizing:border-box}html{color-scheme:light dark}html,body,#root{height:100%;margin:0}body{background-color:var(--bg);background-image:linear-gradient(180deg,color-mix(in srgb,var(--accent) 6%,transparent) 0%,transparent 40%);color:var(--ink-1);font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}p,textarea,input,.reflection{-webkit-user-select:text;user-select:text}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit;background:var(--elev-1);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--ink-1);padding:.6rem .7rem;font-size:var(--fs-md);outline:none;width:100%;transition:border-color .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1)}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder,textarea::placeholder{color:var(--ink-3)}.card{background:color-mix(in srgb,var(--elev-1) 58%,transparent);backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%);border:1px solid color-mix(in srgb,var(--ink-1) 8%,var(--border));border-radius:var(--radius-lg);box-shadow:inset 0 1px color-mix(in srgb,white 10%,transparent),0 10px 30px -14px #0006}.btn{border:1px solid var(--border);background:var(--elev-1);color:var(--ink-1);border-radius:var(--radius-md);padding:.55rem .9rem;font-size:var(--fs-md);font-weight:600;transition:border-color .15s ease,background .12s ease,color .12s ease,transform 80ms ease}.btn:hover{border-color:#3a3a4e;background:var(--elev-2)}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(155deg,var(--accent-hover),var(--accent) 60%,var(--accent-pressed));color:#fff;border-color:transparent;box-shadow:inset 0 1px #ffffff40,0 6px 20px -8px color-mix(in srgb,var(--accent) 65%,transparent)}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:active{filter:brightness(.94)}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn-danger{color:var(--danger);border-color:var(--danger-border);background:var(--danger-bg)}.btn-ghost{border-color:transparent;background:none;color:var(--ink-2)}.btn-ghost:hover{background:var(--accent-soft);color:var(--accent)}.muted{color:var(--ink-3)}.row{display:flex;align-items:center;gap:.6rem}a{color:var(--accent)}.tnum{font-variant-numeric:tabular-nums;letter-spacing:-.01em}.micro{font-size:var(--fs-xs);font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--ink-2)}.chip{padding:.55rem 1.1rem;border-radius:var(--radius-xl);border:1px solid var(--border);background:color-mix(in srgb,var(--elev-1) 60%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);color:var(--ink-2);font-weight:600;font-size:var(--fs-md);transition:background .12s ease,border-color .12s ease,color .12s ease,transform 80ms ease}.chip:active{transform:scale(.97)}.chip.active{background:linear-gradient(155deg,var(--accent-hover),var(--accent) 65%,var(--accent-pressed));border-color:transparent;color:#fff;box-shadow:inset 0 1px #ffffff40,0 4px 14px -6px color-mix(in srgb,var(--accent) 60%,transparent)}.clock{position:relative;width:220px;height:220px;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--ink-1) 10%,var(--border));background:color-mix(in srgb,var(--elev-1) 45%,transparent);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);box-shadow:inset 0 1px color-mix(in srgb,white 12%,transparent),inset 0 -12px 30px -18px color-mix(in srgb,var(--accent) 30%,transparent);display:grid;place-items:center;text-align:center}.clock.active{border-color:color-mix(in srgb,var(--ink-1) 10%,var(--border))}.clock:before{content:"";position:absolute;inset:-14px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 16%,transparent),transparent 72%);animation:breathe 4.2s ease-in-out infinite;pointer-events:none;z-index:-1}.clock.active:before{animation-duration:3s}@keyframes breathe{0%,to{opacity:.5;transform:scale(.94)}50%{opacity:1;transform:scale(1.04)}}@media (prefers-reduced-motion: reduce){.clock:before{animation:none;opacity:.7}}.clock-text{font-size:var(--fs-clock);font-weight:700;letter-spacing:2px;font-variant-numeric:tabular-nums}.clock-text.done{font-size:var(--fs-done);color:var(--accent)}.clock-sub{font-size:var(--fs-sm);color:var(--ink-2);margin-top:4px}.modal-overlay{position:fixed;inset:0;background:#0f0f1480;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;z-index:50;padding:1rem}.modal-card{background:color-mix(in srgb,var(--elev-2) 72%,transparent);backdrop-filter:blur(28px) saturate(160%);-webkit-backdrop-filter:blur(28px) saturate(160%);border:1px solid color-mix(in srgb,var(--ink-1) 8%,var(--border));border-radius:var(--radius-xl);box-shadow:inset 0 1px color-mix(in srgb,white 10%,transparent),0 24px 60px -20px #0000008c;padding:1.75rem;width:380px;max-width:100%}.session-card{background:color-mix(in srgb,var(--elev-1) 58%,transparent);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border:1px solid color-mix(in srgb,var(--ink-1) 8%,var(--border));border-radius:var(--radius-lg);padding:1rem;margin-bottom:.75rem}.duration-badge{width:52px;height:52px;border-radius:var(--radius-pill);background:#5b4fcf21;border:1px solid rgba(91,79,207,.27);display:grid;place-items:center;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}.status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.dot-complete{background:var(--success)}.dot-incomplete{background:var(--ink-3)}.reflection{font-size:var(--fs-sm);color:var(--ink-2);font-style:italic;line-height:1.5;margin-top:.5rem}.signal-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.signal-tile{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-md);padding:.6rem .7rem;min-width:0}.signal-value{font-size:var(--fs-md);font-weight:700;color:var(--ink-1);font-variant-numeric:tabular-nums;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.signal-label{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}@media (max-width: 520px){.signal-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent);animation:spin .7s linear infinite;flex-shrink:0;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ring-drain{0%{stroke-dashoffset:0}to{stroke-dashoffset:var(--ring-c, 1000)}}@keyframes complete-bloom{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 45%,transparent)}to{box-shadow:0 0 0 28px transparent}}.clock.just-completed{animation:complete-bloom .9s ease-out}.streak-row{position:relative;display:flex;justify-content:space-between;padding-top:2px}.streak-line{position:absolute;left:14px;right:14px;top:13px;height:2px;background:var(--border);border-radius:2px;overflow:hidden}.streak-line:after{content:"";position:absolute;inset:0;transform-origin:left center;transform:scaleX(var(--fill, 0));background:linear-gradient(90deg,var(--accent-hover, var(--accent)),var(--accent));animation:streak-grow .9s var(--ease-standard) both;animation-delay:.2s}@keyframes streak-grow{0%{transform:scaleX(0)}to{transform:scaleX(var(--fill, 0))}}.streak-node{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:6px}.streak-dot{width:14px;height:14px;border-radius:50%;display:block;background:var(--elev-2);border:1.5px solid var(--border);transform:scale(.5);opacity:0;animation:streak-pop var(--dur-base) var(--ease-standard) both;animation-delay:calc(.12s + var(--i, 0) * 70ms)}.streak-node.active .streak-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent),0 0 10px color-mix(in srgb,var(--accent) 55%,transparent)}@keyframes streak-pop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.15);opacity:1}to{transform:scale(1);opacity:1}}.streak-label{font-size:10px;color:var(--ink-3)}.streak-label.today{color:var(--accent);font-weight:700}@keyframes card-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.card-in{animation:card-in var(--dur-base) var(--ease-standard) both}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2.4s}.btn:active,.chip:active{transform:none}}.sfc-launch{position:fixed;right:max(1rem,env(safe-area-inset-right));z-index:39;bottom:max(1rem,env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1rem;border-radius:999px;border:none;background:var(--accent);color:#fff;font-weight:600;font-size:var(--fs-sm);box-shadow:0 8px 24px #00000059;cursor:pointer}.sfc-launch:hover{background:var(--accent-hover)}.sfc-sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;height:100dvh;background:var(--elev-1);border-top:1px solid var(--border);border-radius:18px 18px 0 0;box-shadow:0 -16px 40px -12px #00000073;transform:translateY(100%);transition:transform .24s ease;display:flex;flex-direction:column;padding:calc(14px + env(safe-area-inset-top)) 16px calc(14px + env(safe-area-inset-bottom))}.sfc-sheet.open{transform:translateY(0)}.sfc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-weight:600;font-size:var(--fs-sm)}.sfc-head .link{background:none;border:none;color:var(--accent);font-size:var(--fs-xs);cursor:pointer}.sfc-chat{display:flex;flex-direction:column;flex:1;max-width:720px;margin:0 auto;width:100%;min-height:0}.sfc-scroll{flex:1;overflow:auto;padding-right:4px}.sfc-msgrow{display:flex;margin:10px 0}.sfc-msgrow.me{justify-content:flex-end}.sfc-bubble{white-space:pre-wrap;max-width:85%;padding:11px 14px;border-radius:14px;font-size:14px;line-height:1.5}.sfc-bubble.bot{border:1px solid var(--border);background:var(--accent-soft);color:var(--ink-1)}.sfc-bubble.me{background:var(--accent);color:#fff}.sfc-bubble.thinking{opacity:.55}.sfc-rows{margin-top:8px;max-height:220px;overflow-y:auto}.sfc-rowitem{display:flex;justify-content:space-between;gap:.6rem;font-size:var(--fs-xs);padding:.3rem 0;border-top:1px solid var(--border)}.sfc-composer{display:flex;gap:8px;padding-top:12px;align-items:flex-end}.sfc-composer textarea{flex:1;resize:none}.sfc-confirm{gap:8px}:root{--radius: 12px;--radius-button: 10px;--radius-chip: 999px;--radius-dialog: 18px}.card{border-radius:12px;box-shadow:0 1px 2px #0000000d}.btn,.btn-primary,.btn-ghost{border-radius:10px}.btn-pill,.chip{border-radius:999px}input,select,textarea{border-radius:8px}.serif{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;font-weight:800;letter-spacing:-.025em;font-style:normal}@media (pointer: coarse){input,textarea,select{font-size:16px}}.app-header{padding:1rem 1.5rem}@media (max-width: 420px){.app-header{padding:.85rem 1rem}.app-wordmark{display:none}}.thinking{opacity:1;animation:or-think-breathe 1.8s ease-in-out infinite}.thinking:after{content:"";display:inline-block;width:1.2em;text-align:left;animation:or-think-dots 1.5s steps(4,end) infinite}@keyframes or-think-breathe{0%,to{opacity:.5}50%{opacity:.95}}@keyframes or-think-dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@media (prefers-reduced-motion: reduce){.thinking{animation:or-think-breathe 3s ease-in-out infinite}.thinking:after{animation:none;content:"..."}}
