@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=Noto+Sans+SC:wght@400;500;600&family=Noto+Serif+SC:wght@500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";:root{--bg:#e8f3f7;--bg-accent:#f3f8fb;--surface:#ffffffdb;--surface-solid:#fafcfe;--stroke:#15232b14;--ink:#15232b;--ink-muted:#5a6b75;--ink-faint:#8a9aa4;--brand:#2a8f9e;--brand-deep:#176b78;--brand-soft:#d0ebf0;--ok:#2a8f9e;--warn:#c47a2e;--over:#c24b42;--fiber:#3a9b8a;--sodium:#6b8494;--macro-p:#2a8f9e;--macro-f:#d4924a;--macro-c:#4a7db8;--font-display:"Fraunces", "Noto Serif SC", serif;--font-body:"Plus Jakarta Sans", "Noto Sans SC", sans-serif;--radius-surface:20px;--radius-btn:14px;--radius-icon:12px;--shadow:0 8px 24px #1c24200f;--page-pad:20px;--nav-h:68px;--content-max:440px}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-color:#0000;background-image:radial-gradient(80% 50% at 100% 0,#ffffffb3,#0000 55%),radial-gradient(70% 45% at 0 100%,#2a8f9e1a,#0000 50%),linear-gradient(165deg,#e8f3f7 0%,#f3f8fb 48%,#eaf5f8 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;margin:0;font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:var(--brand-deep)}.app-shell{width:min(100%, var(--content-max));min-height:100dvh;padding:16px var(--page-pad) calc(var(--nav-h) + 20px);margin:0 auto;position:relative}.brand-word{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:0;font-size:26px;font-weight:600}.page-title{font-family:var(--font-display);margin:0;font-size:24px;font-weight:600}.muted{color:var(--ink-muted)}.faint{color:var(--ink-faint)}.meta{color:var(--ink-muted);font-size:12px}.surface{background:var(--surface-solid);border:1px solid var(--stroke);border-radius:var(--radius-surface);box-shadow:var(--shadow)}.surface-form{isolation:isolate;transform:translateZ(0)}.btn{border-radius:var(--radius-btn);justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 18px;font-weight:600;transition:transform .16s,opacity .16s;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--brand);color:#fff;width:100%}.btn-primary:hover{background:var(--brand-deep)}.btn-ghost{color:var(--brand-deep);min-height:44px;font-weight:600}.btn-danger{color:var(--over);min-height:44px;font-weight:600}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--ink-muted);font-size:13px;font-weight:500}.field input,.field select,.field textarea{border:1px solid var(--stroke);appearance:none;touch-action:manipulation;background:#fff;border-radius:12px;outline:none;min-height:46px;padding:10px 12px;font-size:16px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 1.5px var(--brand)}.field-error{color:var(--over);font-size:12px}.segmented{border:1px solid var(--stroke);background:#ffffff8c;border-radius:14px;grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{min-height:36px;color:var(--ink-muted);border-radius:10px;font-size:13px;font-weight:500}.segmented button[aria-selected=true]{background:var(--brand-soft);color:var(--brand-deep);font-weight:600}.list-row{border-bottom:1px solid var(--stroke);text-align:left;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:56px;padding:12px 0;display:flex}.list-row:last-child{border-bottom:none}.list-row .title{font-size:15px;font-weight:600}.chevron:after{content:"›";color:var(--ink-faint);font-size:20px;line-height:1}.bottom-nav{width:min(100%, var(--content-max));padding:8px 8px max(12px, env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--stroke);-webkit-backdrop-filter:blur(16px);z-index:40;grid-template-columns:repeat(5,1fr);gap:2px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{min-height:48px;color:var(--ink-faint);flex-direction:column;align-items:center;gap:4px;font-size:10px;font-weight:500;display:flex;position:relative}.bottom-nav button[aria-current=page]{color:var(--ink)}.nav-dot{border-radius:var(--radius-icon);place-items:center;width:28px;height:28px;font-size:14px;transition:background .2s,color .2s;display:grid}.bottom-nav button[aria-current=page] .nav-dot{background:var(--brand);color:#fff}.sheet-backdrop{z-index:50;background:#1c242059;animation:.2s fadeIn;position:fixed;inset:0}.sheet{width:min(100%, var(--content-max));background:var(--surface-solid);border:1px solid var(--stroke);max-height:78dvh;box-shadow:var(--shadow);z-index:51;padding:10px 20px max(20px, env(safe-area-inset-bottom));border-radius:20px 20px 0 0;flex-direction:column;animation:.32s cubic-bezier(.22,1,.36,1) sheetUp;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.sheet-handle{background:var(--stroke);border-radius:999px;width:36px;height:4px;margin:4px auto 12px}.sheet-title{font-family:var(--font-display);margin:0 0 12px;font-size:20px}.sheet-body{flex:1;overflow:auto}.empty{text-align:center;padding:40px 16px}.empty p{color:var(--ink-muted);margin:0 0 16px}.missing{color:var(--over);text-decoration:line-through}.tag-warn{color:var(--warn);font-size:12px}.tag-over{color:var(--over);font-size:12px;font-weight:600}.date-switcher{justify-content:space-between;align-items:center;gap:8px;display:flex}.date-switcher button{border:1px solid var(--stroke);background:var(--surface);width:40px;height:40px;color:var(--ink);border-radius:12px;font-size:18px}.num{font-variant-numeric:tabular-nums}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{opacity:.6;transform:translate(-50%,24px)}to{opacity:1;transform:translate(-50%)}}@keyframes popIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
