/* ============================================================
   A Lexicon of External Wushu (法) — styles, scoped to #view-glossary
   Two jobs: FIND (search + list) and LEARN (flashcards + quiz).
   Palette follows the site; dark overrides mirror theme.css.
   ============================================================ */
#view-glossary{
  --gl-ink:#14110f; --gl-ink2:#4b4540; --gl-muted:#7a736b;
  --gl-paper:#f6f5f2; --gl-surface:#fff; --gl-line:#e4e0d8; --gl-soft:#faf9f6;
  --gl-accent:#9e2b25; --gl-accent2:#b23a33;
  --gl-han:'Noto Serif TC','Noto Serif SC',serif;
  --gl-disp:'Spectral',serif; --gl-body:'Source Serif 4',serif; --gl-ui:'Inter',sans-serif;
  color:var(--gl-ink); font-family:var(--gl-body);
}
html[data-theme="dark"] #view-glossary{
  --gl-ink:#ece6dc; --gl-ink2:#cbc3b6; --gl-muted:#a49a8c;
  --gl-paper:#17130f; --gl-surface:#211c17; --gl-line:#35302a; --gl-soft:#1e1a15;
  --gl-accent:#e46a60; --gl-accent2:#d1483f;
}
#view-glossary .gl-han{font-family:var(--gl-han)}
.gl-wrap{max-width:860px;margin:0 auto;padding:0 22px 96px}

/* ---- hero ---- */
.gl-hero{position:relative;padding:52px 0 22px;overflow:hidden}
.gl-hero-wm{position:absolute;top:-30%;right:-4%;font-family:var(--gl-han);font-size:clamp(180px,26vw,320px);line-height:1;color:var(--gl-accent);opacity:.05;pointer-events:none;user-select:none}
.gl-hero-top{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px}
.gl-eyebrow{font-family:var(--gl-ui);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--gl-accent);font-weight:600;position:relative}
.gl-hero h1{font-family:var(--gl-disp);font-weight:700;font-size:clamp(30px,5vw,50px);line-height:1.03;letter-spacing:-.015em;margin:.2em 0 .18em;position:relative}
.gl-hero-lede{font-family:var(--gl-body);font-size:clamp(15px,1.5vw,17px);line-height:1.6;color:var(--gl-ink2);max-width:60ch;margin:0;position:relative}
.gl-hero-lede b{color:var(--gl-ink);font-weight:600}

/* ---- mode bar (sticky) ---- */
.gl-modebar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--gl-paper) 93%,transparent);
  backdrop-filter:saturate(140%) blur(8px);padding:14px 0 12px;margin-bottom:8px;
  border-bottom:1px solid var(--gl-line)}
