@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Serif+SC:wght@500;600;700&family=Source+Han+Sans+SC:wght@400;500;600&display=swap";:root{--ink:#352e48;--muted:#756f80;--line:#ddd8e7;--paper:#fffefc;--ground:#f1eff6;--lavender:#dcd7e8;--mulberry:#805568;--fertile:#c7c1de;--gold:#c1a36a;--radius:28px;color:var(--ink);background:var(--ground);font-synthesis:none;font-family:Source Han Sans SC,PingFang SC,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--ground);min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer}.icon{flex:none;width:19px;height:19px}.app-shell,.login-shell,.loading-screen{min-height:100svh}.app-shell{max-width:520px;margin:0 auto;padding-bottom:104px}.screen{padding:30px 20px 0}.loading-screen{letter-spacing:.2em;color:var(--ink);place-items:center;font-family:Noto Serif SC,serif;font-size:30px;display:grid}.topbar{justify-content:space-between;align-items:flex-start;margin-bottom:26px;display:flex}h1,h2,p{margin:0}h1,h2{font-family:Noto Serif SC,serif;font-weight:600}h1{letter-spacing:.04em;font-size:38px;line-height:1}h2{font-size:23px}.eyebrow,.section-kicker{color:#847d91;letter-spacing:.15em;font-family:DM Mono,monospace;font-size:9px;line-height:1.4}.section-kicker{color:#8e8598;margin-bottom:9px}.icon-button,.small-icon-button{border:1px solid var(--line);color:var(--ink);background:#fffefcb3;border-radius:50%;place-items:center;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .16s;display:grid}.icon-button{width:42px;height:42px}.small-icon-button{width:32px;height:32px}.icon-button:active,.small-icon-button:active,.record-button:active,.primary-button:active,.secondary-button:active,.tab:active{transform:scale(.97)}.hero-card,.cycle-hero{background:var(--paper);border-radius:var(--radius);border:1px solid #e6e1ec;padding:25px 24px;position:relative;overflow:hidden;box-shadow:0 16px 38px #43365b0e,inset 0 0 0 6px #f1eff694}.hero-card strong,.cycle-hero strong{letter-spacing:.02em;font-family:Noto Serif SC,serif;font-size:24px;font-weight:600;display:block}.hero-card p:not(.section-kicker),.cycle-hero p:not(.section-kicker){color:var(--muted);margin-top:7px;font-size:13px}.quiet-orbit{border:1px solid #e0d9e9;border-radius:50%;width:142px;height:142px;position:absolute;top:-42px;right:-18px;box-shadow:inset 0 0 0 16px #f1eff680}.calendar-card{background:var(--paper);border:1px solid #e4dfeb;border-radius:30px;margin-top:20px;padding:22px 14px 15px;box-shadow:0 16px 40px #43365b0b,inset 0 0 0 5px #f1eff6a6}.calendar-header{text-align:center;grid-template-columns:32px 1fr 32px;align-items:center;gap:10px;padding:0 5px 20px;display:grid}.calendar-header h2{letter-spacing:-.02em;font-family:Georgia,Times New Roman,serif;font-size:25px}.calendar-header h2 span{color:#a39bac;vertical-align:middle;margin-left:5px;font-family:DM Mono,monospace;font-size:10px;font-weight:400}.calendar-header p{color:#9790a1;letter-spacing:.11em;margin-top:3px;font-family:DM Mono,monospace;font-size:8px}.arrow-next .icon{transform:rotate(180deg)}.weekdays,.days{grid-template-columns:repeat(7,1fr);display:grid}.weekdays{color:#938b9d;text-align:center;padding:0 3px 9px;font-family:DM Mono,monospace;font-size:9px}.days{gap:4px 1px}.day{aspect-ratio:1;color:#645d6c;background:0 0;border:0;border-radius:15px;place-items:center;font-family:DM Mono,monospace;font-size:12px;transition:transform .14s cubic-bezier(.23,1,.32,1),background-color .14s,color .14s;display:grid;position:relative}.day:not(:disabled):active{transform:scale(.92)}.day--period{color:#fff;background:#805568;box-shadow:inset 0 0 0 1px #ffffff38}.day--predicted{color:#704f61;background:#ece5eb}.day--fertile{color:#554b68;background:#e5e1ef}.day--ovulation{color:#5f4d44;font-weight:600}.day--ovulation:after{background:var(--gold);content:"";border-radius:50%;width:4px;height:4px;position:absolute;bottom:5px}.day--today:before{content:"";pointer-events:none;border:1px solid #b4a9c4;border-radius:12px;position:absolute;inset:3px}.day--empty{cursor:default}.legend{color:#746d7d;flex-wrap:wrap;justify-content:center;gap:8px 15px;margin:16px 2px 0;font-size:10px;display:flex}.legend span{align-items:center;gap:5px;display:flex}.legend i{background:var(--mulberry);border-radius:50%;width:7px;height:7px}.legend-predicted{background:#d6bdc8!important}.legend-fertile{background:var(--fertile)!important}.legend-ovulation{background:var(--gold)!important}.medical-note{color:#8c8593;text-align:center;max-width:365px;margin:15px auto 0;font-size:10px;line-height:1.65}.record-button{z-index:5;right:max(20px,50vw - 240px);bottom:calc(74px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;border:0;border-radius:18px;align-items:center;gap:8px;padding:14px 19px;font-size:13px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),box-shadow .16s;display:flex;position:fixed;box-shadow:0 12px 25px #352e4840}.record-button .icon{width:17px;height:17px}.tabbar{z-index:4;min-height:64px;padding:7px max(16px,calc((100vw - 480px)/2)) calc(7px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffefcf0;border:0;border-top:1px solid #ddd8e7e6;gap:5px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #43365b12}.tab{color:#817987;background:0 0;border:0;border-radius:14px;flex:1;justify-content:center;align-items:center;gap:8px;padding:11px 10px;font-size:12px;transition:transform .15s cubic-bezier(.23,1,.32,1),background-color .18s,color .18s;display:flex}.tab--active{background:var(--lavender);color:var(--ink)}.tab .icon{width:17px;height:17px}.cycle-hero{padding:30px 25px}.cycle-hero strong{font-size:31px}.metrics{grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;display:grid}.metrics article,.prediction-card{background:var(--paper);border:1px solid #e5e0eb;border-radius:24px;padding:21px}.metrics span,.prediction-grid span{color:#8b8393;font-size:11px}.metrics strong{margin:10px 0 4px;font-family:Georgia,serif;font-size:30px;font-weight:400;display:block}.metrics small{font-family:Source Han Sans SC,sans-serif;font-size:11px}.metrics p{color:#98909e;font-size:10px}.prediction-card{margin-top:14px}.prediction-card h2{font-size:20px}.prediction-grid{background:#e6e1ea;border-radius:16px;grid-template-columns:1fr 1fr;gap:1px;margin-top:18px;display:grid;overflow:hidden}.prediction-grid div{background:#faf9fc;padding:14px 12px}.prediction-grid strong{color:#564e62;margin-top:6px;font-size:11px;line-height:1.55;display:block}.history{margin-top:28px}.section-heading{justify-content:space-between;align-items:end;margin:0 4px 12px;display:flex}.section-heading h2{margin-top:4px;font-size:23px}.text-button{color:#75658f;background:0 0;border:0;font-size:12px}.history-row{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-top:1px solid #ded9e5;grid-template-columns:28px 1fr 20px;align-items:center;gap:10px;padding:16px 8px;display:grid}.history-row:last-child{border-bottom:1px solid #ded9e5}.history-index{color:#a198aa;font-family:DM Mono,monospace;font-size:10px}.history-row strong{font-size:13px;font-weight:500}.history-row p{color:#918999;margin-top:4px;font-size:10px}.history-row .icon{color:#a39aaa;width:16px}.empty-state{color:#857d8c;border-top:1px solid #ded9e5;padding:25px 4px;font-size:13px}.sheet-backdrop,.settings-backdrop{z-index:10;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#2b253647;align-items:end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:520px;padding:15px 24px calc(28px + env(safe-area-inset-bottom));background:var(--paper);border-radius:29px 29px 0 0;margin:0 auto;position:relative;box-shadow:0 -8px 36px #352e4826}.sheet-handle{background:#d5cfdd;border-radius:999px;width:36px;height:4px;margin:0 auto 22px}.sheet-close{color:#766e7d;background:#f3f1f6;border:0;border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:18px;right:18px}.sheet h2{font-size:26px}.sheet-copy{color:#827a89;margin:8px 0 21px;font-size:12px;line-height:1.65}.sheet form,.login-card form{gap:14px;display:grid}.sheet label,.login-card label{color:#665e6d;gap:7px;font-size:12px;display:grid}.sheet label em{color:#aaa2b0;font-style:normal}.sheet input,.login-card input,.time-row input{width:100%;color:var(--ink);background:#fbfafd;border:1px solid #ddd7e6;border-radius:13px;outline:0;padding:13px 14px}.sheet input:focus,.login-card input:focus{border-color:#968aa8;box-shadow:0 0 0 3px #968aa81f}.primary-button,.secondary-button{border-radius:15px;justify-content:center;align-items:center;gap:8px;min-height:48px;font-size:13px;font-weight:600;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .16s;display:flex}.primary-button{background:var(--ink);color:#fff;border:0;margin-top:5px}.primary-button:disabled{opacity:.6;cursor:wait}.delete-button,.logout-button{color:#9a6574;background:0 0;border:0;width:100%;margin-top:18px;padding:10px;font-size:12px}.form-error{color:#7d4256;background:#f4e8ec;border-radius:11px;padding:10px 12px;font-size:12px}.settings-backdrop{justify-content:center;align-items:center;padding:20px}.settings-panel{background:var(--paper);border:1px solid #e3ddeb;border-radius:28px;width:min(440px,100%);padding:25px;box-shadow:0 20px 60px #2b253633}.settings-header{justify-content:space-between;align-items:flex-start;margin-bottom:17px;display:flex}.settings-header h2{margin-top:4px}.settings-panel form{gap:11px;display:grid}.toggle-row,.time-row{border-top:1px solid #e8e3ec;justify-content:space-between;align-items:center;padding:13px 0;display:flex}.toggle-row span{gap:4px;display:grid}.toggle-row strong{font-size:13px;font-weight:500}.toggle-row small,.settings-hint{color:#908897;font-size:10px;line-height:1.55}.toggle-row input{appearance:none;background:#d5cfdd;border-radius:999px;width:36px;height:21px;transition:background-color .15s}.toggle-row input:after{content:"";background:#fff;border-radius:50%;width:17px;height:17px;margin:2px;transition:transform .15s cubic-bezier(.23,1,.32,1);display:block;box-shadow:0 1px 3px #00000029}.toggle-row input:checked{background:#75658f}.toggle-row input:checked:after{transform:translate(15px)}.time-row{color:#625a6a;font-size:13px}.time-row input{width:auto;padding:7px 8px}.secondary-button{color:var(--ink);background:#f7f5fa;border:1px solid #dcd5e7}.success-message{color:#5e756e;font-size:11px}.login-shell{background:radial-gradient(circle at 83% 16%,#d5cee3bf,transparent 28%),var(--ground);place-items:center;padding:24px;display:grid}.login-card{background:#fffefce6;border:1px solid #e3ddea;border-radius:31px;width:min(400px,100%);padding:40px 32px;box-shadow:0 18px 50px #43365b17,inset 0 0 0 6px #f1eff68c}.login-card h1{margin:12px 0 9px;font-size:43px}.login-card>p:not(.eyebrow){color:#837b8a;margin-bottom:28px;font-size:13px}@media (hover:hover) and (pointer:fine){.icon-button:hover,.small-icon-button:hover{background:#fff;transform:translateY(-1px)}.history-row:hover{background:#fffefc8c}.record-button:hover{transform:translateY(-1px);box-shadow:0 15px 29px #352e4852}}.login-card,.hero-card,.calendar-card,.cycle-hero,.metrics article,.prediction-card{animation:.28s cubic-bezier(.23,1,.32,1) both reveal}@keyframes reveal{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}}@media (width>=650px){.screen{padding-top:38px}.record-button{bottom:74px}}.hero-card{display:none}.calendar-action{background:var(--paper);border:1px solid #e2ddea;border-radius:24px;grid-template-columns:1fr 48px 1.35fr;align-items:center;gap:15px;max-width:480px;min-height:98px;margin:0 auto 18px;padding:17px 21px;display:grid;position:relative;box-shadow:0 12px 30px #43365b0b,inset 0 0 0 4px #f1eff6a6}.calendar-action__date{gap:4px;display:grid}.calendar-action__date span,.calendar-action__copy span{color:#938b99;font-size:10px}.calendar-action__date strong{font-family:Noto Serif SC,serif;font-size:17px;font-weight:600}.calendar-action__date small{color:#805568;font-size:9px}.calendar-action__button{background:var(--ink);border:0;border-radius:50%;place-items:center;width:48px;height:48px;transition:transform .16s cubic-bezier(.23,1,.32,1),background-color .16s;display:grid;box-shadow:0 7px 15px #352e4833}.calendar-action__button:active{transform:scale(.94)}.calendar-action__button:disabled{opacity:.6}.calendar-action__button--end{background:#805568}.action-symbol{border-top:8px solid #0000;border-bottom:8px solid #0000;border-left:12px solid #fff;width:0;height:0;margin-left:3px;display:block}.action-symbol--stop{background:#fff;border:0;border-radius:4px;width:14px;height:14px;margin-left:0}.calendar-action__copy{gap:3px;display:grid}.calendar-action__copy strong{font-size:13px;font-weight:600}.calendar-action__error{color:#9a6574;margin:0;font-size:9px;position:absolute;bottom:4px;right:18px}
