:root{
  --paper:#f4ecdd;
  --paper-deep:#ece0c9;
  --ink:#2a2622;
  --ink-soft:#5d564c;
  --rule:#d8c9a9;
  --accent:#a8442a;          /* terracotta */
  --accent-soft:#c2724f;
  --vocab:#1f5e54;           /* deep teal for vocab */
  --vocab-tint:rgba(31,94,84,.10);
  --hl:#f6d365;              /* highlighter amber */
  --hl-edge:#e9b53c;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:
    radial-gradient(circle at 18% 12%, rgba(255,255,255,.45), transparent 38%),
    radial-gradient(circle at 85% 90%, rgba(168,68,42,.06), transparent 45%),
    var(--paper);
  color:var(--ink);
  font-family:"Noto Serif TC", serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
}
.wrap{position:relative;z-index:1;max-width:760px;margin:0 auto;padding:0 20px 180px;}

header{padding:34px 0 18px;}
.kicker{
  font-family:"Newsreader",serif;font-style:italic;font-size:15px;letter-spacing:.02em;
  color:var(--accent);margin-bottom:6px;
}
.kicker a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--accent-soft);}
h1{
  font-family:"Noto Serif TC",serif;font-weight:700;font-size:34px;line-height:1.2;
  margin:0 0 4px;letter-spacing:.04em;
}
.sub{font-family:"Newsreader",serif;color:var(--ink-soft);font-size:15px;margin:0;}

/* ---------- article picker ---------- */
.cards{display:flex;flex-direction:column;gap:16px;margin-top:8px;}
a.card{
  display:block;text-decoration:none;color:inherit;
  background:#fbf6ec;border:1px solid var(--rule);border-radius:14px;
  padding:18px 20px;box-shadow:0 6px 22px -16px rgba(42,38,34,.5);
  transition:.18s;
}
a.card:hover{border-color:var(--accent-soft);transform:translateY(-2px);
  box-shadow:0 12px 28px -16px rgba(42,38,34,.55);}
a.card .ckicker{font-family:"Newsreader",serif;font-style:italic;font-size:13px;color:var(--accent);}
a.card h2{font-family:"Noto Serif TC",serif;font-weight:700;font-size:26px;margin:4px 0 6px;letter-spacing:.03em;}
a.card .cblurb{font-family:"Newsreader",serif;font-size:14.5px;color:var(--ink-soft);line-height:1.5;margin:0;}
a.card .meta{margin-top:10px;font-family:"Newsreader",serif;font-size:12.5px;color:var(--accent-soft);
  display:flex;gap:14px;}
.empty{font-family:"Newsreader",serif;color:var(--ink-soft);font-style:italic;margin-top:20px;}

