:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f3f5;--surface:#fff;--surface-2:#f1ebee;--text:#1d1a1f;--text-2:#5d5560;--muted:#6f6772;--border:#e6dfe3;--grid:#ece6e9;--accent:#c2416b;--on-accent:#fff;--temp:#2a78d6;--period:#c2416b;--period-wash:#c2416b24;--fertile:#1baf7a;--fertile-wash:#1baf7a33;--fertile-best:#1baf7aa6;--warn-bg:#fff4dc;--warn-text:#6b4a00;--radius:14px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#17141a;--surface:#221e26;--surface-2:#2b2630;--text:#f4eff5;--text-2:#c3bcc6;--muted:#958d9a;--border:#36303b;--grid:#302a35;--accent:#de6690;--on-accent:#17141a;--temp:#3987e5;--period:#de6690;--period-wash:#de669033;--fertile:#199e70;--fertile-wash:#199e704d;--fertile-best:#199e70b3;--warn-bg:#3a2f14;--warn-text:#f3d98f}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.45}#root{min-height:100dvh}main{max-width:640px;padding:12px 16px calc(84px + env(safe-area-inset-bottom));margin:0 auto}h1{margin:4px 0 12px;font-size:1.5rem;line-height:1.2}h2{margin:0 0 8px;font-size:1.05rem}p{text-wrap:pretty;margin:0 0 8px}a{color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;padding:14px 16px}.muted{color:var(--muted)}.secondary{color:var(--text-2)}.small{font-size:.875rem}.row{align-items:center;gap:8px;display:flex}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.block{display:block}.hint{margin-top:6px}.error{color:var(--text-2);font-weight:600}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-height:40px;padding:8px 14px;text-decoration:none;display:inline-flex}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}button.danger{color:var(--period)}button.icon{width:40px;padding:0}button.step{background:var(--surface);color:var(--text)}button.step:disabled{opacity:.35}button.link{color:var(--accent);background:0 0;border:0;min-height:0;margin:-8px -12px;padding:8px 12px;font-size:.875rem;font-weight:600}.stepper{gap:8px;display:flex}button:disabled{opacity:.4;cursor:default}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{min-width:40px;min-height:40px;padding:6px 12px;font-size:.9375rem}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}label.field{margin-bottom:12px;display:block}.field-label{color:var(--text-2);margin-bottom:6px;font-size:.875rem;display:block}.mood-label{margin-top:12px}.check{margin-bottom:12px}input,textarea,select{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:8px 10px}textarea{resize:vertical;width:100%;min-height:80px}.temp-input{text-align:center;font-variant-numeric:tabular-nums;flex:none;width:6.5ch;padding:6px 8px;font-size:2.25rem;font-weight:600}.temp-input::placeholder{color:var(--muted);opacity:.7;font-weight:400}input[aria-invalid=true]{border-color:var(--accent)}.temp-row{flex-wrap:nowrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.temp-row label{min-width:0}.temp-row input[type=time]{width:8.5rem;min-width:0;max-width:100%}.check input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);flex:none;margin:0}.section{border-top:1px solid var(--border);margin-top:8px;padding-top:10px}details.section{margin-top:8px;padding-top:0}details>summary{list-style:none}details>summary::-webkit-details-marker{display:none}details.section>summary,details.card>summary{cursor:pointer;align-items:center;gap:8px;min-height:44px;font-weight:500;display:flex}details.section>summary:after,details.card>summary:after{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);flex:none;width:8px;height:8px;margin:0 4px 3px auto;transition:transform .15s;transform:rotate(45deg)}details.section[open]>summary:after,details.card[open]>summary:after{margin-bottom:-3px;transform:rotate(-135deg)}details.card{padding-block:0}details.card>:not(summary){margin-bottom:14px}details.section>summary .summary-value{color:var(--text-2);text-align:right;flex:1;font-size:.875rem;font-weight:400}details.section>.body{padding-bottom:6px}.saved{color:var(--text-2);min-height:1.25rem;margin-bottom:6px;font-size:.8125rem}.saved-chip{animation:2.4s forwards saved-fade;display:inline-block}@keyframes saved-fade{0%{opacity:0}8%,65%{opacity:1}to{opacity:0}}.page-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.page-head h1{margin:0;font-size:clamp(1.35rem,6vw,1.75rem)}.page-head h1 .day-compact{display:none}@media (width<=379.98px){.page-head h1{font-size:clamp(1.1rem,5.5vw,1.25rem)}.page-head h1 .day-long{display:none}.page-head h1 .day-compact{display:inline}}.editing-tag{background:var(--period-wash);color:var(--text);border-radius:999px;padding:1px 10px;font-weight:600;display:inline-block}.back-today{margin-bottom:10px}.day-form.past{border-top:3px solid var(--period)}.eyebrow{color:var(--text-2);font-size:.875rem;line-height:1.4}.status-head{align-items:center;gap:14px;display:flex}.status-day{flex-direction:column;min-width:2.4ch;display:flex}.status-day-label{color:var(--text-2);font-size:.75rem;line-height:1.2}.status-day-num{font-variant-numeric:tabular-nums;font-size:3rem;font-weight:700;line-height:1}.status-title{font-size:1.125rem;font-weight:650;line-height:1.25}.facts{margin:12px 0 0;padding:0;list-style:none}.facts li{text-wrap:pretty;padding:3px 0}.facts li+li{color:var(--text-2)}.tip{margin:6px 0 0}.note{background:var(--warn-bg);color:var(--warn-text);border-radius:10px;margin-top:8px;padding:8px 12px;font-size:.875rem}.cycle-bar{margin-top:14px}.cycle-track{background:var(--surface-2);border-radius:7px;height:14px;position:relative}.seg{position:absolute;top:0;bottom:0}.seg-period{background:var(--period);border-radius:7px 0 0 7px}.seg-fertile{background:var(--fertile-wash);border-radius:4px}.seg-best{background:var(--fertile-best);border-radius:4px}.seg-fertile-predicted{border:1.5px dashed var(--fertile);border-radius:4px}.ov-dot{z-index:2;background:var(--fertile);width:10px;height:10px;box-shadow:0 0 0 1.5px var(--surface);border-radius:50%;margin:-5px 0 0 -5px;position:absolute;top:50%}.ov-dot.predicted{background:var(--surface);border:2px solid var(--fertile)}.seg-next{border-right:2px dashed var(--period);position:absolute;top:-2px;bottom:-5px;right:-1px}.cycle-stage{margin:28px 0 24px;position:relative}.dl-wrap{pointer-events:none;position:absolute;inset:0}.dl-row{position:absolute;left:0;right:0}.dl-row-top{bottom:calc(100% + 13px)}.dl-row-bottom{top:calc(100% + 8px)}.dl{white-space:nowrap;color:var(--text-2);font-variant-numeric:tabular-nums;font-size:11px;line-height:13px;position:absolute}.dl-top{bottom:0}.dl-today{color:var(--text);font-weight:600}.today-pin{z-index:1;background:var(--text);width:3px;box-shadow:0 0 0 1.5px var(--surface);border-radius:2px;margin-left:-1.5px;position:absolute;top:-6px;bottom:-6px}.today-pin:before{content:"";background:var(--text);width:9px;height:9px;box-shadow:0 0 0 1.5px var(--surface);border-radius:50%;margin-left:-4.5px;position:absolute;top:-5px;left:50%}.key{vertical-align:-2px;border-radius:3px;flex:none;width:13px;height:13px;margin-right:6px;display:inline-block}.key-period{background:var(--period)}.key-predicted-period{border:2px dashed var(--period)}.key-fertile{background:var(--fertile-wash)}.key-fertile-predicted{background:var(--fertile-wash);border:2px dashed var(--fertile)}.key-best{background:var(--fertile-best)}.key-fertile-best{background:linear-gradient(90deg, var(--fertile-wash) 50%, var(--fertile-best) 50%)}.key-ov-dot{background:radial-gradient(circle, var(--fertile) 4.5px, transparent 5px)}.key-ov-dot.predicted{background:radial-gradient(circle, var(--surface) 2.5px, var(--fertile) 3px 4.5px, transparent 5px)}.key-ov-line{border-left:2px solid var(--fertile);vertical-align:-3px;border-radius:0;width:0;height:14px;margin:0 8px 0 5px}.key-ov-line.predicted{border-left-style:dashed}.key-logged{background:var(--temp);vertical-align:1px;border-radius:50%;width:6px;height:6px}.banner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:4px 4px 4px 14px;display:flex}.banner button{white-space:nowrap;flex:none}.date-switcher{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.date-switcher .date{text-align:center;flex:1;font-weight:600}nav.tabs{background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:10;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}nav.tabs a{max-width:120px;color:var(--muted);border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:4px 0;font-size:.75rem;text-decoration:none;display:flex}nav.tabs a.active{color:var(--accent);font-weight:600}nav.tabs svg{width:24px;height:24px}.chart-scroll{overflow-x:auto}.chart svg text{font-family:var(--font)}.chart-svg{display:block}.day-detail{margin-top:8px;font-size:.9375rem}table.data{border-collapse:collapse;width:100%;font-size:.875rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:6px 4px}table.data td.num{font-variant-numeric:tabular-nums}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-head{text-align:center;color:var(--muted);padding-bottom:4px;font-size:.75rem}.cal-day{aspect-ratio:1;min-height:0;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:1px solid #0000;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;padding:0;font-size:.9375rem;display:flex;position:relative}.cal-day.outside{visibility:hidden}.cal-day.fertile,.cal-day.fertile-predicted{background:var(--fertile-wash)}.cal-day.best{background:var(--fertile-best)}.cal-day.fertile-predicted:before{content:"";border:2px dashed var(--fertile);border-radius:inherit;position:absolute;inset:-1px}.cal-day.period{background:var(--period);color:var(--on-accent);font-weight:600}.cal-day.predicted-period{border:2px dashed var(--period)}.cal-day.predicted-ovulation:after,.cal-day.ovulation:after{content:"";box-sizing:border-box;background:var(--surface);border:2px solid var(--fertile);width:8px;height:8px;box-shadow:0 0 0 1.5px var(--surface);border-radius:50%;position:absolute;top:auto;bottom:3px;right:3px}.cal-day.ovulation:after{background:var(--fertile)}.cal-day.today{outline:2px solid var(--text);outline-offset:1px;font-weight:700}.cal-day .dot{background:var(--temp);border-radius:50%;width:5px;height:5px;margin-top:2px}.cal-day.period .dot{background:var(--on-accent)}.cal-day .dot.hidden{visibility:hidden}.cal-day:disabled{opacity:1}.legend{color:var(--text-2);flex-wrap:wrap;gap:8px 16px;margin-top:12px;font-size:.8125rem;display:flex}.nowrap{white-space:nowrap}.legend-wide{flex-basis:100%}.legend-pair{white-space:nowrap;margin-left:14px}.legend-dot{vertical-align:-2px;margin-right:6px}.upcoming li{justify-content:flex-start;gap:12px;padding:10px 0}.upcoming li:last-child{border-bottom:0;padding-bottom:0}.upcoming li>span:last-child{white-space:nowrap}.stats{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.stat-wide{grid-column:1/-1}.stat-label{color:var(--text-2);font-size:.8125rem}.stat-value{font-size:1.5rem;font-weight:650}.cycle-row{color:inherit;align-items:center;gap:8px;text-decoration:none;display:flex}.cycle-body{flex:1;min-width:0}.cycle-row .chevron{color:var(--muted);display:flex}.tags{gap:6px;margin-top:4px}.tag{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:.75rem;display:inline-block}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:6px 0;display:flex}.list.spaced{margin-top:8px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
