@font-face{font-family:DM Serif Display;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-serif-display-latin-ext-400-normal.p18AlW_x.woff2)format("woff2"),url(./dm-serif-display-latin-ext-400-normal.B1toqZab.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Serif Display;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-serif-display-latin-400-normal.C5_t9oOD.woff2)format("woff2"),url(./dm-serif-display-latin-400-normal._kVFYEpx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./albert-sans-latin-ext-400-normal.CK6y59xR.woff2)format("woff2"),url(./albert-sans-latin-ext-400-normal.DEC9K0b4.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./albert-sans-latin-400-normal.1PQZqV1o.woff2)format("woff2"),url(./albert-sans-latin-400-normal.CesMP4Nj.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./albert-sans-latin-ext-500-normal.DRBq3jn_.woff2)format("woff2"),url(./albert-sans-latin-ext-500-normal.BELBd-5-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./albert-sans-latin-500-normal.CmxtX9KC.woff2)format("woff2"),url(./albert-sans-latin-500-normal.CItXc8sT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./albert-sans-latin-ext-600-normal.C7nfSnWt.woff2)format("woff2"),url(./albert-sans-latin-ext-600-normal.DJOKJsr0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Albert Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./albert-sans-latin-600-normal.C_5W882s.woff2)format("woff2"),url(./albert-sans-latin-600-normal.gYdudiP1.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-display:"DM Serif Display", serif;--ink:#e9e4d2;--txt:#c9d1ea;--muted:#6f79a8;--dim:#6f79a866;--garnet:#a34057;--garnet-lt:#c46a7e;--sky:#6fa3d2;--today-ring:2px;--today-ring-color:var(--sky);--today-glow:3px;--today-font:15px;--flow-medium-alpha:85%;--flow-light-alpha:70%;--flow-spotting-alpha:25%;--today-glow-alpha:60%;--nav-h:57px;--sheet-peek:172px;--sheet-mid-pct:42;--sheet-top-inset:14px;--surface:#c9d1ea12;--surface-bd:#c9d1ea21;--surface-solid:#171e44;--on-fill:#0b1026;--on-garnet:#f4efe3;--danger:#d0656b;--bg:radial-gradient(120% 90% at 50% 0%, #1a2350 0%, #10173a 45%, #0b1026 100%)}@media (prefers-color-scheme:light){:root{--ink:#2a3356;--txt:#2a3356;--muted:#8a90b8;--dim:#8a90b88c;--garnet:#a34057;--garnet-lt:#a34057;--sky:#6fa3d2;--surface:#ffffffa6;--surface-bd:#2a335621;--surface-solid:#fdfcf8;--on-fill:#f7f5ee;--danger:#a8353b;--bg:radial-gradient(120% 90% at 50% 0%, #f7f5ee 0%, #f0eee6 55%, #e9e7df 100%)}}*{box-sizing:border-box;margin:0;padding:0}html{height:100%}body{background:var(--bg);min-height:100%;color:var(--txt);-webkit-font-smoothing:antialiased;background-attachment:fixed;font-family:Albert Sans,sans-serif}.app-shell{flex-direction:column;max-width:430px;margin:0 auto;padding-bottom:76px;display:flex}html.app-scroll,html.app-scroll body{overscroll-behavior:none}html.app-scroll body{min-height:100lvh}.scroll-root{overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;position:fixed;inset:0;overflow-y:auto}h1,.display{font-family:var(--font-display);color:var(--ink);font-weight:400}.topbar{letter-spacing:.2em;color:var(--muted);justify-content:space-between;align-items:baseline;padding:22px 24px 0;font-size:12px;display:flex}.topbar .brand{color:var(--ink);font-weight:500}.card{background:var(--surface);border:1px solid var(--surface-bd);border-radius:18px;margin:16px 22px 0;padding:16px 18px}.sec-label{letter-spacing:.26em;color:var(--muted);text-transform:uppercase;margin-bottom:10px;font-size:10px}button,input,textarea{font:inherit;color:inherit}input:not([type]),input[type=text],input[type=email],input[type=search],textarea{font-size:16px}button{cursor:pointer;background:0 0;border:none}:focus-visible{outline:2px solid var(--sky);outline-offset:2px;border-radius:4px}.flow-seg{gap:5px;display:flex}.flow-seg label{flex:1}.flow-seg input{opacity:0;pointer-events:none;position:absolute}.flow-seg span{text-align:center;letter-spacing:.04em;background:var(--surface);border:1px solid var(--surface-bd);color:var(--muted);text-transform:uppercase;border-radius:14px;padding:10px 0;font-size:10px;display:block}.flow-seg input:checked+span{background:var(--garnet);border-color:var(--garnet);color:var(--on-fill);font-weight:600}.flow-seg label:first-child input:checked+span{background:var(--ink);border-color:var(--ink)}.flow-seg label:not(:first-child) input:checked+span{color:var(--on-garnet)}.flow-seg input:focus-visible+span{outline:2px solid var(--sky);outline-offset:2px}.flow-row{gap:var(--flow-gap,6px);display:flex}.flow-btn{background:var(--surface);border:1px solid var(--surface-bd);color:var(--muted);border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:1px;padding:4px 0;display:flex}.flow-btn .flow-icon svg{height:var(--flow-icon-h,22px);fill:currentColor;width:auto;display:block}.flow-btn .flow-label{letter-spacing:.06em;text-transform:uppercase;font-size:10px}.flow-btn.on{background:var(--garnet);border-color:var(--garnet);color:var(--on-garnet)}textarea.note{resize:vertical;background:var(--surface);border:1px solid var(--surface-bd);border-radius:12px;width:100%;min-height:72px;padding:10px 12px;font-size:16px}textarea.note::placeholder{color:var(--muted)}.save-btn{background:var(--ink);width:calc(100% - 44px);color:var(--on-fill);letter-spacing:.14em;text-align:center;border-radius:22px;margin:18px 22px 6px;padding:14px 0;font-size:13px;font-weight:600;display:block}.notice{color:var(--sky);text-align:center;margin:10px 22px 0;font-size:12px}.notice[role=alert]{color:var(--danger)}.cal-nav{justify-content:center;align-items:center;gap:16px;padding-top:14px;display:flex}.cal-nav .month{font-family:var(--font-display);color:var(--ink);text-align:center;min-width:190px;font-size:26px}.cal-nav a{background:var(--surface);border:1px solid var(--surface-bd);width:34px;height:34px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;font-size:15px;text-decoration:none;display:flex}.cal-head{text-align:center;letter-spacing:.14em;color:var(--muted);grid-template-columns:repeat(7,1fr);margin:14px 22px 6px;font-size:9px;display:grid}.cal-grid{grid-template-columns:repeat(7,1fr);gap:5px 4px;margin:0 22px;display:grid}.cal-grid a{height:30px;color:var(--txt);border:1px solid #0000;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:12px;text-decoration:none;display:flex}.cal-grid a.dim{color:var(--dim)}.cal-grid a.flow{color:var(--on-garnet);background:var(--garnet);font-weight:600}.cal-grid a.flow-medium{background:color-mix(in srgb, var(--garnet) var(--flow-medium-alpha), transparent)}.cal-grid a.flow-light{background:color-mix(in srgb, var(--garnet) var(--flow-light-alpha), transparent)}.cal-grid a.flow-spotting{background:color-mix(in srgb, var(--garnet) var(--flow-spotting-alpha), transparent)}.cal-grid a.today{border:var(--today-ring) solid var(--today-ring-color);box-shadow:0 0 0 var(--today-glow) color-mix(in srgb, var(--today-ring-color) var(--today-glow-alpha), transparent);color:var(--ink);font-weight:700;font-size:var(--today-font)}.cal-grid a.today.flow{color:var(--on-garnet)}.cal-grid .ed{background:var(--muted);border-radius:50%;width:4px;height:4px}.cal-grid a.flow .ed{background:var(--on-garnet)}.cal-leg{letter-spacing:.08em;color:var(--muted);justify-content:center;gap:16px;margin-top:14px;font-size:10px;display:flex}.cal-leg .k{align-items:center;gap:6px;display:flex}.nav{background:color-mix(in srgb, var(--surface-solid) 85%, transparent);border-top:1px solid var(--surface-bd);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-inner{width:100%;max-width:430px;display:flex}.nav a{text-align:center;color:var(--muted);letter-spacing:.22em;flex:1;padding:17px 0 22px;font-size:12px;text-decoration:none}.nav a.on{color:var(--ink);font-weight:600}.auth{flex-direction:column;gap:14px;max-width:430px;margin:0 auto;padding:15dvh 32px 0;display:flex}.auth input[type=email]{background:var(--surface);border:1px solid var(--surface-bd);border-radius:14px;width:100%;padding:12px 14px}.chiprow{flex-wrap:wrap;gap:7px;display:flex}.chip{background:var(--surface);border:1px solid var(--surface-bd);color:var(--txt);border-radius:17px;align-items:center;gap:5px;padding:8px 13px;font-size:12px;display:inline-flex}.chip.on{background:color-mix(in srgb, var(--garnet) 18%, transparent);border-color:var(--garnet-lt);color:var(--garnet-lt);font-weight:500}.chip.on[data-i="3"]{background:var(--garnet);color:var(--on-fill)}.chip .i-dots{letter-spacing:2px;font-weight:700}.chip.ghost{color:var(--muted);background:0 0;border-style:dashed}.chip-check input{opacity:0;pointer-events:none;position:absolute}.chip-check input:checked+.chip{background:color-mix(in srgb, var(--sky) 22%, transparent);border-color:var(--sky);color:var(--ink)}.chip-check input:focus-visible+.chip{outline:2px solid var(--sky);outline-offset:2px}.scales{flex-direction:column;gap:12px;display:flex}.scale{justify-content:space-between;align-items:center;display:flex}.scale .lab{letter-spacing:.2em;color:var(--muted);font-size:10px}.scale .dots{align-items:center;gap:7px;display:flex}.dot-radio input{opacity:0;pointer-events:none;position:absolute}.dot-radio span{border:1px solid var(--surface-bd);background:var(--surface);width:18px;height:18px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:flex}.dot-radio input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--on-fill)}.dot-radio input:focus-visible+span{outline:2px solid var(--sky);outline-offset:2px}.flow-seg.three span{text-transform:none;letter-spacing:.02em;font-size:11px}.seg-btn{letter-spacing:.02em;background:var(--surface);border:1px solid var(--surface-bd);color:var(--txt);border-radius:14px;flex:1;padding:10px 0;font-size:11px}.seg-btn.on{background:var(--garnet);border-color:var(--garnet);color:var(--on-garnet);font-weight:600}.addtag-row{gap:8px;display:flex}.addtag-row input{background:var(--surface);border:1px solid var(--surface-bd);border-radius:12px;flex:1;min-width:0;padding:8px 12px}.hist-item{color:inherit;background:var(--surface);border:1px solid var(--surface-bd);border-radius:14px;margin:10px 22px 0;padding:12px 16px;text-decoration:none;display:block}.hist-item .d{color:var(--ink);font-size:12px;font-weight:600}.hist-item .m{color:var(--muted);margin-top:3px;font-size:11px}.hist-item .n{color:var(--txt);margin-top:4px;font-size:12px}.card-foot{letter-spacing:.06em;color:var(--muted);text-underline-offset:3px;margin-top:10px;font-size:12px;text-decoration:underline;display:block}.next-period{color:var(--txt);margin-bottom:0}.cyc-row-btn{text-align:left;width:100%;color:inherit}.cycles-drawer{--cyc-pad:12px;--cyc-bar-h:4px;--day-font:13px;--day-pad:8px}.cycle-list,.day-list{margin:0;padding:0;list-style:none}.cycle{padding:var(--cyc-pad) 0;border-bottom:1px solid var(--surface-bd)}.cycle-main{text-align:left;width:100%;color:inherit;padding:0;display:block}.cycle-line{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.cycle-range{color:var(--ink);font-size:14px}.cycle-len{font-family:var(--font-display);color:var(--ink);font-size:20px;line-height:1}.cycle-len small{letter-spacing:.06em;color:var(--muted);margin-left:2px;font-family:Albert Sans,sans-serif;font-size:11px}.cycle-bar{height:var(--cyc-bar-h);border-radius:2px;margin-top:8px;display:flex;overflow:hidden}.cycle-bar-red{background:var(--garnet)}.cycle-bar-grey{background:color-mix(in srgb, var(--muted) 35%, transparent)}.cycle-meta{letter-spacing:.04em;color:var(--muted);justify-content:space-between;align-items:baseline;gap:12px;margin-top:6px;font-size:11px;display:flex}.cycle-x{letter-spacing:.04em;color:color-mix(in srgb, var(--muted) 75%, transparent);padding:2px 0;font-size:11px}.cycle.excluded .cycle-x{color:var(--garnet-lt)}.cycle.excluded .cycle-range,.cycle.excluded .cycle-len{color:var(--muted);text-decoration:line-through}.cycle.excluded .cycle-bar{opacity:.4}.day-list{border-top:1px solid var(--surface-bd);margin-top:8px}.day-line{padding:var(--day-pad) 0;border-bottom:1px solid color-mix(in srgb, var(--surface-bd) 60%, transparent);color:var(--txt);font-size:var(--day-font);grid-template-columns:62px 10px 1fr;align-items:baseline;column-gap:8px;text-decoration:none;display:grid}.day-list li:last-child .day-line{border-bottom:none}.day-date{color:var(--muted);letter-spacing:.04em;white-space:nowrap;font-size:11px}.day-flow{background:0 0;border-radius:50%;align-self:center;width:8px;height:8px}.day-flow[data-flow=spotting]{background:color-mix(in srgb, var(--garnet) var(--flow-spotting-alpha), transparent)}.day-flow[data-flow=light]{background:color-mix(in srgb, var(--garnet) var(--flow-light-alpha), transparent)}.day-flow[data-flow=medium]{background:color-mix(in srgb, var(--garnet) var(--flow-medium-alpha), transparent)}.day-flow[data-flow=heavy]{background:var(--garnet)}.day-sum b{color:var(--garnet-lt);font-weight:600}.day-note{color:var(--muted);font-style:italic;font-size:calc(var(--day-font) - 1px);grid-column:3;margin-top:2px;line-height:1.35}.day-empty{padding:var(--day-pad) 0;color:var(--muted);font-size:12px}.list-drawer.cycles-drawer{flex-direction:column;padding-bottom:0;display:flex}.cycles-drawer .cycle-list{flex:1 0 auto}.cycles-drawer .search-dock{margin-top:auto}html.kb-open .nav{visibility:hidden}.list-drawer:focus{outline:none}.search-dock{bottom:var(--kb-inset,0px);padding:10px 22px calc(14px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface-solid) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--surface-bd);margin:12px -22px 0;position:sticky}.search-dock .searchbar{margin:0}.searchbar{gap:8px;margin:14px 22px 0;display:flex}.searchbar input{background:var(--surface);border:1px solid var(--surface-bd);border-radius:16px;flex:1;padding:10px 14px}:root{--chart-a:#4e90d2;--chart-b:#c95e79;--grid:#c9d1ea1f}@media (prefers-color-scheme:light){:root{--chart-a:#3d7fc4;--chart-b:#ad3e5e;--grid:#2a33561a}}.tiles{grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 22px 0;display:grid}.tile{background:var(--surface);border:1px solid var(--surface-bd);border-radius:16px;padding:14px 16px}.tile .v{font-family:var(--font-display);color:var(--ink);font-size:24px}.tile .v small{font-size:13px}.tile .l{letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-top:3px;font-size:10px}.chart-card h3{color:var(--ink);font-size:13px;font-weight:600}.sub{color:var(--muted);margin-top:2px;margin-bottom:10px;font-size:11px}.chart-card svg{width:100%;display:block}.guard-note{color:var(--muted);text-align:center;padding:10px 0 4px;font-size:12px}.cyc-row{border-bottom:1px solid var(--surface-bd);justify-content:space-between;align-items:center;padding:7px 0;font-size:12px;display:flex}.cyc-row:last-child{border-bottom:none}.cyc-row .len{color:var(--ink);font-weight:600}.cyc-row button{letter-spacing:.08em;color:var(--muted);border:1px solid var(--surface-bd);border-radius:10px;padding:4px 10px;font-size:10px}.cyc-row.excluded{opacity:.45}.cyc-row.excluded .len{text-decoration:line-through}.cal-summary{z-index:5;background:color-mix(in srgb, var(--surface-solid) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--surface-bd);padding-bottom:8px;position:sticky;top:0}.cal-pred{padding:6px 24px 0;font-size:11px;line-height:1.5}.cal-grid a.fertile{border:1px dashed var(--sky)}.cal-grid a.future{color:var(--dim)}.cal-grid a.future.pred{color:var(--garnet-lt)}.earlier{text-align:center;color:var(--muted);letter-spacing:.14em;padding:18px 0 10px;font-size:11px;text-decoration:none;display:block}.drawer{background:var(--surface-solid);border:1px solid var(--surface-bd);border-bottom:none;border-radius:24px 24px 0 0;max-width:430px;min-height:94dvh;margin:6dvh auto 0;padding-bottom:40px}@media (prefers-reduced-motion:no-preference){.drawer{animation:.22s drawer-up}@keyframes drawer-up{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:none}}}.drawer-head{justify-content:space-between;align-items:center;padding:16px 24px 6px;display:flex}.back-btn{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-size:12px;text-decoration:none}.drawer-cycleday{letter-spacing:.2em;color:var(--ink);font-size:11px}.cal-grid a.ovu{border:1px dashed var(--sky)}.cal-grid a.pred{border:1px dashed color-mix(in srgb, var(--garnet-lt) 45%, transparent)}.cal-grid a.ppd{border:1px dashed var(--garnet-lt);background:color-mix(in srgb, var(--garnet) 22%, transparent)}html[data-theme=day]{--ink:#2a3356;--txt:#2a3356;--muted:#8a90b8;--dim:#8a90b88c;--garnet:#a34057;--garnet-lt:#a34057;--sky:#6fa3d2;--surface:#ffffffa6;--surface-bd:#2a335621;--surface-solid:#fdfcf8;--on-fill:#f7f5ee;--danger:#a8353b;--bg:radial-gradient(120% 90% at 50% 0%, #f7f5ee 0%, #f0eee6 55%, #e9e7df 100%);--chart-a:#3d7fc4;--chart-b:#ad3e5e;--grid:#2a33561a}@media (prefers-color-scheme:light){html[data-theme=night]{--ink:#e9e4d2;--txt:#c9d1ea;--muted:#6f79a8;--dim:#6f79a866;--garnet:#a34057;--garnet-lt:#c46a7e;--sky:#6fa3d2;--surface:#c9d1ea12;--surface-bd:#c9d1ea21;--surface-solid:#171e44;--on-fill:#0b1026;--danger:#d0656b;--bg:radial-gradient(120% 90% at 50% 0%, #1a2350 0%, #10173a 45%, #0b1026 100%);--chart-a:#4e90d2;--chart-b:#c95e79;--grid:#c9d1ea1f}}.delete-entry{letter-spacing:.14em;color:var(--muted);border:1px solid var(--surface-bd);border-radius:14px;padding:8px 16px;font-size:11px}.delete-entry.armed{color:var(--danger);border-color:var(--danger);font-weight:600}.dot-btn{border:1px solid var(--surface-bd);background:var(--surface);border-radius:50%;width:18px;height:18px;padding:0}.dot-btn.on{background:var(--ink);border-color:var(--ink)}.figo-chip{color:var(--garnet-lt);font-weight:600;text-decoration:none}.info-i{border:1px solid var(--garnet-lt);width:12px;height:12px;font-size:8px;font-style:italic;font-family:var(--font-display);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.brand-row{align-items:center;gap:8px;display:inline-flex}.info-btn{border:1px solid var(--muted);width:18px;height:18px;color:var(--muted);font-size:10px;font-style:italic;font-family:var(--font-display);letter-spacing:0;border-radius:50%;justify-content:center;align-items:center;line-height:1;display:inline-flex}.list-drawer.legend-sheet{max-height:80dvh;top:auto}.list-drawer.feedback-sheet{max-height:80dvh;top:auto;bottom:var(--kb-inset,0px)}.feedback-sheet textarea.note{min-height:120px}.feedback-sheet .auth-btn{width:100%;margin:14px 0 0}.legend-list{color:var(--txt);flex-direction:column;gap:12px;margin:14px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.legend-list li{align-items:center;gap:12px;display:flex}.legend-list .sw{border:1px solid #0000;border-radius:50%;flex:none;width:16px;height:16px}.legend-list .sw-dot{background:var(--muted);width:5px;height:5px;margin:0 5.5px}.legend-list .sw-today{border:var(--today-ring) solid var(--today-ring-color);box-shadow:0 0 0 var(--today-glow) color-mix(in srgb, var(--today-ring-color) var(--today-glow-alpha), transparent)}.legend-figo{align-items:center;gap:6px;margin-top:18px;font-size:12px;display:inline-flex}.cal-grid a.selected:not(.today){background:var(--surface);border-color:var(--ink);color:var(--ink)}.app-shell.with-sheet{padding-bottom:calc(var(--nav-h) + 50dvh)}.day-sheet{left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + var(--kb-inset,0px));top:calc(var(--sheet-top-inset) + env(safe-area-inset-top));z-index:20;background:var(--surface-solid);border:1px solid var(--surface-bd);touch-action:none;will-change:transform;border-bottom:none;border-radius:24px 24px 0 0;flex-direction:column;max-width:430px;margin:0 auto;transition:transform .22s cubic-bezier(.2,.8,.2,1);display:flex;position:fixed;box-shadow:0 -8px 30px #05081459}.day-sheet:after{content:"";height:calc(var(--nav-h) + env(safe-area-inset-bottom) + 4px);background:var(--surface-solid);position:absolute;top:100%;left:0;right:0}.day-sheet.pos-full{transform:translateY(0)}.day-sheet.pos-mid{transform:translateY(calc(100% - var(--sheet-mid-pct) * 1%))}.day-sheet.pos-collapsed{transform:translateY(calc(100% - var(--sheet-peek)))}.day-sheet.dragging{transition:none}.sheet-head{cursor:grab;-webkit-user-select:none;user-select:none;flex:none;padding:8px 24px 10px}.sheet-head:active{cursor:grabbing}.sheet-grab{background:var(--surface-bd);border-radius:3px;width:44px;height:5px;margin:0 auto 10px;display:block}.sheet-peek{align-items:baseline;gap:12px;min-height:24px;display:flex}.sheet-date{font-family:var(--font-display);color:var(--ink);flex:1;font-size:20px}.sheet-today{letter-spacing:.2em;text-transform:uppercase;color:var(--today-ring-color);margin-left:8px;font-family:Albert Sans,sans-serif;font-size:10px}.tag-hint{margin:10px 0 0;font-size:11px}.tag-hint a{color:var(--sky)}.tag-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tag-list li{align-items:center;gap:10px;display:flex}.tag-list li>form:first-child{flex:1;min-width:0}.tag-name{background:var(--surface);border:1px solid var(--surface-bd);border-radius:12px;width:100%;padding:8px 12px}.tag-list li.retired .tag-name{color:var(--muted);text-decoration:line-through}.tag-uses{letter-spacing:.1em;color:var(--muted);white-space:nowrap;font-size:10px}.tag-act{letter-spacing:.08em;color:var(--muted);border:1px solid var(--surface-bd);white-space:nowrap;border-radius:10px;padding:5px 9px;font-size:11px}.tag-act.armed{color:var(--danger);border-color:var(--danger)}.save-status{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);text-align:right;opacity:0;min-width:52px;font-size:10px;transition:opacity .4s}.save-status[data-status=saving],.save-status[data-status=error]{opacity:1}.save-status[data-status=saved]{opacity:.8}.save-status[data-status=error]{color:var(--danger)}.sheet-flow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border:1px solid var(--surface-bd);border-radius:12px;padding:4px 10px;font-size:11px}.sheet-flow[data-flow=spotting],.sheet-flow[data-flow=light],.sheet-flow[data-flow=medium],.sheet-flow[data-flow=heavy]{color:var(--on-garnet);background:var(--garnet);border-color:var(--garnet)}.sheet-body .card{margin:2px 22px 12px}.sheet-body{overscroll-behavior:contain;touch-action:none;flex:1;min-height:0;overflow-y:hidden}.day-sheet.pos-full .sheet-body{touch-action:pan-y;overflow-y:auto}.nav{z-index:25}.cal-grid a.pms{background-image:repeating-linear-gradient(45deg, transparent 0 3px, color-mix(in srgb, var(--muted) 32%, transparent) 3px 4.5px);border-radius:20px}.tappable{cursor:pointer}button.chart-card{text-align:left;width:calc(100% - 44px);display:block}.list-backdrop{z-index:30;background:#0508148c;border:none;width:100%;position:fixed;inset:0}html[data-theme=day] .list-backdrop{background:#2a335659}.list-drawer{z-index:31;background:var(--surface-solid);border:1px solid var(--surface-bd);overscroll-behavior:contain;touch-action:pan-y;border-bottom:none;border-radius:24px 24px 0 0;max-width:430px;margin:0 auto;padding:16px 22px 40px;transition:transform .18s;position:fixed;inset:10dvh 0 0;overflow-y:auto}.list-drawer.dragging{transition:none}@media (prefers-reduced-motion:no-preference){.list-drawer{animation:.22s drawer-up}}.drawer-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.close-x{background:var(--surface);border:1px solid var(--surface-bd);width:30px;height:30px;color:var(--muted);border-radius:50%;font-size:13px}.cyc-item{border-bottom:1px solid var(--surface-bd);padding:9px 0}.cyc-item:last-child{border-bottom:none}.cyc-item.excluded{opacity:.45}.cyc-item.excluded .len{text-decoration:line-through}.cyc-item-top{align-items:center;gap:12px;font-size:12px;display:flex}.cyc-item-top .len{color:var(--ink);min-width:34px;font-weight:600}.cyc-item-top form{margin-left:auto}.cyc-item-top button{letter-spacing:.08em;color:var(--muted);border:1px solid var(--surface-bd);border-radius:10px;padding:3px 9px;font-size:10px}.cyc-bar-track{height:4px;margin-top:5px;display:flex}.cyc-bar-red{background:var(--garnet);border-radius:2px 0 0 2px;min-width:3px}.cyc-bar-grey{background:color-mix(in srgb, var(--muted) 35%, transparent);border-radius:0 2px 2px 0}.cal-cont{grid-template-columns:26px repeat(7,1fr);grid-auto-rows:34px;gap:10px 4px;margin:4px 14px 0;position:relative}.cal-cont a{border-radius:50%;justify-self:center;width:34px;height:34px}.cal-head-gutter{grid-template-columns:26px repeat(7,1fr)}.mlabel{writing-mode:vertical-rl;font-family:var(--font-display);color:var(--ink);letter-spacing:.08em;white-space:nowrap;grid-column:1;justify-content:center;align-items:center;scroll-margin-top:130px;font-size:14px;display:flex;transform:rotate(180deg)}.cal-cont a{position:relative}.cal-cont a.mstart:after{content:"";background:color-mix(in srgb, var(--muted) 28%, transparent);height:1px;position:absolute;top:-6px;left:-10px;right:-10px}.cal-cont a.mend:after{content:"";background:color-mix(in srgb, var(--muted) 28%, transparent);height:1px;position:absolute;bottom:-6px;left:-10px;right:-10px}.cal-cont a.mleft:before{content:"";background:color-mix(in srgb, var(--muted) 28%, transparent);width:1px;position:absolute;top:-6px;bottom:-6px;left:-11px}html{background:#0b1026}html[data-theme=day]{background:#e9e7df}@media (prefers-color-scheme:light){html[data-theme=system]{background:#e9e7df}}.cal-summary{padding-top:env(safe-area-inset-top)}.app-shell>.topbar{padding-top:calc(22px + env(safe-area-inset-top))}.app-shell:not(.with-sheet){padding-bottom:calc(var(--nav-h) + 44px + env(safe-area-inset-bottom))}.nav{padding-bottom:env(safe-area-inset-bottom)}.drawer{overscroll-behavior-y:contain;touch-action:pan-y;transition:transform .18s}.drawer.dragging{transition:none}.drawer-grab{background:var(--surface-bd);border-radius:2px;width:36px;height:4px;margin:10px auto 0}button.linkish{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:8px 0 0;font-size:13px;text-decoration:underline}.auth-shell{flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:100dvh;padding:24px;display:flex}.auth-mark{border:1px solid var(--dim);border-radius:50%;width:58px;height:58px;margin-bottom:2px;position:relative}.auth-mark:after{content:"";background:var(--garnet-lt);width:9px;height:9px;box-shadow:0 0 10px color-mix(in srgb, var(--garnet-lt) 60%, transparent);border-radius:50%;position:absolute;top:2px;left:72%}.auth-brand{font-family:var(--font-display);color:var(--ink);letter-spacing:1px;margin:0 0 6px;font-size:34px;font-weight:400}.auth-card{background:var(--surface);border:1px solid var(--surface-bd);border-radius:20px;flex-direction:column;gap:10px;width:min(320px,100%);padding:22px 22px 20px;display:flex}.auth-copy{color:var(--txt);margin:0 0 2px;font-size:13.5px;line-height:1.5}.auth-copy strong{color:var(--ink);font-weight:600}.auth-label{letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-size:11px}.auth-input,.auth-otp{background:color-mix(in srgb, var(--on-fill) 30%, transparent);border:1px solid var(--surface-bd);width:100%;color:var(--ink);border-radius:12px;padding:12px 14px;font-size:16px}.auth-input:focus-visible,.auth-otp:focus-visible{border-color:var(--garnet-lt);outline:none}.auth-input::placeholder,.auth-otp::placeholder{color:var(--dim)}.auth-input[readonly]{color:var(--muted)}.auth-otp{letter-spacing:10px;text-align:center;font-variant-numeric:tabular-nums;padding:10px 0 10px 10px;font-size:26px}.auth-btn{background:var(--garnet);color:#f4eee6;letter-spacing:2.5px;text-transform:uppercase;cursor:pointer;border:none;border-radius:12px;margin-top:6px;padding:12px;font-size:12px}.auth-btn:active{background:var(--garnet-lt)}.auth-error{color:var(--danger);margin:0;font-size:13px}.privacy{max-width:430px;padding:calc(28px + env(safe-area-inset-top)) 28px calc(60px + var(--nav-h) + env(safe-area-inset-bottom));text-align:left;color:var(--txt);margin:0 auto;font-size:15px;line-height:1.55}.privacy-back{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-bottom:26px;font-size:12px;text-decoration:none;display:inline-block}.privacy h1{font-family:var(--font-display);color:var(--ink);margin-bottom:14px;font-size:30px;font-weight:400}.privacy .lede{color:var(--ink);margin-bottom:26px;font-size:16px}.privacy h2{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin:26px 0 8px;font-size:11px}.privacy p{margin:0 0 10px}.privacy ul{margin:0 0 10px;padding-left:18px}.privacy li{margin-bottom:8px}.privacy a{color:var(--sky)}.privacy-updated{color:var(--muted);margin-top:30px;font-size:12px}.auth-consent{color:var(--muted);text-align:center;margin:14px 0 4px;font-size:12px;line-height:1.45}.auth-consent a,.auth-copy a,.auth-foot a{color:var(--sky)}.auth-foot{color:var(--muted);margin-top:4px;font-size:12px}.install-steps{color:var(--txt);flex-direction:column;gap:8px;margin:4px 0 2px;padding-left:20px;font-size:13.5px;line-height:1.5;display:flex}.install-steps strong{color:var(--ink)}
