:root{--cycle:#a54f7c;--cycle-dark:#753653;--cycle-soft:#f9e8f0;--fertile:#2ca98f;--fertile-soft:#e1f6ef;--violet:#7656c7}
body{display:flex;min-height:100vh;flex-direction:column}.cycle-main{flex:1;padding:46px 0 74px}.intro{position:relative;max-width:900px;margin:0 auto 32px;text-align:center}.crumbs{display:flex;justify-content:center;gap:9px;margin-bottom:18px;color:var(--muted);font-size:.82rem}.crumbs a{color:var(--primary);font-weight:800}.intro h1{margin:20px auto 15px;font-size:clamp(2.65rem,7vw,4.9rem)}.intro .lead{max-width:760px}.privacy-pill{display:inline-flex;align-items:center;gap:8px;margin-top:18px;padding:9px 14px;border:1px solid rgba(44,169,143,.2);border-radius:999px;color:#397b70;background:rgba(255,255,255,.78);font-size:.78rem;font-weight:800}.privacy-pill svg{width:15px;height:15px}
.cycle-app{overflow:hidden;border:1px solid var(--border);border-radius:30px;background:rgba(255,255,255,.92);box-shadow:0 28px 90px rgba(70,48,96,.15);backdrop-filter:blur(18px)}.cycle-summary{display:grid;grid-template-columns:minmax(360px,1.45fr) repeat(3,minmax(130px,.55fr));gap:1px;background:var(--border)}.rhythm-card,.summary-stat{min-height:132px;padding:20px 23px;background:#fff}.rhythm-card{display:flex;align-items:center;gap:19px}.cycle-orbit{position:relative;display:grid;width:91px;height:91px;flex:none;place-items:center;border-radius:50%;background:conic-gradient(from -90deg,var(--cycle) var(--progress),#efe9f0 var(--progress));box-shadow:0 13px 28px rgba(116,52,82,.13)}.cycle-orbit:before{content:"";position:absolute;inset:8px;border-radius:50%;background:#fff}.cycle-orbit:after{content:"";position:absolute;inset:-6px;border:1px solid rgba(165,79,124,.17);border-radius:50%;animation:orbit-breathe 3.5s ease-in-out infinite}.orbit-center{position:relative;z-index:1;text-align:center}.orbit-center span,.orbit-center small{display:block}.orbit-center span{color:var(--cycle-dark);font-size:1.2rem;font-weight:900;letter-spacing:-.03em}.orbit-center small{max-width:58px;margin-top:1px;color:var(--muted);font-size:.57rem;line-height:1.2}.orbit-dot{position:absolute;z-index:2;top:3px;left:50%;width:11px;height:11px;border:3px solid #fff;border-radius:50%;background:var(--cycle);box-shadow:0 3px 9px rgba(76,35,54,.26);transform:translateX(-50%)}.summary-label{display:block;color:var(--muted);font-size:.67rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.rhythm-copy{min-width:0}.rhythm-copy strong,.summary-stat strong{display:block;margin-top:8px;letter-spacing:-.025em}.rhythm-copy strong{font-size:1.35rem}.rhythm-copy p{margin:5px 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}.summary-stat{display:flex;flex-direction:column;justify-content:center}.summary-stat strong{font-size:1.45rem}.summary-stat>span:last-child{display:block;margin-top:6px;color:var(--muted);font-size:.68rem;line-height:1.35}
.setup-strip{display:grid;grid-template-columns:minmax(200px,1.15fr) minmax(155px,.72fr) 135px 135px auto;gap:13px;align-items:end;padding:17px 21px;border-bottom:1px solid var(--border);background:linear-gradient(100deg,#fffafc,#f8f5ff 52%,#f3fbf9)}.setup-copy{display:flex;align-items:center;gap:11px;align-self:center}.setup-copy strong,.setup-copy small{display:block}.setup-copy strong{font-size:.82rem}.setup-copy small{margin-top:3px;color:var(--muted);font-size:.66rem}.setup-icon{display:grid;width:41px;height:41px;flex:none;place-items:center;border-radius:13px;color:var(--cycle);background:var(--cycle-soft)}.setup-icon svg{width:21px}.setup-field{display:grid;gap:6px;color:#575165;font-size:.68rem;font-weight:850}.setup-field input{width:100%;height:42px;padding:0 10px;border:1px solid rgba(45,36,56,.13);border-radius:11px;color:var(--text);background:#fff;outline:none}.setup-field input:focus{border-color:var(--cycle);box-shadow:0 0 0 3px rgba(165,79,124,.09)}.number-wrap{position:relative}.number-wrap input{padding-right:42px}.number-wrap small{position:absolute;top:50%;right:10px;color:var(--muted);font-size:.65rem;transform:translateY(-50%)}.update-btn{height:42px;padding:0 15px;border:0;border-radius:12px;color:#fff;background:linear-gradient(135deg,var(--cycle),#8d54a8);box-shadow:0 9px 22px rgba(128,62,94,.2);font-size:.72rem;font-weight:850;white-space:nowrap;transition:.2s}.update-btn:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(128,62,94,.26)}
.forecast-ribbon{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:17px;padding:17px 25px;border-bottom:1px solid var(--border);background:#fff}.forecast-item{display:flex;align-items:center;gap:10px;min-width:0}.forecast-item span:last-child{min-width:0}.forecast-item small,.forecast-item strong{display:block}.forecast-item small{color:var(--muted);font-size:.62rem;font-weight:800}.forecast-item strong{overflow:hidden;margin-top:3px;font-size:.76rem;text-overflow:ellipsis;white-space:nowrap}.forecast-dot{width:12px;height:12px;flex:none;border-radius:50%;box-shadow:0 0 0 5px rgba(0,0,0,.04)}.forecast-dot.period{background:var(--cycle)}.forecast-dot.fertile{background:var(--fertile)}.forecast-dot.ovulation{background:var(--violet)}.forecast-line{width:35px;height:1px;background:linear-gradient(90deg,var(--border),rgba(165,79,124,.22),var(--border))}
.workspace{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(350px,.88fr)}.calendar-panel{padding:27px;border-right:1px solid var(--border);background:linear-gradient(155deg,#fff,#fffbfd 55%,#f8f5ff)}.calendar-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.panel-kicker{display:block;margin-bottom:6px;color:var(--cycle);font-size:.64rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.calendar-toolbar h2,.log-head h2{margin:0;font-size:1.25rem;letter-spacing:-.025em}.month-nav{display:flex;align-items:center;gap:6px}.icon-btn,.today-btn,.utility-btn{min-height:38px;border:1px solid var(--border);border-radius:11px;color:var(--text);background:#fff;font-weight:850;transition:.18s}.icon-btn{width:38px}.today-btn{padding:0 12px;font-size:.72rem}.icon-btn:hover,.today-btn:hover,.utility-btn:hover{border-color:rgba(165,79,124,.28);color:var(--cycle);transform:translateY(-1px)}.month-title{margin:22px 0 15px;font-size:1.08rem;font-weight:900}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.weekdays{margin-bottom:7px}.weekdays span{padding:2px 0;color:var(--muted);text-align:center;font-size:.62rem;font-weight:900;text-transform:uppercase}.day-cell{position:relative;display:flex;min-width:0;aspect-ratio:1;align-items:flex-start;justify-content:space-between;padding:8px;border:1px solid transparent;border-radius:14px;color:#4b4554;background:#f6f3f7;transition:.18s}.day-cell:hover{z-index:2;border-color:rgba(165,79,124,.25);transform:translateY(-2px);box-shadow:0 9px 20px rgba(73,48,76,.12)}.day-cell.outside{opacity:.38}.day-cell.today{border-color:var(--violet)}.day-cell.selected{z-index:1;border-color:var(--cycle);box-shadow:0 0 0 3px rgba(165,79,124,.12)}.day-cell.logged-period{color:#71334f;background:#f4ccd9}.day-cell.logged-period.flow-light{background:#f9e5ec}.day-cell.logged-period.flow-heavy{color:#fff;background:#9d456f}.day-cell.predicted-period{border:1px dashed rgba(165,79,124,.65);background:#fff4f8}.day-cell.fertile-day:not(.logged-period){color:#257765;background:var(--fertile-soft)}.day-cell.ovulation-day:not(.logged-period):after{content:"";position:absolute;right:7px;bottom:7px;width:8px;height:8px;border-radius:50%;background:var(--violet);box-shadow:0 0 0 3px rgba(118,86,199,.13)}.day-cell.has-entry:before{content:"";position:absolute;left:50%;bottom:6px;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.7;transform:translateX(-50%)}.day-number{display:grid;width:26px;height:26px;place-items:center;border-radius:8px;font-size:.7rem;font-weight:900}.today .day-number{color:#fff;background:var(--violet)}.day-marker{align-self:flex-end;color:inherit;font-size:.54rem;font-weight:900;text-transform:uppercase}.calendar-legend{display:flex;flex-wrap:wrap;gap:9px 15px;margin-top:17px;color:var(--muted);font-size:.64rem;font-weight:750}.calendar-legend span{display:flex;align-items:center;gap:6px}.legend-dot{width:9px;height:9px;border-radius:50%}.legend-dot.logged{background:var(--cycle)}.legend-dot.predicted{border:1px dashed var(--cycle);background:#fff}.legend-dot.fertile{background:var(--fertile)}.legend-dot.note{background:var(--violet)}.insight-card{position:relative;display:flex;align-items:center;gap:12px;overflow:hidden;margin-top:20px;padding:16px 18px;border-radius:17px;color:#fff;background:linear-gradient(120deg,#513553,#8751a1 56%,#2d8d7c);box-shadow:0 14px 30px rgba(86,49,91,.17)}.insight-card:after{content:"";position:absolute;right:-32px;width:105px;height:105px;border:20px solid rgba(255,255,255,.07);border-radius:50%}.insight-spark{display:grid;width:35px;height:35px;flex:none;place-items:center;border-radius:11px;background:rgba(255,255,255,.13);font-size:1.05rem}.insight-card small,.insight-card strong{display:block}.insight-card small{color:rgba(255,255,255,.65);font-size:.58rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.insight-card strong{max-width:500px;margin-top:4px;font-size:.76rem;line-height:1.5}
.log-panel{padding:28px;background:#fff}.log-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:21px}.log-head p{margin:6px 0 0;color:var(--muted);font-size:.73rem}.jump-period{min-height:38px;padding:0 11px;border:1px solid rgba(165,79,124,.18);border-radius:11px;color:var(--cycle-dark);background:var(--cycle-soft);font-size:.65rem;font-weight:850;white-space:nowrap}.jump-period:hover{background:#f5dce7}.field-group{padding:18px 0;border-top:1px solid var(--border)}.field-group:first-of-type{padding-top:0;border-top:0}.field-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.field-label,.notes-label{font-size:.76rem;font-weight:900}.field-hint,.notes-label span{color:var(--muted);font-size:.62rem;font-weight:650}.flow-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.flow-option{min-height:54px;padding:7px 3px;border:1px solid var(--border);border-radius:12px;color:var(--muted);background:#fbfafc;font-size:.62rem;font-weight:850;transition:.18s}.flow-option i,.flow-option span{display:block}.flow-option i{width:10px;height:10px;margin:0 auto 7px;border:2px solid #b9b3bf;border-radius:50%}.flow-option[data-flow=light] i{border:0;background:#e6a9bd}.flow-option[data-flow=medium] i{border:0;background:#bd648a}.flow-option[data-flow=heavy] i{border:0;background:#853657}.flow-option:hover,.flow-option.active{border-color:rgba(165,79,124,.36);color:var(--cycle-dark);background:var(--cycle-soft);transform:translateY(-1px)}.flow-option.active{box-shadow:0 0 0 2px rgba(165,79,124,.08)}.symptom-picker{display:flex;flex-wrap:wrap;gap:7px}.symptom-picker button{min-height:35px;padding:0 10px;border:1px solid var(--border);border-radius:999px;color:#686171;background:#fbfafc;font-size:.65rem;font-weight:800;transition:.18s}.symptom-picker button:hover,.symptom-picker button.active{color:var(--cycle-dark);border-color:rgba(165,79,124,.27);background:var(--cycle-soft)}.symptom-picker button.active:before{content:"\2713";margin-right:5px}.mood-picker{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.mood-picker button{min-width:0;min-height:58px;padding:5px 2px;border:1px solid var(--border);border-radius:12px;color:var(--muted);background:#fbfafc;transition:.18s}.mood-picker span,.mood-picker small{display:block}.mood-picker span{font-size:1.15rem}.mood-picker small{margin-top:3px;font-size:.55rem;font-weight:850}.mood-picker button:hover,.mood-picker button.active{color:var(--violet);border-color:rgba(118,86,199,.27);background:#f2effb;transform:translateY(-1px)}.notes-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.field-group textarea{width:100%;min-height:90px;padding:11px 12px;border:1px solid rgba(45,36,56,.13);border-radius:12px;color:var(--text);background:#fff;outline:none;resize:vertical;line-height:1.5}.field-group textarea:focus{border-color:var(--cycle);box-shadow:0 0 0 3px rgba(165,79,124,.08)}.log-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:18px}.delete-entry{min-height:41px;padding:0 8px;border:0;color:#a24a65;background:transparent;font-size:.68rem;font-weight:850}.delete-entry[hidden]{display:none}.save-entry{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:46px;margin-left:auto;padding:0 17px;border:0;border-radius:13px;color:#fff;background:linear-gradient(135deg,var(--cycle),#8f55a9);box-shadow:0 11px 24px rgba(133,61,96,.22);font-size:.73rem;font-weight:900;transition:.2s}.save-entry:hover{transform:translateY(-2px);box-shadow:0 14px 29px rgba(133,61,96,.28)}.app-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 22px;border-top:1px solid var(--border);color:var(--muted);background:#fcfafc;font-size:.69rem}.app-footer>span{display:flex;align-items:center;gap:7px}.app-footer svg{width:15px}.app-footer strong{color:#397b70}.utility-actions{display:flex;gap:7px}.utility-btn{min-height:34px;padding:0 10px;font-size:.65rem}.utility-btn.danger{color:#a24a65}
.content-section{padding:70px 0}.content-section.alt{border-block:1px solid rgba(31,34,62,.06);background:rgba(255,255,255,.43)}.content{max-width:930px;margin:auto}.content-kicker{display:block;margin-bottom:8px;color:var(--cycle);font-size:.68rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.content h2{margin:0 0 12px;font-size:clamp(1.75rem,4vw,2.45rem);letter-spacing:-.04em}.content>p,.try-head p{color:var(--muted);line-height:1.75}.steps,.try-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:25px}.step,.try-card{padding:22px;border:1px solid var(--border);border-radius:18px;background:#fff}.step b{display:grid;width:33px;height:33px;place-items:center;border-radius:11px;color:#fff;background:linear-gradient(135deg,var(--cycle),var(--violet))}.step h3{margin:13px 0 7px;font-size:1rem}.step p{margin:0;color:var(--muted);font-size:.84rem;line-height:1.65}.medical-note{display:flex;gap:13px;margin-top:22px;padding:18px;border:1px solid rgba(213,143,39,.25);border-radius:16px;color:#665b44;background:rgba(255,244,211,.6);font-size:.82rem;line-height:1.6}.medical-note>span{display:grid;width:25px;height:25px;flex:none;place-items:center;border-radius:50%;color:#fff;background:#ce8b2a;font-weight:900}.medical-note p{margin:0}.medical-note strong{color:#463d2e}.faq{display:grid;gap:10px;margin-top:24px}.faq details{border:1px solid var(--border);border-radius:15px;background:#fff}.faq summary{padding:17px 19px;cursor:pointer;font-weight:850}.faq details p{margin:0;padding:0 19px 18px;color:var(--muted);line-height:1.7}.try-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.try-head h2{margin-bottom:5px}.try-head p{margin:0}.try-head>a{flex:none;color:var(--primary);font-size:.84rem;font-weight:850}.try-card{display:flex;align-items:center;gap:13px;transition:.2s}.try-card:hover{transform:translateY(-3px);box-shadow:0 14px 35px rgba(53,49,110,.1)}.try-icon{display:grid;width:45px;height:45px;flex:none;place-items:center;border-radius:14px;color:var(--cycle);background:var(--cycle-soft);font-size:.66rem;font-weight:900}.try-card strong,.try-card>span:last-child span{display:block}.try-card>span:last-child span{margin-top:4px;color:var(--muted);font-size:.73rem;line-height:1.45}.toast{position:fixed;right:22px;bottom:22px;z-index:90;max-width:calc(100% - 44px);padding:13px 17px;border-radius:13px;color:#fff;background:#292438;box-shadow:0 14px 38px rgba(31,34,62,.25);opacity:0;transform:translateY(14px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}.celebration{position:fixed;inset:0;z-index:89;overflow:hidden;pointer-events:none}.petal{position:absolute;top:-20px;width:10px;height:15px;border-radius:10px 2px 10px 2px;animation:petal-fall 1.8s ease-in forwards}
button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid rgba(118,86,199,.32);outline-offset:3px}
@keyframes orbit-breathe{50%{transform:scale(1.04);opacity:.48}}@keyframes petal-fall{to{transform:translate(var(--drift),105vh) rotate(var(--spin));opacity:.1}}
@media(max-width:1020px){.cycle-summary{grid-template-columns:1fr 1fr}.rhythm-card{grid-column:1/-1}.setup-strip{grid-template-columns:1fr 1fr 1fr}.setup-copy{grid-column:1/-1}.update-btn{width:100%}.workspace{grid-template-columns:1fr}.calendar-panel{border-right:0;border-bottom:1px solid var(--border)}}
@media(max-width:720px){.cycle-main{padding:36px 0 56px}.cycle-app{border-radius:23px}.forecast-ribbon{grid-template-columns:1fr;gap:10px}.forecast-line{display:none}.forecast-item{padding:3px 0}.setup-strip{grid-template-columns:1fr 1fr}.setup-field:first-of-type{grid-column:1/-1}.update-btn{grid-column:1/-1}.calendar-panel,.log-panel{padding:20px 15px}.weekdays,.calendar-grid{gap:4px}.day-cell{padding:5px;border-radius:10px}.day-number{width:23px;height:23px}.day-marker{display:none}.try-head{align-items:flex-start;flex-direction:column}.steps,.try-grid{grid-template-columns:1fr}.content-section{padding:55px 0}}
@media(max-width:500px){.cycle-summary{grid-template-columns:1fr 1fr}.rhythm-card{min-height:125px;padding:17px;gap:14px}.summary-stat{min-height:92px;padding:16px}.summary-stat strong{font-size:1.18rem}.cycle-orbit{width:77px;height:77px}.forecast-ribbon{padding:15px 18px}.setup-strip{padding:16px}.calendar-toolbar{align-items:flex-start;flex-direction:column}.month-nav{width:100%}.today-btn{flex:1}.log-head{align-items:flex-start;flex-direction:column}.jump-period{width:100%}.flow-picker{grid-template-columns:repeat(2,1fr)}.mood-picker{gap:4px}.app-footer{align-items:flex-start;flex-direction:column}.utility-actions{width:100%}.utility-btn{flex:1}.log-actions{align-items:stretch;flex-direction:column-reverse}.save-entry{width:100%;margin-left:0}.delete-entry{width:100%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
