/* ChillKai from https://fontsapi.zeoseven.com/5/main/result.css, saved locally for offline privacy. */
@import url("/assets/fonts/chillkai/font.css");
:root,[data-theme="light"]{
  --font-main:"ChillKai","寒蝉正楷体","Kaiti SC","STKaiti","楷体",serif;
  --font-serif-en:"Georgia","Times New Roman",serif;
  --font-mono:"SF Mono","Menlo","Consolas",monospace;
  --bg-main:#FDFBFC;--bg-card:rgba(255,251,252,.95);--bg-paper-inner:rgba(255,255,255,.88);
  --bg-selected:rgba(242,221,228,.55);--bg-hover:rgba(242,221,228,.35);
  --primary-pink:#D9AAB7;--secondary-pink:#F2DDE4;
  --border-paper:rgba(225,215,219,.65);--border-double:rgba(235,222,226,.6);
  --text-primary:#6E5F65;--text-body:#84777C;--text-secondary:#A3969A;--text-muted:#C0BCBE;--text-accent:#C88A97;
  --shadow-card:0 4px 20px rgba(217,170,183,.12),0 0 0 1px rgba(255,251,252,.8);
  --shadow-float:4px 4px 10px #EFEAEB,-4px -4px 10px #FFFFFF;
  --shadow-inset:inset 2px 2px 5px rgba(217,170,183,.2),inset -2px -2px 5px #FFFFFF;
  --glow-pink:rgba(217,170,183,.45);
  --button-face:linear-gradient(145deg,#FFFDFD,#F7E8EC);--button-edge:#E8CED6;
  --book-face:linear-gradient(100deg,#F2DDE4,#F9ECEF 30%,#FFF9FA);
  --book-face-alt:linear-gradient(100deg,#E8C8D0,#F2DDE4 35%,#F9ECEF);
  --book-face-cream:linear-gradient(100deg,#EBDDD6,#F7EFEA 30%,#FFFBF8);
  --book-face-pearl:linear-gradient(100deg,#F2E8E7,#FFFDFD 30%,#F9F0F2);
  --book-edge:#DBC2C9;--porcelain:#FFFFFF;--quote-face:rgba(255,252,253,.95);--code-face:#FFFCFD;--hidden-face:rgba(255,255,255,.85);
  --night-paper:#292126;--night-text:#D5C8CC;
  --error:#A85A6B;--error-bg:#FAEDF0;--toast:#6E5F65;--toast-ink:#FFFDFD;--backdrop:rgba(80,64,72,.27);
  color-scheme:light;
}
[data-theme="dark"]{
  --bg-main:#1C171A;--bg-card:rgba(38,31,35,.95);--bg-paper-inner:rgba(45,37,42,.85);
  --bg-selected:rgba(217,170,183,.18);--bg-hover:rgba(217,170,183,.1);
  --primary-pink:#D49BA7;--secondary-pink:#4A3840;
  --border-paper:rgba(100,82,90,.45);--border-double:rgba(120,95,105,.4);
  --text-primary:#EDE3E6;--text-body:#D5C8CC;--text-secondary:#A6969B;--text-muted:#786A6F;--text-accent:#E0A8B4;
  --shadow-card:0 4px 20px rgba(0,0,0,.35);
  --shadow-float:3px 3px 8px #141013,-2px -2px 6px #282125;
  --shadow-inset:inset 2px 2px 5px #141013,inset -1px -1px 4px #2A2227;
  --glow-pink:rgba(212,155,167,.3);
  --button-face:linear-gradient(145deg,#3C2F36,#30252B);--button-edge:#654D57;
  --book-face:linear-gradient(100deg,#4A353F,#5C434F 35%,#46343E);
  --book-face-alt:linear-gradient(100deg,#654651,#7B5664 35%,#5A414C);
  --book-face-cream:linear-gradient(100deg,#534440,#6A5551 35%,#4D3D3B);
  --book-face-pearl:linear-gradient(100deg,#493C43,#65525B 35%,#43343D);
  --book-edge:#967780;--porcelain:#30272C;--quote-face:rgba(52,41,47,.95);--code-face:#2C2228;--hidden-face:rgba(45,37,42,.85);
  --night-paper:#241B20;--night-text:#D5C8CC;
  --error:#E6A5B2;--error-bg:#422C34;--toast:#EDE3E6;--toast-ink:#30252C;--backdrop:rgba(12,8,10,.65);
  color-scheme:dark;
}
:root{
  /* Keep the token contract used by existing components. */
  --accent:var(--text-accent);--primary:var(--text-primary);--ink:var(--text-primary);--muted:var(--text-secondary);
  --line:var(--border-paper);--surface:var(--bg-card);--selected:var(--bg-selected);--bg:var(--bg-main);--paper:var(--bg-paper-inner);
  --sage:var(--text-accent);--sage-light:var(--bg-hover);--night:var(--night-paper);--sidebar:var(--bg-main);
  --preview:var(--bg-card);--page:var(--bg-paper-inner);--page-line:var(--border-paper);--page-texture:none;
  --on-accent:var(--text-primary);--highlight:var(--bg-selected);--highlight-ink:var(--text-primary);
  --radius:8px;--serif:var(--font-main);--sans:var(--font-main);
}
*{box-sizing:border-box;letter-spacing:0}
body{margin:0;background:var(--bg-main);color:var(--text-primary);font:16px var(--font-main)}
body,button,input,select,textarea,.book-content,h1,h2,h3,h4{font-family:var(--font-main)!important;font-weight:normal}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;display:inline-flex;gap:8px;align-items:center;justify-content:center;border:1px solid transparent;border-radius:8px;padding:10px 16px;background:transparent;transition:background .2s,box-shadow .2s,transform .2s}
button:hover{background:var(--bg-hover)}button:disabled{opacity:.5;cursor:wait}button,a{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary-pink);outline-offset:3px}
a{color:var(--text-accent);text-underline-offset:4px}svg{width:18px;height:18px;flex:none;stroke-width:1.5}
h1,h2,h3,p{margin-top:0}h1{font-size:34px;line-height:1.5;margin-bottom:8px;text-shadow:0 0 8px var(--glow-pink)}h2{font-size:23px}h3{font-size:19px}
p{line-height:1.85;color:var(--text-body)}small,.muted{color:var(--text-secondary)}
.primary{background:var(--button-face);color:var(--text-primary);border:1px solid var(--button-edge);border-radius:999px;box-shadow:var(--shadow-float);padding:11px 22px}
.primary:hover{background:var(--button-face);transform:translateY(-2px);box-shadow:0 5px 18px var(--glow-pink)}
.outline{border-color:var(--border-paper);background:var(--bg-paper-inner)}.quiet{color:var(--text-body)}.icon{width:40px;height:40px;padding:10px}
.badge{font-size:12px;display:inline-flex;gap:4px;align-items:center;padding:5px 9px;border:1px solid var(--border-paper);border-radius:5px;color:var(--text-accent);background:var(--bg-hover)}
.badge.pending{color:var(--text-body);background:var(--bg-card)}.badge.error{color:var(--error);background:var(--error-bg)}
.eyebrow{font:italic 11px var(--font-serif-en);color:var(--text-secondary);margin-bottom:12px}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.section-title h2{margin:0}
.actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.actions.end{justify-content:flex-end}
label{display:flex;flex-direction:column;gap:8px;font-size:15px;margin-bottom:18px;color:var(--text-body)}
input,textarea,select{border:1px solid var(--border-paper);border-radius:8px;background:var(--bg-paper-inner);padding:11px 13px;min-width:0;width:100%}
textarea{resize:vertical;line-height:1.85}input[type=checkbox]{width:auto;accent-color:var(--primary-pink)}input[type=range]{padding:0;accent-color:var(--primary-pink)}input[type=color]{height:42px;padding:4px}select{cursor:pointer}
blockquote{margin:16px 0 24px;padding:12px 20px;border-left:2px solid var(--secondary-pink);line-height:1.9;max-height:300px;overflow:auto;font-size:18px;overflow-wrap:anywhere;color:var(--text-body)}
.empty{padding:55px 15px;text-align:center;color:var(--text-secondary)}.loading{padding:80px;text-align:center;color:var(--text-accent)}
.mono{font-family:var(--font-mono)!important;overflow-wrap:anywhere;font-size:12px;line-height:1.85}
dialog{width:570px;max-width:calc(100% - 30px);border:1px solid var(--border-paper);border-radius:12px;padding:30px;background:var(--bg-card);box-shadow:var(--shadow-card);color:var(--text-primary)}
dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.dialog-head h2{margin:0}
.note-dates{font-size:13px;color:var(--text-secondary);line-height:1.8}
#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px);padding:12px 20px;background:var(--toast);color:var(--toast-ink);border-radius:8px;opacity:0;pointer-events:none;transition:.2s;z-index:20;max-width:90%;font-size:15px;line-height:1.6}
#toast.show{opacity:1;transform:translate(-50%,0)}::selection{background:var(--secondary-pink);color:var(--text-primary)}
