:root{color-scheme:light dark;--ground: #fbfbfa;--surface: #ffffff;--surface-sunk: #f3f3f1;--line: #e5e4e1;--line-strong: #d2d1cd;--ink: #1a1a18;--ink-muted: #6b6b66;--ink-faint: #97968f;--accent: #3a6b8a;--accent-hover: #2f5872;--accent-sunk: #e8eff4;--accent-ink: #ffffff;--cycle-menstruating: #c8453a;--cycle-ovulating: #2f8f5b;--cycle-pms: #c98a26;--occasion-band: rgba(201, 138, 38, .13);--occasion-edge: rgba(201, 138, 38, .34);--series-1: #2a78d6;--series-2: #eb6834;--series-3: #4a3aa7;--series-4: #e87ba4;--delta-down: #2a78d6;--delta-up: #eb6834;--danger: #b3392e;--radius: 14px;--radius-sm: 9px;--tap: 44px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif;--shadow-card: 0 1px 2px rgba(24, 24, 20, .05), 0 1px 8px rgba(24, 24, 20, .04);--shadow-bar: 0 -1px 0 var(--line)}@media(prefers-color-scheme:dark){:root{--ground: #16161a;--surface: #1e1e22;--surface-sunk: #26262b;--line: #32323a;--line-strong: #45454f;--ink: #f0efec;--ink-muted: #a3a29c;--ink-faint: #76756f;--accent: #7fb2d4;--accent-hover: #9ac6e2;--accent-sunk: #22333f;--accent-ink: #10161b;--cycle-menstruating: #e8695e;--cycle-ovulating: #57bd83;--cycle-pms: #e0a94a;--occasion-band: rgba(224, 169, 74, .15);--occasion-edge: rgba(224, 169, 74, .38);--series-1: #3987e5;--series-2: #d95926;--series-3: #9085e9;--series-4: #d55181;--delta-down: #3987e5;--delta-up: #d95926;--danger: #e8695e;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-bar: 0 -1px 0 var(--line)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;background:var(--ground);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;touch-action:manipulation;-webkit-tap-highlight-color:transparent}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}button{font:inherit;color:inherit}a{color:var(--accent)}.tnum{font-variant-numeric:tabular-nums}.app{min-height:100dvh;display:flex;flex-direction:column}.app-main{flex:1;width:100%;max-width:680px;margin:0 auto;padding:calc(var(--space-4) + env(safe-area-inset-top)) calc(var(--space-4) + env(safe-area-inset-right)) calc(var(--space-6) + 60px + env(safe-area-inset-bottom)) calc(var(--space-4) + env(safe-area-inset-left))}.view-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.view-header .date{color:var(--ink-muted);font-size:14px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);box-shadow:var(--shadow-bar);padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1;min-height:var(--tap);padding:var(--space-2) var(--space-1) var(--space-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--ink-faint);font-size:11px;font-weight:500}.tabbar a .tab-icon{font-size:20px;line-height:1}.tabbar a[aria-current=page]{color:var(--accent)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:var(--space-4);margin-bottom:var(--space-3)}.card+.card{margin-top:0}.card-title{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--space-3)}.hero{display:flex;align-items:flex-end;gap:var(--space-3)}.hero-value{font-size:46px;font-weight:650;line-height:1;letter-spacing:-.03em}.hero-unit{font-size:18px;color:var(--ink-muted);padding-bottom:4px}.hero-meta{color:var(--ink-muted);font-size:13px;margin-top:var(--space-2)}.change{font-size:15px;font-weight:600;padding-bottom:6px}.change.down{color:var(--delta-down)}.change.up{color:var(--delta-up)}.change.same{color:var(--ink-faint)}.stat-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0}.stat-row+.stat-row{border-top:1px solid var(--line)}.stat-label{color:var(--ink-muted);font-size:14px}.stat-value{font-weight:600}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:550;background:var(--surface-sunk);color:var(--ink-muted)}.pill .dot{width:8px;height:8px;border-radius:50%}.pill.menstruating{background:color-mix(in srgb,var(--cycle-menstruating) 14%,transparent);color:var(--cycle-menstruating)}.pill.ovulating{background:color-mix(in srgb,var(--cycle-ovulating) 14%,transparent);color:var(--cycle-ovulating)}.pill.pms{background:color-mix(in srgb,var(--cycle-pms) 16%,transparent);color:var(--cycle-pms)}.pill.menstruating .dot{background:var(--cycle-menstruating)}.pill.ovulating .dot{background:var(--cycle-ovulating)}.pill.pms .dot{background:var(--cycle-pms)}.btn{min-height:var(--tap);padding:0 var(--space-4);display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-weight:600;text-decoration:none;cursor:pointer}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:disabled{opacity:.5;cursor:default}.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn.secondary:hover:not(:disabled){background:var(--surface-sunk)}.btn.danger{background:transparent;color:var(--ink-faint);border-color:transparent;padding:0 var(--space-2);font-weight:500}.btn.danger:hover:not(:disabled),.btn.danger:focus-visible{color:var(--danger);background:transparent}.btn.block{width:100%}.btn-row{display:flex;gap:var(--space-2);flex-wrap:wrap}label{display:block;font-size:13px;color:var(--ink-muted);margin-bottom:6px}input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=submit],[type=reset],[type=button],[type=image],[type=hidden]),select,textarea{display:block;width:100%;min-height:var(--tap);padding:0 var(--space-3);border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:inherit;font-size:16px}input[type=date],input[type=time],input[type=datetime-local],input[type=month],input[type=week]{min-width:0;line-height:normal}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator,input[type=month]::-webkit-calendar-picker-indicator,input[type=week]::-webkit-calendar-picker-indicator{opacity:.55}textarea{padding:var(--space-2) var(--space-3);min-height:72px;line-height:1.4}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.field{margin-bottom:var(--space-3)}.field-error{color:var(--danger);font-size:13px;margin-top:6px}.form-error{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger);border-radius:var(--radius-sm);padding:var(--space-3);margin-bottom:var(--space-3);font-size:14px}.choice-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-2)}.choice-grid.wide{grid-template-columns:repeat(3,1fr)}.choice{min-height:62px;padding:var(--space-2) 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.choice .glyph{font-size:22px;line-height:1}.choice .caption{font-size:10.5px;color:var(--ink-muted);text-align:center}.choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-sunk)}.choice[aria-pressed=true] .caption{color:var(--accent);font-weight:600}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface-sunk);border-radius:var(--radius-sm)}.seg button{min-height:34px;padding:0 var(--space-3);border:0;border-radius:7px;background:transparent;color:var(--ink-muted);font-size:14px;font-weight:550;cursor:pointer}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card)}.log-list{list-style:none;margin:0;padding:0}.log-list li{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--line)}.log-list li:first-child{border-top:0}.log-glyph{font-size:20px;width:26px;text-align:center;flex:none}.log-body{flex:1;min-width:0}.log-primary{font-weight:550}.log-secondary{color:var(--ink-muted);font-size:13px}.log-time{color:var(--ink-faint);font-size:12px;font-variant-numeric:tabular-nums}.empty{color:var(--ink-faint);font-size:14px;text-align:center;padding:var(--space-5) var(--space-3)}.login-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);padding-top:calc(var(--space-4) + env(safe-area-inset-top));padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}.login-card{width:100%;max-width:340px}.login-brand{text-align:center;margin-bottom:var(--space-5)}.login-brand h1{font-size:26px}.login-brand p{color:var(--ink-muted);font-size:14px;margin:var(--space-2) 0 0}.chart-card{padding:var(--space-4) var(--space-2) var(--space-3)}.chart-controls{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;justify-content:space-between;margin-bottom:var(--space-3);padding:0 var(--space-2)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-2) var(--space-2) 0;font-size:12.5px;color:var(--ink-muted)}.chart-legend .swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}.chart-tooltip{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-card);padding:var(--space-2) var(--space-3);font-size:13px}.chart-tooltip .tt-date{color:var(--ink-muted);font-size:12px;margin-bottom:4px}.chart-tooltip .tt-row{display:flex;justify-content:space-between;gap:var(--space-4)}.scroll-x{overflow-x:auto}.sheet-overlay{position:fixed;left:0;right:0;z-index:40;display:flex;align-items:flex-start;justify-content:center;padding:var(--space-3);padding-top:calc(var(--space-3) + env(safe-area-inset-top));background:#14141266;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sheet{width:100%;max-width:420px;max-height:100%;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius);box-shadow:0 8px 40px #14141247;overflow:hidden}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border-bottom:1px solid var(--line)}.sheet-close{min-height:36px;font-size:15px}.sheet-body{padding:var(--space-4);overflow-y:auto;-webkit-overflow-scrolling:touch}.sheet-actions{margin-top:var(--space-4)}.disclosure{display:flex;align-items:center;gap:6px;width:100%;min-height:var(--tap);margin-top:var(--space-2);padding:0;border:0;background:transparent;color:var(--accent);font-size:14px;font-weight:600;cursor:pointer}.disclosure-arrow{display:inline-block;transition:transform .12s ease}.disclosure-arrow.open{transform:rotate(90deg)}.disclosure-hint{color:var(--ink-faint);font-weight:400}.disclosure-body{margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--line)}.disclosure-note{margin:0 0 var(--space-3);color:var(--ink-muted);font-size:13px}.field-row{display:flex;flex-wrap:wrap;gap:var(--space-3)}.field-row .field{flex:1 1 140px;min-width:0}.setting-effects{margin:0 0 var(--space-3);padding-left:18px;color:var(--ink-muted);font-size:13px}.setting-effects li{margin-bottom:2px}.setting-effects strong{color:var(--ink);font-weight:600}.development{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--line)}.development-value{font-size:20px;font-weight:650;font-variant-numeric:tabular-nums}.development-value.down{color:var(--delta-down)}.development-value.up{color:var(--delta-up)}.development-value.same{color:var(--ink-faint)}.development-caption{color:var(--ink-muted);font-size:13px}.chart-block{position:relative}.ribbon{position:relative;height:54px;margin-top:2px;border-top:1px solid var(--line)}.ribbon-cell{position:absolute;top:0;transform:translate(-50%);min-width:22px;padding:3px 1px;display:flex;flex-direction:column;align-items:center;gap:2px;border:0;background:transparent;cursor:pointer;line-height:1}.ribbon-cycle{width:14px;height:5px;border-radius:3px}.ribbon-glyphs{display:flex;gap:1px;font-size:12px;white-space:nowrap}.ribbon-more{font-size:9px;color:var(--ink-faint)}.ribbon-dose{font-size:9px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.ribbon-compact{height:26px}.ribbon-compact .ribbon-cell{min-width:0;padding:3px 0}.ribbon-ticks{display:flex;flex-direction:column;gap:2px;align-items:center}.ribbon-ticks .tick{width:4px;height:4px;border-radius:50%}.tick-mood{background:var(--ink-faint)}.tick-dose{background:var(--accent)}.tick-occasion{background:var(--occasion-edge)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
