@font-face{font-family:Source Han Serif SC;src:local(Source Han Serif SC),local(Noto Serif CJK SC);font-display:swap}@font-face{font-family:Source Han Sans SC;src:local(Source Han Sans SC),local(Noto Sans CJK SC);font-display:swap}:root{--paper:#f6f1e8;--surface:#fffdf9;--ink:#2b2523;--muted:#756e69;--rose:#a86670;--rose-soft:#ead9d8;--sage:#788776;--sage-soft:#dfe4db;--gold:#b68145;--line:#d9d0c5;--shadow:0 18px 55px #3e302814;--serif:"Source Han Serif SC","Songti SC",serif;--sans:"Source Han Sans SC","PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink)}body{font-family:var(--sans);background:var(--paper);margin:0;font-size:15px;line-height:1.65}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--rose-soft)}.button{border:0;justify-content:center;align-items:center;gap:9px;min-height:44px;padding:0 18px;font-weight:650;transition:all .2s;display:inline-flex}.button-primary{background:var(--ink);color:var(--surface);box-shadow:0 6px #b9aa9b}.button-primary:hover{transform:translateY(-1px);box-shadow:0 8px #b9aa9b}.button-primary:active{transform:translateY(4px);box-shadow:0 2px #b9aa9b}.button-secondary{border:1px solid var(--line);background:var(--surface)}.icon-button{border:1px solid var(--line);background:var(--surface);place-items:center;width:40px;height:40px;display:grid}.form-error{color:#8f2e3b;background:#f7e6e7;border-left:3px solid #8f2e3b;padding:9px 12px}.login-page{grid-template-columns:minmax(0,1.35fr) minmax(380px,.65fr);min-height:100dvh;padding:32px;display:grid}.login-letter{border:1px solid var(--line);background:var(--surface);background-image:linear-gradient(#a866700f 1px,#0000 1px);background-size:100% 36px;flex-direction:column;justify-content:center;min-height:calc(100dvh - 64px);padding:clamp(42px,7vw,110px);display:flex;position:relative;overflow:hidden}.login-letter:after{content:"";border:1px solid var(--rose-soft);border-radius:50%;width:340px;height:340px;position:absolute;top:-120px;right:-100px;box-shadow:0 0 0 42px #a866700a,0 0 0 84px #a8667006}.letter-mark{font-family:var(--serif);letter-spacing:.2em;font-size:18px;position:absolute;top:38px;left:42px}.eyebrow,.section-kicker{letter-spacing:.18em;color:var(--rose);text-transform:uppercase;font-size:11px;font-weight:700}.login-letter h1{font-family:var(--serif);letter-spacing:-.055em;max-width:800px;margin:26px 0;font-size:clamp(58px,8vw,116px);font-weight:600;line-height:1.12}.login-intro{max-width:480px;font-family:var(--serif);color:var(--muted);font-size:18px}.letter-rule{border-top:1px solid var(--ink);width:120px;margin:44px 0 14px}.letter-date{letter-spacing:.2em;font-size:10px}.login-panel{flex-direction:column;justify-content:center;gap:52px;padding:clamp(36px,7vw,90px);display:flex}.login-panel h2{font-family:var(--serif);margin:5px 0;font-size:38px}.login-panel>div>p:last-child{color:var(--muted)}.login-form{gap:19px;display:grid}.login-form label{gap:7px;font-size:13px;font-weight:650;display:grid}.login-form input{border:0;border-bottom:1px solid var(--ink);background:0 0;outline:none;width:100%;height:50px;padding:0 2px;font-size:17px}.login-form input:focus{border-bottom:2px solid var(--rose)}.login-button{width:100%;margin-top:10px}.login-note{text-align:center;color:var(--muted);font-size:12px}.app-shell{min-height:100dvh}.sidebar{border-right:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:30;background:#f6f1e8eb;flex-direction:column;width:238px;padding:30px 24px 25px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;margin-bottom:46px;display:flex}.brand-monogram{font-family:var(--serif);border:1px solid var(--ink);place-items:center;width:44px;height:44px;font-size:14px;display:grid}.brand b,.brand small{display:block}.brand b{font-family:var(--serif);font-size:18px}.brand small{letter-spacing:.14em;color:var(--muted);font-size:8px}.side-nav{gap:7px;display:grid}.side-nav a{color:var(--muted);border-left:2px solid #0000;align-items:center;gap:13px;padding:10px 12px;display:flex}.side-nav a:hover,.side-nav a.active{color:var(--ink);border-left-color:var(--rose);background:#fffdf9b3}.side-nav a.active{font-weight:700}.quick-add-side{border:1px solid var(--ink);background:var(--ink);color:var(--surface);justify-content:center;align-items:center;gap:8px;min-height:44px;margin-top:26px;display:flex}.sidebar-foot{border-top:1px solid var(--line);align-items:center;gap:11px;margin-top:auto;padding-top:20px;display:flex}.sidebar-foot b,.sidebar-foot small{display:block}.sidebar-foot small{color:var(--muted);font-size:10px}.user-seal{background:var(--rose-soft);color:#783f49;width:36px;height:36px;font-family:var(--serif);border-radius:50%;place-items:center;font-weight:700;display:grid}.page-stage{min-height:100dvh;margin-left:238px}.page-content{max-width:1280px;margin:auto;padding:48px clamp(28px,5vw,72px) 80px}.mobile-topbar,.bottom-nav{display:none}.page-heading{justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:40px;display:flex}.page-heading h1{font-family:var(--serif);letter-spacing:-.04em;margin:7px 0 6px;font-size:clamp(38px,5vw,64px);font-weight:600;line-height:1.12}.page-heading>div>p:last-child{color:var(--muted);max-width:580px;margin:0}.sheet-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#2b25235c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.quick-sheet{background:var(--paper);border:1px solid var(--line);width:min(640px,100%);padding:20px 26px 32px;animation:.25s ease-out sheetUp;box-shadow:0 -30px 80px #1e17132e}.sheet-handle{background:var(--line);width:42px;height:3px;margin:0 auto 18px}.sheet-title{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.sheet-title h2{font-family:var(--serif);margin:3px 0;font-size:28px}.sheet-title p{margin:0}.quick-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.quick-grid a{background:var(--surface);border:1px solid var(--line);align-items:center;gap:13px;padding:14px;transition:all .2s;display:flex}.quick-grid a:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.quick-grid a:last-child{grid-column:1/-1}.quick-grid b,.quick-grid small{display:block}.quick-grid small{color:var(--muted);font-size:11px}.quick-icon{place-items:center;width:40px;height:40px;display:grid}.quick-icon.rose{background:var(--rose-soft);color:var(--rose)}.quick-icon.sage{background:var(--sage-soft);color:var(--sage)}.quick-icon.ink{background:var(--ink);color:#fff}.quick-icon.gold{color:#8b622f;background:#ede1d2}@keyframes sheetUp{0%{opacity:0;transform:translateY(35px)}}@media (max-width:800px){body{font-size:14px}.login-page{padding:0;display:block}.login-letter{border:0;min-height:48dvh;padding:70px 28px 38px}.login-letter h1{font-size:55px}.login-intro{font-size:15px}.letter-mark{top:26px;left:28px}.letter-rule,.letter-date{display:none}.login-panel{gap:28px;padding:36px 28px 70px}.sidebar{display:none}.page-stage{margin-left:0}.mobile-topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20;background:#f6f1e8f0;justify-content:space-between;align-items:center;height:60px;padding:0 20px;display:flex;position:sticky;top:0}.mobile-brand{font-family:var(--serif);font-size:19px;font-weight:700}.page-content{padding:26px 18px 104px}.page-heading{align-items:flex-start;margin-bottom:26px}.page-heading h1{font-size:39px}.bottom-nav{border-top:1px solid var(--line);z-index:50;height:72px;padding-bottom:env(safe-area-inset-bottom);background:#fffdf9f5;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-slot{position:relative}.bottom-nav a{height:100%;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;display:flex}.bottom-nav a.active{color:var(--rose);font-weight:700}.floating-add{border:5px solid var(--paper);background:var(--ink);color:#fff;z-index:2;border-radius:50%;place-items:center;width:50px;height:50px;display:grid;position:absolute;top:-25px;left:50%;transform:translate(-50%)}.quick-grid{grid-template-columns:1fr}.quick-grid a:last-child{grid-column:auto}.quick-sheet{padding:16px 18px 28px}.sheet-title h2{font-size:24px}}.paper-card{background:var(--surface);border:1px solid var(--line);padding:25px;position:relative;box-shadow:0 8px 24px #3e302809}.card-index{font-family:var(--serif);color:#aaa09a;font-size:11px;position:absolute;top:12px;right:17px}.card-label{letter-spacing:.16em;color:var(--rose);margin:0 0 8px;font-size:9px;font-weight:750}.card-title-row{align-items:center;gap:12px;display:flex}.card-title-row h2{font-family:var(--serif);margin:0;font-size:24px}.soft-icon{place-items:center;width:43px;height:43px;display:grid}.soft-icon svg{width:20px}.soft-icon.rose{background:var(--rose-soft);color:var(--rose)}.soft-icon.sage{background:var(--sage-soft);color:var(--sage)}.fine-print{color:var(--muted);font-size:11px}.text-link{border-bottom:1px solid var(--ink);align-items:center;gap:3px;margin-top:12px;font-size:12px;font-weight:700;display:inline-flex}.today-grid{grid-template-columns:1.08fr 1fr 1fr;gap:14px;display:grid}.days-card{background:var(--ink);color:var(--surface);overflow:hidden}.days-card:after{content:"";border:1px solid #766e69;border-radius:50%;width:180px;height:180px;position:absolute;bottom:-105px;right:-75px}.days-card .card-label{color:#d3a4aa}.days-card>p{color:#c8bfba}.days-number{align-items:baseline;gap:10px;margin:10px 0 0;display:flex}.days-number strong{font-family:var(--serif);font-size:74px;font-weight:500;line-height:1}.days-number span{font-family:var(--serif);font-size:17px}.hand-line{font-family:var(--serif);color:#b9afaa;border-top:1px solid #625a56;margin-top:30px;padding-top:9px;font-style:italic}.cycle-lead{color:var(--muted);margin:22px 0 0;font-size:12px}.cycle-date{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.cycle-date strong{font-family:var(--serif);font-size:31px}.cycle-date span{color:var(--muted);font-size:11px}.next-event{justify-content:space-between;align-items:center;gap:10px;margin-top:22px;display:flex}.next-event strong{font-family:var(--serif);font-size:22px}.next-event span{color:var(--rose);border:1px solid var(--rose-soft);padding:3px 8px;font-size:11px}.empty-note{margin:23px 0}.empty-note p{font-family:var(--serif);margin:0;font-size:20px}.empty-note span{color:var(--muted);font-size:12px}.section-block{margin-top:50px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:17px;display:flex}.section-heading h2{font-family:var(--serif);margin:0;font-size:30px}.section-heading a{align-items:center;gap:5px;font-size:12px;display:flex}.memory-strip{border-top:1px solid var(--ink);grid-template-columns:repeat(3,1fr);display:grid}.memory-slip{border-right:1px solid var(--line);background:#fffdf98c;min-height:210px;padding:22px}.memory-slip:last-child{border:0}.slip-no{font-family:var(--serif);color:#aaa;float:right}.slip-type{letter-spacing:.13em;color:var(--rose);font-size:10px}.memory-slip h3{font-family:var(--serif);margin:28px 0 8px;font-size:22px}.memory-slip p{color:var(--muted)}.memory-slip footer{align-items:center;gap:6px;margin-top:23px;font-size:10px;display:flex}.empty-spread{border-block:1px solid var(--line);align-items:center;gap:18px;padding:33px;display:flex}.empty-spread>svg{color:var(--rose)}.empty-spread h3,.empty-spread p{margin:0}.empty-spread .button{margin-left:auto}.form-card{background:var(--surface);border:1px solid var(--line);max-width:820px;padding:clamp(22px,4vw,42px)}.form-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}.field{gap:6px;display:grid}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700}.field input,.field textarea,.field select{border:1px solid var(--line);background:var(--paper);outline:none;width:100%;padding:11px 12px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-soft)}.field textarea{resize:vertical;min-height:100px}.field small{color:var(--muted)}.form-actions{gap:10px;margin-top:23px;display:flex}.status-note{border-left:3px solid var(--sage);background:var(--sage-soft);padding:12px 14px;font-size:13px}.status-note.warn{border-color:var(--gold);background:#f0e4d4}.status-note.danger{border-color:var(--rose);background:var(--rose-soft)}.tab-bar{border-bottom:1px solid var(--line);gap:5px;margin-bottom:24px;display:flex;overflow:auto}.tab-bar a,.tab-bar button{white-space:nowrap;background:0 0;border:0;padding:10px 14px}.tab-bar .active{border-bottom:2px solid var(--rose);font-weight:700}.list-stack{gap:10px;display:grid}.list-row{background:var(--surface);border:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:18px;display:grid}.list-date{text-align:center;border-right:1px solid var(--line);width:58px;padding-right:14px}.list-date strong,.list-date span{display:block}.list-date strong{font-family:var(--serif);font-size:25px}.list-date span{letter-spacing:.12em;color:var(--muted);font-size:9px}.list-row h3,.list-row p{margin:0}.list-row h3{font-family:var(--serif);font-size:19px}.list-row p{color:var(--muted);font-size:12px}.badge{background:var(--sage-soft);color:#4f604e;align-items:center;padding:3px 8px;font-size:10px;display:inline-flex}.badge.rose{background:var(--rose-soft);color:#814c54}.badge.gold{color:#7e5a30;background:#eee0cf}.calendar-layout{grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:18px;display:grid}.calendar-paper{background:var(--surface);border:1px solid var(--line);padding:22px}.calendar-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.calendar-head h2{font-family:var(--serif);margin:0;font-size:28px}.calendar-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(7,1fr);display:grid}.week-label,.day-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px}.week-label{text-align:center;color:var(--muted);background:var(--paper);font-size:10px}.day-cell{min-height:84px;position:relative}.day-cell.outside{color:#bbb;background:#faf7f1}.day-cell.today .day-number{background:var(--ink);color:#fff}.day-number{place-items:center;width:25px;height:25px;font-size:11px;display:grid}.day-cell.period{background:linear-gradient(135deg,var(--rose-soft),#f3e8e5)}.day-cell.predicted{outline:1px dashed var(--rose);outline-offset:-3px;background:repeating-linear-gradient(135deg,#0000,#0000 6px,#a8667017 6px 9px)}.day-cell.fertile:after{content:"";background:var(--sage);border-radius:50%;width:7px;height:7px;position:absolute;bottom:6px;right:6px}.day-marks{flex-wrap:wrap;gap:3px;margin-top:8px;display:flex}.day-marks i{background:var(--gold);border-radius:50%;width:5px;height:5px}.legend{color:var(--muted);flex-wrap:wrap;gap:15px;margin-top:14px;font-size:10px;display:flex}.legend span{align-items:center;gap:5px;display:flex}.legend i{background:var(--rose-soft);width:14px;height:9px}.legend i.pred{background:repeating-linear-gradient(135deg,transparent,transparent 3px,var(--rose-soft) 3px,var(--rose-soft) 5px);border:1px dashed var(--rose)}.legend i.fert{background:var(--sage)}.insight-stack{gap:12px;display:grid}.insight-card{background:var(--surface);border:1px solid var(--line);padding:18px}.insight-card h3{font-family:var(--serif);margin:5px 0;font-size:19px}.insight-card p{color:var(--muted);margin:0;font-size:12px}.metric-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.metric{background:var(--surface);border-top:2px solid var(--ink);padding:17px}.metric strong{font-family:var(--serif);font-size:30px;display:block}.metric span{color:var(--muted);font-size:11px}.split-layout{grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:22px;display:grid}.sticky-panel{align-self:start;position:sticky;top:28px}.danger-zone{background:snow;border:1px solid #d9b9ba;padding:20px}.danger-zone h3{color:#8f2e3b}.photo-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.photo-grid img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.prose-page{max-width:820px}.prose-page h2{font-family:var(--serif);margin-top:34px}.prose-page p,.prose-page li{color:#5f5854}.mono-box{background:var(--ink);color:#eee;padding:16px;font-family:ui-monospace,Consolas,monospace;font-size:12px;overflow:auto}@media (max-width:1050px){.today-grid{grid-template-columns:1fr 1fr}.days-card{grid-row:span 2}.calendar-layout,.split-layout{grid-template-columns:1fr}.sticky-panel{position:static}.memory-strip,.metric-grid{grid-template-columns:1fr 1fr}}@media (max-width:800px){.today-grid{grid-template-columns:1fr}.days-card{grid-row:auto}.days-number strong{font-size:62px}.memory-strip{grid-template-columns:1fr}.memory-slip{border-right:0;border-bottom:1px solid var(--line)}.empty-spread{flex-wrap:wrap;align-items:flex-start;padding:22px}.empty-spread .button{margin-left:0}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.calendar-paper{padding:10px}.day-cell{min-height:56px;padding:3px}.calendar-head h2{font-size:23px}.week-label{padding:4px 1px}.metric-grid{grid-template-columns:1fr 1fr}.list-row{grid-template-columns:auto 1fr}.list-row>.button{grid-column:1/-1}.photo-grid{grid-template-columns:repeat(2,1fr)}}
