:root{
  --bg:#faf7f2; --paper:#fffdf9; --ink:#2b2620; --muted:#8a8175;
  --vocab:#1a7f37; --sent:#0969da; --lit:#a04ba8; --cult:#c26b1d;
  --accent:#7a3b2e; --line:#e5ddd0; --danger:#a12622; --ok:#1a7f37;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:"Source Han Serif SC","Noto Serif SC",Georgia,"Songti SC",serif;line-height:1.85}
header{position:sticky;top:0;z-index:50;background:rgba(250,247,242,.96);backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);padding:10px 16px}
.hwrap{max-width:980px;margin:0 auto;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
h1{font-size:16px;margin:0;color:var(--accent);font-weight:700;min-width:220px}
h1 small{display:block;font-size:11px;color:var(--muted);font-weight:400}
.tabs,.modes{display:flex;gap:6px}
button,select,input{font:inherit}
.tabs button,.modes button,.account-toggle,.ghost,.primary{border:1px solid #d8cfc0;background:#fff;color:#5a5248;border-radius:8px;
  padding:5px 12px;font-size:13px;cursor:pointer}
.tabs button.on,.modes button.on,.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.ghost{background:#fffdf9}
#scenesel{border:1px solid #d8cfc0;background:#fff;color:#3c3630;border-radius:8px;
  padding:6px 10px;font-size:13.5px;cursor:pointer;max-width:320px}
main{max-width:880px;margin:0 auto;padding:24px 16px 120px}
.legend{font-size:12px;color:var(--muted);background:#f3eee5;border:1px solid var(--line);border-radius:8px;
  padding:10px 14px;margin-bottom:18px}
.legend b{font-weight:600;color:#5e5145}
.legend .sw{display:inline-block;width:26px;border-bottom:2px dotted;margin:0 4px 0 10px;vertical-align:middle}
.sw.vocab{border-color:var(--vocab)} .sw.sent{border-color:var(--sent)}
.sw.lit{border-color:var(--lit)} .sw.cult{border-color:var(--cult)}
.notice{margin:0 0 18px;padding:10px 14px;border:1px solid #d8cfc0;border-radius:8px;background:#fffdf9;color:#5a5248;font-size:13px}
.notice.ok{border-color:#9ac4a4;color:var(--ok)}
.notice.warn{border-color:#dcb36f;color:#765219}
.notice.error{border-color:#e0a09d;color:var(--danger)}
.intro{background:linear-gradient(135deg,#fdf6ec,#f6efe2);border:1px solid #e8dcc6;border-radius:8px;
  padding:20px 24px;margin-bottom:26px;font-size:14.5px}
.intro h2{margin:0 0 6px;font-size:20px;color:var(--accent)}
.intro h3{margin:14px 0 4px;font-size:14px;color:#7a6a4f}
.intro p{margin:6px 0}
.blk{margin:0 0 14px;padding:2px 0}
.blk .sp{font-weight:700;font-size:13px;letter-spacing:1px;color:var(--accent)}
.blk .dir{color:var(--muted);font-style:italic;font-size:14px}
.stage{color:#6d645a;font-style:italic;font-size:14.5px;background:#f5f1e8;border-left:3px solid #d8cfc0;
  padding:8px 14px;border-radius:0 8px 8px 0}
.en{font-size:16px}
.zh{font-size:15px;color:#4c443a}
.bi .zh{margin-top:4px;padding-left:14px;border-left:2px solid #e0d6c4;color:#6b5f50;font-size:14px}
.mode-en .zh{display:none}
.mode-zh .en{display:none}
.mode-zh .stage .zh,.mode-zh .zh{font-style:normal}
.ann{border-bottom:2px dotted;cursor:pointer;padding-bottom:1px}
.ann.vocab{border-color:var(--vocab)} .ann.sent{border-color:var(--sent)}
.ann.lit{border-color:var(--lit)} .ann.cult{border-color:var(--cult)}
.ann:hover{background:#f7f1df}
.ann.open{background:#f3e9cf}
.card{display:none;margin:10px 0 14px;border-radius:8px;border:1px solid;padding:14px 18px;font-size:14px;
  line-height:1.9;font-style:normal;box-shadow:0 4px 14px rgba(60,50,30,.08);position:relative;background:#fff}
.card.show{display:block;animation:pop .18s ease}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.card .tag{display:inline-block;font-size:11px;color:#fff;border-radius:4px;padding:1px 8px;margin-right:8px;vertical-align:2px}
.card .term{font-weight:700;font-size:15px}
.card .body{margin-top:8px;color:#3d372f;white-space:pre-wrap}
.card .close{position:absolute;top:8px;right:12px;border:none;background:none;font-size:18px;color:#b0a693;cursor:pointer}
.card.vocab{border-color:var(--vocab)} .card.vocab .tag{background:var(--vocab)}
.card.sent{border-color:var(--sent)} .card.sent .tag{background:var(--sent)}
.card.lit{border-color:var(--lit)} .card.lit .tag{background:var(--lit)}
.card.cult{border-color:var(--cult)} .card.cult .tag{background:var(--cult)}
.locked-card{border-color:#d8cfc0}
.locked-card .tag{background:#7a6a4f}
footer{max-width:880px;margin:40px auto 0;padding:0 16px;color:var(--muted);font-size:12px;text-align:center}
.account-backdrop{position:fixed;inset:0;z-index:79;background:rgba(43,38,32,.28);
  animation:fade .15s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.account-panel{position:fixed;right:16px;top:72px;z-index:80;width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 96px);
  overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 20px 55px rgba(55,41,25,.22);animation:panel-in .16s ease}
@keyframes panel-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.panel-head{display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);
  border-radius:12px 12px 0 0}
.panel-head strong{font-size:15px;color:var(--accent)}
.icon-btn{border:none;background:none;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;
  width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center}
.icon-btn:hover{background:var(--bg);color:var(--ink)}
#account-body{padding:14px 18px 18px}
.acc-section{padding:14px 0;border-bottom:1px solid var(--line)}
.acc-section:first-child{padding-top:0}
.acc-section:last-child{border-bottom:none;padding-bottom:0}
.acc-hint{margin:0 0 12px;font-size:13px;color:var(--muted);line-height:1.6}
.acc-status{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.acc-email{font-size:14px;color:var(--ink);font-weight:600;word-break:break-all}
.badge{font-size:11.5px;padding:3px 10px;border-radius:999px;font-weight:600;white-space:nowrap}
.badge-ok{background:#e5f1e8;color:var(--ok)}
.badge-warn{background:#f8ecd9;color:#8a5a1c}
.acc-footer-row{display:flex;justify-content:flex-end}
.acc-heading{margin:0 0 12px;font-size:13.5px;color:var(--accent);font-weight:700}
.acc-subheading{margin:14px 0 6px;font-size:12px;color:var(--muted);font-weight:600}
.acc-subheading:first-child{margin-top:2px}
.acc-empty{margin:4px 0;font-size:12.5px;color:var(--muted)}
.form{display:grid;gap:10px;margin:0}
.form label{display:grid;gap:4px;font-size:13px;color:#5a5248}
.form input{border:1px solid #d8cfc0;border-radius:8px;padding:8px 10px;background:#fff;font-size:14px}
.form input:focus{outline:2px solid var(--accent);outline-offset:1px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row-tight{margin-bottom:10px}
.row-tight .grow{flex:1;min-width:100px}
.row-tight .grow-2{flex:2;min-width:140px}
.muted{color:var(--muted);font-size:13px}
.code-box{width:100%;min-height:96px;border:1px solid #d8cfc0;border-radius:8px;padding:10px;
  background:#f8f3ea;color:#3d372f;font-size:12.5px;margin:10px 0;resize:vertical}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}
.table th{background:#f3eee5;color:#7a6a4f;font-weight:600;position:sticky;top:0}
.table th,.table td{border-bottom:1px solid #eee3d6;padding:7px 10px;text-align:left;vertical-align:top}
.table tbody tr:last-child td{border-bottom:none}
.table tbody tr:hover{background:#f8f4ea}
@media(max-width:640px){
  .hwrap{justify-content:center}
  h1{width:100%;text-align:center}
  .tabs,.modes{overflow:auto}
  .account-panel{top:0;right:0;left:0;bottom:0;width:100%;max-height:100%;border-radius:0}
  .panel-head{border-radius:0}
}
