:root{--density: 1.35;--font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", system-ui, sans-serif;--font-size: 16px;--lh: var(--density);--text-rgb: 34, 34, 34;--text-secondary-rgb: 142, 142, 147;--bg-rgb: 255, 255, 255;--surface-rgb: 242, 242, 247;--border-rgb: 200, 200, 204;--period-rgb: 255, 107, 138;--predicted-rgb: 240, 175, 192;--today-rgb: 62, 130, 210;--danger-rgb: 220, 50, 40;--fertile-rgb: 123, 198, 126;--ovulation-rgb: 76, 175, 80;--color-text: rgb(var(--text-rgb));--color-text-secondary: rgb(var(--text-secondary-rgb));--color-bg: rgb(var(--bg-rgb));--color-surface: rgb(var(--surface-rgb));--color-border: rgba(var(--text-rgb), .1);--color-divider: rgba(var(--text-rgb), .06);--color-period: rgb(var(--period-rgb));--color-predicted: rgba(var(--period-rgb), .15);--color-today: rgb(var(--today-rgb));--color-fertile: rgb(var(--fertile-rgb));--color-ovulation: rgb(var(--ovulation-rgb));--sp-xs: calc(var(--density) * .25em);--sp-s: calc(var(--density) * .5em);--sp-m: calc(var(--density) * .75em);--sp-l: calc(var(--density) * 1.25em);--sp-xl: calc(var(--density) * 2em);--sp-xxl: calc(var(--density) * 3em);--content-max: 430px;--content-padding: calc(var(--density) * 1.2em);--safe-bottom: env(safe-area-inset-bottom, 0px);--radius-s: .5em;--radius-m: .85em;--radius-l: 1.2em}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:var(--font-body);font-size:var(--font-size);line-height:var(--lh);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern" 1,"liga" 1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button{font-family:inherit;font-size:inherit;line-height:inherit;border:none;cursor:pointer;background:none;color:inherit}button:focus-visible,input:focus-visible{outline:1.5px solid var(--color-today);outline-offset:2px;border-radius:4px}.app{display:flex;flex-direction:column;height:100%;max-width:var(--content-max);margin:0 auto;position:relative;background:var(--color-bg)}.app.loading-screen{align-items:center;justify-content:center}.loading-text{color:var(--color-text-secondary);font-size:.9375em;letter-spacing:.02em}.app-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-m) var(--content-padding);padding-top:max(var(--sp-m),env(safe-area-inset-top));border-bottom:1px solid var(--color-divider);background:var(--color-bg);z-index:10}.app-header h1{font-size:1.375em;font-weight:700;letter-spacing:-.02em}.app-header .settings-btn{padding:var(--sp-xs);color:rgba(var(--text-rgb),.35);transition:color .5s ease}.app-header .settings-btn:hover{color:rgba(var(--text-rgb),.7);transition:color 0s}.app-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.tab-bar{display:flex;border-top:1px solid var(--color-divider);background:var(--color-bg);padding-bottom:var(--safe-bottom)}.tab-bar button{flex:1;padding:10px 0 6px;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:.625em;font-weight:500;letter-spacing:.03em;color:rgba(var(--text-rgb),.3);transition:color .5s ease}.tab-bar button:hover{transition:color 0s}.tab-bar button.active{color:var(--color-period)}.tab-bar button svg{width:22px;height:22px;stroke-width:1.6}.sheet-overlay{position:fixed;inset:0;background:#0003;z-index:100;display:flex;align-items:flex-end;justify-content:center;touch-action:none;overscroll-behavior:contain;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sheet{background:var(--color-bg);border-radius:var(--radius-l) var(--radius-l) 0 0;width:100%;max-width:var(--content-max);padding:var(--content-padding);padding-bottom:calc(var(--content-padding) + var(--safe-bottom));animation:slideUp .3s cubic-bezier(.32,.72,0,1);touch-action:auto}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-handle{width:36px;height:4px;background:rgba(var(--text-rgb),.12);border-radius:2px;margin:0 auto var(--sp-l)}.sheet h2{font-size:1.125em;font-weight:600;letter-spacing:-.01em;margin-bottom:var(--sp-m)}.sheet-description{color:var(--color-text-secondary);margin-bottom:var(--sp-l);font-size:.9375em;line-height:1.45}.sheet-error{background:rgba(var(--danger-rgb),.06);color:rgb(var(--danger-rgb));padding:var(--sp-s) var(--sp-m);border-radius:var(--radius-s);font-size:.875em;margin-bottom:var(--sp-m);line-height:1.4}.sheet-actions{display:flex;flex-direction:column;gap:calc(var(--density) * .4em);margin-top:var(--sp-l)}.btn-primary{background:var(--color-period);color:#fff;font-size:1em;font-weight:600;padding:.9em 1.5em;border-radius:var(--radius-m);width:100%;letter-spacing:-.005em;transition:transform .5s ease,opacity .5s ease}.btn-primary:hover{transition:transform 0s,opacity 0s}.btn-primary:active{transform:scale(.98);opacity:.85}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:rgba(var(--text-rgb),.04);color:var(--color-text);font-size:1em;font-weight:500;padding:.9em 1.5em;border-radius:var(--radius-m);width:100%;transition:background .5s ease}.btn-secondary:hover{background:rgba(var(--text-rgb),.08);transition:background 0s}.btn-danger{background:none;color:rgb(var(--danger-rgb));font-size:1em;font-weight:500;padding:.9em 1.5em;border-radius:var(--radius-m);width:100%}.field{margin-bottom:var(--sp-m)}.field label{display:block;font-size:.8125em;font-weight:500;color:var(--color-text-secondary);margin-bottom:calc(var(--density) * .3em);letter-spacing:.01em}.field input[type=date]{width:100%;padding:var(--sp-s) var(--sp-m);border:1px solid var(--color-border);border-radius:var(--radius-s);font-size:1em;font-family:inherit;color:var(--color-text);background:rgba(var(--surface-rgb),.5);-webkit-appearance:none;transition:border-color .5s ease}.field input[type=date]:focus{border-color:rgba(var(--today-rgb),.5);transition:border-color 0s}.checkbox-label{display:flex!important;align-items:center;gap:var(--sp-s);cursor:pointer}.checkbox-label input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-period)}.checkbox-label span{font-size:1em;color:var(--color-text)}.cycle-status{text-align:center;padding:var(--sp-xl) var(--content-padding) var(--sp-s)}.cycle-day{font-size:1.5em;font-weight:600;letter-spacing:-.02em;margin-bottom:.15em}.cycle-sub{font-size:.9375em;color:var(--color-text-secondary);line-height:1.4}.cycle-stats{font-size:.75em;color:rgba(var(--text-secondary-rgb),.7);margin-top:var(--sp-s);letter-spacing:.02em}.calendar{padding:0 var(--content-padding)}.calendar-nav{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-s) 0}.calendar-nav button{padding:var(--sp-xs);color:rgba(var(--text-rgb),.3);transition:color .5s ease}.calendar-nav button:hover{color:var(--color-text);transition:color 0s}.calendar-title{font-size:1.0625em;font-weight:600;letter-spacing:-.01em}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;padding-bottom:var(--sp-xs)}.weekday{font-size:.6875em;font-weight:500;color:rgba(var(--text-rgb),.25);letter-spacing:.04em;text-transform:uppercase}.calendar-grid{display:flex;flex-direction:column;gap:1px}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.9375em;font-weight:400;border-radius:50%;position:relative;color:var(--color-text);transition:background .5s ease,color .5s ease}.calendar-day.other-month{color:rgba(var(--text-rgb),.12)}.calendar-day.today{font-weight:600;color:var(--color-today)}.calendar-day.today:after{content:"";position:absolute;bottom:3px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--color-today)}.calendar-day.period{background:rgba(var(--period-rgb),.55);color:#fff;font-weight:500}.calendar-day.predicted{background:var(--color-predicted)}.calendar-day.predicted-period{color:rgb(var(--period-rgb));font-weight:500;position:relative}.calendar-day.predicted-period:after{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px dashed rgba(var(--period-rgb),.5);pointer-events:none}.calendar-day.fertile{background:rgba(var(--fertile-rgb),.15);color:var(--color-fertile)}.calendar-day.ovulation{background:rgba(var(--ovulation-rgb),.2);color:var(--color-ovulation);font-weight:600}.calendar-day.predicted-fertile{color:var(--color-fertile);position:relative}.calendar-day.predicted-fertile:after{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px dashed rgba(var(--fertile-rgb),.35);pointer-events:none}.calendar-day.predicted-ovulation{color:var(--color-ovulation);font-weight:600;position:relative}.calendar-day.predicted-ovulation:after{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px dashed rgba(var(--ovulation-rgb),.4);pointer-events:none}.calendar-day.today.period:after{background:#fffc}.calendar-day.today.predicted:after{background:var(--color-today)}.log-period-wrap{padding:var(--sp-l) var(--content-padding)}.log-period-btn{font-size:1em}.log-period-btn.ongoing{background:rgba(var(--text-rgb),.85)}.history{padding-bottom:var(--sp-xl)}.history-summary{display:flex;padding:var(--sp-l) var(--content-padding);border-bottom:1px solid var(--color-divider)}.summary-item{flex:1;text-align:center}.summary-value{display:block;font-size:1.375em;font-weight:600;letter-spacing:-.02em}.summary-label{font-size:.6875em;color:var(--color-text-secondary);letter-spacing:.03em;text-transform:uppercase;margin-top:.1em}.history-group{padding:0 var(--content-padding)}.history-year{font-size:.75em;font-weight:600;color:rgba(var(--text-rgb),.25);letter-spacing:.06em;text-transform:uppercase;padding:var(--sp-l) 0 var(--sp-xs);position:sticky;top:0;background:var(--color-bg);z-index:1}.history-row{padding:var(--sp-m) 0;border-bottom:1px solid var(--color-divider)}.history-row:last-child{border-bottom:none}.history-dates{font-size:1em;font-weight:500;letter-spacing:-.005em;margin-bottom:.1em}.history-meta{font-size:.8125em;color:var(--color-text-secondary);letter-spacing:.01em}.history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-xxl) var(--content-padding);text-align:center}.history-empty-title{font-size:1.125em;font-weight:600;margin-bottom:.3em;letter-spacing:-.01em}.history-empty-sub{font-size:.9375em;color:var(--color-text-secondary);line-height:1.45;max-width:280px}.settings-screen{height:100%;display:flex;flex-direction:column;background:var(--color-bg)}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-m) var(--content-padding);border-bottom:1px solid var(--color-divider)}.settings-header h2{font-size:1.0625em;font-weight:600;letter-spacing:-.01em}.settings-header-spacer{width:60px}.settings-back{display:flex;align-items:center;gap:2px;font-size:1em;color:var(--color-period);padding:var(--sp-xs);transition:opacity .5s ease}.settings-back:hover{opacity:.7;transition:opacity 0s}.settings-content{flex:1;overflow-y:auto;padding-top:var(--sp-l)}.settings-section{margin-bottom:var(--sp-xl)}.section-title{font-size:.6875em;font-weight:600;color:rgba(var(--text-rgb),.3);text-transform:uppercase;letter-spacing:.08em;padding:0 var(--content-padding) var(--sp-s)}.settings-row{display:block;width:100%;text-align:left;padding:var(--sp-m) var(--content-padding);font-size:1em;border-bottom:1px solid var(--color-divider);transition:background .5s ease}.settings-row:first-of-type{border-top:1px solid var(--color-divider)}.settings-row:hover{background:rgba(var(--text-rgb),.02);transition:background 0s}.settings-row.danger{color:rgb(var(--danger-rgb))}.settings-about{padding:var(--sp-m) var(--content-padding);font-size:.875em;line-height:1.55;color:var(--color-text-secondary)}.settings-disclaimer{padding:var(--sp-s) var(--content-padding);font-size:.8em;line-height:1.5;color:var(--color-text-secondary);opacity:.7}.privacy-intro{padding:0 var(--content-padding);font-size:.9375em;line-height:1.55;color:var(--color-text-secondary);margin-bottom:var(--sp-m)}.privacy-section{padding:0 var(--content-padding);margin-bottom:var(--sp-l)}.privacy-section h3{font-size:.9375em;font-weight:600;margin:0 0 var(--sp-xs) 0;color:var(--color-text)}.privacy-section p{font-size:.875em;line-height:1.55;color:var(--color-text-secondary);margin:0}.settings-message{text-align:center;padding:var(--sp-m);margin:0 var(--content-padding);background:rgba(var(--surface-rgb),.6);border-radius:var(--radius-s);font-size:.875em;color:var(--color-text-secondary);line-height:1.4}.sync-status-row{display:flex;align-items:center;gap:var(--sp-s);padding:var(--sp-m) var(--content-padding);border-top:1px solid var(--color-divider);border-bottom:1px solid var(--color-divider)}.sync-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sync-dot.idle{background:rgb(var(--text-secondary-rgb))}.sync-dot.syncing{background:rgb(var(--today-rgb));animation:sync-pulse 1.2s ease-in-out infinite}.sync-dot.success{background:rgb(var(--fertile-rgb))}.sync-dot.error{background:rgb(var(--danger-rgb))}@keyframes sync-pulse{0%,to{opacity:1}50%{opacity:.3}}.sync-status-text{font-size:.875em;color:var(--color-text-secondary)}.picker-overlay{position:fixed;inset:0;background:var(--color-bg);z-index:100;display:flex;flex-direction:column;max-width:var(--content-max);margin:0 auto}.picker{display:flex;flex-direction:column;height:100%}.picker-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-m) var(--content-padding);border-bottom:1px solid var(--color-divider);flex-shrink:0}.picker-header h2{font-size:1.0625em;font-weight:600;letter-spacing:-.01em}.picker-cancel,.picker-save{font-size:1em;font-weight:500;padding:var(--sp-xs) var(--sp-s)}.picker-cancel{color:var(--color-text-secondary)}.picker-save{color:var(--color-period);font-weight:600}.picker-save:disabled{opacity:.3;cursor:not-allowed}.picker-selection-info{text-align:center;padding:var(--sp-s) var(--content-padding);font-size:.9375em;font-weight:500;color:var(--color-period);border-bottom:1px solid var(--color-divider);flex-shrink:0}.picker-error{text-align:center;padding:var(--sp-xs) var(--content-padding);font-size:.875em;color:var(--color-period);flex-shrink:0}.picker-months{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.picker-month{padding:var(--sp-m) var(--content-padding) var(--sp-s)}.picker-month-title{font-size:1em;font-weight:600;letter-spacing:-.01em;margin-bottom:var(--sp-s)}.picker-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:var(--sp-xs)}.picker-grid{display:flex;flex-direction:column;gap:2px}.picker-week{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.picker-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:.9375em;border-radius:50%;position:relative;color:var(--color-text);background:none;min-height:40px;min-width:40px;transition:background .15s ease,color .15s ease}.picker-day.other-month{visibility:hidden}.picker-day.future{color:rgba(var(--text-rgb),.12);cursor:default}.picker-day.today{font-weight:600;color:var(--color-today)}.picker-day.selected{background:var(--color-period);color:#fff;font-weight:500}.picker-day.range-start,.picker-day.range-end{background:var(--color-period);color:#fff;font-weight:600}.picker-day.existing-period{background:rgba(var(--period-rgb),.12);color:var(--color-period)}.picker-day.predicted{border:1.5px dashed rgba(var(--period-rgb),.35)}.picker-day:not(:disabled):not(.future):not(.other-month):hover{background:rgba(var(--text-rgb),.05)}.picker-day.selected:hover{background:var(--color-period)}.history-view{padding-bottom:var(--sp-xl)}.history-mode-toggle{display:flex;gap:2px;padding:var(--sp-m) var(--content-padding);background:var(--color-bg);position:sticky;top:0;z-index:5}.mode-btn{flex:1;padding:.5em 1em;font-size:.875em;font-weight:500;border-radius:var(--radius-s);background:rgba(var(--text-rgb),.04);color:var(--color-text-secondary);transition:background .15s ease,color .15s ease}.mode-btn.active{background:rgba(var(--period-rgb),.1);color:var(--color-period);font-weight:600}.cycle-history{padding:0 var(--content-padding)}.cycle-history-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-xxl) var(--content-padding);text-align:center}.filter-pills{display:flex;gap:var(--sp-xs);padding:var(--sp-s) 0}.filter-pill{padding:.35em .85em;font-size:.8125em;font-weight:500;border-radius:1em;background:rgba(var(--text-rgb),.04);color:var(--color-text-secondary);transition:background .15s ease,color .15s ease}.filter-pill.active{background:rgba(var(--period-rgb),.1);color:var(--color-period);font-weight:600}.dotbar-legend{display:flex;gap:var(--sp-m);padding:var(--sp-xs) 0 var(--sp-m);font-size:.75em;color:var(--color-text-secondary)}.legend-item{display:flex;align-items:center;gap:4px}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-dot.period{background:var(--color-period)}.legend-dot.fertile{background:#46b4a0b3}.legend-dot.ovulation{background:#288c78}.cycle-year-group{margin-bottom:var(--sp-l)}.cycle-year-header{font-size:.75em;font-weight:600;color:rgba(var(--text-rgb),.25);letter-spacing:.06em;text-transform:uppercase;padding:var(--sp-m) 0 var(--sp-xs)}.cycle-item{padding:var(--sp-s) 0;border-bottom:1px solid var(--color-divider)}.cycle-item:last-child{border-bottom:none}.cycle-item-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-xs)}.cycle-item-length{font-size:.9375em;font-weight:600;letter-spacing:-.01em}.cycle-item-dates{font-size:.8125em;color:var(--color-text-secondary)}.dotbar{display:flex;gap:2px;flex-wrap:wrap;padding:2px 0}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-period{background:var(--color-period)}.dot-fertile{background:#46b4a08c}.dot-ovulation{background:#288c78}.dot-luteal{background:rgba(var(--text-rgb),.08)}.dynamics-chart{padding:var(--sp-m) var(--content-padding);margin-bottom:var(--sp-s)}.dynamics-header{margin-bottom:var(--sp-xs)}.dynamics-title{font-size:1em;font-weight:600;letter-spacing:-.01em}.dynamics-note{font-size:.8125em;color:var(--color-text-secondary);margin-bottom:var(--sp-s)}.dynamics-svg{width:100%;height:auto;display:block}.range-band{fill:rgba(var(--surface-rgb),.8)}.gridline{stroke:rgba(var(--text-rgb),.06);stroke-width:.5;stroke-dasharray:2 3}.data-line{fill:none;stroke:var(--color-period);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.data-point{fill:var(--color-period)}.data-value{font-size:9px;fill:var(--color-text);text-anchor:middle;font-weight:600}.axis-label{font-size:8px;fill:rgba(var(--text-rgb),.3)}.y-label{text-anchor:end}.x-label{text-anchor:middle}.dynamics-legend{display:flex;align-items:center;gap:6px;font-size:.75em;color:var(--color-text-secondary);padding-top:var(--sp-xs)}.legend-band-icon{width:12px;height:8px;background:rgba(var(--surface-rgb),.8);border-radius:2px;display:inline-block}.year-view{padding:0 var(--content-padding)}.year-nav{display:flex;align-items:center;justify-content:center;gap:var(--sp-l);padding:var(--sp-s) 0}.year-nav button{padding:var(--sp-xs);color:rgba(var(--text-rgb),.3);transition:color .5s ease}.year-nav button:hover{color:var(--color-text);transition:color 0s}.year-label{font-size:1.125em;font-weight:600;letter-spacing:-.02em}.year-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-m);padding:var(--sp-s) 0 var(--sp-xl)}.mini-calendar{padding:var(--sp-xs);border-radius:var(--radius-s);transition:background .5s ease;text-align:center;cursor:pointer}.mini-calendar:hover{background:rgba(var(--text-rgb),.03);transition:background 0s}.mini-month-name{font-size:.7em;font-weight:700;letter-spacing:.02em;margin-bottom:3px;color:var(--color-text)}.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0}.mini-day{display:flex;align-items:center;justify-content:center;font-size:.5em;line-height:1;padding:1.5px 0;color:rgba(var(--text-rgb),.7)}.mini-day.other{visibility:hidden}.mini-day.period{color:#fff;background:var(--color-period);border-radius:50%;aspect-ratio:1}.mini-day.predicted{color:var(--color-period);background:rgba(var(--period-rgb),.15);border-radius:50%;aspect-ratio:1}.mini-day.fertile{color:#46b4a0}.mini-day.ovulation{color:#46b4a0;font-weight:700}.phase-status{text-align:center;padding:var(--sp-xl) var(--content-padding) var(--sp-m)}.phase-status.dimmed{opacity:.4}.phase-name{font-size:1.125em;font-weight:600;letter-spacing:-.01em;margin-bottom:.15em;color:var(--color-text)}.phase-name.menstrual,.phase-name.premenstrual{color:var(--color-period)}.phase-name.ovulation{color:var(--color-ovulation)}.phase-detail{font-size:.9375em;color:var(--color-text-secondary);line-height:1.4}.phase-detail .separator{margin:0 .15em;color:rgba(var(--text-secondary-rgb),.4)}.lang-switcher{display:flex;align-items:center;gap:.3em;font-size:.8125em;font-weight:500;margin-left:var(--sp-s)}.lang-switcher span{cursor:pointer;color:rgba(var(--text-rgb),.25);transition:color .5s ease}.lang-switcher span.active{color:var(--color-text);font-weight:600}.lang-switcher span:hover:not(.active){color:rgba(var(--text-rgb),.5);transition:color 0s}.lang-divider{cursor:default!important;color:rgba(var(--text-rgb),.12)!important}.header-left{display:flex;align-items:center}.header-date{font-size:.875em;font-weight:500;color:var(--color-text-secondary);letter-spacing:-.005em}.calendar-icon-btn{padding:var(--sp-xs);color:rgba(var(--text-rgb),.35);transition:color .5s ease}.calendar-icon-btn:hover{color:var(--color-text);transition:color 0s}.home-calendar{padding:0 var(--content-padding)}.log-period-btn{display:block;width:calc(100% - 2 * var(--content-padding));margin:var(--sp-l) var(--content-padding);background:var(--color-period);color:#fff;font-size:1em;font-weight:600;padding:.9em 1.5em;border-radius:var(--radius-m);text-align:center;border:none;cursor:pointer;transition:transform .5s ease,opacity .5s ease}.log-period-btn:active{transform:scale(.98);opacity:.85}.section-divider{height:1px;background:var(--color-divider);margin:var(--sp-m) var(--content-padding)}.section-title-link{display:flex;align-items:center;gap:4px;padding:var(--sp-m) var(--content-padding) var(--sp-s);font-size:1em;font-weight:600;letter-spacing:-.01em;color:var(--color-text);cursor:pointer;background:none;border:none;width:100%;text-align:left}.section-title-link svg{color:rgba(var(--text-rgb),.3);flex-shrink:0}.fluctuation-section{padding:var(--sp-m) var(--content-padding)}.fluctuation-title{font-size:1em;font-weight:600;letter-spacing:-.01em;margin-bottom:var(--sp-s)}.fluctuation-rows{display:flex;flex-direction:column;gap:var(--sp-xs)}.fluctuation-row{font-size:.875em;color:var(--color-text-secondary);line-height:1.4}.onboarding-card{padding:var(--sp-xl) var(--content-padding);text-align:center}.onboarding-title{font-size:1.25em;font-weight:600;letter-spacing:-.02em;margin-bottom:var(--sp-xs)}.onboarding-subtitle{font-size:.9375em;color:var(--color-text-secondary);margin-bottom:var(--sp-l);line-height:1.4}.onboarding-lang-picker{display:flex;gap:var(--sp-xs);justify-content:center;margin-bottom:var(--sp-l)}.onboarding-lang-btn{padding:.4em 1em;font-size:.875em;font-weight:500;border-radius:var(--radius-s);background:rgba(var(--text-rgb),.04);color:var(--color-text-secondary);border:none;cursor:pointer;transition:background .15s ease,color .15s ease}.onboarding-lang-btn.active{background:rgba(var(--period-rgb),.1);color:var(--color-period);font-weight:600}.onboarding-buttons{display:flex;flex-direction:column;gap:calc(var(--density) * .4em)}.onboarding-privacy{font-size:.75em;color:rgba(var(--text-secondary-rgb),.6);margin-top:var(--sp-l);line-height:1.5;display:flex;align-items:center;justify-content:center;gap:4px}.onboarding-privacy svg{flex-shrink:0;opacity:.5}.import-error{color:var(--color-period);font-size:.85rem;text-align:center;padding:.5rem 1rem}.scroll-calendar-overlay{position:fixed;inset:0;background:var(--color-bg);z-index:100;display:flex;flex-direction:column;max-width:var(--content-max);margin:0 auto}.scroll-calendar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-m) var(--content-padding);padding-top:max(var(--sp-m),env(safe-area-inset-top));border-bottom:1px solid var(--color-divider);background:var(--color-bg);z-index:10;flex-shrink:0}.scroll-close-btn{padding:var(--sp-xs);color:rgba(var(--text-rgb),.4);transition:color .5s ease}.scroll-close-btn:hover{color:var(--color-text);transition:color 0s}.scroll-view-toggle{display:flex;gap:2px;background:rgba(var(--text-rgb),.04);border-radius:var(--radius-s);padding:2px}.scroll-view-toggle button{padding:.35em .85em;font-size:.8125em;font-weight:500;border-radius:calc(var(--radius-s) - 2px);color:var(--color-text-secondary);transition:background .15s ease,color .15s ease}.scroll-view-toggle button.active{background:var(--color-bg);color:var(--color-text);font-weight:600;box-shadow:0 1px 3px #00000014}.scroll-header-spacer{width:36px}.scroll-today-btn{font-size:.875em;font-weight:500;color:var(--color-period);padding:var(--sp-xs) var(--sp-s)}.scroll-edit-title{font-size:1.0625em;font-weight:600;letter-spacing:-.01em}.scroll-edit-instruction{text-align:center;font-size:.8125em;color:var(--color-text-secondary);padding:var(--sp-xs) var(--content-padding);border-bottom:1px solid var(--color-divider);flex-shrink:0}.scroll-weekday-row{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;padding:var(--sp-s) var(--content-padding) var(--sp-xs);border-bottom:1px solid var(--color-divider);background:var(--color-bg);flex-shrink:0}.scroll-calendar-months{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding:0 var(--content-padding)}.scroll-calendar-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.scroll-month-block{padding:var(--sp-m) 0 var(--sp-s)}.scroll-month-title{font-size:1em;font-weight:600;letter-spacing:-.01em;margin-bottom:var(--sp-s)}.edit-day{cursor:pointer;position:relative}.edit-day:before{content:"";position:absolute;inset:3px;border-radius:50%;border:1.5px solid rgba(var(--text-rgb),.12)}.edit-day.selected{background:rgba(var(--period-rgb),.85);color:#fff;font-weight:500}.edit-day.selected:before{border-color:transparent}.edit-day.future-disabled{color:rgba(var(--text-rgb),.12);cursor:default}.edit-day.future-disabled:before{border-color:rgba(var(--text-rgb),.06)}.edit-day.other-month:before{border-color:transparent}.edit-day.predicted-period:before{border:1.5px dashed rgba(var(--period-rgb),.35)}.today-label-text{position:absolute;top:-1px;font-size:.5em;font-weight:700;color:var(--color-today);letter-spacing:.06em;text-transform:uppercase}.check-overlay{position:absolute;bottom:3px}.scroll-edit-footer{display:flex;gap:var(--sp-s);padding:var(--sp-m) var(--content-padding);padding-bottom:calc(var(--sp-m) + var(--safe-bottom));border-top:1px solid var(--color-divider);background:var(--color-bg);flex-shrink:0}.scroll-edit-footer .btn-secondary,.scroll-edit-footer .btn-primary{flex:1}.save-message{flex:1;text-align:center;font-size:1em;font-weight:600;color:var(--color-period);padding:.9em 0}.scroll-edit-fab{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 1rem);left:50%;transform:translate(-50%);background:var(--color-period);color:#fff;font-size:.875em;font-weight:600;padding:.75em 1.5em;border-radius:2em;border:none;cursor:pointer;box-shadow:0 2px 12px rgba(var(--period-rgb),.35);z-index:20;transition:transform .5s ease,opacity .5s ease}.scroll-edit-fab:active{transform:translate(-50%) scale(.96);opacity:.9}@media(min-width:768px){:root{--content-padding: calc(var(--density) * 1.8em)}}
