:root{--paper:#fbf8f3;--ink:#292621;--muted:#766f65;--line:#e8e0d5;--white:#fff;--red:#dc5a5a;--yellow:#e4b83f;--green:#4d9b6a;--orange:#dc8547;--shadow:0 12px 35px rgba(58,45,31,.08)}
*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{margin:0;min-height:100vh;background:radial-gradient(circle at 85% 0,#f2e9dc 0,transparent 30rem)}button,input,select{font:inherit}.shell{width:min(1180px,100%);margin:auto;padding:max(24px,env(safe-area-inset-top)) 18px calc(36px + env(safe-area-inset-bottom))}.topbar,.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.topbar{margin-bottom:22px}.eyebrow{font-size:.7rem;font-weight:800;letter-spacing:.16em;color:var(--muted);margin:0 0 5px}h1{font-family:Georgia,serif;font-size:2.25rem;margin:0;font-weight:500}h2{font-family:Georgia,serif;font-size:1.35rem;line-height:1.15;margin:0;font-weight:500}.icon-button,.secondary{border:1px solid var(--line);background:rgba(255,255,255,.55);padding:10px 14px;border-radius:99px;color:var(--ink);font-weight:650}.legend{background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:16px;padding:12px 14px;display:flex;gap:12px 18px;flex-wrap:wrap;font-size:.76rem;font-weight:650;color:#5f594f;margin-bottom:30px}.legend span{display:flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:50%}.menstrual{background:var(--red)}.follicular{background:var(--yellow)}.ovulatory{background:var(--green)}.luteal{background:var(--orange)}#todayLabel{font-size:.8rem;color:var(--muted);margin:0}.cards{display:grid;gap:14px;margin:16px 0 34px}.person-card{--accent:#888;background:var(--white);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden}.person-card:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--accent)}.person-top{display:flex;align-items:center;justify-content:space-between}.initial{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,white);color:var(--accent);font-family:Georgia,serif;font-size:1.3rem;font-weight:700}.day{font-size:.75rem;color:var(--muted)}.phase-row{display:flex;align-items:center;gap:8px;margin-top:16px}.phase-row h3{font-size:1.1rem;margin:0}.phase-pill{width:10px;height:10px;border-radius:50%}.estimate{font-family:Georgia,serif;font-size:1.35rem;margin:12px 0 6px}.guidance{color:#5f594f;line-height:1.45;font-size:.9rem;margin:0}.energy{font-size:.76rem;font-weight:750;margin:13px 0 15px}.card-actions{display:flex;gap:8px}.card-actions button{flex:1;border-radius:12px;padding:11px;border:1px solid var(--line);background:#faf8f5;font-weight:700}.card-actions .record{background:var(--ink);color:white;border-color:var(--ink)}.empty-note{background:#faf7f1;border-radius:12px;padding:12px;color:var(--muted);font-size:.85rem;margin:14px 0}.vacation-card{background:#263d38;color:#fff;border-radius:26px;padding:22px;box-shadow:var(--shadow)}.vacation-card .eyebrow{color:#b9ccc5}.sun{font-size:1.5rem;margin-bottom:8px}.mode-switch{display:grid;grid-template-columns:1fr 1fr;background:rgba(255,255,255,.09);border-radius:13px;padding:4px;margin:20px 0}.mode-switch button{border:0;border-radius:10px;padding:11px 6px;background:transparent;color:#d9e5e1;font-size:.78rem;font-weight:750}.mode-switch button.active{background:#fff;color:#263d38}.field-label{display:block;font-size:.75rem;font-weight:750;margin:14px 0 8px;color:inherit}.field-label input{margin-top:7px}.choice-row{display:flex;gap:7px;flex-wrap:wrap}.choice-row button,.custom-days{border:1px solid rgba(255,255,255,.22);background:transparent;color:#fff;border-radius:10px;padding:9px 11px;font-size:.78rem;font-weight:700}.choice-row button.active{background:#fff;color:#263d38}.custom-days input{width:42px;border:0;border-bottom:1px solid #fff;background:transparent;color:#fff;margin-left:5px}select,input[type=date],input[type=number]{border:1px solid var(--line);border-radius:10px;padding:11px;background:white;color:var(--ink);max-width:100%}.window-result{border-top:1px solid rgba(255,255,255,.18);margin-top:20px;padding-top:18px}.window-result .big-date{font-family:Georgia,serif;font-size:1.6rem;margin:4px 0}.window-result p{color:#cfddd8;font-size:.84rem;margin:4px 0}.result-actions{display:flex;gap:8px;margin-top:16px}.primary,.secondary{cursor:pointer}.primary{border:0;background:#f0ca68;color:#2f352c;border-radius:12px;padding:12px 15px;font-weight:800}.vacation-card .secondary{border-color:rgba(255,255,255,.2);background:transparent;color:#fff}.result-actions button{flex:1}.wide{width:100%}.date-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.date-grid label{font-size:.75rem;font-weight:700}.date-grid input{width:100%;display:block;margin-top:6px}.trip-person{padding:14px 0;border-bottom:1px solid rgba(255,255,255,.16)}.trip-person-head{display:flex;justify-content:space-between;font-weight:800}.timeline{display:flex;height:12px;border-radius:99px;overflow:hidden;margin:10px 0 6px;background:rgba(255,255,255,.1)}.timeline i{min-width:2px}.trip-person p{color:#cfddd8;margin:3px 0;font-size:.8rem}dialog{border:0;background:transparent;padding:12px;width:min(520px,100%);max-height:95vh}dialog::backdrop{background:rgba(36,31,25,.55);backdrop-filter:blur(4px)}.dialog-card{background:#fff;border-radius:22px;padding:22px;position:relative;color:var(--ink);max-height:90vh;overflow:auto}.close{position:absolute;right:13px;top:10px;border:0;background:transparent;font-size:1.8rem;color:var(--muted)}.quick-dates{display:flex;gap:8px;margin-top:18px}.quick-dates button{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px;background:#faf8f5;font-weight:700}.dialog-card input[type=date]{width:100%;display:block}.error{color:#b33;font-size:.8rem}.muted,.loading{color:var(--muted)}.history-group{margin-top:20px}.history-heading{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line);padding-bottom:8px}.history-initial{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:white;font-weight:800}.history-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:7px;padding:10px 0;border-bottom:1px solid #f0ebe4}.history-row input{padding:8px;min-width:0}.history-row button{border:0;background:transparent;color:var(--muted);font-weight:700}.history-row .delete{color:#b95050}@media(min-width:760px){.shell{padding-left:30px;padding-right:30px}.cards{grid-template-columns:repeat(3,1fr)}.person-card{min-height:335px;display:flex;flex-direction:column}.card-actions{margin-top:auto}.vacation-card{width:min(760px,100%);margin:0 auto;padding:30px}.legend{width:max-content}}
@media(prefers-color-scheme:dark){:root{--paper:#1d1b18;--ink:#f5f0e8;--muted:#aaa297;--line:#3a3630;--white:#292622;--shadow:none}html{color-scheme:dark}body{background:radial-gradient(circle at 85% 0,#332d25 0,transparent 30rem)}.icon-button,.secondary,.legend{background:rgba(255,255,255,.04)}.person-card{background:#292622}.guidance{color:#c6bfb5}.card-actions button,.empty-note,.quick-dates button{background:#332f2a}.card-actions .record{background:#eee7dc;color:#27231f}.dialog-card{background:#292622}.history-row input,select,input[type=date],input[type=number]{background:#332f2a;color:#f5f0e8}}