.gl-modes{display:inline-flex;background:var(--gl-soft);border:1px solid var(--gl-line);border-radius:999px;padding:3px;gap:2px}
.gl-mode{font-family:var(--gl-ui);font-size:14px;font-weight:600;color:var(--gl-muted);background:none;border:0;border-radius:999px;padding:8px 22px;cursor:pointer;transition:all .16s}
.gl-mode.on{background:var(--gl-accent);color:#fff}
.gl-groups{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.gl-pill{--gc:var(--gl-accent);display:inline-flex;align-items:center;gap:6px;font-family:var(--gl-ui);font-size:12.5px;color:var(--gl-ink2);
  background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:999px;padding:5px 12px 5px 9px;cursor:pointer;transition:all .14s}
.gl-pill-han{font-family:var(--gl-han);font-size:14px;color:var(--gc)}
.gl-pill:hover{border-color:var(--gc)}
.gl-pill.on{background:var(--gc);border-color:var(--gc);color:#fff}
.gl-pill.on .gl-pill-han{color:#fff}

/* ---- search ---- */
.gl-search{display:flex;align-items:center;gap:10px;background:var(--gl-surface);border:1.5px solid var(--gl-line);border-radius:14px;padding:14px 18px;margin:18px 0 8px;transition:border-color .16s}
.gl-search:focus-within{border-color:var(--gl-accent)}
.gl-search svg{flex:none;color:var(--gl-muted)}
.gl-search input{flex:1;border:0;background:transparent;font-family:var(--gl-body);font-size:18px;color:var(--gl-ink);outline:none}
.gl-result-count{font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted);margin:6px 2px 14px}
.gl-result-count b{color:var(--gl-ink)}

/* ---- grouped browse ---- */
.gl-grp{--gc:var(--gl-accent);margin:0 0 26px}
.gl-grp-head{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:0;cursor:pointer;padding:6px 0 10px;border-bottom:2px solid var(--gc)}
.gl-grp-han{font-family:var(--gl-han);font-size:26px;color:var(--gc);line-height:1}
.gl-grp-name{font-family:var(--gl-disp);font-weight:700;font-size:19px;color:var(--gl-ink);flex:1}
.gl-grp-n{font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted)}

/* ---- term rows (accordion) ---- */
.gl-row{--gc:var(--gl-accent);border-bottom:1px solid var(--gl-line);cursor:pointer}
.gl-row-main{display:grid;grid-template-columns:2.4em minmax(120px,1fr) 1.5fr auto;align-items:baseline;gap:14px;padding:13px 4px}
.gl-row-han{font-family:var(--gl-han);font-size:22px;color:var(--gl-ink);line-height:1.15}
.gl-row-mid{display:flex;flex-direction:column;gap:1px}
.gl-row-py{font-family:var(--gl-body);font-style:italic;font-size:15px;color:var(--gl-accent2)}
.gl-row-en{font-family:var(--gl-ui);font-size:12.5px;font-weight:600;color:var(--gl-ink)}
.gl-row-lit{font-family:var(--gl-ui);font-size:12.5px;color:var(--gl-muted);line-height:1.4}
.gl-row-chev{color:var(--gl-muted);transition:transform .2s;align-self:center}
.gl-row.open .gl-row-chev{transform:rotate(180deg)}
.gl-row-detail{max-height:0;overflow:hidden;transition:max-height .3s ease}
.gl-row.open .gl-row-detail{max-height:600px}
.gl-row-mean{font-family:var(--gl-body);font-size:14.5px;line-height:1.6;color:var(--gl-ink2);margin:2px 0 12px;padding-left:calc(2.4em + 14px)}
.gl-row-mean em{font-style:italic;color:var(--gl-ink)}
.gl-row-note{font-family:var(--gl-body);font-size:13px;font-style:italic;line-height:1.55;color:var(--gl-ink2);margin:0 0 12px;padding-left:calc(2.4em + 14px)}
.gl-row-note::before{content:"";display:inline-block;width:3px;height:1em;background:var(--gc);margin-right:8px;vertical-align:-2px;border-radius:2px}
.gl-row-see{font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted);margin:0 0 14px;padding-left:calc(2.4em + 14px);display:flex;flex-wrap:wrap;align-items:center;gap:7px}
.gl-see{font-family:var(--gl-ui);font-size:12.5px;color:var(--gl-ink2);background:var(--gl-soft);border:1px solid var(--gl-line);border-radius:7px;padding:4px 9px;cursor:pointer;transition:all .14s}
.gl-see:hover{border-color:var(--gl-accent);color:var(--gl-accent)}
.gl-see .gl-han{font-size:13px}
.gl-row.gl-flash{background:color-mix(in srgb,var(--gl-accent) 8%,transparent)}
.gl-empty{font-family:var(--gl-body);color:var(--gl-muted);padding:44px 0;text-align:center}
.gl-note{font-family:var(--gl-body);color:var(--gl-muted);padding:40px 0}

/* ================= LEARN ================= */
.gl-learn-modes{display:inline-flex;gap:4px;background:var(--gl-soft);border:1px solid var(--gl-line);border-radius:999px;padding:3px;margin:20px 0 6px}
.gl-lm{font-family:var(--gl-ui);font-size:13px;font-weight:600;color:var(--gl-muted);background:none;border:0;border-radius:999px;padding:7px 18px;cursor:pointer;transition:all .16s}
.gl-lm.on{background:var(--gl-ink);color:var(--gl-paper)}
.gl-learn-stage{margin-top:14px}

.gl-learn-bar{margin:0 0 22px}
.gl-progress{height:5px;border-radius:3px;background:var(--gl-line);overflow:hidden}
.gl-progress span{display:block;height:100%;background:var(--gl-accent);border-radius:3px;transition:width .3s}
.gl-learn-meta{display:flex;justify-content:space-between;font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted);margin-top:8px}
.gl-learn-meta b{color:var(--gl-ink)}
.gl-learn-known{color:var(--gl-accent);font-weight:600}

