:root{--bg:#fdf7f9;--surface:#fff;--ink:#2c1f26;--ink-soft:#6d5a63;--line:#ecdde4;--brand:#8e3b5e;--brand-soft:#f6e6ed;--on-brand:#fff;--period:#d94f70;--period-ink:#fff;--period-predicted:#f6c3cf;--fertile:#cdeae5;--ovulation:#3f9d8f;--pain:#8b5cf6;--discharge:#14b8a6;--flow:#3b82f6;--bleeding:#f97316;--danger:#b3261e;--radius:14px;--shadow:0 1px 2px #2c1f260f, 0 8px 24px #2c1f260f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#161013;--surface:#221a1f;--ink:#f4eaef;--ink-soft:#b6a2ac;--line:#382b32;--brand:#e79ab8;--brand-soft:#3a2530;--on-brand:#21161b;--period:#d94f70;--period-predicted:#6b3446;--fertile:#2c4b48;--ovulation:#58c3b2;--shadow:0 1px 2px #0006, 0 8px 24px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}p{margin:0}button{font:inherit;color:inherit;cursor:pointer}.app{max-width:560px;padding:0 14px calc(28px + env(safe-area-inset-bottom));margin:0 auto}.app-head{z-index:20;padding:calc(12px + env(safe-area-inset-top)) 0 12px;background:var(--bg);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.app-head h1{color:var(--brand);font-size:20px}.tabs{background:var(--brand-soft);border-radius:999px;gap:2px;padding:3px;display:flex}.tabs button{color:var(--ink-soft);background:0 0;border:0;border-radius:999px;padding:7px 13px;font-size:13px;font-weight:600}.tabs button.on{background:var(--surface);color:var(--brand);box-shadow:0 1px 2px #0000001f}.summary{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:16px;display:flex}.summary-main{font-size:19px;font-weight:650}.summary-sub{color:var(--ink-soft);margin-top:2px;font-size:14px}.summary-note{color:var(--ink-soft);opacity:.85;margin-top:6px;font-size:12px}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:11px;min-height:44px;padding:11px 16px;font-size:14px;font-weight:600}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.btn.ghost{color:var(--ink-soft);background:0 0;border-color:#0000}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.wide{width:100%}.btn:disabled{opacity:.45}.icon-btn{color:var(--ink-soft);background:0 0;border:0;border-radius:10px;padding:8px 10px;font-size:20px;line-height:1}.row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.install-bar{border-radius:var(--radius);background:var(--brand-soft);border:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:13px 14px;display:flex}.install-bar p{color:var(--ink-soft);margin-top:2px;font-size:13px}.month-nav{justify-content:space-between;align-items:center;margin:18px 0 8px;display:flex}.month-nav h2{font-size:17px}.month-nav button{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ink-soft);border-radius:12px;font-size:20px}.weekdays,.grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.weekdays{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);text-align:center;margin-bottom:6px;font-size:11px;font-weight:700}.cell{aspect-ratio:1;background:var(--surface);font-variant-numeric:tabular-nums;border:1px solid #0000;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:0;display:flex;position:relative}.cell .num{font-size:15px;font-weight:600}.cell.outside{opacity:.32}.cell.today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.cell.selected{outline:2px solid var(--brand);outline-offset:1px}.cell.period{background:var(--period);color:var(--period-ink)}.cell.period.predicted{background:var(--period-predicted);color:var(--ink);border-style:dashed;border-color:var(--period)}.cell.fertile{background:var(--fertile)}.cell.ovulation{background:var(--fertile);box-shadow:inset 0 0 0 2px var(--ovulation)}.start-flag{width:7px;height:7px;box-shadow:0 0 0 1.5px var(--period);background:#fff;border-radius:2px;position:absolute;top:4px;right:4px}.dots{gap:3px;height:6px;display:flex}.dot{border-radius:50%;flex:none;width:6px;height:6px;display:inline-block}.dot.pain{background:var(--pain)}.dot.discharge{background:var(--discharge)}.dot.flow{background:var(--flow)}.dot.bleeding{background:var(--bleeding);box-shadow:0 0 0 1.5px #f973164d}.legend{color:var(--ink-soft);flex-wrap:wrap;gap:6px 14px;margin:14px 0 0;padding:0;font-size:12px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.swatch{border-radius:4px;width:12px;height:12px;display:inline-block}.swatch.period{background:var(--period)}.swatch.fertile{background:var(--fertile)}.swatch.ovulation{background:var(--fertile);box-shadow:inset 0 0 0 2px var(--ovulation)}.sheet-backdrop{z-index:50;background:#1c101680;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:560px;max-height:92vh;padding-bottom:calc(20px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;overflow-y:auto}.sheet-head{background:var(--bg);border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:10px;padding:18px 16px 12px;display:flex;position:sticky;top:0}.sheet-head h2{font-size:17px}.sheet-sub{color:var(--ink-soft);margin-top:2px;font-size:13px}.sheet-body{flex-direction:column;gap:16px;padding:16px;display:flex}.form-title{color:var(--ink-soft);font-size:15px}.start-toggle{border:1px dashed var(--period);width:100%;color:var(--period);background:0 0;border-radius:12px;min-height:46px;padding:13px;font-size:14px;font-weight:600}.start-toggle.on{background:var(--period);color:#fff;border-style:solid}.quick-add{grid-template-columns:1fr 1fr;gap:8px;display:grid}.qa{border:1px solid var(--line);background:var(--surface);text-align:left;border-left-width:4px;border-radius:12px;min-height:48px;padding:13px 10px;font-size:14px;font-weight:600}.qa.pain{border-left-color:var(--pain)}.qa.discharge{border-left-color:var(--discharge)}.qa.flow{border-left-color:var(--flow)}.qa.bleeding{border-left-color:var(--bleeding)}.confirm{background:var(--surface);border-radius:18px;align-self:center;width:100%;max-width:460px;margin:auto 12px;padding:22px}.confirm h2{font-size:18px}.confirm p{color:var(--ink-soft);margin:8px 0 18px;font-size:14px}.confirm-actions{flex-direction:column;gap:8px;display:flex}.log-group h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin-bottom:8px;font-size:12px}.log-group ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.log-item{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;justify-content:space-between;gap:10px;padding:12px;display:flex}.log-item.pain{border-left-color:var(--pain)}.log-item.discharge{border-left-color:var(--discharge)}.log-item.flow{border-left-color:var(--flow)}.log-item.bleeding{border-left-color:var(--bleeding)}.log-body{min-width:0;font-size:14px}.log-body .note{color:var(--ink-soft);overflow-wrap:anywhere;margin-top:4px;font-size:13px}.tag{background:var(--brand-soft);color:var(--brand);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.log-tools{flex-direction:column;flex:none;gap:4px;display:flex}.log-tools button{color:var(--ink-soft);background:0 0;border:0;padding:4px 6px;font-size:12px;text-decoration:underline}.entry-form{flex-direction:column;gap:16px;display:flex}.entry-form fieldset{border:0;margin:0;padding:0}.entry-form legend,.field>span{color:var(--ink-soft);margin-bottom:8px;font-size:13px;font-weight:600;display:block}.optional{opacity:.7;font-weight:400}.form-lede{color:var(--ink-soft);font-size:13px}.hint{color:var(--ink-soft);font-size:12px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;min-height:40px;padding:9px 14px;font-size:13px;font-weight:600}.chip.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.field{display:block}.field.inline{align-items:center;gap:8px;display:flex}.field.inline>span{margin:0}.field.inline input{width:76px}.field.inline select{width:auto;min-width:9.5rem}.field input,.field select,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:11px;min-height:44px;padding:11px 12px}.field textarea{resize:vertical}.field small{color:var(--ink-soft);margin-top:6px;font-size:12px;display:block}.form-actions{justify-content:flex-end;gap:8px;display:flex}.settings,.trends{flex-direction:column;gap:14px;padding-top:4px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:14px;padding:16px;display:flex}.card h2{font-size:15px}.card.danger{border-color:color-mix(in srgb, var(--danger) 35%, var(--line))}.card-lede{color:var(--ink-soft);font-size:13px}.sub-head{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:12px}.big{color:var(--brand);font-size:30px;font-weight:700}.banner{border-radius:11px;padding:11px 13px;font-size:13px}.banner.ok{color:#14603f;background:#e7f5ef}.banner.bad{color:#8a1c15;background:#fdeaea}.error{color:var(--danger);font-size:13px}.plain-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.plain-list li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:9px 0;font-size:14px;display:flex}.plain-list li:last-child{border-bottom:0}.muted{color:var(--ink-soft)}.bars{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.bars li{grid-template-columns:1fr 2fr auto;align-items:center;gap:10px;font-size:13px;display:grid}.bar-track{background:var(--brand-soft);border-radius:999px;height:8px;overflow:hidden}.bar-fill{background:var(--brand);border-radius:999px;height:100%;display:block}.lock-screen{background:var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.lock-screen form{text-align:center;flex-direction:column;gap:12px;width:100%;max-width:300px;display:flex}.lock-screen h1{color:var(--brand);font-size:22px}.lock-sub{color:var(--ink-soft);font-size:14px}.lock-screen input{font:inherit;text-align:center;letter-spacing:.5em;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:14px}.lock-foot{color:var(--ink-soft);margin-top:6px;font-size:12px}.app-foot{color:var(--ink-soft);text-align:center;margin-top:24px;font-size:12px}@media (prefers-reduced-motion:no-preference){.sheet{animation:.18s ease-out rise}@keyframes rise{0%{opacity:.6;transform:translateY(18px)}}}
