@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&display=swap";:root{--velvet:#1b1416;--velvet-2:#241a1d;--velvet-3:#2d2125;--inset:#150f11;--moon:#f4e9e2;--moon-2:#f4e9e2ad;--moon-3:#f4e9e26b;--hairline:#ffe2d617;--hairline-strong:#ffe2d629;--garnet:#d95d72;--garnet-deep:#a63a50;--garnet-soft:#d95d7229;--candle:#d9a05b;--candle-soft:#d9a05b24;--sage:#8faf87;--font-display:"Fraunces", Georgia, serif;--font-ui:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", sans-serif;--text-xs:11px;--text-sm:13px;--text-md:15px;--text-lg:19px;--text-xl:24px;--text-display:38px;--pad-screen:20px;--pad-card:16px;--gap-section:24px;--gap-micro:8px;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--velvet:#faf4ef;--velvet-2:#fff;--velvet-3:#f3e9e2;--inset:#f0e5dd;--moon:#33232a;--moon-2:#33232aad;--moon-3:#33232a6b;--hairline:#4628321a;--hairline-strong:#4628322e;--garnet:#c24560;--garnet-deep:#9c2f47;--garnet-soft:#c245601f;--candle:#b07c3a;--candle-soft:#b07c3a21;--sage:#5f8757;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box}html,body{background:var(--velvet);color:var(--moon);font-family:var(--font-ui);font-size:var(--text-md);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}#root{flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}h1,h2,h3{text-wrap:balance;margin:0}p{text-wrap:pretty}button{font-family:var(--font-ui);color:inherit;cursor:pointer;background:0 0;border:none;padding:0}button:active{transform:scale(.97)}.display-num{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.shell-main{padding:var(--pad-screen);padding-bottom:calc(64px + env(safe-area-inset-bottom) + 16px);flex:1;overflow-y:auto}.tabbar{background:color-mix(in srgb, var(--velvet) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--hairline);max-width:480px;padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(4,1fr);margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar button{min-height:52px;font-size:var(--text-sm);color:var(--moon-3);letter-spacing:.02em;font-weight:500;transition:color .16s cubic-bezier(.23,1,.32,1)}.tabbar button[aria-current=true]{color:var(--moon)}.tabbar button[aria-current=true] .tab-glyph{color:var(--garnet)}.tab-glyph{color:var(--moon-3);margin-bottom:3px;font-size:15px;line-height:1;display:block}.card{background:var(--velvet-2);border:1px solid var(--hairline);border-radius:var(--radius-md);padding:var(--pad-card)}.section-label{font-size:var(--text-xs);letter-spacing:.09em;text-transform:uppercase;color:var(--moon-3);margin-bottom:var(--gap-micro);font-weight:500}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pred-card{flex-direction:column;gap:10px;display:flex}.pred-loading{opacity:.4;min-height:120px}.pred-empty{color:var(--moon-2);font-size:var(--text-md);margin:0}.pred-main{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.pred-range{font-size:var(--text-display);font-weight:500;line-height:1.1}.pred-until{font-size:var(--text-sm);color:var(--moon-2)}.pred-overdue{color:var(--candle)}.tide{height:34px;margin-top:2px;position:relative}.tide-band{background:linear-gradient(90deg, transparent 0%, var(--candle-soft) 12%, var(--candle-soft) 88%, transparent 100%);border-radius:999px;position:absolute;inset:6px 0}.tide-crest{background:linear-gradient(90deg, color-mix(in srgb, var(--candle) 20%, transparent), color-mix(in srgb, var(--candle) 55%, transparent) 50%, color-mix(in srgb, var(--candle) 20%, transparent));border-radius:999px;position:absolute;top:6px;bottom:6px}.tide-edge{font-size:var(--text-xs);color:var(--moon-3);position:absolute;top:100%}.tide-edge.left{left:0}.tide-edge.right{right:0}.pred-meta{font-size:var(--text-sm);color:var(--moon-3);justify-content:space-between;margin-top:6px;display:flex}.today{gap:var(--gap-section);flex-direction:column;display:flex}.today-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.today-title{text-align:center}.today-title h1{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500}.today-sub{font-size:var(--text-sm);color:var(--moon-3)}.day-nav{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--moon-2);place-items:center;font-size:22px;display:grid}.day-nav:disabled{opacity:.25}.flow-row{gap:6px;display:flex}.flow-pill{border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--velvet-2);min-height:40px;font-size:var(--text-sm);color:var(--moon-2);flex:1;font-weight:500;transition:background .16s cubic-bezier(.23,1,.32,1),color .16s cubic-bezier(.23,1,.32,1)}.flow-pill.on{background:var(--garnet-soft);border-color:var(--garnet);color:var(--garnet)}.flow-pill.flow-none.on{background:var(--velvet-3);border-color:var(--hairline-strong);color:var(--moon-2)}.pain-slider{width:100%;accent-color:var(--garnet);min-height:44px}.chip-wrap{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--hairline);background:var(--velvet-2);min-height:36px;font-size:var(--text-sm);color:var(--moon-2);border-radius:999px;padding:0 14px;transition:background .16s cubic-bezier(.23,1,.32,1)}.chip.on{background:var(--garnet-soft);border-color:var(--garnet);color:var(--garnet)}.sex-counter{align-items:center;gap:14px;display:flex}.step{border-radius:var(--radius-sm);border:1px solid var(--hairline);background:var(--velvet-2);width:44px;height:44px;color:var(--moon-2);place-items:center;font-size:20px;display:grid}.step:disabled{opacity:.25}.sex-num{font-size:var(--text-xl);text-align:center;min-width:28px}.sex-hint{font-size:var(--text-sm);color:var(--moon-3)}.notes{background:var(--inset);border:1px solid var(--hairline);border-radius:var(--radius-sm);width:100%;color:var(--moon);font-family:var(--font-ui);font-size:var(--text-md);resize:vertical;padding:10px 12px}.notes::placeholder{color:var(--moon-3)}.notes:focus{border-color:var(--hairline-strong);outline:none}.saved-hint{bottom:calc(72px + env(safe-area-inset-bottom));font-size:var(--text-sm);color:var(--sage);opacity:0;pointer-events:none;transition:opacity .2s cubic-bezier(.23,1,.32,1),transform .2s cubic-bezier(.23,1,.32,1);position:fixed;left:50%;transform:translate(-50%)translateY(6px)}.saved-hint.show{opacity:1;transform:translate(-50%)translateY(0)}.month-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.weekday{text-align:center;font-size:var(--text-xs);letter-spacing:.06em;color:var(--moon-3);padding:4px 0;font-weight:500}.day{aspect-ratio:1;border-radius:var(--radius-sm);min-height:40px;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--moon-2);border:1px solid #0000;place-items:center;display:grid;position:relative}.day.empty{pointer-events:none}.day.flow{color:var(--velvet);font-weight:600}.day.flow-light{background:color-mix(in srgb, var(--garnet) 45%, var(--velvet-2))}.day.flow-medium{background:color-mix(in srgb, var(--garnet) 70%, var(--velvet-2))}.day.flow-heavy{background:var(--garnet-deep);color:var(--moon)}.day.spotting{background:radial-gradient(circle at 50% 78%, var(--garnet) 0 2.5px, transparent 3px), var(--velvet-2)}.day.pred-80{background:var(--candle-soft)}.day.pred-50{background:color-mix(in srgb, var(--candle) 30%, var(--velvet-2));color:var(--velvet);font-weight:600}.day.today{border-color:var(--moon-2)}.sex-dot{background:var(--moon-3);border-radius:999px;width:4px;height:4px;position:absolute;top:5px;right:6px}.calendar{flex-direction:column;gap:16px;display:flex}.cal-head{justify-content:space-between;align-items:center;display:flex}.cal-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:500}.cal-legend{font-size:var(--text-xs);color:var(--moon-3);flex-wrap:wrap;gap:12px;display:flex}.cal-legend span{align-items:center;gap:5px;display:inline-flex}.lg{border-radius:3px;width:10px;height:10px;display:inline-block}.lg-flow{background:var(--garnet)}.lg-spot{background:radial-gradient(circle, var(--garnet) 0 1.5px, transparent 2px), var(--velvet-3)}.lg-pred{background:var(--candle-soft);border:1px solid var(--candle)}.lg-sex{background:var(--moon-3);border-radius:999px;width:5px;height:5px}.stats{gap:var(--gap-section);flex-direction:column;display:flex}.stats-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:500}.stats-empty{color:var(--moon-2)}.stat-tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.stat-tile{background:var(--velvet-2);border:1px solid var(--hairline);border-radius:var(--radius-md);flex-direction:column;gap:2px;padding:12px 14px;display:flex}.stat-label{font-size:var(--text-xs);letter-spacing:.09em;text-transform:uppercase;color:var(--moon-3);font-weight:500}.stat-num{font-size:var(--text-xl);font-weight:600}.stat-sub{font-size:var(--text-xs);color:var(--moon-3)}.chart-block{background:var(--velvet-2);border:1px solid var(--hairline);border-radius:var(--radius-md);padding:var(--pad-card);flex-direction:column;gap:8px;display:flex}.chart{width:100%;height:auto}.chart-caption{font-size:var(--text-xs);color:var(--moon-3)}.band{fill:var(--velvet-3)}.mean-line{stroke:var(--moon-3);stroke-width:1px;stroke-dasharray:3 4}.axis{stroke:var(--hairline-strong);stroke-width:1px}.tick{fill:var(--moon-3);text-anchor:end;font-variant-numeric:tabular-nums;font-size:9px}.tick.mid{text-anchor:middle}.lolli{stroke:var(--garnet);stroke-width:2px;stroke-linecap:round;opacity:.85}.dot{fill:var(--garnet)}.lolli.sel,.dot.sel{opacity:1;filter:brightness(1.15)}.pain-line{fill:none;stroke:var(--garnet);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.symptom-rows{flex-direction:column;gap:7px;display:flex}.symptom-row{grid-template-columns:76px 1fr 26px;align-items:center;gap:8px;display:grid}.symptom-name{font-size:var(--text-sm);color:var(--moon-2)}.symptom-bar{background:var(--garnet);opacity:.75;border-radius:4px;justify-self:start;min-width:8px;height:8px}.symptom-n{font-size:var(--text-sm);color:var(--moon-2);text-align:right}.score-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.score-tile{border:1px solid var(--hairline);border-radius:var(--radius-sm);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.score-tile.lead{border-color:var(--garnet);background:var(--garnet-soft)}.score-model{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--moon-3);font-weight:500}.score-tile.lead .score-model{color:var(--garnet)}.score-num{font-size:var(--text-xl);font-weight:600}.score-sub{font-size:var(--text-xs);color:var(--moon-3)}.score-note{font-size:var(--text-xs);color:var(--moon-3);margin:0}.key-reveal{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.key-code{border-radius:var(--radius-sm);background:var(--inset);border:1px solid var(--hairline-strong);width:100%;font-size:var(--text-md);letter-spacing:.04em;text-align:center;-webkit-user-select:all;user-select:all;padding:12px;display:block}.backup-actions{gap:8px;display:flex}.backup-status{font-weight:500}.more-btn.subtle{color:var(--moon-3);background:0 0;border-color:#0000}.restore-box{border-top:1px solid var(--hairline);flex-direction:column;gap:8px;padding-top:10px;display:flex}.more{flex-direction:column;gap:14px;display:flex}.more-title{font-family:var(--font-display);font-size:var(--text-xl);margin-bottom:6px;font-weight:500}.more-card{flex-direction:column;gap:8px;display:flex}.more-text{font-size:var(--text-sm);color:var(--moon-2);margin:0}.more-btn{border-radius:var(--radius-sm);border:1px solid var(--hairline-strong);background:var(--velvet-3);min-height:40px;font-size:var(--text-sm);color:var(--moon);align-self:flex-start;padding:0 16px;font-weight:500}.more-btn.primary{background:var(--garnet-soft);border-color:var(--garnet);color:var(--garnet)}.import-preview{border-top:1px solid var(--hairline);flex-direction:column;gap:8px;padding-top:10px;display:flex}.import-warning{font-size:var(--text-xs);color:var(--candle);margin:0}.import-actions{gap:8px;display:flex}.more-message{font-size:var(--text-sm);color:var(--sage)}.sync-controls{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.sync-email{background:var(--inset);border:1px solid var(--hairline);border-radius:var(--radius-sm);width:100%;color:var(--moon);font-size:var(--text-md);padding:10px 12px}.sync-email:focus{border-color:var(--hairline-strong);outline:none}