/* ---------- controls ---------- */
.panel{
  position:sticky;top:0;z-index:30;margin:14px 0 26px;
  background:rgba(244,236,221,.86);backdrop-filter:blur(8px);
  border:1px solid var(--rule);border-radius:14px;
  box-shadow:0 6px 22px -14px rgba(42,38,34,.5);
  padding:12px 14px;
}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.row + .row{margin-top:10px;}
button.ctrl{
  font-family:"Newsreader",serif;font-size:15px;cursor:pointer;
  border:1px solid var(--rule);background:#fbf6ec;color:var(--ink);
  padding:9px 16px;border-radius:10px;transition:.18s;
  display:inline-flex;align-items:center;gap:7px;
}
button.ctrl:hover{border-color:var(--accent-soft);color:var(--accent);}
button.ctrl:active{transform:translateY(1px);}
button.primary{background:var(--accent);color:#fbf6ec;border-color:var(--accent);}
button.primary:hover{background:var(--accent-soft);color:#fff;}
button.ctrl[disabled]{opacity:.4;cursor:not-allowed;}
.seg-ctrl{display:flex;align-items:center;gap:8px;flex:1;min-width:170px;}
label.lbl{font-family:"Newsreader",serif;font-size:13px;color:var(--ink-soft);white-space:nowrap;}
input[type=range]{flex:1;accent-color:var(--accent);min-width:90px;}
select{
  font-family:"Newsreader",serif;font-size:13px;color:var(--ink);
  background:#fbf6ec;border:1px solid var(--rule);border-radius:8px;padding:6px 8px;max-width:100%;
}
.rate-val{font-family:"Newsreader",serif;font-size:13px;color:var(--accent);min-width:34px;text-align:right;}
.spin{
  display:inline-block;width:13px;height:13px;border:2px solid var(--accent-soft);
  border-top-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;
}
@keyframes sp{to{transform:rotate(360deg);}}

.notice{
  background:#fbeee6;border:1px solid var(--accent-soft);color:#8a3a23;
  border-radius:10px;padding:10px 12px;font-family:"Newsreader",serif;font-size:14px;
  margin-top:10px;display:none;
}

/* ---------- article body ---------- */
.divider{display:flex;align-items:center;gap:14px;margin:26px 4px;color:var(--rule);}
.divider::before,.divider::after{content:"";height:1px;background:var(--rule);flex:1;}
.divider span{font-family:"Newsreader",serif;font-style:italic;font-size:12px;color:var(--accent-soft);letter-spacing:.18em;}

p.para{margin:0 0 22px;line-height:2.15;font-size:20px;position:relative;padding-left:34px;}
.pnum{
  position:absolute;left:0;top:4px;font-family:"Newsreader",serif;font-style:italic;
  font-size:14px;color:var(--accent-soft);
}
.seg{border-radius:5px;transition:background .25s,color .25s,box-shadow .25s;padding:1px 0;cursor:pointer;}
.seg:hover{background:rgba(233,181,60,.18);}
.seg.loading{background:rgba(31,94,84,.08);box-shadow:inset 0 -2px 0 var(--vocab);}
.seg.active{
  background:linear-gradient(180deg,var(--hl) 0%, #f3c84a 100%);
  box-shadow:0 0 0 1px var(--hl-edge), 0 2px 0 var(--hl-edge);
  color:#2a2014;
}
.vocab{
  color:var(--vocab);background:var(--vocab-tint);
  border-bottom:2px dotted var(--vocab);border-radius:3px 3px 0 0;
  padding:0 1px;cursor:pointer;
}
.seg.active .vocab{background:rgba(31,94,84,.16);}
.vocab:hover{background:rgba(31,94,84,.22);}

/* ---------- definition card ---------- */
.defcard{
  position:fixed;left:50%;bottom:18px;transform:translate(-50%,140%);
  width:min(560px,calc(100% - 32px));z-index:40;
  background:#fbf6ec;border:1px solid var(--rule);
  border-radius:16px;box-shadow:0 18px 50px -18px rgba(42,38,34,.65);
  padding:18px 20px;transition:transform .32s cubic-bezier(.2,.8,.25,1);
}
.defcard.show{transform:translate(-50%,0);}
.defcard .han{font-size:30px;font-weight:700;letter-spacing:.04em;}
.defcard .alt{font-size:15px;color:var(--ink-soft);margin-left:8px;}
.defcard .py{font-family:"Newsreader",serif;font-style:italic;font-size:18px;color:var(--accent);margin:6px 0 8px;}
.defcard .en{font-family:"Newsreader",serif;font-size:16px;line-height:1.45;color:var(--ink);}
.defcard .close{
  position:absolute;top:10px;right:12px;border:none;background:none;cursor:pointer;
  font-size:22px;color:var(--ink-soft);line-height:1;
}
.legend{font-family:"Newsreader",serif;font-size:13px;color:var(--ink-soft);margin-top:10px;display:flex;gap:16px;flex-wrap:wrap;}
.legend i{font-style:normal;}
.swatch{display:inline-block;width:13px;height:13px;border-radius:3px;vertical-align:-2px;margin-right:5px;}

/* estimated-level footnote, shown only on our own (non-GLOSS) homework articles */
.levelnote{
  font-family:"Newsreader",serif;font-style:italic;font-size:14px;line-height:1.6;
  color:var(--ink-soft);border-top:1px solid var(--rule);margin-top:30px;padding-top:14px;
}