/* flashcard */
.gl-flash{--gc:var(--gl-accent);perspective:1600px;height:min(52vh,380px);cursor:pointer;margin:0 auto;max-width:520px}
.gl-flash-inner{position:relative;width:100%;height:100%;transition:transform .55s cubic-bezier(.22,1,.36,1);transform-style:preserve-3d}
.gl-flash.show .gl-flash-inner{transform:rotateY(180deg)}
.gl-flash-face{position:absolute;inset:0;backface-visibility:hidden;border:1px solid var(--gl-line);border-radius:20px;background:var(--gl-surface);
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;box-shadow:0 24px 60px -40px rgba(20,17,15,.6);overflow:hidden}
.gl-flash-face::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--gc)}
.gl-flash-grp{font-family:var(--gl-ui);font-size:12px;letter-spacing:.04em;color:var(--gc);font-weight:600;position:absolute;top:20px}
.gl-flash-han{font-family:var(--gl-han);font-size:clamp(60px,13vw,104px);line-height:1.05;color:var(--gl-ink)}
.gl-flash-py{font-family:var(--gl-body);font-style:italic;font-size:22px;color:var(--gl-accent2);margin-top:8px}
.gl-flash-tap{position:absolute;bottom:22px;font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted)}
.gl-flash-back{transform:rotateY(180deg);justify-content:flex-start;padding:44px 30px 30px}
.gl-flash-en{font-family:var(--gl-disp);font-weight:700;font-size:26px;color:var(--gl-ink);line-height:1.15}
.gl-flash-lit{font-family:var(--gl-ui);font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--gl-muted);margin:8px 0 14px}
.gl-flash-mean{font-family:var(--gl-body);font-size:15px;line-height:1.6;color:var(--gl-ink2);margin:0;overflow-y:auto}
.gl-flash-mean em{font-style:italic;color:var(--gl-ink)}

