:root{--color-paper: oklch(96.5% .014 95);--color-paper-2: oklch(93.8% .016 92);--color-card: oklch(99.2% .006 95);--color-ink: oklch(27% .02 68);--color-ink-2: oklch(46% .022 66);--color-rule: oklch(88% .016 88);--color-accent: oklch(50% .082 152);--color-accent-strong: oklch(43% .085 152);--color-accent-ink: oklch(38% .09 152);--color-accent-soft: oklch(93.5% .03 152);--color-danger: oklch(52% .15 25);--color-focus: oklch(50% .11 152);--font-display: "Fraunces", Georgia, serif;--font-body: "Hanken Grotesk", system-ui, -apple-system, sans-serif;--font-data: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--space-2xl: 4.5rem;--text-xs: .75rem;--text-sm: .8125rem;--text-md: 1rem;--text-lg: 1.25rem;--text-xl: 1.6rem;--text-display: clamp(1.9rem, 7vw, 2.6rem);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-short: .2s;--radius-card: 16px;--radius-input: 10px;--radius-pill: 999px;--nav-h: 62px;--maxw: 540px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:clip}html,body,#root{min-height:100%}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);font-weight:560;font-style:normal;letter-spacing:-.02em;line-height:1.08;overflow-wrap:anywhere;min-width:0;margin:0}.app{max-width:var(--maxw);margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;position:relative}.app-header{position:sticky;top:0;z-index:10;background:linear-gradient(var(--color-paper) 72%,transparent);padding:calc(var(--space-lg) + env(safe-area-inset-top)) var(--space-md) var(--space-xs)}.app-header .masthead{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-sm)}.app-header h1{font-size:var(--text-display)}.app-header .sub{font-family:var(--font-data);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-2);margin-top:var(--space-2xs)}.content{flex:1;padding:var(--space-2xs) var(--space-md) calc(var(--nav-h) + var(--space-2xl) + env(safe-area-inset-bottom))}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--maxw);height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in oklch,var(--color-card) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--color-rule);display:flex;z-index:20}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-decoration:none;color:var(--color-ink-2);font-size:.625rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;position:relative;transition:color var(--dur-short) var(--ease-out)}.bottom-nav a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.bottom-nav a.active{color:var(--color-accent-ink)}.bottom-nav a.active:before{content:"";position:absolute;top:0;width:26px;height:3px;border-radius:0 0 var(--radius-pill) var(--radius-pill);background:var(--color-accent)}.eyebrow{font-family:var(--font-data);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink-2);margin:var(--space-md) var(--space-3xs) var(--space-2xs);display:flex;align-items:baseline;gap:var(--space-2xs)}.eyebrow .count{color:var(--color-accent-ink)}.card{background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-card);padding:var(--space-md);margin-bottom:var(--space-xs)}.card h2,.card h3{font-size:var(--text-lg);margin-bottom:var(--space-2xs)}.row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.muted{color:var(--color-ink-2);font-size:var(--text-sm)}.data{font-family:var(--font-data);font-variant-numeric:tabular-nums}.pill{display:inline-block;font-family:var(--font-data);font-size:.6875rem;font-weight:500;letter-spacing:.04em;padding:3px 9px;border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent-ink);text-transform:lowercase}label{display:block;font-size:var(--text-sm);font-weight:600;color:var(--color-ink);margin:var(--space-sm) 0 var(--space-3xs)}input,select,textarea{width:100%;font:inherit;color:var(--color-ink);padding:11px 12px;border:1px solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper);transition:border-color var(--dur-short) var(--ease-out)}input::placeholder,textarea::placeholder{color:color-mix(in oklch,var(--color-ink-2) 70%,transparent)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-accent)}textarea{min-height:76px;resize:vertical;font-family:var(--font-body)}.field-row{display:flex;gap:var(--space-xs)}.field-row>*{flex:1;min-width:0}button{font:inherit;font-weight:600;cursor:pointer;border:1px solid transparent;border-radius:var(--radius-input);padding:12px 16px;background:var(--color-accent-strong);color:var(--color-paper);transition:transform var(--dur-short) var(--ease-out),background var(--dur-short) var(--ease-out)}button:hover{background:#164f2b}button:active{transform:translateY(1px)}button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}button:disabled{opacity:.5;cursor:default}button.secondary{background:var(--color-paper);color:var(--color-ink);border-color:var(--color-rule)}button.secondary:hover{background:var(--color-paper-2)}button.ghost{background:transparent;color:var(--color-accent-ink);border-color:transparent;padding:8px 10px}button.ghost:hover{background:var(--color-accent-soft)}button.danger{background:transparent;color:var(--color-danger);border-color:transparent;padding:6px 10px}button.danger:hover{background:color-mix(in oklch,var(--color-danger) 12%,transparent)}button.block{width:100%}button.sm{padding:8px 13px;font-size:var(--text-sm)}.link-btn,.link-btn:hover,.link-btn:active{background:none;border:none;padding:0;transform:none;color:var(--color-accent-ink);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.link-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:3px}.check-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-rule)}.check-item:first-child{padding-top:0}.check-item:last-child{border-bottom:none;padding-bottom:0}.check-box{width:28px;height:28px;border-radius:9px;border:1.5px solid var(--color-rule);background:var(--color-paper);display:grid;place-items:center;color:var(--color-paper);flex:0 0 auto;padding:0;transition:background var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out)}.check-box svg{width:16px;height:16px;stroke:currentColor;stroke-width:2.4;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:20;stroke-dashoffset:20}.check-box.done{background:var(--color-accent-strong);border-color:var(--color-accent-strong)}.check-box.done svg{stroke-dashoffset:0;transition:stroke-dashoffset var(--dur-short) var(--ease-out)}.timeline{position:relative;margin-left:6px;padding-left:var(--space-md);border-left:2px solid var(--color-rule)}.timeline .event{position:relative;padding:2px 0 var(--space-md)}.timeline .event:last-child{padding-bottom:0}.timeline .event:before{content:"";position:absolute;left:calc(-1 * var(--space-md) - 7px);top:6px;width:12px;height:12px;border-radius:50%;background:var(--color-accent);border:3px solid var(--color-card)}.spark{display:block;width:100%;height:44px;margin-top:var(--space-2xs)}table.labs{width:100%;border-collapse:collapse;font-size:var(--text-sm)}table.labs th,table.labs td{text-align:left;padding:var(--space-2xs) var(--space-3xs);border-bottom:1px solid var(--color-rule)}table.labs tr:last-child td{border-bottom:none}table.labs th{color:var(--color-ink-2);font-family:var(--font-data);font-size:var(--text-xs);font-weight:500;letter-spacing:.06em;text-transform:uppercase}table.labs td.val{font-family:var(--font-data);font-variant-numeric:tabular-nums}.mood-row{display:flex;justify-content:space-between;gap:var(--space-3xs)}.mood-row button{flex:1;background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-input);font-size:22px;padding:8px 0;opacity:.55;transition:opacity var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),background var(--dur-short) var(--ease-out)}.mood-row button.on{opacity:1;border-color:var(--color-accent);background:var(--color-accent-soft)}.empty{text-align:center;color:var(--color-ink-2);padding:var(--space-xl) var(--space-md);font-size:var(--text-sm)}.error{color:var(--color-danger);font-size:var(--text-sm);margin:var(--space-2xs) 0}.center-screen{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:var(--space-md)}.auth-card{width:100%;max-width:400px;padding:var(--space-lg)}.auth-card h1{font-size:var(--text-display)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.content>.card,.content>form.card,.content>a>.card{animation:rise var(--dur-short) var(--ease-out) both}.content>*:nth-child(2){animation-delay:30ms}.content>*:nth-child(3){animation-delay:60ms}.content>*:nth-child(4){animation-delay:90ms}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important}.check-box.done svg{stroke-dashoffset:0}}
