:root{--bg-canvas: #f5f0e6;--bg-elevated: #fbf7ee;--bg-sunken: #ece4d2;--bg-contrast: #15110d;--ink-primary: #15110d;--ink-secondary: #524940;--ink-tertiary: #8a7e6f;--ink-quaternary: #b8ab98;--ink-inverse: #fbf7ee;--rule: rgb(21 17 13 / 14%);--rule-soft: rgb(21 17 13 / 7%);--rule-strong: rgb(21 17 13 / 28%);--accent: #872839;--accent-ink: #fbf7ee;--accent-soft: rgb(135 40 57 / 12%);--accent-ring: rgb(135 40 57 / 35%);--flow: #b95436;--flow-soft: rgb(185 84 54 / 15%);--flow-ink: #5c2113;--sand: #c48f3e;--sand-soft: rgb(196 143 62 / 22%);--sand-ink: #5c3e10;--sage: #7f9f7a;--sage-soft: rgb(127 159 122 / 18%);--sage-ink: #2f4a2a;--luteal: #9c7a8f;--luteal-soft: rgb(156 122 143 / 18%);--luteal-ink: #3e2533;--danger: #8e281b;--danger-soft: rgb(142 40 27 / 12%);--success: #35633c;--success-soft: rgb(53 99 60 / 14%);--atmosphere: radial-gradient(circle at 88% 0%, rgb(135 40 57 / 10%) 0%, transparent 28rem), radial-gradient(circle at 6% 4%, rgb(196 143 62 / 10%) 0%, transparent 30rem), linear-gradient(180deg, #fbf7ee 0%, #f2ecdf 55%, #eee3ce 100%);--grain-opacity: .05;--shadow-hairline: inset 0 0 0 1px var(--rule-soft);--shadow-raised: 0 1px 0 rgb(21 17 13 / 4%), 0 18px 40px rgb(21 17 13 / 6%);--shadow-float: 0 24px 60px rgb(21 17 13 / 12%);--font-display: "Fraunces", "Iowan Old Style", "Times New Roman", "Georgia", serif;--font-sans: "IBM Plex Sans", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", "Consolas", "Courier New", monospace;--ease: cubic-bezier(.2, .8, .2, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--dur-sm: .15s;--dur-md: .26s;--dur-lg: .48s;color-scheme:light;color:var(--ink-primary);font-family:var(--font-sans);font-weight:400;font-feature-settings:"ss01","cv11";line-height:1.55}[data-theme=dark]{--bg-canvas: #1f1a15;--bg-elevated: #2a231c;--bg-sunken: #15110d;--bg-contrast: #f1e8d6;--ink-primary: #f2e8d4;--ink-secondary: #c1b49e;--ink-tertiary: #897d6b;--ink-quaternary: #544a3a;--ink-inverse: #15110d;--rule: rgb(241 232 214 / 16%);--rule-soft: rgb(241 232 214 / 8%);--rule-strong: rgb(241 232 214 / 30%);--accent: #eaa5b0;--accent-ink: #15110d;--accent-soft: rgb(234 165 176 / 16%);--accent-ring: rgb(234 165 176 / 42%);--flow: #ea9370;--flow-soft: rgb(234 147 112 / 20%);--flow-ink: #f8d7c5;--sand: #e8c585;--sand-soft: rgb(232 197 133 / 16%);--sand-ink: #f6e3b9;--sage: #abc9a1;--sage-soft: rgb(171 201 161 / 16%);--sage-ink: #dbeacf;--luteal: #c9a9bc;--luteal-soft: rgb(201 169 188 / 18%);--luteal-ink: #ecd6e2;--danger: #ec9484;--danger-soft: rgb(236 148 132 / 18%);--success: #93c495;--success-soft: rgb(147 196 149 / 18%);--atmosphere: radial-gradient(circle at 90% -5%, rgb(234 165 176 / 14%) 0%, transparent 34rem), radial-gradient(circle at 2% 8%, rgb(234 147 112 / 12%) 0%, transparent 32rem), radial-gradient(circle at 50% 120%, rgb(171 201 161 / 8%) 0%, transparent 40rem), linear-gradient(180deg, #261f18 0%, #1f1a15 60%, #15110d 100%);--grain-opacity: .07;--shadow-hairline: inset 0 0 0 1px rgb(241 232 214 / 7%);--shadow-raised: 0 1px 0 rgb(0 0 0 / 32%), 0 24px 60px rgb(0 0 0 / 34%);--shadow-float: 0 36px 80px rgb(0 0 0 / 48%);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--atmosphere);color:var(--ink-primary);margin:0;min-height:100vh;min-width:320px;transition:background-color var(--dur-md) var(--ease-soft),color var(--dur-md) var(--ease-soft)}body:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");content:"";inset:0;mix-blend-mode:multiply;opacity:var(--grain-opacity);pointer-events:none;position:fixed;z-index:1}[data-theme=dark] body:before{mix-blend-mode:screen}a{color:inherit;text-decoration:none}button,input,textarea,select{color:inherit;font:inherit}::selection{background:var(--accent);color:var(--accent-ink)}#root{min-height:100vh;position:relative;z-index:2}.app-shell{margin:0 auto;padding:1.5rem 1.25rem 5rem;width:min(100%,56rem)}@keyframes fade-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.app-shell>*{animation:fade-rise var(--dur-lg) var(--ease) backwards}.app-shell>*:nth-child(1){animation-delay:0ms}.app-shell>*:nth-child(2){animation-delay:60ms}.app-shell>*:nth-child(3){animation-delay:.12s}.app-shell>*:nth-child(4){animation-delay:.18s}.app-shell>*:nth-child(5){animation-delay:.24s}.app-shell>*:nth-child(6){animation-delay:.3s}.hero-copy,.muted,.notice{color:var(--ink-secondary)}.eyebrow{color:var(--accent);font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.22em;margin:0 0 .75rem;text-transform:uppercase}.tab-bar{background:var(--bg-elevated);border:1px solid var(--rule);border-radius:999px;box-shadow:var(--shadow-hairline);display:grid;gap:.25rem;grid-template-columns:repeat(auto-fit,minmax(0,1fr));margin-bottom:1.75rem;padding:.3rem}.tab-link{align-items:center;background:transparent;border:1px solid transparent;border-radius:999px;color:var(--ink-secondary);display:inline-flex;font-family:var(--font-mono);font-size:.72rem;font-weight:500;justify-content:center;letter-spacing:.16em;min-height:2.35rem;padding:.55rem .9rem;text-align:center;text-transform:uppercase;transition:background-color var(--dur-sm) var(--ease),color var(--dur-sm) var(--ease),border-color var(--dur-sm) var(--ease)}.tab-link:hover{color:var(--ink-primary)}.tab-link.active{background:var(--ink-primary);color:var(--ink-inverse)}.content{counter-reset:panel-counter;display:grid;gap:1.5rem}.status-banner{align-items:center;background:var(--bg-elevated);border:1px solid var(--rule);border-left:3px solid var(--ink-primary);border-radius:.25rem 1rem 1rem .25rem;color:var(--ink-primary);display:grid;gap:.2rem;margin-bottom:1rem;padding:.9rem 1rem}.status-banner strong{font-family:var(--font-display);font-size:1.1rem;font-variation-settings:"opsz" 30,"wght" 500;letter-spacing:-.01em}.status-banner span{color:var(--ink-secondary);font-size:.88rem}.muted-banner{border-left-color:var(--ink-tertiary)}.error-banner{background:var(--danger-soft);border-left-color:var(--danger);color:var(--danger)}.error-banner span{color:var(--danger);opacity:.85}.panel{background:var(--bg-elevated);border:1px solid var(--rule);border-radius:1.5rem;box-shadow:var(--shadow-raised);counter-increment:panel-counter;padding:1.75rem;position:relative}.panel:before{color:var(--ink-quaternary);content:counter(panel-counter,decimal-leading-zero);font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.16em;position:absolute;right:1.5rem;top:1.5rem}.panel-header{align-items:start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.5rem;padding-right:3rem}.panel-header>div:first-child{flex:1;min-width:0}.panel-header h2{font-family:var(--font-display);font-size:clamp(1.4rem,3.4vw,1.85rem);font-variation-settings:"opsz" 48,"wght" 400;letter-spacing:-.015em;line-height:1.1;margin:0 0 .45rem}.panel-header p{color:var(--ink-secondary);font-size:.9rem;margin:0;max-width:38rem}.panel-date{align-items:center;color:var(--ink-secondary);display:inline-flex;font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.12em;min-height:2.5rem;text-transform:uppercase;white-space:nowrap}.metric-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.metric-card{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;display:flex;flex-direction:column;gap:.5rem;min-height:8rem;min-width:0;overflow:hidden;padding:1.25rem;position:relative;transition:transform var(--dur-md) var(--ease),border-color var(--dur-md) var(--ease)}.metric-card:hover{border-color:var(--rule-strong);transform:translateY(-2px)}.metric-label{color:var(--ink-tertiary);display:block;font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.18em;margin-bottom:.4rem;text-transform:uppercase}.metric-card strong{color:var(--ink-primary);display:block;font-family:var(--font-display);font-size:clamp(1.6rem,4.2vw,2.6rem);font-variation-settings:"opsz" 144,"wght" 350;font-weight:350;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.02em;line-height:1.05;margin-top:auto;max-width:100%;overflow-wrap:anywhere}.metric-card strong:has(+*),.metric-card strong{font-feature-settings:"ss01","lnum","tnum"}.token-list{display:flex;flex-wrap:wrap;gap:.55rem;list-style:none;margin:.5rem 0 0;padding:0}.token-list li{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;color:var(--ink-secondary);font-size:.88rem;padding:.5rem .85rem}.empty-state{background:var(--bg-canvas);border:1px dashed var(--rule);border-radius:1rem;color:var(--ink-secondary);padding:1rem}.details-list{display:grid;gap:.85rem;margin:0}.details-list div{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;padding:1rem 1.15rem}.details-list dt{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.7rem;font-weight:500;letter-spacing:.16em;margin-bottom:.4rem;text-transform:uppercase}.details-list dd{color:var(--ink-primary);margin:0}.panel .details-list{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}.notice{font-size:.92rem;line-height:1.65;margin:0}.stack-form{display:grid;gap:1.25rem}.field-grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.field{display:grid;gap:.4rem}.field span{color:var(--ink-primary);font-size:.88rem;font-weight:500}.field small{color:var(--ink-tertiary);font-size:.78rem}.field input,.field select,.field textarea{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.75rem;color:var(--ink-primary);font-size:1rem;padding:.8rem .95rem;transition:border-color var(--dur-sm) var(--ease),box-shadow var(--dur-sm) var(--ease),background-color var(--dur-sm) var(--ease);width:100%}.field input::placeholder,.field textarea::placeholder{color:var(--ink-quaternary)}.field input:focus,.field select:focus,.field textarea:focus{background:var(--bg-elevated);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.field textarea{min-height:3rem;resize:vertical}.toggle-field{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;display:inline-flex;gap:.85rem;padding:.7rem 1rem}.toggle-field input{accent-color:var(--accent);cursor:pointer;height:1.05rem;width:1.05rem}.toggle-field span{font-size:.9rem;font-weight:500}.action-row{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.action-row-end{margin-left:auto}@media(max-width:540px){.action-row{align-items:stretch;flex-direction:column}.action-row>.primary-button,.action-row>.secondary-button,.action-row>.destructive-button{width:100%}.action-row-end{margin-left:0}}.primary-button,.secondary-button,.destructive-button,.pill-button{align-items:center;border:1px solid transparent;border-radius:999px;cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:.78rem;font-weight:500;gap:.5rem;justify-content:center;letter-spacing:.1em;text-transform:uppercase;transition:transform var(--dur-sm) var(--ease),box-shadow var(--dur-sm) var(--ease),border-color var(--dur-sm) var(--ease),background-color var(--dur-sm) var(--ease),color var(--dur-sm) var(--ease)}.primary-button,.secondary-button,.destructive-button{padding:.85rem 1.25rem}.primary-button{background:var(--ink-primary);color:var(--ink-inverse)}.primary-button:hover{background:var(--accent);box-shadow:0 10px 24px var(--accent-ring);color:var(--accent-ink);transform:translateY(-1px)}.secondary-button{background:var(--bg-elevated);border-color:var(--rule);color:var(--ink-primary)}.secondary-button:hover{border-color:var(--ink-primary);transform:translateY(-1px)}.destructive-button{background:transparent;border-color:var(--danger);color:var(--danger)}.destructive-button:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.pill-button{background:var(--bg-canvas);border-color:var(--rule);color:var(--ink-secondary);font-family:var(--font-sans);font-size:.85rem;font-weight:500;letter-spacing:normal;padding:.55rem .9rem;text-transform:none}.pill-button:hover{border-color:var(--rule-strong);color:var(--ink-primary)}.pill-button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}[data-theme=dark] .pill-button.active{background:var(--accent-soft);color:var(--accent)}.primary-button:disabled,.secondary-button:disabled,.destructive-button:disabled,.pill-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.inline-error,.inline-success{align-items:center;display:inline-flex;font-family:var(--font-mono);font-size:.78rem;gap:.5rem;letter-spacing:.08em;margin:0;text-transform:uppercase}.inline-error{color:var(--danger)}.inline-error:before{background:var(--danger);border-radius:999px;content:"";display:inline-block;height:.45rem;width:.45rem}.inline-success{color:var(--success)}.inline-success:before{background:var(--success);border-radius:999px;content:"";display:inline-block;height:.45rem;width:.45rem}.account-danger-card{background:var(--danger-soft);border:1px solid var(--danger);border-radius:1rem;display:grid;gap:1rem;padding:1.25rem}.dialog-backdrop{align-items:center;background:#15110d7a;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:30}.dialog-card{background:var(--bg-elevated);border:1px solid var(--rule);border-radius:1.25rem;box-shadow:var(--shadow-float);display:grid;gap:1rem;max-width:30rem;padding:1.5rem;width:min(100%,30rem)}.dialog-card h3{font-family:var(--font-display);font-size:clamp(1.35rem,3vw,1.7rem);font-variation-settings:"opsz" 40,"wght" 430;letter-spacing:-.015em;line-height:1.1;margin:0}.dialog-card p{color:var(--ink-secondary);margin:0}.onboarding-preview{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;display:grid;gap:1rem;padding:1.25rem}.onboarding-preview .panel-header{margin-bottom:0;padding-right:0}.onboarding-preview h3{font-family:var(--font-display);font-size:1.15rem;font-variation-settings:"opsz" 48,"wght" 500;margin:0 0 .3rem}.onboarding-panel:before{content:none}.language-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.language-button{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;color:var(--ink-primary);cursor:pointer;display:flex;gap:.75rem;justify-content:space-between;padding:1rem 1.15rem;text-align:left;transition:border-color var(--dur-sm) var(--ease),transform var(--dur-sm) var(--ease),box-shadow var(--dur-sm) var(--ease),background-color var(--dur-sm) var(--ease);width:100%}.language-button:hover{border-color:var(--accent-ring);transform:translateY(-1px)}.language-button.active{background:var(--bg-elevated);border-color:var(--ink-primary);box-shadow:var(--shadow-raised)}.language-button span:first-child{font-weight:500}.language-code{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.7rem;font-weight:500;letter-spacing:.14em}.calendar-toolbar{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;display:flex;gap:.75rem;justify-content:space-between;margin-bottom:1.25rem;padding:.4rem .55rem .4rem 1.5rem}.calendar-toolbar strong{font-family:var(--font-display);font-size:1.15rem;font-variation-settings:"opsz" 72,"wght" 400;font-weight:400;letter-spacing:-.01em}.calendar-legend{color:var(--ink-secondary);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:.72rem;gap:.75rem 1.25rem;letter-spacing:.08em;margin-bottom:1rem;text-transform:uppercase}.legend-item{align-items:center;color:var(--ink-tertiary);display:inline-flex;gap:.5rem}.legend-dot{background:var(--ink-quaternary);border-radius:999px;display:inline-block;height:.7rem;width:.7rem}.legend-dot.logged{background:var(--flow)}.legend-dot.predicted{background:var(--sand);border:1px dashed var(--sand);background-color:transparent}.legend-dot.today{background:var(--ink-primary)}.calendar-weekdays{display:grid;gap:.45rem;grid-template-columns:repeat(7,minmax(0,1fr));margin-bottom:.5rem;padding:0 .15rem}.calendar-weekday{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.14em;text-align:center;text-transform:uppercase}.calendar-grid{display:grid;gap:.45rem;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-day-placeholder{min-height:5.75rem}.calendar-day{align-items:flex-start;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.85rem;color:var(--ink-primary);cursor:pointer;display:flex;flex-direction:column;gap:.25rem;min-height:5.75rem;overflow:hidden;padding:.7rem .7rem .55rem;position:relative;text-align:left;transition:background-color var(--dur-sm) var(--ease),border-color var(--dur-sm) var(--ease),transform var(--dur-sm) var(--ease);width:100%}.calendar-day:hover{border-color:var(--rule-strong);transform:translateY(-1px)}.onboarding-calendar-grid .calendar-day{cursor:default;min-height:4.5rem}.calendar-day.today{border-color:var(--ink-primary);box-shadow:inset 0 0 0 1px var(--ink-primary)}.calendar-day.today .calendar-day-number{color:var(--ink-primary);font-weight:600}.calendar-day.selected{background:var(--bg-elevated);border-color:var(--accent);box-shadow:0 10px 24px var(--accent-ring)}.calendar-day.logged{background:var(--flow-soft);border-color:var(--flow)}.calendar-day.logged:after{background:var(--flow);bottom:0;content:"";height:3px;left:0;position:absolute;right:0}.calendar-day.predicted{background:transparent;border-color:var(--sand);border-style:dashed}.calendar-day-number{color:var(--ink-primary);font-family:var(--font-display);font-size:1.15rem;font-variation-settings:"opsz" 48,"wght" 450;font-weight:450;letter-spacing:-.02em;line-height:1}.calendar-day-flow,.calendar-day-symptoms{color:var(--ink-secondary);font-family:var(--font-mono);font-size:.66rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.calendar-day.logged .calendar-day-flow{color:var(--flow-ink)}[data-theme=dark] .calendar-day.logged .calendar-day-flow{color:var(--flow)}.calendar-day-symptoms{align-items:center;background:var(--accent-soft);border-radius:999px;color:var(--accent);display:inline-flex;font-size:.65rem;gap:.35rem;margin-top:auto;padding:.22rem .5rem}.calendar-day-symptom-glyphs{align-items:center;display:inline-flex;gap:.24rem}.calendar-day-symptom-dot{background:var(--accent);border-radius:999px;display:inline-block;height:.38rem;width:.38rem}.calendar-day-symptom-more{color:var(--accent);font-size:.65rem;font-weight:600}.calendar-actions{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;display:grid;gap:1rem;margin-top:1rem;padding:1.15rem}.phase-banner{border:1px solid var(--rule);border-radius:1rem;display:grid;gap:.4rem;padding:1.15rem;position:relative}.phase-banner:before{background:var(--ink-quaternary);border-radius:0 999px 999px 0;content:"";height:28px;left:0;position:absolute;top:1.15rem;width:3px}.phase-banner.neutral{background:var(--bg-canvas)}.phase-banner.menstrual{background:var(--flow-soft)}.phase-banner.menstrual:before{background:var(--flow)}.phase-banner.follicular{background:var(--sand-soft)}.phase-banner.follicular:before{background:var(--sand)}.phase-banner.ovulatory{background:var(--sage-soft)}.phase-banner.ovulatory:before{background:var(--sage)}.phase-banner.luteal{background:var(--luteal-soft)}.phase-banner.luteal:before{background:var(--luteal)}.phase-pill{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;color:var(--ink-primary);display:inline-flex;font-family:var(--font-mono);font-size:.72rem;font-weight:500;gap:.5rem;justify-content:center;letter-spacing:.14em;min-width:8rem;padding:.55rem 1rem;text-transform:uppercase;white-space:nowrap}.phase-pill:before{background:var(--ink-quaternary);border-radius:999px;content:"";display:inline-block;height:.5rem;width:.5rem}.phase-pill.menstrual{background:var(--flow-soft);border-color:var(--flow);color:var(--flow-ink)}[data-theme=dark] .phase-pill.menstrual{color:var(--flow)}.phase-pill.menstrual:before{background:var(--flow)}.phase-pill.follicular{background:var(--sand-soft);border-color:var(--sand);color:var(--sand-ink)}[data-theme=dark] .phase-pill.follicular{color:var(--sand)}.phase-pill.follicular:before{background:var(--sand)}.phase-pill.ovulatory{background:var(--sage-soft);border-color:var(--sage);color:var(--sage-ink)}[data-theme=dark] .phase-pill.ovulatory{color:var(--sage)}.phase-pill.ovulatory:before{background:var(--sage)}.phase-pill.luteal{background:var(--luteal-soft);border-color:var(--luteal);color:var(--luteal-ink)}[data-theme=dark] .phase-pill.luteal{color:var(--luteal)}.phase-pill.luteal:before{background:var(--luteal)}.phase-pill.neutral:before{background:var(--ink-quaternary)}.forecast-list{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));margin-top:1rem}.forecast-card{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem;padding:1.15rem}.forecast-card strong{font-family:var(--font-display);font-size:1.3rem;font-variation-settings:"opsz" 72,"wght" 400}.forecast-card small{color:var(--ink-tertiary);display:block;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;margin-top:.4rem;text-transform:uppercase}.history-list{display:grid;gap:.9rem}.history-actions{display:flex;justify-content:center;margin-top:1rem}.history-card{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1rem}.history-card-summary{cursor:pointer;list-style:none;padding:1.15rem}.history-card-summary::-webkit-details-marker{display:none}.history-card-body{padding:0 1.15rem 1.15rem}.history-card-header{margin:0}.history-card-header strong{font-family:var(--font-display);font-size:1.15rem;font-variation-settings:"opsz" 48,"wght" 500}.history-section+.history-section{margin-top:.75rem}.history-line{color:var(--ink-secondary);font-size:.92rem;margin:.25rem 0 0}.history-phase-list,.history-day-list{display:grid;gap:.75rem}.history-phase-card,.history-day-card{background:var(--bg-elevated);border:1px solid var(--rule-soft);border-radius:.9rem;padding:.95rem 1.15rem}.history-phase-summary{color:var(--ink-primary);cursor:pointer;font-weight:500;list-style:none}.history-phase-summary::-webkit-details-marker{display:none}.history-tag{background:var(--accent-soft);border-radius:999px;color:var(--accent);font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.06em;padding:.35rem .7rem}.day-details-header{align-items:flex-start;border-bottom:1px solid var(--rule);display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.25rem;padding-bottom:1.25rem}.day-details-meta{display:grid;gap:.3rem}.day-details-meta strong{font-family:var(--font-display);font-size:clamp(1.3rem,3.4vw,1.8rem);font-variation-settings:"opsz" 72,"wght" 400;letter-spacing:-.015em;line-height:1.1}.day-details-meta .muted{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase}.day-details-grid{display:grid;gap:1.25rem}.detail-card{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:1.15rem;padding:1.35rem}.detail-card.accent-card{background:linear-gradient(135deg,var(--accent-soft) 0%,var(--bg-canvas) 100%);border-color:var(--accent-ring)}.detail-card-header{margin-bottom:1rem}.detail-card-header h3{font-family:var(--font-display);font-size:1.1rem;font-variation-settings:"opsz" 48,"wght" 500;margin:0 0 .3rem}.detail-card-header p{color:var(--ink-secondary);font-size:.88rem;margin:0}.theme-segment{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;display:inline-grid;gap:.25rem;grid-auto-flow:column;padding:.3rem}.theme-segment button{background:transparent;border:none;border-radius:999px;color:var(--ink-secondary);cursor:pointer;font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.12em;padding:.6rem 1.1rem;text-transform:uppercase;transition:background-color var(--dur-sm) var(--ease),color var(--dur-sm) var(--ease)}.theme-segment button:hover{color:var(--ink-primary)}.theme-segment button.active{background:var(--ink-primary);color:var(--ink-inverse)}[dir=rtl] .panel:before{left:1.5rem;right:auto}[dir=rtl] .panel-header{padding-left:3rem;padding-right:0}[dir=rtl] .status-banner{border-left:1px solid var(--rule);border-radius:1rem .25rem .25rem 1rem;border-right:3px solid var(--ink-primary)}[dir=rtl] .phase-banner:before{border-radius:999px 0 0 999px;left:auto;right:0}[dir=rtl] .action-row-end{margin-left:0;margin-right:auto}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}@media(max-width:720px){.app-shell{padding:1rem .9rem 4rem}.panel{padding:1.35rem 1.15rem}.panel:before{right:1.15rem;top:1.15rem}.panel-header{padding-right:2.25rem}.day-details-header{align-items:stretch;flex-direction:column}.calendar-toolbar{padding:.35rem .45rem .35rem 1rem}.calendar-grid,.calendar-weekdays{gap:.3rem}.calendar-day{min-height:4.75rem;padding:.55rem .5rem .45rem}.calendar-day-placeholder{min-height:4.75rem}.calendar-day-number{font-size:1rem}.calendar-day-flow{font-size:.58rem;letter-spacing:.04em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:480px){.calendar-day-flow{font-size:.5rem;letter-spacing:.02em}.tab-bar{padding:.25rem}.tab-link{font-size:.66rem;letter-spacing:.12em;padding:.5rem}}.week-strip{background:var(--bg-elevated);border:1px solid var(--rule);border-radius:1.1rem;box-shadow:var(--shadow-raised);display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem;padding:.9rem .9rem .75rem}.week-strip-header{align-items:center;color:var(--ink-secondary);display:grid;font-family:var(--font-mono);font-size:.72rem;gap:.5rem;grid-template-columns:auto 1fr auto auto;letter-spacing:.1em;text-transform:uppercase}.week-strip-nav,.week-strip-open-calendar{align-items:center;background:transparent;border:1px solid var(--rule);border-radius:999px;color:var(--ink-primary);cursor:pointer;display:inline-flex;font-size:1rem;height:2rem;justify-content:center;width:2rem}.week-strip-nav:hover,.week-strip-open-calendar:hover{border-color:var(--rule-strong)}.week-strip-range{color:var(--ink-tertiary);text-align:center}.week-strip-actions{display:flex;justify-content:center}.week-strip-back-today{background:color-mix(in srgb,var(--bg-canvas) 78%,var(--accent-soft) 22%);border:1px solid var(--rule);border-radius:999px;color:var(--ink-primary);cursor:pointer;font:inherit;font-size:.72rem;letter-spacing:.08em;padding:.45rem .8rem;text-transform:uppercase}.week-strip-back-today:hover{border-color:var(--rule-strong)}.week-strip-days{display:grid;gap:.35rem;grid-template-columns:repeat(7,minmax(0,1fr));outline:none}.week-strip-day{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.85rem;color:var(--ink-primary);cursor:pointer;display:flex;flex-direction:column;gap:.25rem;min-height:3.5rem;padding:.45rem .2rem .4rem;position:relative;transition:background-color var(--dur-sm) var(--ease),border-color var(--dur-sm) var(--ease),transform var(--dur-sm) var(--ease)}.week-strip-day:hover{border-color:var(--rule-strong);transform:translateY(-1px)}.week-strip-weekday{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase}.week-strip-number{font-family:var(--font-display);font-size:1.1rem;font-weight:500;letter-spacing:-.02em;line-height:1}.week-strip-markers{display:inline-flex;gap:.18rem;min-height:.35rem}.week-strip-marker{border-radius:999px;display:inline-block;height:.35rem;width:.35rem}.week-strip-marker.period{background:var(--flow)}.week-strip-marker.predicted{background:transparent;border:1px dashed var(--flow)}.week-strip-marker.ovulation{background:var(--sage)}.week-strip-day.today{border-color:var(--ink-primary);box-shadow:inset 0 0 0 1px var(--ink-primary)}.week-strip-day.selected{background:var(--bg-elevated);border-color:var(--accent);box-shadow:0 8px 18px var(--accent-ring)}.week-strip-day.period{background:var(--flow-soft);border-color:var(--flow)}.week-strip-day.predicted{border-color:var(--flow);border-style:dashed}.week-strip-day.ovulation{background:var(--sage-soft);border-color:var(--sage)}.day-summary{display:flex;flex-direction:column;gap:.85rem}.day-summary-grid{display:grid;gap:.6rem;grid-template-columns:minmax(0,1fr)}.day-summary-tile{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.85rem;display:flex;flex-direction:column;gap:.35rem;min-width:0;padding:.7rem .65rem}.day-summary-label{color:var(--ink-tertiary);font-family:var(--font-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase}.day-summary-value{color:var(--ink-primary);font-family:var(--font-display);font-size:1rem;font-weight:500;letter-spacing:-.01em;line-height:1.2}.day-summary-value.phase-pill{align-self:flex-start;background:var(--bg-elevated);border:1px solid var(--rule);border-radius:999px;display:inline-flex;font-family:var(--font-sans);font-size:.76rem;font-weight:500;justify-content:flex-start;letter-spacing:.02em;max-width:100%;overflow-wrap:anywhere;padding:.25rem .6rem;white-space:normal}.probability-pill{align-self:flex-start;background:var(--bg-elevated);border:1px solid var(--rule);border-radius:999px;display:inline-flex;font-family:var(--font-sans);font-size:.76rem;max-width:100%;overflow-wrap:anywhere;padding:.25rem .6rem;white-space:normal}.probability-pill.low{color:var(--ink-secondary)}.probability-pill.moderate{background:var(--sand-soft);border-color:var(--sand);color:var(--sand-ink)}.probability-pill.peak{background:var(--sage-soft);border-color:var(--sage);color:var(--sage-ink)}.day-summary-action{display:flex;flex-direction:column;gap:.5rem}.calendar-controls{display:grid;gap:.75rem;margin-bottom:.8rem}.calendar-controls-top{align-items:center;display:flex;gap:.75rem;justify-content:space-between}.calendar-back-today{align-items:center;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;color:var(--ink-primary);cursor:pointer;display:inline-flex;flex:0 1 auto;font-family:var(--font-mono);font-size:.72rem;font-weight:500;justify-content:center;letter-spacing:.12em;min-width:0;padding:.55rem 1.15rem;text-align:center;text-transform:uppercase;white-space:normal}.calendar-back-today:hover{border-color:var(--rule-strong)}.segmented{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:999px;display:inline-flex;padding:.2rem}.segmented-item{background:transparent;border:0;border-radius:999px;color:var(--ink-secondary);cursor:pointer;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;padding:.35rem .9rem;text-transform:uppercase}.segmented-item.active{background:var(--ink-primary);color:var(--ink-inverse)}.calendar-nav{align-items:center;display:inline-flex;gap:.6rem;justify-content:center}.calendar-range{font-family:var(--font-display);font-size:1.05rem;font-weight:500;letter-spacing:-.01em;min-width:8ch;text-align:center}.calendar-bulk{align-items:center;display:inline-flex;gap:.5rem}.calendar-grid-head{color:var(--ink-tertiary);display:grid;font-family:var(--font-mono);font-size:.64rem;gap:.35rem;grid-template-columns:repeat(7,minmax(0,1fr));letter-spacing:.12em;margin:.4rem 0;text-align:center;text-transform:uppercase}.calendar-cell{aspect-ratio:1 / 1;background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.7rem;color:var(--ink-primary);cursor:pointer;display:flex;font-family:var(--font-display);font-size:.95rem;font-weight:500;padding:.35rem .45rem;position:relative;transition:background-color var(--dur-sm) var(--ease),border-color var(--dur-sm) var(--ease)}.calendar-cell:hover{border-color:var(--rule-strong)}.calendar-cell.out-of-month{color:var(--ink-quaternary);opacity:.55}.calendar-cell.today{border-color:var(--ink-primary);box-shadow:inset 0 0 0 1px var(--ink-primary)}.calendar-cell.period{background:var(--flow-soft);border-color:var(--flow)}.calendar-cell.predicted{border-color:var(--flow);border-style:dashed}.calendar-cell.ovulation{background:var(--sage-soft);border-color:var(--sage)}.calendar-cell.future{color:var(--ink-quaternary)}.calendar-cell.bulk-toggled{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 6px 14px var(--accent-ring)}.calendar-cell:disabled{cursor:not-allowed;opacity:.5}.legend-dot.period{background:var(--flow)}.legend-dot.ovulation{background:var(--sage)}.year-grid{display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.mini-month{background:var(--bg-canvas);border:1px solid var(--rule);border-radius:.85rem;cursor:pointer;display:flex;flex-direction:column;gap:.4rem;padding:.6rem .55rem .55rem}.mini-month:hover{border-color:var(--rule-strong)}.mini-month-title{color:var(--ink-secondary);font-family:var(--font-mono);font-size:.6rem;letter-spacing:.12em;text-align:center;text-transform:uppercase}.mini-month-grid{display:grid;gap:1px;grid-template-columns:repeat(7,minmax(0,1fr))}.mini-day{aspect-ratio:1 / 1;background:var(--bg-sunken);border-radius:2px;color:var(--ink-secondary);display:inline-flex;font-family:var(--font-mono);font-size:.44rem;justify-content:center;align-items:center;line-height:1}.mini-day.out-of-month{opacity:.3}.mini-day.today{outline:1.5px solid var(--ink-primary)}.mini-day.period{background:var(--flow);color:var(--flow-ink)}.mini-day.predicted{background:var(--flow-soft)}.mini-day.ovulation{background:var(--sage);color:var(--sage-ink)}@media(max-width:480px){.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-summary-tile{padding:.55rem .5rem}.day-summary-value{font-size:.92rem}}
