@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fraunces-latin-soft-normal-C-lS_vzd.woff2) format("woff2-variations")}@font-face{font-family:Fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/fraunces-latin-soft-italic-CIOv5diB.woff2) format("woff2-variations")}@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2) format("woff2-variations")}@font-face{font-family:Parisienne;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/parisienne-latin-400-normal-21gANpEP.woff2) format("woff2")}:root{--bg: #f7f0e8;--bg-2: #efe4d6;--card: #fffaf5;--card-2: #fbf3ea;--ink: #3a2430;--ink-2: #6f5560;--ink-3: #a3909a;--line: #ebdccd;--rose: #d23f7c;--rose-deep: #a2245c;--rose-soft: #f4c3d6;--rose-mist: #fbe7ef;--leaf: #4f7a5c;--leaf-deep: #35573f;--leaf-soft: #cfe1cf;--leaf-mist: #e7f0e3;--plum: #7a4a68;--plum-mist: #f1e5ee;--sand: #e8dac6;--sand-deep: #9a7f5f;--danger: #b4233c;--f-script: "Parisienne", "Snell Roundhand", cursive;--f-display: "Fraunces", Georgia, "Times New Roman", serif;--f-body: "DM Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--r-lg: 28px;--r-md: 18px;--r-sm: 12px;--shadow: 0 1px 2px rgba(90, 40, 55, .05), 0 10px 30px -12px rgba(120, 55, 75, .18);--shadow-lg: 0 2px 6px rgba(90, 40, 55, .06), 0 24px 50px -20px rgba(120, 55, 75, .32);--tabbar-h: 74px;--safe-b: env(safe-area-inset-bottom, 0px);color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--ink);font:16px/1.5 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .3 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}h1,h2,h3{font-family:var(--f-display);font-weight:560;font-variation-settings:"SOFT" 100;line-height:1.12;margin:0;letter-spacing:-.01em}h1 em,h2 em{font-style:italic;font-weight:400;color:var(--rose)}p{margin:0}a{color:var(--rose-deep)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2.5px solid var(--rose);outline-offset:2px;border-radius:10px}.icon{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}.app{position:relative;z-index:1;min-height:100dvh}.blobs{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55}.b1{width:380px;height:380px;background:var(--rose-mist);top:-140px;right:-120px}.b2{width:320px;height:320px;background:var(--leaf-mist);bottom:8%;left:-160px}.b3{width:260px;height:260px;background:#f6dccb;top:40%;right:-140px;opacity:.4}.main{max-width:600px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px calc(var(--tabbar-h) + var(--safe-b) + 28px)}.page{display:flex;flex-direction:column;gap:16px;animation:rise .35s ease both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.offline{position:sticky;top:0;z-index:40;background:var(--plum);color:#fff;text-align:center;font-size:.85rem;padding:6px 12px}.page-head{padding:6px 2px 0}.page-head-row{display:flex;align-items:flex-start;gap:8px}.page-head-titles{flex:1;min-width:0}.page-head h1{font-size:clamp(1.7rem,7vw,2.15rem)}.page-head .back{margin:4px 0 0 -8px}.page-head-aside{flex:none;margin-top:6px}.kicker{display:block;font-family:var(--f-script);font-size:1.45rem;line-height:1.1;color:var(--rose);margin-bottom:2px}.squiggle{display:block;margin-top:4px}.squiggle path{fill:none;stroke:var(--rose-soft);stroke-width:2.6;stroke-linecap:round}.sprig .sprig-stem{fill:none;stroke:var(--leaf);stroke-width:1.6;stroke-linecap:round}.sprig .sprig-leaf{fill:var(--leaf-soft);stroke:var(--leaf);stroke-width:1.3}.sprig .sprig-dot{fill:var(--rose)}.wordmark{font-family:var(--f-script);color:var(--rose-deep);line-height:1;display:inline-block}.hello{display:flex;align-items:flex-end;justify-content:space-between;padding:8px 4px 0}.hello-script{font-family:var(--f-script);font-size:clamp(2rem,9vw,2.6rem);line-height:1.05;color:var(--rose-deep)}.hello-date{font-family:var(--f-display);font-style:italic;color:var(--ink-2);font-size:1.05rem;margin-top:2px}.hello-flower{margin-bottom:-6px;transform:rotate(8deg)}.card{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px;border:1px solid rgba(235,220,205,.7)}.card-title{display:flex;align-items:center;gap:10px;margin-bottom:12px}.card-title h3{font-size:1.12rem;flex:1}.card-aside{font-size:.88rem}.card-ico{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:none}.tone-rose.card-ico{background:var(--rose-mist);color:var(--rose-deep)}.tone-plum.card-ico{background:var(--plum-mist);color:var(--plum)}.tone-leaf.card-ico{background:var(--leaf-mist);color:var(--leaf-deep)}.tone-sand.card-ico{background:#f3e9db;color:var(--sand-deep)}.hint{font-size:.86rem;color:var(--ink-2);margin-top:10px}.hint.error{color:var(--danger)}.muted{color:var(--ink-3)}.link{color:var(--rose-deep);font-weight:600}.notice{background:var(--rose-mist);border-radius:var(--r-sm);padding:10px 12px;font-size:.88rem;color:var(--ink-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:12px 20px;font-weight:600;font-size:.98rem;cursor:pointer;text-decoration:none;transition:transform .12s ease,background .2s ease,box-shadow .2s ease;position:relative;min-height:46px}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:linear-gradient(135deg,var(--rose) 0%,var(--rose-deep) 100%);color:#fff;box-shadow:0 8px 20px -10px #a2245cb3}.btn-soft{background:var(--rose-mist);color:var(--rose-deep)}.btn-ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}.btn-outline{background:var(--card);color:var(--rose-deep);border:1.5px solid var(--rose-soft)}.btn-danger{background:var(--danger);color:#fff}.btn-link{background:none;color:var(--rose-deep);text-decoration:underline;text-underline-offset:3px;padding:6px;min-height:0}.danger-text{color:var(--danger)}.btn-sm{padding:7px 14px;font-size:.88rem;min-height:36px}.btn.wide{width:100%}.btn-spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.icon-btn{width:40px;height:40px;border-radius:50%;border:0;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--ink-2)}.icon-btn:hover:not(:disabled){background:var(--rose-mist);color:var(--rose-deep)}.icon-btn:disabled{opacity:.35}.row-actions{display:flex;gap:8px;align-items:center}.row-actions.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:10px;margin-top:12px}.stack .btn{justify-content:flex-start}.pill{display:inline-flex;align-items:center;padding:4px 11px;border-radius:999px;font-size:.82rem;font-weight:600}.pill-rose{background:var(--rose);color:#fff}.pill-rose-soft{background:var(--rose-mist);color:var(--rose-deep);border:1.5px dashed var(--rose-soft)}.pill-leaf{background:var(--leaf-mist);color:var(--leaf-deep)}.pill-sand{background:#f3e9db;color:var(--sand-deep)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:8px 14px;border:1.5px solid var(--line);background:var(--card);font-size:.92rem;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s}.chip:active{transform:scale(.96)}.chip.on.tone-rose{background:var(--rose);border-color:var(--rose);color:#fff}.chip.on.tone-plum{background:var(--plum);border-color:var(--plum);color:#fff}.chip.on.tone-leaf{background:var(--leaf);border-color:var(--leaf);color:#fff}.chip.on.tone-sand{background:var(--sand-deep);border-color:var(--sand-deep);color:#fff}.form{display:flex;flex-direction:column;gap:14px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:.86rem;font-weight:600;color:var(--ink-2)}.field input,.field select,.link-box input{width:100%;border:1.5px solid var(--line);background:#fff;border-radius:var(--r-sm);padding:12px 14px;font-size:1rem}.field input:focus,.field select:focus,textarea:focus,.measure-input:focus-within,.link-box input:focus{outline:none;border-color:var(--rose);box-shadow:0 0 0 4px var(--rose-mist)}.field-hint{font-size:.8rem;color:var(--ink-3)}.field-error{font-size:.85rem;color:var(--danger);font-weight:600}textarea.note{width:100%;border:1.5px solid var(--line);border-radius:var(--r-md);padding:12px 14px;resize:vertical;background:#fff;min-height:96px}input.time{border:1.5px solid var(--line);border-radius:var(--r-sm);padding:7px 10px;background:#fff;font-variant-numeric:tabular-nums}.toggle{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}.toggle.disabled{opacity:.5}.toggle-text{flex:1;display:flex;flex-direction:column}.toggle-label{font-weight:600}.toggle-hint{font-size:.82rem;color:var(--ink-2)}.toggle input{position:absolute;opacity:0;pointer-events:none}.switch{width:48px;height:28px;border-radius:999px;background:var(--sand);position:relative;flex:none;transition:background .2s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}.toggle input:checked+.switch{background:var(--rose)}.toggle input:checked+.switch:after{transform:translate(20px)}.toggle input:focus-visible+.switch{outline:2.5px solid var(--rose);outline-offset:2px}.stepper{display:inline-flex;align-items:center;gap:4px;background:var(--card-2);border:1.5px solid var(--line);border-radius:999px;padding:3px}.step-btn{width:34px;height:34px;border-radius:50%;border:0;background:#fff;font-size:1.2rem;line-height:1;cursor:pointer;color:var(--rose-deep);box-shadow:0 1px 2px #00000014}.step-btn:disabled{opacity:.35}.step-val{min-width:72px;text-align:center;font-size:.9rem;color:var(--ink-2)}.step-val b{font-family:var(--f-display);font-size:1.25rem;color:var(--ink)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line)}.setting-row>span{display:flex;flex-direction:column;font-weight:600}.setting-row small{font-weight:400;font-size:.82rem;color:var(--ink-2)}.setting-row.sub{border-top:0;padding-top:0;padding-left:14px}.setting-row.sub>span{font-weight:400;font-size:.92rem}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(10px + var(--safe-b));z-index:30;width:min(560px,calc(100% - 20px));height:var(--tabbar-h);display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:#fffaf5e6;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:28px;box-shadow:var(--shadow-lg);border:1px solid rgba(235,220,205,.8);padding:0 6px}.tab{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--ink-3);text-decoration:none;font-size:.72rem;font-weight:600;padding:6px 0}.tab-ico{width:44px;height:32px;border-radius:16px;display:grid;place-items:center;transition:background .2s,color .2s}.tab.on{color:var(--rose-deep)}.tab.on .tab-ico{background:var(--rose-mist)}.tab.fab .tab-ico{width:56px;height:56px;border-radius:50%;margin-top:-26px;background:linear-gradient(135deg,var(--rose),var(--rose-deep));color:#fff;box-shadow:0 10px 22px -8px #a2245ccc,0 0 0 5px var(--bg)}.tab.fab{color:var(--rose-deep)}.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.wd{display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:none;cursor:pointer;padding:4px 0}.wd-name{font-size:.72rem;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.wd.today .wd-name{color:var(--rose-deep)}.wd-num{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-display);font-weight:560;font-size:1.05rem;background:var(--card);border:1.5px solid transparent;box-shadow:0 1px 2px #5a28370f}.wd.period .wd-num{background:var(--rose);color:#fff}.wd.predicted .wd-num{border:2px dashed var(--rose);color:var(--rose-deep);background:var(--rose-mist)}.wd.fertile .wd-num{background:var(--leaf-mist);color:var(--leaf-deep)}.wd.ovulation .wd-num{background:var(--leaf);color:#fff}.wd.today .wd-num{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--ink)}.ring-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:22px 18px;background:radial-gradient(circle at 50% 42%,#fff 0%,var(--card) 55%,var(--card-2) 100%)}.ring{position:relative;width:min(300px,82vw);aspect-ratio:1}.ring-svg{width:100%;height:100%;overflow:visible}.ring-track{fill:none;stroke:var(--line);stroke-width:1.5;stroke-dasharray:2 5}.ring-inner{fill:none;stroke:var(--rose-mist);stroke-width:22}.bead{fill:var(--sand);transition:r .3s}.bead.future{opacity:.6}.bead-period{fill:var(--rose)}.bead-predicted{fill:var(--rose-mist);stroke:var(--rose);stroke-width:1.6;stroke-dasharray:2.4 2;opacity:1}.bead-fertile{fill:var(--leaf-soft)}.bead-ovulation{fill:var(--leaf);stroke:#fff;stroke-width:2.5}.ring-today circle:first-child{fill:#fff;stroke:var(--ink);stroke-width:2;filter:drop-shadow(0 3px 6px rgba(58,36,48,.25))}.ring-today-dot{fill:var(--rose-deep)}.ring-label{font-family:var(--f-script);font-size:17px;fill:var(--ink-3)}.ring-center{position:absolute;inset:22%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px}.rc-kicker{font-family:var(--f-script);font-size:1.55rem;color:var(--rose);line-height:1.1}.rc-big{font-family:var(--f-display);font-size:1.35rem;line-height:1.05;color:var(--ink)}.rc-big b{display:block;font-size:3.4rem;font-weight:600;letter-spacing:-.03em;color:var(--rose-deep)}.rc-sub{font-size:.86rem;color:var(--ink-2);max-width:15ch}.ring-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.ring-action .btn-primary{min-width:220px}.phase-card{position:relative;overflow:hidden}.phase-card h3{font-size:1.35rem;font-style:italic;font-weight:460}.phase-card p{color:var(--ink-2);margin-top:6px}.phase-card:after{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;background:var(--rose-mist);z-index:0}.phase-card>*{position:relative;z-index:1}.phase-fertile:after,.phase-ovulation:after{background:var(--leaf-mist)}.phase-luteal:after{background:var(--plum-mist)}.phase-follicular:after{background:#f6e7d4}.phase-next{font-size:.9rem}.phase-next b{color:var(--leaf-deep)}.mini-stats{cursor:pointer}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);text-align:center}.stat-row b{display:block;font-family:var(--f-display);font-size:1.9rem;font-weight:560;color:var(--rose-deep)}.stat-row span{font-size:.8rem;color:var(--ink-2)}.day-summary{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.ds-head{display:flex;justify-content:space-between;align-items:flex-end;width:100%;gap:10px}.ds-head h3{font-size:1.2rem}.ds-cycleday{font-family:var(--f-display);font-style:italic;color:var(--ink-2);white-space:nowrap}.ds-tags{display:flex;flex-wrap:wrap;gap:6px}.ds-items{font-size:.92rem;color:var(--ink-2)}.ds-note{font-family:var(--f-display);font-style:italic;color:var(--plum)}.disclaimer{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font-size:.8rem;color:var(--ink-3);padding:6px 18px 0}.month-nav{display:flex;gap:2px}.month-card{padding:14px 10px 12px;touch-action:pan-y}.month-head,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-head span{text-align:center;font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);padding-bottom:6px}.month-grid{row-gap:6px}.cell{position:relative;aspect-ratio:1;max-height:56px;margin:0 auto;width:100%;max-width:48px;border-radius:50%;border:0;background:none;display:grid;place-items:center;cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:1rem;transition:transform .12s,background .15s}.cell.empty{cursor:default}.cell:active:not(.empty):not(:disabled){transform:scale(.92)}.cell .num{position:relative;z-index:1}.cell.period{background:var(--rose);color:#fff}.cell.predicted{background:var(--rose-mist);color:var(--rose-deep);box-shadow:inset 0 0 0 2px var(--rose-soft);border:2px dashed var(--rose)}.cell.fertile{background:var(--leaf-mist);color:var(--leaf-deep)}.cell.ovulation{background:var(--leaf);color:#fff}.cell.ovulation:before{content:"";position:absolute;top:-3px;right:-1px;width:13px;height:13px;border-radius:50% 50% 50% 0;background:var(--rose);border:2px solid var(--card);transform:rotate(-45deg)}.cell.spotting:after{content:"";position:absolute;top:5px;left:50%;margin-left:-3px;width:6px;height:6px;border-radius:50%;background:var(--rose)}.cell.today{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--ink);font-weight:700}.cell.selected:not(.today){box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--rose-soft)}.cell .dot{position:absolute;bottom:4px;left:50%;margin-left:-2.5px;width:5px;height:5px;border-radius:50%;background:var(--plum)}.cell.period .dot,.cell.ovulation .dot{background:#fff}.editing .cell{flex-direction:column;place-items:initial;display:flex;align-items:center;justify-content:center;gap:1px}.editing .cell .num{font-size:.9rem}.cell .tick{width:16px;height:16px;border-radius:50%;border:1.8px solid var(--rose-soft);background:#fff}.editing .cell.period .tick{border-color:#fff;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7' fill='none' stroke='%23d23f7c' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}.editing .cell.disabled{opacity:.3;cursor:default}.month-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;padding:0 6px}.legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.78rem;color:var(--ink-2)}.legend span{display:inline-flex;align-items:center;gap:5px}.lg{width:12px;height:12px;border-radius:50%;display:inline-block}.lg.period{background:var(--rose)}.lg.predicted{background:var(--rose-mist);border:1.5px dashed var(--rose)}.lg.fertile{background:var(--leaf-soft)}.lg.ovulation{background:var(--leaf)}.lg.dot{width:6px;height:6px;background:var(--plum)}.edit-bar{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:16px 18px;display:flex;flex-direction:column;gap:12px;font-size:.92rem;color:var(--ink-2)}.edit-actions{display:flex;gap:10px;justify-content:flex-end}.upcoming{display:flex;flex-direction:column;gap:8px}.upcoming ul{list-style:none;margin:0;padding:0}.upcoming li{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px dashed var(--line);font-size:.93rem}.upcoming li:first-child{border-top:0}.upcoming li span{color:var(--ink-2)}.upcoming li b{text-align:right;font-weight:600}.log-sub{color:var(--ink-2);font-style:italic;font-family:var(--f-display);margin-top:6px}.save-status{position:sticky;top:8px;z-index:20;align-self:center;min-height:0;display:inline-flex;align-items:center;gap:4px;font-size:.82rem;font-weight:600;color:var(--leaf-deep);margin:-8px 0}.save-status:not(:empty){background:#fffaf5f2;border-radius:999px;padding:4px 12px;box-shadow:var(--shadow)}.save-status.s-error{color:var(--danger)}.save-status.s-pending,.save-status.s-saving{color:var(--ink-3)}.measure{display:grid;grid-template-columns:1fr 1fr;gap:12px}.measure-field{display:flex;flex-direction:column;gap:5px;font-size:.86rem;font-weight:600;color:var(--ink-2)}.measure-input{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:var(--r-sm);background:#fff;padding-right:12px}.measure-input input{border:0;background:none;width:100%;min-width:0;padding:12px 6px 12px 14px;font-family:var(--f-display);font-size:1.15rem;font-weight:500;outline:none}.measure-input em{font-style:normal;color:var(--ink-3)}.measure-field.invalid .measure-input{border-color:var(--danger)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat{display:flex;flex-direction:column;padding:16px}.stat b{font-family:var(--f-display);font-size:2.2rem;font-weight:560;color:var(--rose-deep);line-height:1.05}.stat b.stat-word{font-size:1.3rem;font-style:italic;padding:8px 0 4px;color:var(--leaf-deep)}.stat.warn b.stat-word{color:var(--sand-deep)}.stat span{font-weight:600;margin-top:4px}.stat small{color:var(--ink-3);font-size:.8rem}.len-chart{width:100%;height:auto;display:block}.lc-avg{stroke:var(--rose-soft);stroke-width:1.5;stroke-dasharray:4 4}.lc-avg-label{font-size:11px;fill:var(--rose-deep);font-weight:700}.lc-line{fill:none;stroke:var(--rose);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.lc-line.leaf{stroke:var(--leaf)}.lc-dot{fill:var(--card);stroke:var(--rose);stroke-width:2.2}.lc-dot.leaf{stroke:var(--leaf)}.lc-val{font-size:10.5px;fill:var(--ink-2);font-weight:600}.cycle-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.cl-head{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:5px}.cl-head b{font-family:var(--f-display);font-weight:560}.cl-sub{font-size:.78rem;color:var(--ink-3)}.cbar{position:relative;height:14px;border-radius:999px;background:var(--sand);overflow:hidden;margin-bottom:3px}.cbar.current{background:repeating-linear-gradient(-45deg,var(--sand) 0 6px,#f1e6d6 6px 12px)}.cbar-period{position:absolute;left:0;top:0;bottom:0;background:var(--rose);border-radius:999px}.cbar-fertile{position:absolute;top:0;bottom:0;background:var(--leaf-soft);border-radius:999px}.cbar-ov{position:absolute;top:3px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--leaf)}.top-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.top-list li{display:grid;grid-template-columns:minmax(0,9.5rem) 1fr auto;align-items:center;gap:10px;font-size:.9rem}.top-list .bar{height:10px;border-radius:999px;background:var(--card-2);overflow:hidden}.top-list .bar i{display:block;height:100%;border-radius:999px;background:var(--rose)}.top-list .bar i.plum{background:var(--plum)}.me-card{display:flex;align-items:center;gap:16px}.me-card h2{font-size:1.5rem}.me-card span{color:var(--ink-3)}.push-box{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--rose-mist);border-radius:var(--r-md);padding:12px 14px;margin-bottom:8px}.push-box.on{background:var(--leaf-mist)}.push-box>div:first-child{display:flex;flex-direction:column}.push-box span{font-size:.82rem;color:var(--ink-2)}.admin-list{list-style:none;margin:0;padding:0}.admin-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-top:1px solid var(--line);flex-wrap:wrap}.admin-list li:first-child{border-top:0}.admin-list li>div:first-child{display:flex;flex-direction:column;min-width:0}.admin-list small{font-weight:400;color:var(--ink-3)}.admin-list span{font-size:.82rem;color:var(--ink-2)}.admin-list li.disabled{opacity:.55}.link-box{display:flex;flex-direction:column;gap:8px;margin-top:8px}.link-box input{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem}.created{margin-top:16px;padding:14px;background:var(--leaf-mist);border-radius:var(--r-md);font-size:.9rem}.sheet-wrap{position:fixed;inset:0;z-index:60;background:#3a243052;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s ease}@keyframes fade{0%{opacity:0}}.sheet{width:min(600px,100%);max-height:88dvh;overflow:auto;background:var(--card);border-radius:28px 28px 0 0;padding:8px 20px calc(24px + var(--safe-b));box-shadow:var(--shadow-lg);animation:up .25s cubic-bezier(.2,.9,.3,1);outline:none}@keyframes up{0%{transform:translateY(40px);opacity:.4}}.sheet-grip{width:42px;height:5px;border-radius:999px;background:var(--line);margin:4px auto 10px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.sheet-head h2{font-size:1.35rem}.sheet-body p{color:var(--ink-2)}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:36px 20px}.empty p{color:var(--ink-2);max-width:34ch}.loading{min-height:70dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ink-2);font-family:var(--f-display);font-style:italic}.spin-flower{animation:sway 1.6s ease-in-out infinite;transform-origin:50% 100%}@keyframes sway{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.toasts{position:fixed;left:0;right:0;top:max(12px,env(safe-area-inset-top));z-index:80;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 16px}.toast{pointer-events:auto;border:0;background:var(--ink);color:#fff;border-radius:999px;padding:10px 18px;font-size:.92rem;box-shadow:var(--shadow-lg);max-width:520px;animation:rise .25s ease;cursor:pointer}.toast-error{background:var(--danger)}.auth{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 16px calc(24px + var(--safe-b));gap:0}.auth-art{margin-bottom:-26px;position:relative;z-index:2;filter:drop-shadow(0 14px 18px rgba(162,36,92,.18));animation:sway 6s ease-in-out infinite;transform-origin:50% 100%}.auth-card{width:min(420px,100%);background:var(--card);border-radius:32px;box-shadow:var(--shadow-lg);padding:40px 24px 26px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;border:1px solid rgba(235,220,205,.8)}.auth-card h1{font-size:1.5rem;margin-top:10px}.auth-sub{color:var(--ink-2);font-family:var(--f-display);font-style:italic;margin-bottom:14px}.auth-card .form{width:100%;text-align:left}.auth-note{margin-top:16px;font-size:.84rem;color:var(--ink-3)}.auth-foot{margin-top:18px;font-family:var(--f-script);font-size:1.3rem;color:var(--rose)}.onboarding{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px calc(24px + var(--safe-b));gap:14px}.ob-card{width:min(460px,100%);background:var(--card);border-radius:32px;box-shadow:var(--shadow-lg);padding:28px 22px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;animation:rise .35s ease}.ob-card h1{font-size:1.9rem}.ob-card h2{font-size:1.45rem}.ob-card .kicker{margin:0}.ob-points{list-style:none;padding:0;margin:4px 0;display:flex;flex-direction:column;gap:10px;text-align:left}.ob-points li{display:flex;gap:10px;align-items:flex-start;font-size:.95rem;color:var(--ink-2)}.ob-points .icon{color:var(--rose);margin-top:1px}.ob-cal{width:100%}.ob-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;font-family:var(--f-display)}.ob-picked{font-family:var(--f-display);font-style:italic;color:var(--rose-deep)}.ob-actions{display:flex;gap:10px;width:100%;justify-content:center;flex-wrap:wrap}.ob-skip{border:0;background:none;color:var(--ink-3);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.ob-dots{display:flex;gap:6px}.ob-dots span{width:7px;height:7px;border-radius:50%;background:var(--rose-soft)}.ob-dots span.on{background:var(--rose);width:20px;border-radius:999px}@media(min-width:720px){.main{padding-top:28px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.card>.hint+.form{margin-top:14px}.card>.hint:first-of-type{margin-top:0}
