:root{--bg:#fbf7f5;--card:#fff;--ink:#3f3a44;--muted:#8d8693;--line:#ece4e6;--accent:#d9839a;--accent-ink:#fff;--accent-soft:#fbe6ec;--period:#d9506f;--sensitive:#f6dce4;--radius:18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#1f1b22;--card:#2a2530;--ink:#eee8ef;--muted:#a59dab;--line:#3b3441;--accent:#e094a8;--accent-ink:#2a1a20;--accent-soft:#4a2f3a;--period:#ff7b97;--sensitive:#4b3040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}button:disabled{opacity:.4;cursor:default}input,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;width:100%;padding:12px 14px;font-size:16px}h2{margin:24px 0 10px;font-size:1rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.875rem}.center{text-align:center}.error{color:var(--period)}.app{flex-direction:column;height:100%;display:flex}.screen{padding:16px 16px 24px;padding-top:max(16px, env(safe-area-inset-top));flex:1;width:100%;max-width:520px;margin:0 auto;overflow-y:auto}.tabbar{background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex}.tabbar button{color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 0 8px;font-size:.75rem;display:flex}.tabbar button.active{color:var(--accent);font-weight:600}.tab-icon{height:24px;display:block}.center-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:100%;padding:24px;display:flex}.login h1{margin:12px 0 0;font-size:1.6rem}.login .big-btn{max-width:320px;margin-top:32px}.logo-dot{background:linear-gradient(135deg,#7f8fa9,#c4b6d2,#f4a49c);border-radius:50%;width:72px;height:72px}.card{background:var(--card);border-radius:var(--radius);border:1px solid var(--line);padding:18px}.big-btn{background:var(--accent);width:100%;min-height:60px;color:var(--accent-ink);border-radius:30px;font-size:1.15rem;font-weight:600;box-shadow:0 6px 18px #d9839a4d}.small-btn{background:var(--accent-soft);color:var(--ink);border-radius:20px;padding:8px 16px;font-size:.9rem}.text-btn{color:var(--muted);padding:8px 4px}.text-btn.danger{color:var(--period);margin-top:28px}.home{flex-direction:column;gap:14px;min-height:100%;display:flex}.date-line{margin:4px 0 0}.status p{margin:8px 0 0}.big-number{font-size:1.3rem}.big-number strong{color:var(--accent);margin:0 4px;font-size:3rem}.hint{background:var(--accent-soft);border-color:#0000;line-height:1.6}.hint.sensitive{background:var(--sensitive)}.record-btn{margin-top:auto}.today-entry{cursor:pointer;align-items:center;gap:14px;display:flex}.today-entry>div{flex-direction:column;gap:4px;display:flex}.score-dot{color:#3f3a44;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-weight:700;display:grid}.score-dot.inline{width:28px;height:28px;margin-right:8px;font-size:.85rem;display:inline-grid}.record{flex-direction:column;max-width:520px;height:100%;margin:0 auto;display:flex}.record-head{padding:8px 12px;padding-top:max(8px, env(safe-area-inset-top));border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.head-spacer{width:40px}.date-switch{align-items:center;gap:4px;font-weight:600;display:flex}.date-switch button{width:44px;height:44px;color:var(--accent);font-size:1.6rem}.record-body{flex:1;padding:0 16px 24px;overflow-y:auto}.record-foot{padding:12px 16px;padding-bottom:max(12px, env(safe-area-inset-bottom));border-top:1px solid var(--line)}.score-grid{grid-template-columns:repeat(5,1fr);gap:10px;display:grid}.score-btn{aspect-ratio:1;color:#3f3a44;border:3px solid #0000;border-radius:16px;font-size:1.2rem;font-weight:700;transition:transform .1s}.score-btn.selected{border-color:var(--ink);transform:scale(1.08)}.score-word{min-height:1.2em;margin:10px 0 0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--card);border:1px solid var(--line);border-radius:22px;min-height:44px;padding:10px 16px}.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.add-word{gap:8px;margin-top:10px;display:flex}.add-word input{padding:8px 12px}.add-word .small-btn{flex:none}.toggle{background:var(--accent-soft);border-radius:26px;padding:4px;display:flex}.toggle button{border-radius:22px;flex:1;min-height:48px}.toggle button.on{background:var(--card);font-weight:600;box-shadow:0 2px 6px #00000014}.month-head{justify-content:space-between;align-items:center;display:flex}.month-head h2{margin:0}.month-head button{width:44px;height:44px;color:var(--accent);font-size:1.6rem}.grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.weekdays{text-align:center;color:var(--muted);margin:12px 0 4px;font-size:.8rem}.day{aspect-ratio:1;background:var(--card);color:var(--ink);border:2px solid #0000;border-radius:12px;font-size:.9rem;position:relative}.day.has-mood{color:#3f3a44}.frame-period{border:2.5px solid var(--period)!important}.frame-predicted{border:2px dashed var(--period)!important}.frame-fertile{border:2px dashed var(--ovulation)!important}.day.today .day-num{border-bottom:2.5px solid;padding:0 2px;font-weight:800;line-height:1.3}.day.picked{outline:2.5px solid var(--ink);outline-offset:2px}.day.future{opacity:.6}.day:disabled{cursor:default}.moon{width:11px;height:11px;fill:var(--moon);position:absolute;top:4px;left:4px}.moon.inline{width:12px;height:12px;position:static}.legend-note{margin:12px 0 0}.legend{flex-wrap:wrap;gap:16px;margin-top:14px;display:flex}.legend span{align-items:center;gap:6px;display:flex}.legend i,.inline-swatch{border-radius:4px;width:12px;height:12px;display:inline-block}.lg-period{background:var(--period);border-radius:50%!important}.lg-sensitive{background:var(--sensitive)}.lg-predicted{border:2px dashed var(--period)}.mood-scale{border-radius:8px;margin-top:10px;display:flex;overflow:hidden}.mood-scale span{text-align:center;color:#3f3a44;flex:1;padding:3px 0;font-size:.7rem}.day-detail{margin-top:16px}.day-detail p{align-items:center;margin:8px 0 0;display:flex}.detail-head{justify-content:space-between;align-items:center;display:flex}.chart-screen h2:first-child{margin-top:4px}.small-toggle{margin-bottom:12px}.small-toggle button{min-height:40px}.chart{touch-action:pan-y;background:var(--card);border-radius:var(--radius);width:100%;height:auto;display:block}.chart .band{fill:var(--sensitive)}.chart .grid-line{stroke:var(--line);stroke-width:1px}.chart .axis{fill:var(--muted);font-size:10px}.chart .line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .avg-line{stroke:var(--accent)}.chart .avg-dot{fill:var(--accent);stroke:var(--card);stroke-width:2px}.chart .ring{stroke:var(--card);stroke-width:1.5px}.chart .crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.chart-tip{min-height:56px;padding:10px 4px;line-height:1.5}.series-legend{flex-direction:column;gap:6px;display:flex}.series-legend span{align-items:center;gap:8px;display:flex}.series-legend i{border-radius:2px;width:18px;height:4px;display:inline-block}.inline-swatch{vertical-align:-1px;margin-right:4px}.insight{margin-top:12px;line-height:1.6}.phase-stats{flex-direction:column;gap:12px;display:flex}.phase-stats p{margin:0}.stat-row{align-items:center;gap:12px;display:flex}.stat-word{flex:none;width:4.5em;font-weight:600}.stat-bars{flex-direction:column;flex:1;gap:4px;display:flex}.stat-bar{background:var(--bg);border-radius:4px;height:20px;position:relative;overflow:hidden}.stat-bar i{border-radius:0 4px 4px 0;position:absolute;inset:0 auto 0 0}.stat-bar span{color:var(--ink);padding-left:6px;font-size:.75rem;line-height:20px;position:relative}.bar-sensitive{background:var(--sensitive)}.bar-other{background:var(--line)}.tiles{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.tile{text-align:center;flex-direction:column;align-items:center;gap:4px;padding:14px 6px;display:flex}.tile-label{color:var(--muted);font-size:.8rem}.tile-value{font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700}.tile-sub{color:var(--muted);font-size:.8rem}.tiles-note{margin:10px 0 0}.catch-up{text-align:left;color:var(--accent);width:100%;font-weight:600}.look-back{flex-direction:column;gap:6px;line-height:1.5;display:flex}:root{--fertile:#d6eedd;--ovulation:#4f9e6b;--moon:#b5708f}@media (prefers-color-scheme:dark){:root{--fertile:#24402e;--ovulation:#7fd39b;--moon:#e6a9c3}}.lg-box{background:0 0;border-radius:4px;width:14px!important;height:14px!important}.ovulation-mark{background:var(--ovulation);border-radius:50%;width:7px;height:7px;position:absolute;top:3px;right:3px;box-shadow:0 0 0 1.5px #fff}.lg-ovulation{background:var(--ovulation);border-radius:50%!important}.day-tags{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.day-tags:empty{display:none}.tag{color:var(--ink);border-radius:12px;padding:3px 10px;font-size:.8rem}.tag-period{background:var(--accent-soft)}.tag-sensitive{background:var(--sensitive)}.tag-fertile{background:var(--fertile)}.danger-zone{border-color:var(--period);margin-top:8px}.danger-zone p{margin:0 0 10px}.danger-btn{background:var(--period);color:#fff}.privacy{line-height:1.6}.settings h2:first-child{margin-top:4px}.cycle-list{margin:0;padding:6px 18px;list-style:none}.cycle-list li{border-bottom:1px solid var(--line);justify-content:space-between;padding:10px 0;display:flex}.cycle-list li:last-child{border-bottom:none}.settings textarea{resize:vertical;margin-bottom:10px}.settings .chips{margin-top:10px}.chip.removable{min-height:36px;padding:6px 12px;font-size:.85rem}