.gl-learn-actions{display:flex;gap:12px;justify-content:center;margin:22px 0 0}
.gl-btn{font-family:var(--gl-ui);font-size:15px;font-weight:600;padding:12px 26px;border-radius:12px;cursor:pointer;border:1px solid var(--gl-line);background:var(--gl-surface);color:var(--gl-ink);transition:transform .12s,border-color .14s,background .14s}
.gl-btn:hover{border-color:var(--gl-accent)}
.gl-btn:active{transform:translateY(1px)}
.gl-btn-solid{background:var(--gl-accent);border-color:var(--gl-accent);color:#fff}
.gl-btn-solid:hover{background:var(--gl-accent2)}
.gl-btn-got{background:#2e6b3e;border-color:#2e6b3e;color:#fff}
.gl-btn-got:hover{background:#357a48}
.gl-btn-again{background:var(--gl-surface);color:var(--gl-ink2)}
.gl-learn-detail{display:block;margin:16px auto 0;font-family:var(--gl-ui);font-size:13px;color:var(--gl-muted);background:none;border:0;cursor:pointer}
.gl-learn-detail:hover{color:var(--gl-accent)}

/* quiz */
.gl-quiz-prompt{--gc:var(--gl-accent);text-align:center;border:1px solid var(--gl-line);border-radius:20px;background:var(--gl-surface);padding:34px 20px;position:relative;overflow:hidden}
.gl-quiz-prompt::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--gc)}
.gl-quiz-han{display:block;font-family:var(--gl-han);font-size:clamp(52px,11vw,88px);line-height:1.05;color:var(--gl-ink);margin-top:6px}
.gl-quiz-py{font-family:var(--gl-body);font-style:italic;font-size:19px;color:var(--gl-accent2)}
.gl-quiz-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0 0}
.gl-quiz-opt{font-family:var(--gl-ui);font-size:15px;font-weight:600;color:var(--gl-ink);background:var(--gl-surface);border:1.5px solid var(--gl-line);border-radius:12px;padding:16px 18px;cursor:pointer;text-align:left;transition:all .14s}
.gl-quiz-opt:hover:not(:disabled){border-color:var(--gl-accent)}
.gl-quiz-opt:disabled{cursor:default}
.gl-quiz-opt.correct{border-color:#2e6b3e;background:color-mix(in srgb,#2e6b3e 12%,var(--gl-surface));color:#2e6b3e}
.gl-quiz-opt.wrong{border-color:var(--gl-accent);background:color-mix(in srgb,var(--gl-accent) 10%,var(--gl-surface));color:var(--gl-accent)}
.gl-quiz-after{margin:18px 0 0;text-align:center}
.gl-quiz-mean{font-family:var(--gl-body);font-size:14.5px;line-height:1.6;color:var(--gl-ink2);margin:0 0 16px;text-align:left}
.gl-quiz-mean em{font-style:italic;color:var(--gl-ink)}

/* done */
.gl-done{text-align:center;padding:40px 0}
.gl-done-han{font-family:var(--gl-han);font-size:64px;color:var(--gl-accent);line-height:1}
.gl-done h3{font-family:var(--gl-disp);font-weight:700;font-size:28px;margin:12px 0 6px;color:var(--gl-ink)}
.gl-done p{font-family:var(--gl-body);font-size:16px;color:var(--gl-ink2);margin:0 0 22px}
.gl-done b{color:var(--gl-ink)}

@media (max-width:640px){
  .gl-row-main{grid-template-columns:2em 1fr auto;row-gap:2px}
  .gl-row-lit{display:none}
  .gl-quiz-opts{grid-template-columns:1fr}
  .gl-row-mean,.gl-row-note,.gl-row-see{padding-left:0}
}
@media (prefers-reduced-motion: reduce){
  .gl-flash-inner,.gl-row-detail,.gl-progress span{transition:none}
}

/* ================= panels + the 3-D figure ================= */
.gl-panel[hidden]{display:none}

/* the Standing Figure — frameless, sits open on the page, with a centered intro above */
.gl-figure-intro{text-align:center;max-width:54ch;margin:16px auto 0;font-family:var(--gl-ui);font-size:12.5px;line-height:1.6;color:var(--gl-muted)}
.gl-figure-intro .gl-han{font-size:15px;color:var(--gl-accent);margin-right:5px}
.gl-figure-intro[hidden]{display:none}
.gl-figure{position:relative;height:min(74vh,700px);margin:0 -22px 8px;overflow:hidden;opacity:0;transition:opacity .8s ease}
.gl-figure.is-live{opacity:1}
.gl-figure.gl-figure-off{display:none}

/* mode bar: Find/Learn on the left, the selection + Clear on the right */
#view-glossary .gl-modebar{display:flex;align-items:center;gap:14px}
.gl-modebar-right{display:flex;align-items:center;gap:12px;margin-left:auto}
.gl-showing{font-family:var(--gl-ui);font-size:13px;color:var(--gl-ink2);display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.gl-showing .gl-han{font-size:15px;color:var(--gl-accent)}
.gl-clear{font-family:var(--gl-ui);font-size:13px;font-weight:600;color:var(--gl-ink2);background:var(--gl-surface);border:1px solid var(--gl-line);border-radius:999px;padding:6px 15px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:border-color .14s,color .14s}
.gl-clear:hover{border-color:var(--gl-accent);color:var(--gl-accent)}
.gl-clear span{opacity:.6;font-size:11px}
.gl-clear[hidden]{display:none}
.gl-showing[hidden]{display:none}
.gl-figure-cap .gl-han{font-size:15px;color:var(--gl-accent);margin-right:5px}
.gl-figure-zone{position:absolute;right:16px;top:14px;z-index:4;font-family:var(--gl-ui);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gl-muted);pointer-events:none;opacity:0;transition:opacity .25s}
.gl-figure-zone.show{opacity:1}

/* 3-D node plates (CSS3D layer) */
.gl3-node{--nc:var(--gl-accent);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:86px;padding:6px 9px 7px;text-align:center;cursor:pointer;user-select:none;
  background:color-mix(in srgb,var(--gl-surface) 92%,transparent);
  border:1px solid color-mix(in srgb,var(--nc) 52%,transparent);border-radius:9px;
  box-shadow:0 8px 20px -14px rgba(20,17,15,.5);transition:background .2s,border-color .2s,box-shadow .2s}
.gl3-node::before{content:"";position:absolute;left:9px;right:9px;top:0;height:2px;background:var(--nc);border-radius:2px;opacity:.85}
.gl3-han{font-family:var(--gl-han);font-size:18px;line-height:1.1;color:var(--gl-ink);letter-spacing:.02em}
.gl3-py{font-family:var(--gl-ui);font-size:9px;letter-spacing:.02em;color:var(--nc);margin-top:2px;font-weight:600;white-space:nowrap}
.gl3-node.is-hover{background:var(--nc);box-shadow:0 14px 32px -12px color-mix(in srgb,var(--nc) 60%,rgba(0,0,0,.4))}
.gl3-node.is-hover .gl3-han,.gl3-node.is-hover .gl3-py{color:#fff}
.gl3-node.is-dim{opacity:.12}
.gl3-node.is-focus{outline:2px solid var(--nc);outline-offset:3px;background:var(--nc)}
.gl3-node.is-focus .gl3-han,.gl3-node.is-focus .gl3-py{color:#fff}

/* category tablets — the fourteen gates (CSS3D layer) */
.gl3-tab{--nc:var(--gl-accent);position:relative;width:130px;padding:12px 12px 11px;text-align:center;cursor:pointer;user-select:none;
  background:color-mix(in srgb,var(--gl-surface) 94%,transparent);border:1px solid color-mix(in srgb,var(--nc) 42%,transparent);
  border-radius:12px;box-shadow:0 10px 26px -16px rgba(20,17,15,.55);transition:background .2s,border-color .2s,box-shadow .2s,opacity .25s}
.gl3-tab::before{content:"";position:absolute;left:12px;right:12px;top:0;height:3px;background:var(--nc);border-radius:3px}
.gl3-tab-han{display:block;font-family:var(--gl-han);font-size:30px;line-height:1.05;color:var(--gl-ink)}
.gl3-tab-name{display:block;font-family:var(--gl-disp);font-weight:700;font-size:12.5px;color:var(--gl-ink);margin-top:5px;line-height:1.15}
.gl3-tab-n{display:block;font-family:var(--gl-ui);font-size:10.5px;color:var(--gl-muted);margin-top:3px}
.gl3-tab.is-hover{background:var(--nc);border-color:var(--nc);box-shadow:0 18px 42px -14px color-mix(in srgb,var(--nc) 60%,rgba(0,0,0,.4))}
.gl3-tab.is-hover .gl3-tab-han,.gl3-tab.is-hover .gl3-tab-name{color:#fff}
.gl3-tab.is-hover .gl3-tab-n{color:rgba(255,255,255,.82)}
.gl3-tab.is-active{border-color:var(--nc);box-shadow:0 16px 36px -16px color-mix(in srgb,var(--nc) 55%,rgba(0,0,0,.4))}
.gl3-tab.is-mute{opacity:.4}

/* toast */
.gl-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(12px);z-index:300;
  background:var(--gl-ink);color:var(--gl-paper);font-family:var(--gl-ui);font-size:13px;padding:9px 17px;border-radius:999px;
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.gl-toast.show{opacity:1;transform:translateX(-50%)}

/* results header inside FIND search */
.gl-results-lbl{font-family:var(--gl-ui);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gl-muted);margin:6px 2px 4px}
.gl-row-num{font-family:var(--gl-ui);font-size:12px;color:var(--gl-muted);text-align:right;padding-top:3px}
.gl-grp-rows[hidden]{display:none}
.gl-row-hit{background:color-mix(in srgb,var(--gl-accent) 9%,transparent);border-radius:8px}
#view-glossary .gl-row-see{align-items:center}
#view-glossary .gl-row-see .gl-row-reg{color:var(--gl-muted)}

@media (max-width:640px){
  .gl-figure{height:min(40vh,320px)}
  /* keep the row on one line with a compact 4-column grid */
  #view-glossary .gl-row-main{grid-template-columns:1.7em minmax(64px,auto) 1fr auto}
}
