:root{--bg:#faf7f8;--card:#fff;--text:#2b2227;--muted:#8a7c83;--border:#eadfe4;--period:#d6336c;--period-text:#fff;--window:#fbe3ec;--fertile:#dff3ea;--ovulation:#1f9d6b;--error:#c92a2a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#17131a;--card:#221c25;--text:#f1e9ee;--muted:#9c8e97;--border:#3a3040;--period:#e64980;--window:#4a2033;--fertile:#173d2e;--ovulation:#38d39f;--error:#ff6b6b}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}main{max-width:460px;margin:0 auto;padding:16px}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:14px;padding:20px;display:flex}h1,h2{text-align:center;margin:0}h2{font-size:1.1rem}h2:first-letter,.weekday:first-letter{text-transform:uppercase}label{color:var(--muted);flex-direction:column;gap:4px;font-size:.9rem;display:flex}input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:10px;padding:10px 12px}button{font:inherit;cursor:pointer;background:var(--period);color:var(--period-text);border:none;border-radius:10px;padding:10px 12px}button:disabled{opacity:.6}.error{color:var(--error);margin:0}header{justify-content:space-between;align-items:center;display:flex}button.icon{width:40px;color:var(--text);background:0 0;padding:6px;font-size:1.4rem;line-height:1}button.link{color:var(--muted);background:0 0;align-self:center}.grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.weekday{text-align:center;color:var(--muted);font-size:.75rem}.day{aspect-ratio:1;color:var(--text);background:0 0;border:2px solid #0000;border-radius:50%;padding:0;position:relative}.day:disabled{opacity:1}.day.other{color:var(--muted);opacity:.5}.day.today{font-weight:700;text-decoration:underline}.day.window,.swatch.window{background:var(--window)}.day.fertile,.swatch.fertile{background:var(--fertile)}.day.marked,.swatch.marked{background:var(--period);color:var(--period-text)}.day.predicted,.swatch.predicted{border-color:var(--period)}.day.ovulation:after{content:"";background:var(--ovulation);border-radius:50%;width:6px;height:6px;margin-left:-3px;position:absolute;bottom:12%;left:50%}.swatch.ovulation{background:var(--ovulation);transform:scale(.5)}.legend{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:8px 14px;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.swatch{border:2px solid #0000;border-radius:50%;width:14px;height:14px}.note{text-align:center;color:var(--muted);margin:0;font-size:.85rem}
