@font-face{font-family:"Registry Serif";src:local("Iowan Old Style"),local("Palatino Linotype"),local("Palatino"),local("Georgia");unicode-range:U+0000-00FF,U+0100-017F,U+2000-206F,U+2190-21FF,U+2212}@font-face{font-family:"Registry Serif";font-weight:700;src:local("Iowan Old Style Bold"),local("Palatino Linotype Bold"),local("Palatino Bold"),local("Georgia Bold");unicode-range:U+0000-00FF,U+0100-017F,U+2000-206F,U+2190-21FF,U+2212}@font-face{font-family:"Registry Serif";font-style:italic;src:local("Iowan Old Style Italic"),local("Palatino Linotype Italic"),local("Palatino Italic"),local("Georgia Italic");unicode-range:U+0000-00FF,U+0100-017F,U+2000-206F,U+2190-21FF,U+2212}@font-face{font-family:"Registry Serif";font-style:italic;font-weight:700;src:local("Iowan Old Style Bold Italic"),local("Palatino Linotype Bold Italic"),local("Palatino Bold Italic"),local("Georgia Bold Italic");unicode-range:U+0000-00FF,U+0100-017F,U+2000-206F,U+2190-21FF,U+2212}@font-face{font-family:Hukou Glyphs;src:url(/assets/hukou-glyphs-d6vCodK8.woff2) format("woff2");font-display:block;unicode-range:U+20000-3FFFF}:root{--bg: #f3ecdd;--panel: #fbf7ee;--panel-2: #f7f1e3;--ink: #2a2622;--ink-soft: #5a5248;--muted: #8a7f6f;--line: #ddd2bd;--line-soft: #e9e1d0;--seal: #a33327;--seal-soft: #c05a4d;--link: #7a3b2e;--comp: #64748b;--l1: #3e7d4f;--l2: #2f6f8f;--l3: #92702c;--l4: var(--seal-stamp);--l5: #6b5f8f;--l1-text: #3e7d4f;--tone1: #3e7d4f;--tone2: #2f6f8f;--tone3: #92702c;--tone4: #a33327;--tone5: #8a7f6f;--pass: #3e7d4f;--plan: #2f6f8f;--warn: #92702c;--seal-stamp: #a33327;--seal-fill-hover: #8e2c21;--ink-stamp: #2a2622;--neutral-stamp: #8a7f6f;--mode-stamp: #6f4a3c;--bg-rgb: 243, 236, 221;--shadow-rgb: 42, 38, 34;--gap-bg: #f7ecd4;--gap-text: #8a5a20;--gap-border: #e8d5a8;--warnbox-bg: #f9e9e2;--warnbox-border: #e5c0b2;--mode-wash: #efe0d7;--mode-inline-bg: #f6e7e0;--map-ground: #e6dcc5;--serif: "Registry Serif", Constantia, Cambria, "Times New Roman", "Liberation Serif", "DejaVu Serif", "Noto Serif", serif;--sans: system-ui, -apple-system, "Segoe UI", "Noto Sans", "DejaVu Sans", Arial, sans-serif;--hanzi: "Hukou Glyphs", "Songti SC", "Noto Serif CJK SC", "Noto Serif SC", SimSun, "Source Han Serif SC", serif;--tap: 56px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #1c1815;--panel: #241f18;--panel-2: #2b2419;--ink: #ede4d3;--ink-soft: #c9bda6;--muted: #a89b83;--line: #7a6f5a;--line-soft: #463c2e;--seal: #e2664f;--seal-soft: #f0917c;--link: #d9a35f;--l1-text: #52b788;--pass: #52b788;--plan: #7cc0f0;--warn: #d9a441;--gap-bg: #332711;--gap-text: #e8bf6e;--gap-border: #a3812f;--warnbox-bg: #3a1f1a;--warnbox-border: #a85445;--mode-wash: #2e1f1a;--mode-inline-bg: #33201a;--map-ground: #1a140f;--bg-rgb: 28, 24, 21;--shadow-rgb: 0, 0, 0;color-scheme:dark}}:root[data-theme=dark]{--bg: #1c1815;--panel: #241f18;--panel-2: #2b2419;--ink: #ede4d3;--ink-soft: #c9bda6;--muted: #a89b83;--line: #7a6f5a;--line-soft: #463c2e;--seal: #e2664f;--seal-soft: #f0917c;--link: #d9a35f;--l1-text: #52b788;--pass: #52b788;--plan: #7cc0f0;--warn: #d9a441;--gap-bg: #332711;--gap-text: #e8bf6e;--gap-border: #a3812f;--warnbox-bg: #3a1f1a;--warnbox-border: #a85445;--mode-wash: #2e1f1a;--mode-inline-bg: #33201a;--map-ground: #1a140f;--bg-rgb: 28, 24, 21;--shadow-rgb: 0, 0, 0;color-scheme:dark}:root[data-theme=light]{color-scheme:light}@media print{:root,:root:not([data-theme=light]),:root[data-theme=light],:root[data-theme=dark]{--bg: #f3ecdd;--panel: #fbf7ee;--panel-2: #f7f1e3;--ink: #2a2622;--ink-soft: #5a5248;--muted: #8a7f6f;--line: #ddd2bd;--line-soft: #e9e1d0;--seal: #a33327;--seal-soft: #c05a4d;--link: #7a3b2e;--l1-text: #3e7d4f;--pass: #3e7d4f;--plan: #2f6f8f;--warn: #92702c;--gap-bg: #f7ecd4;--gap-text: #8a5a20;--gap-border: #e8d5a8;--warnbox-bg: #f9e9e2;--warnbox-border: #e5c0b2;--mode-wash: #efe0d7;--mode-inline-bg: #f6e7e0;--map-ground: #e6dcc5;--bg-rgb: 243, 236, 221;--shadow-rgb: 42, 38, 34;color-scheme:light}}*{box-sizing:border-box}html,body{margin:0;height:100%;overscroll-behavior-y:contain}body{height:100dvh;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--serif);font-size:16px;line-height:1.5;-webkit-text-size-adjust:100%}#app{height:100%;display:flex;flex-direction:column}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.hanzi{font-family:var(--hanzi)}.topbar{display:flex;align-items:center;flex-wrap:nowrap;--topbar-gap: 8px;--topbar-inset: 10px;--gear-overhang: 4px;gap:var(--topbar-gap);padding:calc(8px + env(safe-area-inset-top)) max(var(--topbar-inset),env(safe-area-inset-right)) 8px max(var(--topbar-inset),env(safe-area-inset-left));background:var(--panel);border-bottom:2px solid var(--line);flex:none}.brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:18px;color:var(--ink);white-space:nowrap}.brand:hover{text-decoration:none}.brand .stamp{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;background:var(--seal-stamp);color:#f6efe2;font-family:var(--hanzi);font-size:22px}.brand .sub{color:var(--muted);font-size:13px;font-style:italic}@media(max-width:1120px){.brand .sub{display:none}}@media(max-width:480px){.brand .word{display:none}}.topnav{flex:none;display:grid;grid-template-columns:repeat(4,1fr);font-family:var(--sans);font-size:14px;background:var(--panel);border-top:2px solid var(--line);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.topnav a{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--ink-soft);padding:8px 4px;min-height:var(--tap)}.topnav a:hover{text-decoration:none}.topnav a.active{color:var(--seal);font-weight:600}.nav-badge{position:absolute;top:4px;right:6px;min-width:8px;padding:0 5px;border-radius:999px;background:var(--seal-stamp);color:#fbf7ee;font-size:.62rem;font-weight:600;line-height:1.5}.topbar .gear{display:inline-flex;align-items:center;justify-content:center;align-self:center;color:var(--ink-soft);min-width:var(--tap);min-height:var(--tap);margin:-12px calc(-1 * var(--gear-overhang)) -12px 0;flex:none}.topbar .gear:hover{color:var(--ink);text-decoration:none}.topbar .gear.active{color:var(--seal)}.searchbox{position:relative;margin-left:auto;flex:1 1 0;min-width:84px;max-width:min(360px,40vw)}.searchbox input{width:100%;padding:7px 12px;font:15px var(--sans);color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;outline:none}.searchbox input:focus{border-color:var(--seal-soft)}.search-results{--search-panel-trailing: calc( max(var(--topbar-inset), env(safe-area-inset-right)) + var(--topbar-gap) + var(--tap) - var(--gear-overhang) );position:absolute;top:calc(100% + 6px);left:auto;right:0;width:max(100%,min(320px,calc(100vw - var(--search-panel-trailing) - max(var(--topbar-inset),env(safe-area-inset-left)))));max-height:60vh;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px rgba(var(--shadow-rgb),.18);z-index:50}.search-result{display:flex;align-items:center;gap:12px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;font:14px var(--sans);color:var(--ink);cursor:pointer;text-align:left}.search-result:last-child{border-bottom:0}.search-result:hover,.search-result.selected{background:var(--panel-2)}.search-result .glyph{font-size:24px;width:32px;text-align:center}.search-result .py{color:var(--seal);width:70px;flex:none}.search-result .gloss{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-empty{padding:10px 12px;font:13px var(--sans);color:var(--muted)}.view{flex:1;min-height:0;overflow-y:auto}.view.view-graph{overflow:hidden;display:flex;flex-direction:column}.page{max-width:980px;margin:0 auto;padding:26px max(22px,env(safe-area-inset-right)) 80px max(22px,env(safe-area-inset-left))}.badge{display:inline-block;font:600 11px/1.6 var(--sans);padding:0 8px;border-radius:999px;color:#fff;background:var(--neutral-stamp);vertical-align:2px}.badge.lv-comp{background:var(--comp)}.badge.lv-1{background:var(--l1)}.badge.lv-2{background:var(--l2)}.badge.lv-3{background:var(--l3)}.badge.lv-4{background:var(--l4)}.badge.lv-5,.badge.lv-6,.badge.lv-7{background:var(--l5)}.badge.reg-regular{background:var(--l1)}.badge.reg-drifter{background:var(--l3)}.badge.reg-emigrant{background:var(--l4)}.badge.reg-unknown{background:var(--neutral-stamp)}.badge.reg-head{background:var(--l5)}.badge.badge-radical{background:var(--comp)}.citizen-head{display:flex;gap:26px;align-items:flex-start;margin-bottom:8px}.citizen-glyph{font-family:var(--hanzi);font-size:110px;line-height:1.1;padding:4px 18px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:inset 0 0 0 4px var(--panel-2)}.citizen-glyph-col{display:flex;flex-direction:column;align-items:center;flex:0 0 auto}.citizen-id{min-width:0;flex:1 1 auto}.citizen-trad{margin-top:6px;display:flex;flex-direction:column;align-items:center;gap:1px;max-width:100%}.citizen-trad-label{font:11px var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.citizen-trad-forms{font-family:var(--hanzi);font-size:26px;line-height:1.2;color:var(--ink-soft);display:flex;flex-wrap:wrap;justify-content:center;gap:0 10px}.citizen-id h1{margin:2px 0;font-size:30px;font-weight:600}.citizen-id .office-line{font-size:17px;font-style:italic;color:var(--ink-soft);margin:0 0 8px}.citizen-id .meta-line{font:13px var(--sans);color:var(--muted);display:flex;flex-wrap:wrap;gap:10px;align-items:center}.citizen-id .meta-line .sep{color:var(--line)}.meaning-note{color:var(--muted);font-size:.85em;font-style:normal;font-weight:400;white-space:nowrap;margin-left:.4em}.section{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 20px;margin-top:18px}.section>h2,.section>h3{margin:0 0 10px;font:600 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--seal)}.section .note{font:13px var(--sans);color:var(--muted)}.reading{padding:10px 0;border-top:1px solid var(--line-soft)}.reading:first-of-type{border-top:0;padding-top:2px}.reading .phon{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.reading .py{font-size:22px;color:var(--seal)}.reading .zy{font-family:var(--hanzi);font-size:17px;color:var(--ink-soft)}.reading .tone-chip{font:600 11px var(--sans);padding:1px 8px;border-radius:999px;color:#fff}.reading .narrative{margin:6px 0 2px;font-size:16.5px}.reading .addr-facts{font:13px var(--sans);color:var(--muted)}.patron-toggle{font:inherit;color:inherit;background:none;border:none;padding:0;margin:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}.patron-toggle:hover{color:var(--seal)}.reading .senses{margin:6px 0 0;padding-left:20px;color:var(--ink-soft);font-size:14.5px}.reading .senses li{margin:1px 0}.gap-note{font:13px var(--sans);color:var(--gap-text);background:var(--gap-bg);border:1px solid var(--gap-border);border-radius:8px;padding:6px 10px;margin-top:6px}.warn{background:var(--warnbox-bg);border:1px solid var(--warnbox-border);border-radius:8px;padding:8px 12px;margin-top:8px;font-size:14px}.warn .truth{color:var(--seal);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.chip{display:inline-flex;align-items:center;gap:7px;padding:3px 10px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;font:13px var(--sans);color:var(--ink)}a.chip:not(.is-radical):hover{border-color:var(--seal-soft)}a.chip:hover{text-decoration:none}button.chip{cursor:pointer;min-height:32px}button.chip:not(.on):hover{border-color:var(--seal-soft)}.chip.on{border-color:var(--seal);color:var(--seal);background:var(--panel);font-weight:600}.chip .glyph{font-family:var(--hanzi);font-size:19px}.chip .lab{color:var(--muted)}.glyph-drawn{display:inline-flex;align-items:baseline;vertical-align:-.14em}.glyph-shape{width:1em;height:1em;fill:currentColor;flex:none}.glyph-cp,.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.glyph-pair{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}.glyph-arrow{color:var(--muted);font:.75em var(--sans)}.chip.is-radical{border-color:var(--seal)}.chip-tag{color:var(--seal);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:lowercase}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.stat{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:10px;padding:8px 12px}.stat .k{font:600 11px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.stat .v{font-size:20px}.stat .d{font:12px var(--sans);color:var(--muted)}.house-nav{margin-top:10px}.house-nav>summary{cursor:pointer;font:600 13.5px var(--sans);color:var(--ink-soft)}.house-nav>summary:hover{color:var(--ink)}.house-nav-body{margin-top:8px}.word-row{display:flex;align-items:baseline;gap:12px;padding:5px 0;border-top:1px solid var(--line-soft);font-size:15px}.word-row:first-child{border-top:0}.word-row .w{font-family:var(--hanzi);font-size:19px;white-space:nowrap}.word-row .w a{color:var(--ink)}.word-row .w a:hover{color:var(--seal)}.word-row .py{color:var(--seal);white-space:nowrap}.word-row .gloss{color:var(--ink-soft);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.more-btn,.btn{font:600 13px var(--sans);color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:6px 14px;cursor:pointer}.more-btn:hover,.btn:hover{border-color:var(--seal-soft)}.btn.primary{background:var(--seal-stamp);border-color:var(--seal-stamp);color:#f6efe2}.btn.primary:hover{background:var(--seal-fill-hover)}.personal label{display:block;font:600 12px var(--sans);color:var(--ink-soft);margin:12px 0 4px}.personal input[type=text],.personal textarea{width:100%;font:15px var(--serif);color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 10px;resize:vertical}.personal input[type=text]:focus,.personal textarea:focus{outline:none;border-color:var(--seal-soft)}.personal .row{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}.personal .saved-note{font:13px var(--sans);color:var(--l1-text)}.personal .pin-note{font:12px var(--sans);color:var(--muted);margin-left:auto}.personal .personal-sub{font:600 13px var(--sans);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:26px 0 8px;padding-top:14px;border-top:1px solid var(--line-soft)}.personal .personal-sub:first-of-type{margin-top:20px}.routing{border:1px solid var(--line);border-left:3px solid var(--seal);border-radius:8px;background:var(--panel-2);padding:10px 12px;margin:0 0 10px}.routing.plain{border-left-color:var(--muted)}.routing .routing-head{font:600 15px var(--sans);color:var(--ink)}.routing .routing-why{font:14px var(--serif);color:var(--ink-soft);margin-top:3px}.routing .routing-draws{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:max-content minmax(0,1fr)}.routing .routing-draws li{display:contents}.routing .routing-draws li>*{padding:4px 0;border-top:1px solid var(--line)}.routing .routing-draws .routing-table{font:600 13px var(--sans);color:var(--seal);padding-right:12px}.routing .routing-draws .routing-why{margin-top:0;min-width:0}.routing .routing-length{font:13px var(--sans);color:var(--ink-soft);margin-top:8px;padding-top:6px;border-top:1px solid var(--line)}.routing.plain .routing-length{border-top:none;padding-top:0}.personal .write-elsewhere{margin:6px 0 0}.personal .record-fields{margin-top:4px}.personal .record-fields :disabled{opacity:.6}.personal .record-status{margin-top:8px}.personal .record-status p{margin:0 0 6px;font:13px var(--sans);color:var(--l1-text)}.personal .record-status.warn,.personal .record-status.warn p{color:var(--ink)}.scene-log-wrap{margin-top:12px}.saved-scenes:not(:empty){margin:12px 0 0}.saved-scenes:not(:empty)+.write-elsewhere{margin-top:12px}.scene-log{list-style:none;margin:0;padding:0}.scene-log li{border-left:2px solid var(--line);padding:0 0 0 12px;margin:0 0 14px}.scene-log li:last-child{margin-bottom:0}.scene-log .scene-meta{font:12px var(--sans);color:var(--muted)}.scene-log .scene-meta .sep{margin:0 6px}.scene-log .scene-text{font:15px var(--serif);color:var(--ink);margin:4px 0 0;white-space:pre-wrap}.scene-log li.scene-retracted{border-left-color:var(--line-soft)}.scene-log li.scene-retracted .scene-text{text-decoration:line-through;color:var(--muted)}.scene-log .retracted-mark{font-style:italic}.scene-retract{margin-top:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.scene-retract .small{font:12px var(--sans);color:var(--muted);flex-basis:100%}.scene-retract .retract-ask{min-height:32px}.scene-retract .retract-go,.scene-retract .retract-keep{min-height:44px}.scene-retract .retract-go{color:var(--seal);border-color:var(--seal-soft)}.scene-retract .btn[disabled]{opacity:.5;cursor:default}.graph-toolbar{display:flex;align-items:center;gap:12px;padding:8px max(20px,env(safe-area-inset-right)) 8px max(20px,env(safe-area-inset-left));font:13px var(--sans);color:var(--ink-soft);background:var(--panel);border-bottom:1px solid var(--line);flex:none;flex-wrap:wrap}.graph-toolbar .legend{display:flex;gap:10px;align-items:center}.graph-toolbar .legend .sw{width:10px;height:10px;border:1px solid var(--line);border-radius:3px;display:inline-block;margin-right:4px;vertical-align:-1px}.graph-toolbar .spacer{flex:1}.graph-toolbar .hint{color:var(--muted)}.graph-wrap{position:relative;flex:1;min-height:0}.graph-lookup{position:absolute;top:40px;left:max(12px,env(safe-area-inset-left));width:min(340px,max(46vw,min(210px,calc(100vw - 24px))));z-index:30;font:13px var(--sans)}.lookup-modes{display:flex;gap:4px;margin-bottom:6px}.lookup-mode{padding:3px 10px;font:12px var(--sans);color:var(--ink-soft);background:var(--panel);border:1px solid var(--line);border-radius:999px;cursor:pointer}.lookup-mode:hover{border-color:var(--seal-soft)}.lookup-mode.active{color:var(--panel);background:var(--seal);border-color:var(--seal)}.graph-lookup input{width:100%;padding:7px 12px;font:15px var(--sans);color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;outline:none;box-shadow:0 4px 14px rgba(var(--shadow-rgb),.12)}.graph-lookup input:focus{border-color:var(--seal-soft)}.lookup-results{position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:52vh;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 28px rgba(var(--shadow-rgb),.18);z-index:50}.lookup-result{display:flex;align-items:center;gap:12px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;font:14px var(--sans);color:var(--ink);cursor:pointer;text-align:left}.lookup-result:last-child{border-bottom:0}.lookup-result:hover,.lookup-result.selected{background:var(--panel-2)}.lookup-result .glyph{font-size:24px;width:32px;flex:none;text-align:center}.lookup-result .py{color:var(--seal);width:70px;flex:none}.lookup-result .gloss{flex:1;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lookup-result .via{flex:none;color:var(--ink-soft);font-size:12px;font-family:var(--hanzi)}.lookup-empty{padding:10px 12px;font:13px var(--sans);color:var(--muted)}.lookup-chooser-title{padding:8px 12px 2px;font:12px var(--sans);color:var(--muted)}.lookup-chooser{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px 12px}.lookup-chip{display:inline-flex;align-items:baseline;gap:5px;padding:3px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--ink);font:16px var(--hanzi);cursor:pointer}.lookup-chip:hover{border-color:var(--seal-soft);background:var(--panel)}.lookup-chip .n{font:11px var(--sans);color:var(--muted)}.graph-wrap canvas{position:absolute;inset:0;width:100%;height:100%;cursor:grab}.graph-wrap canvas.dragging{cursor:grabbing}.graph-tip{position:absolute;pointer-events:none;background:var(--ink-stamp);color:#f6efe2;font:13px var(--sans);padding:6px 10px;border-radius:8px;max-width:300px;z-index:10;display:none}.graph-tip .glyph{font-family:var(--hanzi);font-size:17px;margin-right:6px}.graph-tip .py{color:#e9b9ae;margin-right:6px}.graph-tip .gloss{color:#cfc4b2}.city-lore{position:absolute;left:max(12px,env(safe-area-inset-left));bottom:12px;max-width:min(340px,42vw);background:rgba(var(--bg-rgb),.9);border:1px solid var(--line-soft);border-radius:8px;padding:8px 10px;font:12.5px/1.45 var(--sans);color:var(--ink-soft);pointer-events:none;z-index:6;display:none}.city-lore .city-lore-note{margin-top:5px;color:var(--muted);font-style:italic}.graph-pin-panel{position:absolute;top:12px;right:max(12px,env(safe-area-inset-right));bottom:12px;width:min(330px,46vw);display:none;flex-direction:column;gap:14px;overflow-y:auto;z-index:20;padding:2px;pointer-events:none}.hero-card-wrap{position:relative;flex:none;pointer-events:auto}.hero-card{position:relative;display:block;background:var(--panel);border:1.5px solid var(--seal-soft);border-radius:14px;padding:14px 16px 12px;color:var(--ink);box-shadow:0 14px 32px rgba(var(--shadow-rgb),.28),inset 0 0 0 4px var(--panel-2);cursor:pointer}.hero-card-wrap:hover .hero-card{text-decoration:none;border-color:var(--seal);box-shadow:0 16px 36px rgba(var(--shadow-rgb),.34),inset 0 0 0 4px var(--panel-2)}.hero-card-wrap:hover .hero-open{text-decoration:underline}.hero-card-wrap>:not(.hero-card):not(.hero-close){position:relative}.hero-close{position:absolute;top:8px;right:10px;border:0;background:transparent;color:var(--muted);font:20px/1 var(--sans);cursor:pointer;padding:2px 7px;border-radius:6px}.hero-close:hover{color:var(--seal);background:var(--panel-2)}.hero-top{display:flex;gap:14px;align-items:center}.hero-glyph{font-size:64px;line-height:1.05;padding:4px 12px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}.hero-id{min-width:0}.hero-py{font-size:22px;color:var(--seal);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.hero-py .zy{font-size:15px;color:var(--ink-soft)}.hero-py .alt{font:12px var(--sans);color:var(--muted)}.hero-office{font-style:italic;color:var(--ink-soft);margin-top:2px;font-size:15px}.hero-narrative{margin-top:10px;padding-top:8px;border-top:1px solid var(--line-soft);font-size:15.5px}.hero-place{margin-top:6px;font:13px var(--sans);color:var(--seal)}.hero-house{margin-top:8px;font:13px var(--sans);color:var(--ink-soft)}.hero-house .hanzi{font-size:16px}.hero-house .sep{color:var(--line)}.hero-open{display:block;margin-top:10px;font:600 13px var(--sans);color:var(--link)}.hero-open:after{content:"";position:absolute;inset:0;border-radius:14px}.hero-narrative .patron-toggle{position:relative;z-index:1}.hero-lineage-btn{display:block;width:100%;margin-top:8px;padding:7px 12px;font:600 13px var(--sans);color:var(--seal);background:var(--panel);border:1.5px solid var(--seal-soft);border-radius:10px;cursor:pointer;box-shadow:0 6px 16px rgba(var(--shadow-rgb),.16)}.hero-lineage-btn:hover{color:#f6efe2;background:var(--seal-stamp);border-color:var(--seal-stamp)}.lineage-modal{position:absolute;inset:0;z-index:40}.lineage-modal canvas{position:absolute;inset:0;width:100%;height:100%}.lineage-title{position:absolute;top:14px;left:max(18px,env(safe-area-inset-left));display:flex;align-items:center;gap:10px;pointer-events:none}.lineage-title .glyph{font-size:30px;line-height:1.1;color:var(--ink)}.lineage-title .label{font:600 12px var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--seal)}.lineage-close{position:absolute;top:10px;right:max(14px,env(safe-area-inset-right));border:1px solid var(--line);background:var(--panel);color:var(--ink-soft);font:22px/1 var(--sans);cursor:pointer;padding:4px 10px;border-radius:8px}.lineage-close:hover{color:var(--seal);border-color:var(--seal-soft)}.lineage-hint{position:absolute;bottom:12px;left:0;right:0;text-align:center;font:12px var(--sans);color:var(--muted);pointer-events:none}.pin-group{flex:none}.pin-group-title{display:inline-block;pointer-events:auto;font:600 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--seal);background:rgba(var(--bg-rgb),.88);border-radius:6px;padding:2px 7px;margin:0 0 4px}.pin-card{display:flex;pointer-events:auto;align-items:center;gap:6px;width:100%;margin-top:4px;padding:6px 10px;border:0;border-radius:8px;background:var(--ink-stamp);color:#f6efe2;font:13px var(--sans);text-align:left;cursor:pointer;box-shadow:0 4px 12px rgba(var(--shadow-rgb),.18)}.pin-card:hover{outline:1.5px solid var(--seal-soft)}.pin-card .glyph{font-family:var(--hanzi);font-size:17px;margin-right:6px}.pin-card .py{color:#e9b9ae;margin-right:6px;flex:none}.pin-card .gloss{color:#cfc4b2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pin-card .note-chip{flex:none;margin-left:auto;font-size:11px;color:#cbbfa8;border:1px solid rgba(246,239,226,.28);border-radius:999px;padding:0 6px}.view-city .graph-toolbar .rung-label{font:600 12px var(--sans);color:var(--seal);background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:2px 10px}.view-city .graph-wrap{background:var(--map-ground)}.view-city .graph-wrap canvas{cursor:crosshair}.view-city .graph-wrap canvas.dragging{cursor:grabbing}.about h1{font-size:26px}.about h2.about-divider{font-size:20px;margin-top:30px}.about .card{margin:18px 0 0}.about .card h3{font:600 16px var(--serif);margin:0 0 8px}.scroll-x{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.about table{border-collapse:collapse;font:14px var(--sans);margin-top:8px}.about td,.about th{border:1px solid var(--line);padding:5px 12px;text-align:left}.about th{background:var(--panel-2)}.about input[type=file]{max-width:100%}.about code{font-size:13px;background:var(--panel-2);padding:1px 5px;border-radius:4px}.kbd{font:12px var(--sans);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;background:var(--panel)}.tuition h1{font-size:26px}.tui-item{border:1px solid var(--line-soft);border-radius:10px;background:var(--panel);padding:10px 14px;margin-top:10px}.tui-item.is-done{border-color:var(--l1-text)}.tui-item.is-locked{opacity:.72;background:var(--panel-2)}.tui-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.tui-mark{width:20px;text-align:center;flex:none}.tui-mark.done{color:var(--l1-text);font-weight:700}.tui-id{font:600 12px var(--sans);color:var(--muted)}.tui-title{font-weight:600}.tui-optional{font:italic 12px var(--serif);color:var(--muted)}.badge.tui-type-drilled{background:var(--l4)}.badge.tui-type-attested{background:var(--l2)}.badge.tui-type-authored{background:var(--l5)}.tui-summary{margin:6px 0 2px;font-size:14.5px;color:var(--ink-soft)}.tui-donewhen{margin:4px 0 2px;font-size:14px}.tui-lock-note{margin:6px 0 0;font:13px var(--sans);color:var(--muted)}.tui-control{margin:8px 0 2px;font:14px var(--sans)}.tui-control label{cursor:pointer}.tui-drill-link{font-weight:600}.tui-author{margin-top:8px}.tui-author summary{cursor:pointer;font:600 14px var(--sans)}.tui-author-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 14px;margin-top:8px}.tui-author-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:14px}.tui-author-key{flex:none;min-width:58px;color:var(--ink-soft)}.tui-author-field input{flex:1;min-width:0;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font:14px var(--serif)}.tui-author-field input:focus{border-color:var(--seal-soft);outline:none}.tui-author-field input::placeholder{color:var(--ink-soft);opacity:.75}.tui-suggest-list{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.tui-suggest{padding:1px 8px;border:1px dashed var(--line);border-radius:999px;background:transparent;color:var(--ink-soft);font:13px var(--serif);cursor:pointer}.tui-suggest:hover{border-style:solid;border-color:var(--seal-soft);color:var(--ink)}.tui-author-field.wide{grid-column:1 / -1}.tui-mode-bar{display:flex;gap:8px;margin-top:10px}.tui-mode{padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink-soft);font:13px var(--sans);cursor:pointer}.tui-mode.sel{background:var(--ink);color:var(--panel);border-color:var(--ink)}.tui-arena{margin-top:10px}.tui-progress .note{margin:0}body.drill-focus .topbar,body.drill-focus .topnav,body.drill-focus .tui-chrome,.drill-exit{display:none}body.drill-focus .drill-exit{display:flex;flex:none;border-top:1px solid var(--line);background:var(--panel);padding-bottom:env(safe-area-inset-bottom)}.drill-exit a{flex:1;display:flex;align-items:center;justify-content:center;min-height:var(--tap);color:var(--ink-soft);font:13px var(--sans)}.drill-exit a:hover{color:var(--seal);text-decoration:none}body.drill-focus .page.tuition{padding:12px 22px 16px}body.drill-focus .tui-arena{padding-bottom:8px}body.drill-focus .tui-cheat{margin-top:6px}body.drill-focus .tui-prompt{margin-bottom:6px}body.drill-focus .tui-chip-group{margin:4px 0}body.drill-focus .tui-chip-label{margin-bottom:2px}body.drill-focus .tui-chips{gap:4px}body.drill-focus .tui-chips+.tui-chips{margin-top:3px;padding-top:3px}body.drill-focus .tui-grade{margin-top:6px}.tui-prompt{font-size:18px;margin:4px 0 10px}.tui-py{color:var(--seal)}.tui-big{font-size:26px}.tui-chip-group{margin:8px 0}.tui-chip-label{font:600 11px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}.tui-chips{display:flex;flex-wrap:wrap;gap:6px}.tui-chips+.tui-chips{margin-top:5px;padding-top:5px;border-top:1px solid var(--line)}.tui-chip{padding:3px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font-size:14.5px;cursor:pointer}.tui-chip:not(:disabled):not(.sel):hover{border-color:var(--seal-soft)}.tui-chip.sel{background:var(--ink);color:var(--panel);border-color:var(--ink)}.tui-chip:disabled{opacity:.5;cursor:default}.tui-chip.sel:disabled{opacity:1}.tui-submit{font-weight:600}.tui-grade{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}.tui-lost{margin:8px 0 4px;padding:8px 10px;border:1px solid var(--seal-soft);border-left-width:3px;border-radius:8px;color:var(--ink)}.tui-lost p{margin:0}.tui-lost strong{color:var(--seal)}.tui-lost .tui-grade{margin-top:8px}.tui-reverse-input{padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font:16px var(--serif);width:min(320px,100%)}.tui-reverse-input:focus{border-color:var(--seal-soft);outline:none}.tui-feedback{margin-top:12px;border-top:1px dashed var(--line);padding-top:8px}.tui-feedback .tui-verdict{font-weight:600;margin:0 0 4px}.tui-feedback.ok .tui-verdict{color:var(--l1-text)}.tui-feedback.miss .tui-verdict{color:var(--seal)}.tui-feedback .tui-submitted{margin:0 0 4px;color:var(--ink-soft);overflow-wrap:anywhere}.tui-slot-miss{color:var(--seal);font-weight:600;white-space:nowrap}.tui-decode-rows{margin:6px 0 0;padding-left:20px;font-size:14px;color:var(--ink-soft)}.tui-cheat{margin-top:14px;border-top:1px dashed var(--line);padding-top:8px}.tui-cheat>summary{cursor:pointer;font:600 14px var(--sans);color:var(--ink-soft)}.tui-cheat>summary:hover{color:var(--ink)}.tui-cheat-body{display:grid;align-items:start;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px 18px;margin-top:10px}.tui-cheat-group{min-width:0}.tui-cheat-section{margin-top:8px}.tui-cheat-heading{font:600 12.5px var(--sans);color:var(--ink-soft);margin-bottom:2px}.tui-cheat-list{list-style:none;margin:0;padding:0}.tui-cheat-list+.tui-cheat-list{margin-top:5px;padding-top:5px;border-top:1px solid var(--line)}.tui-cheat-list li{display:grid;grid-template-columns:fit-content(45%) minmax(0,auto) minmax(0,1fr);align-items:baseline;gap:0 6px;font-size:13.5px;line-height:1.5;color:var(--ink-soft);overflow-wrap:anywhere}.tui-cheat-list li.tui-cheat-rule .tui-cheat-hint{grid-column:1 / -1}@media(max-width:480px){.tui-cheat-list li .tui-cheat-hint{grid-column:1 / -1}}.tui-cheat-sym{font-weight:600;color:var(--ink)}.tui-cheat-py{color:var(--seal)}.tui-cheat-hint{color:var(--muted)}.tui-ref{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}.tui-ref>summary{cursor:pointer;font:600 13.5px var(--sans);color:var(--ink-soft)}.tui-ref>summary:hover{color:var(--ink)}.tui-ref-body{margin-top:8px;max-width:68ch}.tui-ref-heading{font:600 12.5px var(--sans);color:var(--ink-soft);margin:12px 0 4px;text-transform:uppercase;letter-spacing:.04em}.tui-ref-body>.tui-ref-heading:first-child{margin-top:0}.tui-ref-heading .py{text-transform:none}.tui-ref-prose{margin:0 0 8px;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}.tui-ref-list{list-style:none;margin:0 0 8px;padding:0}.tui-ref-list li{display:grid;grid-template-columns:fit-content(30%) minmax(0,1fr);align-items:baseline;gap:2px 10px;padding:3px 0;font-size:13.5px;line-height:1.55;color:var(--ink-soft);overflow-wrap:anywhere}.tui-ref-list li.tui-ref-block{grid-template-columns:minmax(0,1fr)}.tui-ref-key{font-weight:600;color:var(--ink)}.tui-ref-glyph{font-family:var(--hanzi);font-size:19px;line-height:1.3}.tui-ref-reading{font-family:var(--serif);font-size:13.5px;margin-left:6px}.tui-ref-val{color:var(--muted)}.tui-ref-tell{color:var(--ink-soft)}@media(max-width:560px){.tui-ref-list li{grid-template-columns:minmax(0,1fr)}}body.practising .topbar{background:var(--mode-wash);border-bottom-color:var(--seal-soft)}body.practising .brand .stamp{background:var(--mode-stamp)}.practice-banner{flex:none;background:var(--seal-stamp);color:#fbf7ee;border-bottom:2px solid #7d251c}.practice-banner-inner{display:flex;align-items:center;gap:12px;padding:9px max(20px,env(safe-area-inset-right)) 9px max(20px,env(safe-area-inset-left));font:14px/1.4 var(--sans)}.practice-dot{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#fbf7ee;color:var(--seal-stamp);font-size:14px}.practice-copy{flex:1;min-width:0}.practice-copy strong{letter-spacing:.02em}.practice-leave{flex:none;font:13px/1 var(--sans);color:var(--seal-stamp);background:#fbf7ee;border:1px solid #fbf7ee;border-radius:6px;padding:8px 12px;cursor:pointer}.practice-leave:hover{background:#fff}.practice-tag{margin-left:10px;vertical-align:middle;font:700 11px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#fbf7ee;background:var(--seal-stamp);border-radius:4px;padding:4px 7px}.practice-inline{margin:0 0 10px;padding:9px 12px;border-left:3px solid var(--seal);background:var(--mode-inline-bg);color:var(--ink-soft);font:14px/1.45 var(--sans)}body.practising .section.personal{border-color:var(--seal-soft);box-shadow:0 0 0 1px var(--seal-soft) inset}@media(max-width:700px){.practice-banner-inner{flex-wrap:wrap}.practice-copy{flex-basis:100%;order:2}}.study-arm-slot:empty{display:none}.study-arm{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;border:1px solid var(--line);border-left:3px solid var(--seal);border-radius:8px;background:var(--panel-2);padding:8px 12px;margin:0 0 10px}.study-arm .study-arm-tag{font-size:15px;font-weight:700;color:var(--seal)}.study-arm .study-arm-say{font-size:14px;color:var(--ink-soft)}.study-arm.full{border-left-color:var(--l1-text)}.study-arm.full .study-arm-tag{color:var(--l1-text)}.study-arm.unknown{border-left-color:var(--gap-text)}.study-arm.unknown .study-arm-tag{color:var(--gap-text)}.page.campaign{max-width:748px;padding:4px max(14px,env(safe-area-inset-right)) 40px max(14px,env(safe-area-inset-left));font-family:var(--sans);line-height:1.45}.campaign h1,.campaign h2,.campaign h3,.card h1,.card h2{font-family:var(--serif);font-weight:600;margin:0 0 8px}.campaign h1,.card h1{font-size:1.35rem}.campaign h2,.card h2{font-size:1.1rem}.campaign a{color:var(--seal)}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px;margin:12px 0}.campaign .row,.card .row,.sheet .row{display:flex;align-items:center;justify-content:space-between;gap:10px}.stack{display:flex;flex-direction:column;gap:6px}.muted{color:var(--muted)}.small{font-size:.85rem}.numbers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(min-width:560px){.numbers{grid-template-columns:repeat(4,minmax(0,1fr))}}.numbers .n{background:var(--panel-2);border:1px solid var(--line-soft);border-radius:8px;padding:10px;min-width:0}.numbers .n .v{font-family:var(--serif);font-size:1.3rem}.numbers .n .k{color:var(--muted);font-size:.78rem}.numbers .n.alarm .v{color:var(--seal)}.pace-link{display:flex;align-items:center;gap:8px;min-height:var(--tap);margin-top:12px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--seal);font-weight:600;text-decoration:none}.pace-link:hover{text-decoration:none;border-color:var(--seal-soft)}.pace-link-arrow{margin-left:auto}button.big{appearance:none;width:100%;min-height:var(--tap);border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);font:inherit;font-size:1rem;cursor:pointer}button.big:active{background:var(--line-soft)}button.big.pass{border-color:var(--pass);color:var(--pass);font-weight:600}button.big.fail{border-color:var(--seal);color:var(--seal);font-weight:600}button.big[disabled]{opacity:.5;cursor:default}.grades{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;scroll-margin-bottom:12px}.card>.glyph{font-family:var(--hanzi);font-size:clamp(96px,42vw,200px);line-height:1.1;text-align:center;padding:24px 0 8px;user-select:none}.radical-mark-row{text-align:center;margin-top:-8px;padding-bottom:8px}.reveal{text-align:center;padding-bottom:8px}.reveal .py{font-family:var(--serif);font-size:1.6rem;letter-spacing:.01em}.reveal .office{color:var(--ink-soft);font-family:var(--serif);font-size:1.05rem}.reveal .senses{color:var(--muted);font-size:.9rem;margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ledger-row{display:grid;grid-template-columns:auto 2.4rem minmax(0,1fr) auto;grid-template-areas:"check hz meta status" "detail detail detail action";align-items:center;gap:4px 10px;padding:10px 4px;border-bottom:1px solid var(--line-soft);min-width:0}.ledger-row>input[type=checkbox]{grid-area:check;width:22px;height:22px}.ledger-row>input[type=checkbox],.checkbox input{accent-color:var(--seal)}.ledger-row .hz{grid-area:hz}.ledger-row .meta{grid-area:meta}.ledger-row .status{grid-area:status;justify-self:end}.ledger-row .detail{grid-area:detail}.ledger-row .act{grid-area:action;justify-self:end;min-height:38px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--ink);font:inherit;font-size:.82rem;cursor:pointer}.ledger-row .hz{font-family:var(--hanzi);font-size:1.6rem;color:var(--ink)}.ledger-row a.hz:hover{color:var(--seal);text-decoration:none}.ledger-row .py{font-family:var(--serif);font-size:.95rem}.ledger-row .meta{min-width:0}.ledger-row .office{color:var(--muted);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-row .detail{color:var(--muted);font-size:.8rem}.ledger-row .detail .seg{white-space:nowrap}.pick-row{display:flex;flex-wrap:wrap;gap:8px}.pick{display:flex;flex-direction:column;align-items:center;min-width:64px;min-height:var(--tap);padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);font:inherit;cursor:pointer}.pick .hz{font-family:var(--hanzi);font-size:1.5rem}.status{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-soft);white-space:nowrap}.status.verified{border-color:var(--pass);color:var(--pass)}.status.known{border-color:var(--plan);color:var(--plan)}.status.lapsed,.status.learning{border-color:var(--seal-soft);color:var(--seal)}.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--panel);border-top:1px solid var(--line);border-radius:14px 14px 0 0;padding:16px max(14px,env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));box-shadow:0 -8px 24px rgba(var(--shadow-rgb),.14);z-index:20}.chart{width:100%;height:auto;display:block;overflow:visible}.chart .plan{stroke:var(--plan);stroke-dasharray:4 3;fill:none}.chart .actual{stroke:var(--seal);stroke-width:2;fill:none}.chart .marker{stroke:var(--muted);stroke-dasharray:2 3}.chart .marker.deadline{stroke:var(--seal)}.chart .bar{fill:var(--plan)}.chart .bar.over{fill:var(--seal)}.chart .ceiling{stroke:var(--seal);stroke-dasharray:3 3}.chart text{font-family:var(--sans);font-size:9px;fill:var(--muted)}.campaign input[type=text],.campaign input[type=password],.campaign input[type=number],.campaign textarea,.campaign select,.card input[type=text],.card input[type=password],.card input[type=number],.card textarea,.card select{width:100%;min-height:46px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--ink);font:inherit}.campaign textarea,.card textarea{min-height:120px;resize:vertical}.card>input,.card>textarea,.card>select{margin-bottom:8px}label.field{display:block;margin:10px 0}label.field .k,.field>.k{display:block;color:var(--muted);font-size:.8rem;margin-bottom:4px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(134px + env(safe-area-inset-bottom));pointer-events:none;background:var(--ink-stamp);color:#fbf7ee;padding:10px 14px;border-radius:999px;font:.88rem var(--sans);z-index:30;max-width:calc(100% - 28px)}.toast.error{background:var(--seal-stamp)}.checkbox{display:flex;align-items:center;gap:8px;min-height:var(--tap);margin:10px 0}.checkbox input{width:22px;height:22px}.big.rehearse{background:var(--panel-2);color:var(--seal);border:1px solid var(--seal)}.rehearsal-slot{flex:none}.rehearsal-banner{display:flex;align-items:center;gap:10px;padding:9px max(20px,env(safe-area-inset-right)) 9px max(20px,env(safe-area-inset-left));background:var(--seal-stamp);color:#fbf7ee;border-bottom:2px solid #7d251c;font:14px/1.4 var(--sans)}.rehearsal-copy{flex:1;min-width:0}.rehearsal-exit{flex:none;min-height:36px;padding:0 14px;border:0;border-radius:8px;background:#fbf7ee;color:var(--seal-stamp);font:inherit;font-weight:600;cursor:pointer}body.rehearsing .topbar{background:var(--mode-wash);border-bottom-color:var(--seal)}body.rehearsing .brand .stamp{background:var(--mode-stamp)}.rehearsal-outcome{border:1px solid var(--seal)}.rehearsal-tag{flex:none;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#fbf7ee;background:var(--seal-stamp);border-radius:5px;padding:4px 8px}.attrib{margin-top:14px}.attrib>.k{color:var(--muted);font-size:.78rem;margin-bottom:8px}.attrib .chip,.study-roll .chip,.study-roll-none .chip{min-height:var(--tap);padding:8px 14px;border-radius:999px;font:inherit;color:var(--ink-soft)}.attrib .chip.on,.study-roll .chip.on,.study-roll-none .chip.on{color:var(--seal)}.confused{margin-top:12px}.confused>.k{color:var(--muted);font-size:.78rem;margin-bottom:8px}.confused .field{margin-top:8px}.pick.on{border-color:var(--seal);color:var(--seal);font-weight:600}.slot-bars{display:grid;gap:10px;margin-top:14px}.slot-row{display:grid;grid-template-columns:minmax(0,9rem) minmax(0,1fr) auto;gap:10px;align-items:center}.slot-row .slot-name{display:flex;flex-direction:column;min-width:0;font-size:.85rem}.slot-row .slot-name .code{color:var(--muted);font-size:.7rem}.slot-row .bar-track{height:10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);overflow:hidden}.slot-row .bar-fill{height:100%;background:var(--seal)}.slot-row .slot-n{color:var(--muted);font-size:.78rem;white-space:nowrap}.encoding-list{padding:0;overflow:hidden}.encoding-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;min-height:var(--tap);padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.encoding-row:last-child{border-bottom:0}.encoding-row:active{background:var(--line-soft)}.encoding-row .hz{font-family:var(--hanzi);font-size:1.9rem;line-height:1}.encoding-row-body{display:flex;flex-direction:column;min-width:0}.encoding-row .py{font-family:var(--serif);font-size:1.05rem}.encoding-row-body>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lane-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}.lane-switch button,.lane-switch a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);color:var(--ink-soft);font:inherit;min-width:0;cursor:pointer;text-decoration:none}.lane-switch a:hover{text-decoration:none;border-color:var(--seal-soft)}.lane-label{min-width:0;line-height:1.15;text-align:center}.lane-switch button[aria-current=true],.lane-switch a[aria-current=true]{background:var(--panel);border-color:var(--seal-soft);color:var(--ink);font-weight:700}.lane-count{min-width:22px;padding:1px 7px;border-radius:999px;background:var(--line-soft);color:var(--ink-soft);font-size:.78rem;font-variant-numeric:tabular-nums}.lane-switch button[aria-current=true] .lane-count{background:var(--line)}.graph-toolbar .roll-switch{display:inline-flex;gap:4px;margin:0}.graph-toolbar .roll-switch a{min-height:0;padding:2px 10px;border-radius:999px;font:12px var(--sans)}.pull-card{margin-top:10px}.pull-card>.k{color:var(--muted);font-size:.78rem;margin-bottom:8px}.pull-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.pull-row input[type=text]{margin:0;min-width:0}.pull-go{min-height:var(--tap);padding:0 16px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2);color:var(--ink);font:inherit;white-space:nowrap;cursor:pointer}.pull-go:active{background:var(--line-soft)}.pull-lookup{margin-top:8px}.pull-lookup .lookup-results{position:static;margin-top:6px;max-height:40vh}.row-marks{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:0}.held-mark{padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);color:var(--muted);font-size:.72rem;white-space:nowrap}.house-mark{padding:3px 8px;border:1px solid var(--seal-soft);border-radius:999px;color:var(--seal);font-size:.72rem;white-space:nowrap}.house-note{color:var(--seal);margin-top:10px}.radical-rule{color:var(--seal);margin:10px 0 6px}.components{margin-top:12px;text-align:left}.components>.k{color:var(--muted);font-size:.78rem;margin-bottom:6px}.component-row{display:flex;flex-wrap:wrap;gap:8px}.component{display:flex;align-items:baseline;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}.component .hz{font-family:var(--hanzi);font-size:1.3rem}a.component{color:inherit}a.component:hover{border-color:var(--seal-soft);text-decoration:none}a.pleco-link{display:inline-flex;align-items:center;padding:1px 7px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);font:11px var(--sans);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);vertical-align:middle;white-space:nowrap}a.pleco-link:hover{border-color:var(--seal-soft);color:var(--ink);text-decoration:none}.chip-pair{display:inline-flex;align-items:center;gap:5px}.component-wrap{display:inline-flex;align-items:stretch;gap:4px}.meaning-face.meaning-slide{display:inline-block}@keyframes meaning-slide-in{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}.meaning-face.meaning-slide{animation:meaning-slide-in .16s ease-out}@media(prefers-reduced-motion:reduce){.meaning-face.meaning-slide{animation:none}}.meaning-next{position:relative;display:inline-flex;align-items:center;align-self:center;justify-content:center;flex:none;width:22px;height:22px;padding:0;border:1px solid var(--line);border-radius:999px;background:var(--panel-2);color:var(--muted);font-size:13px;line-height:1;cursor:pointer}.meaning-next:after{content:"";position:absolute;top:50%;left:50%;width:32px;height:32px;transform:translate(-50%,-50%)}.meaning-next:hover{border-color:var(--seal-soft);color:var(--ink)}.pleco-row{text-align:center;padding-bottom:8px}.citizen-link{display:flex;align-items:center;gap:8px;min-height:var(--tap);margin-top:4px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);color:var(--seal);font-size:.9rem;font-weight:600;text-decoration:none}.citizen-link:hover{text-decoration:none;border-color:var(--seal-soft)}.citizen-link-arrow{margin-left:auto}.prior-scenes{margin-top:12px}.prior-scenes>.k{color:var(--muted);font-size:.78rem;margin-bottom:6px}.prior-scene{display:flex;gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:.9rem}.prior-scene .prior-date{white-space:nowrap}.prior-scene.scene-retracted>span:last-child{text-decoration:line-through;color:var(--muted)}.scene-field{min-height:132px}.record-boxes textarea{min-height:74px}.note-prefill{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 8px}.note-insert{min-height:var(--tap);padding:0 12px;font:600 13px var(--sans);color:var(--ink-soft);background:var(--panel);border:1px solid var(--line);border-radius:6px;cursor:pointer}.note-insert:hover:not(:disabled){color:var(--ink);border-color:var(--ink-soft)}.note-insert:disabled{opacity:.5;cursor:default}.record-note.warn{color:var(--ink)}.encoding-note{font-size:.95rem}.dice{margin-top:12px}.dice>.k{color:var(--muted);font-size:.78rem}.dice>p{margin:4px 0 8px}.dice-row{display:flex;flex-direction:column;gap:10px}.die-cell{display:grid;grid-template-columns:96px auto minmax(0,1fr);align-items:center;column-gap:8px;row-gap:4px}.die-cell>label{grid-column:1 / -1;font-size:.78rem;color:var(--ink-soft)}.card .die-cell input.die,.campaign .die-cell input.die{width:96px;min-height:var(--tap);font-family:var(--serif);font-size:1.1rem;text-align:center;font-variant-numeric:tabular-nums}.die-roll{min-height:var(--tap);padding:0 12px;font:600 13px var(--sans);color:var(--ink-soft);background:var(--panel);border:1px solid var(--line);border-radius:6px;cursor:pointer}.die-roll:hover{color:var(--ink);border-color:var(--ink-soft)}.die-kit{display:inline-flex;align-items:center;min-height:var(--tap);padding:0 12px;font:600 13px var(--sans);color:var(--seal);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;text-decoration:none}.die-kit:hover{text-decoration:none;border-color:var(--seal-soft)}.die-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.die-gloss{grid-column:1 / -1;margin:0;font-family:var(--sans);font-size:.82rem;line-height:1.4;color:var(--ink-soft)}.die-gloss:empty{display:none}.die-hz{font-family:var(--hanzi);margin-right:6px}@media(min-width:560px){.die-gloss{grid-column:3;margin:0}}.die-groups:empty{display:none}.die-group{margin-top:12px;border-top:1px dashed var(--line);padding-top:8px}.die-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.die-group-name{font:600 13.5px var(--sans);color:var(--ink)}.die-drop{min-height:var(--tap);padding:0 10px;font:600 12.5px var(--sans);color:var(--muted);background:none;border:0;cursor:pointer}.die-drop:hover{color:var(--ink)}.die-fires{display:block;margin:2px 0 8px;line-height:1.4;font-family:var(--sans)}.die-picker{margin-top:12px;border-top:1px dashed var(--line);padding-top:8px}.die-picker>summary{cursor:pointer;font:600 13.5px var(--sans);color:var(--ink-soft)}.die-picker>summary:hover{color:var(--ink)}.die-picker>p{margin:6px 0 8px}.die-picker-list{list-style:none;margin:0;padding:0}.die-picker-list li{border-top:1px solid var(--line)}.die-picker-list li:first-child{border-top:0}.die-add{display:block;width:100%;min-height:var(--tap);padding:8px 0;text-align:left;background:none;border:0;cursor:pointer}.die-add-name{display:block;font:600 13.5px var(--sans);color:var(--ink)}.die-add:disabled .die-add-name{color:var(--muted)}.die-add:disabled{cursor:default}.die-add .die-fires{margin:2px 0 0;color:var(--muted);font-size:.82rem}.study-roll{margin-top:14px}.study-roll>.k{color:var(--muted);font-size:.78rem}.study-roll>p{margin:4px 0 8px}.study-roll .chips{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin-top:0}.study-roll .chip{padding:8px 0;text-align:center;justify-content:center}.study-roll-none{margin-top:10px}.study-roll-none[hidden]{display:none}.study-roll-none>p{margin:0 0 6px}.study-roll-none .chip{padding:0 14px;min-height:var(--tap);text-align:center}.study-arm.withheld{border-left-color:var(--seal)}.study-arm.withheld .study-arm-tag{color:var(--seal)}.card.locked>input,.card.locked>button{opacity:.55}.card.locked>button{cursor:not-allowed}.lock-note{margin:8px 0;padding:8px 10px;border-left:3px solid var(--warn);background:var(--panel-2);color:var(--ink-soft)}.lock-note.drifted{border-left-color:var(--seal);color:var(--ink)}.tui-print{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin:14px 0 24px}.tui-print .btn{text-decoration:none;display:inline-block}.tui-print .btn:hover{text-decoration:none}.tui-print .note{font:13px var(--sans);color:var(--muted)}@page{size:letter portrait;margin:12mm}.card-sheet{--sheet-w: 191.9mm;--card-h: 63mm;max-width:none}.card-sheet .sheet-bar{max-width:var(--sheet-w);margin:0 auto 22px}.card-sheet .sheet-bar h1{margin:0 0 6px}.card-sheet .sheet-bar .note{margin:0 0 10px}.card-sheet .sheet-actions{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin:0}.card-sheet .sheet-empty{max-width:var(--sheet-w);margin:0 auto;color:var(--ink-soft)}.sheet-page{width:var(--sheet-w);margin:0 auto 18px;display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(4,var(--card-h));background:var(--panel)}.flashcard{border:1px dashed var(--line);margin:-.5px;padding:6mm;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden}.flashcard .fc-symbol{font-family:var(--hanzi);font-size:56pt;line-height:1.1;color:var(--ink)}.flashcard .fc-word{font-family:var(--serif);font-size:20pt;line-height:1.25;color:var(--ink)}.flashcard .fc-text{font-family:var(--serif);font-size:17pt;line-height:1.35;color:var(--ink);overflow-wrap:anywhere}.reading-page h1{font-size:26px}.reading-page .note,.tui-reading .note{font:13px var(--sans);color:var(--muted)}.reading-page h4{margin:16px 0 6px;font:600 12px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.reading-page ul,.reading-page ol{margin:8px 0;padding-left:22px}.reading-page li{margin:6px 0;line-height:1.5}.reading-page p{line-height:1.55}.rp-toc{margin:16px 0 4px;padding:12px 14px 14px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px}.rp-toc-head{margin:0 0 8px;font:600 12px var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--seal)}.rp-toc ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.rp-toc li{margin:0}.rp-toc-link{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;text-align:left;font:500 14px var(--sans);color:var(--seal);background:var(--panel);border:1px solid var(--line);border-radius:999px;cursor:pointer}.rp-toc-link:hover{border-color:var(--seal-soft)}.rp-heading{display:flex;align-items:baseline;gap:10px;margin:0 0 10px}.rp-heading-text{flex:1;min-width:0}.rp-top{flex:none;min-height:40px;padding:0 10px;font:600 12px var(--sans);letter-spacing:.08em;text-transform:lowercase;color:var(--muted);background:none;border:0;cursor:pointer}.rp-top:hover{color:var(--seal)}.g-step{display:grid;grid-template-columns:minmax(0,1fr);gap:4px 24px;padding:12px 0;border-top:1px solid var(--line-soft)}.g-step:first-of-type{border-top:0}.g-do{min-width:0}@media(min-width:760px){.g-step{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.g-n{display:inline-block;min-width:26px;margin-bottom:2px;font:600 12px var(--sans);letter-spacing:.06em;color:var(--seal)}.g-action{margin:0 0 4px}.g-ref{margin:2px 0;font:12px var(--sans);color:var(--muted)}.g-branch{margin:6px 0 0;padding:6px 10px;font:13px var(--sans);background:var(--panel-2);border-left:3px solid var(--seal-soft);border-radius:0 6px 6px 0}.g-why{min-width:0;font:14px var(--sans);color:var(--ink-soft)}.g-why p{margin:0 0 6px;line-height:1.5}.g-steps-note{margin:20px 0 0}.g-slots{margin:6px 0 0;font:12px var(--sans);color:var(--muted)}.g-glyph{font-size:20px;margin-right:4px}.g-worked-meta{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px}.g-byhand li{margin:8px 0}.g-snag{margin-top:14px;padding:10px 14px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}.g-snag h4{margin-top:0;color:var(--seal)}.g-snag p:last-child{margin-bottom:0}.g-provenance{margin-top:18px}.g-provenance p{margin:6px 0}.g-table{border-collapse:collapse;font:14px var(--sans);margin:8px 0;min-width:420px}.g-table td,.g-table th{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top}.g-table th{background:var(--panel-2);font-weight:600}.g-table-plain{min-width:0}.g-table-plain td:first-child{white-space:nowrap;color:var(--muted)}.kit-faces{border-collapse:collapse;font:14px var(--sans);margin:6px 0;width:100%}.kit-faces td,.kit-faces th{border-bottom:1px solid var(--line-soft);padding:5px 10px;text-align:left;vertical-align:top}.kit-faces th{font:600 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.kit-face{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--seal);font-weight:600}.kit-tag{white-space:nowrap;color:var(--muted)}.kit-zh{font-family:var(--hanzi);white-space:nowrap}.kit-track{margin-top:14px}.kit-tagkey{margin:10px 0 0}.kit-foot{margin-top:18px}.kit-glosses{margin-top:12px}.kit-glosses summary{min-height:var(--tap);display:flex;align-items:center;font:600 13px var(--sans);color:var(--muted);cursor:pointer}.kit-glosses dl{margin:4px 0 0}.kit-glosses dt{margin-top:10px;font:600 14px var(--sans)}.kit-glosses dd{margin:2px 0 0;font:14px var(--sans);color:var(--ink-soft);line-height:1.45}.kit-rules{border-collapse:collapse;font:14px var(--sans);width:100%}.kit-rules td{border-bottom:1px solid var(--line-soft);padding:6px 10px;vertical-align:top}.kit-composition li{margin:4px 0}.kit-subordination li{margin:8px 0}.tui-reading{display:grid;gap:2px 12px;margin:14px 0 6px;padding:12px 16px;background:var(--panel-2);border:1px solid var(--line);border-radius:12px}.tui-reading a{display:flex;align-items:center;min-height:var(--tap);font:600 15px var(--sans);color:var(--seal)}@media(min-width:560px){.tui-reading{grid-template-columns:auto minmax(0,1fr);align-items:center}}@media print{.topbar,.topnav,.banners,.drill-exit,.card-sheet .sheet-bar{display:none!important}html,body,#app,.view{height:auto!important;overflow:visible!important;display:block!important}.card-sheet{padding:0}.sheet-page{width:100%;margin:0;background:transparent;break-after:page}.sheet-page:last-child{break-after:auto}.flashcard{break-inside:avoid}}.chip .lab .cn,.component .small .cn{white-space:nowrap}.print-lists{max-width:191.9mm;margin:0 auto}.print-lists .sheet-bar h1{margin:0 0 6px}.print-lists .sheet-bar .note{margin:0 0 10px}.print-lists .sheet-actions{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin:0 0 22px}.print-lists h2{margin:0 0 8px;font-size:20px}.pl-list{list-style:none;margin:0;padding:0}.pl-row{display:flex;gap:14px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line);break-inside:avoid}.pl-glyph{flex:none;width:2.2em;font:32px/1.1 var(--hanzi);text-align:center}.pl-body{min-width:0;flex:1;overflow-wrap:anywhere}.pl-title,.pl-reading{font-weight:600}.pl-scene,.pl-line{margin:3px 0 0;font-size:14px;line-height:1.4;white-space:pre-wrap}.print-lists-link{margin:4px 2px 8px}@media print{.print-lists .sheet-bar{display:none!important}.print-lists{padding:0;max-width:none}.pl-second{break-before:page}.print-lists h2{break-after:avoid}.pl-scene,.pl-line{font-size:11pt}}
