:root{color-scheme:dark;--ink:#f0eee6;--muted:#b3b8b7;--gold:#d3bb8f;--line:#cfbd9738;--glass:#111c20ed}*{box-sizing:border-box}body{margin:0;background:#0d1519;color:var(--ink);font:14px/1.6 "Microsoft YaHei",sans-serif;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:4px}#scenery,.veil{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.veil{background:linear-gradient(180deg,#0a13154d 0%,#0a141547 45%,#071015df 100%);z-index:-1}header{height:88px;display:flex;justify-content:space-between;align-items:center;padding:0 4vw;border-bottom:1px solid #ffffff15;background:#0b14172e}.brand{border:0;background:none;text-align:left;font:17px Georgia,serif;letter-spacing:3px;line-height:1.2}.brand span{display:block;font-size:10px;letter-spacing:3.4px}.header-right{display:flex;gap:18px;align-items:center}.edition{color:var(--gold);font-size:11px;letter-spacing:2px}.quiet{background:#11202588;border:1px solid #ffffff30;padding:7px 16px;border-radius:2px}.quiet:hover{background:#2e3b3f}.title-screen{min-height:calc(100vh - 152px);display:flex;align-items:center;flex-direction:column;justify-content:center;text-align:center;padding:50px 24px 65px;text-shadow:0 2px 24px #071419}.eyebrow{font:10px/1.5 "Microsoft YaHei",sans-serif;letter-spacing:4px;color:var(--gold);margin:0 0 26px}h1{font:clamp(34px,5.6vw,86px)/.95 Georgia,"Times New Roman",serif;letter-spacing:.1em;font-weight:400;margin:0}h1 span{font-size:.63em;letter-spacing:.14em;line-height:1.4}h1 b{font-size:1.45em;font-weight:400;vertical-align:-.04em}.title-rule{height:1px;width:260px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:22px 0 8px}.chinese-title{font:18px "SimSun",serif;color:#e9e3d2;letter-spacing:5px;margin:12px 0 35px}.title-actions{display:flex;flex-direction:column;gap:16px;align-items:center}.primary{min-width:265px;padding:13px 24px;background:#e5d8bc;color:#172227;border:1px solid #efe9d9;box-shadow:0 4px 28px #0003;text-align:left;letter-spacing:2px}.primary span{float:right}.primary:hover{background:#fff3d8}.text-button{background:none;border:0;border-bottom:1px solid #e6d8ba77;padding:5px 10px;color:#eee6d5;letter-spacing:3px}.title-note{font-size:11px;letter-spacing:2px;color:#d9dedbc0;margin-top:42px}footer{display:flex;gap:16px;justify-content:space-between;padding:18px 4vw;font-size:10px;letter-spacing:1px;color:#a9b7b8;min-height:64px;background:#09131799}#workbench[hidden],section[hidden]{display:none}.workbench{max-width:1440px;margin:32px auto;min-height:calc(100vh - 216px);background:var(--glass);border:1px solid var(--line);box-shadow:0 20px 80px #0006;backdrop-filter:blur(20px)}nav{display:flex;padding:0 28px;border-bottom:1px solid var(--line);gap:28px}nav button{padding:20px 5px;background:none;border:0;color:#9da8a9;white-space:nowrap}nav button.active{color:var(--gold);box-shadow:inset 0 -2px var(--gold)}nav .back-title{margin-left:auto;font-size:11px;color:var(--muted)}#content{padding:36px 42px 42px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px}.section-heading .eyebrow{margin-bottom:7px}.section-heading h2{font:30px "SimSun",serif;letter-spacing:4px;margin:0}.subtle{color:var(--muted);font-size:12px}.characters{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.character-card{position:relative;text-align:left;padding:20px;background:linear-gradient(155deg,#273337bb,#142027bb);border:1px solid #a6b4b320;min-height:244px;overflow:hidden}.character-card:hover{border-color:var(--gold);background:#2a373e}.character-card .number{font:11px Georgia,serif;letter-spacing:3px;color:#a5acaa}.character-card .character-visual{height:105px;display:flex;justify-content:center;align-items:center}.character-visual canvas{image-rendering:pixelated;max-width:100%;height:110px}.character-card h3{margin:8px 0 0;font:23px "SimSun",serif;letter-spacing:2px}.character-card p{margin:6px 0 0;color:var(--gold);font-size:11px;letter-spacing:2px}.character-card small{display:block;font:10px monospace;color:#8fa4a8;margin-top:5px}.letter-sigil{font:60px Georgia,serif;color:#c5b98a25}.data-controls{display:flex;gap:16px;margin-bottom:20px}select,input{background:#0d191e;color:var(--ink);border:1px solid #4a5b5e;padding:11px 14px;min-width:0}select{min-width:210px}input{flex:1}.table-wrap{overflow:auto;max-height:56vh;border:1px solid var(--line)}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}th{position:sticky;top:0;background:#263438;padding:13px 18px;color:#c5d0ce;font-weight:400;letter-spacing:1px}td{padding:12px 18px;border-bottom:1px solid #ffffff0d;white-space:nowrap}td:first-child{font:11px monospace;color:#b8c9cd}tbody tr:hover{background:#ffffff06}.row-detail{background:transparent;border:1px solid #c3b58d55;color:var(--gold);padding:3px 12px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:16px;gap:14px}.pagination button,.secondary{background:#233136;border:1px solid #8b9e9a55;padding:7px 16px}.progress-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.panel{padding:24px;border:1px solid var(--line);background:#1b2a3066}.panel h3{margin:0 0 16px;font-size:17px;font-weight:400;color:var(--gold)}.panel p{color:#b9c6c5;font-size:12px;line-height:1.9}.metric{font:35px Georgia,serif;color:#eee4cf}.status-line{padding:12px 0;border-bottom:1px solid #ffffff10;display:flex;justify-content:space-between;font-size:12px;gap:20px}.good{color:#9bc6b0}.pending{color:#d2ba91}dialog{background:#15252a;color:#e5e9e5;border:1px solid #a6976c;width:min(1000px,90vw);max-height:85vh;padding:28px}dialog::backdrop{background:#031014b8;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:start}.dialog-head .eyebrow{margin:0 0 6px}.dialog-head h2{margin:0;font:24px "SimSun",serif}.dialog-head button{border:0;background:none;font-size:20px}#detail-source{font:11px/1.8 monospace;color:#9cb8b9;overflow-wrap:anywhere}pre{font:12px/1.6 Consolas,monospace;background:#0e1c20;padding:20px;overflow:auto;white-space:pre-wrap;word-break:break-word}.error{color:#e8b8a9;padding:20px;border:1px solid #a87460}.rule-form{display:flex;gap:14px;align-items:end;flex-wrap:wrap}.rule-form label{display:flex;flex-direction:column;gap:6px;color:#afbfbd;font-size:12px}.rule-form input{width:140px}.result{font:24px Georgia,serif;color:var(--gold);padding:22px 0}.inline-code{font-family:Consolas,monospace}.empty-state{padding:48px 20px;text-align:center;color:var(--muted)}@media(min-width:1550px){.workbench{margin-top:45px}}@media(max-width:900px){.characters{grid-template-columns:repeat(2,1fr)}.workbench{margin:16px}#content{padding:24px}header{padding:0 20px}.edition{display:none}.progress-grid{grid-template-columns:1fr}nav{gap:18px;padding:0 20px}.section-heading{align-items:start;flex-direction:column}footer{flex-direction:column;gap:5px}.data-controls{flex-wrap:wrap}}@media(max-width:520px){header{height:72px}.brand{font-size:12px}.brand span{font-size:8px}.header-right{gap:8px}.quiet{padding:6px 9px;font-size:11px}.title-note{max-width:240px;line-height:2.2}.workbench{margin:10px}nav{gap:15px;overflow:auto;padding:0 15px}nav button{font-size:12px;padding:16px 0}nav .back-title{display:none}#content{padding:20px 14px}.character-card{padding:15px;min-height:220px}.character-card h3{font-size:19px}.data-controls>*{width:100%}.pagination{font-size:10px}td,th{padding:10px}.section-heading h2{font-size:25px}}

.battle-scope{color:var(--muted);font-size:12px;margin:-8px 0 22px}.encounter-board{border:1px solid var(--line);background:#101c21}.turn-strip{padding:14px 24px;display:flex;gap:24px;border-bottom:1px solid var(--line);color:var(--gold)}.turn-strip span{color:#b4c4c4;font-size:12px}.combat-stage{display:grid;grid-template-columns:1fr 1fr;gap:8%;max-width:900px;margin:auto;padding:20px 20px 0}.combat-actor{min-width:0;text-align:center}.actor-label{display:flex;justify-content:center;gap:14px;align-items:center}.actor-label b{font:21px 'SimSun',serif;letter-spacing:3px}.actor-label span{font:12px Georgia,serif;color:var(--gold)}.combat-actor canvas{width:100%;max-width:340px;image-rendering:pixelated;display:block;margin:0 auto}.health-meter{height:5px;background:#314449;margin:5px 0 9px;overflow:hidden}.health-meter i{display:block;height:100%;background:#79a99b;transition:width .25s}.enemy .health-meter i{background:#c29a70}.actor-extra{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:9px;font-size:11px;color:var(--muted)}.break-label{color:#edb477}.bp-label{color:#d8bd77;letter-spacing:2px}.stage-caption{color:#92a4a6;font-size:10px;text-align:center;margin:25px 16px 0}#encounter-result{padding:20px 24px 5px;color:var(--gold);min-height:54px}.combat-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap;padding:20px 24px 24px}.combat-controls label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted)}.combat-controls select{min-width:100px}.combat-controls .primary{min-width:180px;letter-spacing:1px}.boost-control{display:flex;align-items:center;gap:8px;margin-right:auto;height:46px;font-size:12px}.boost-control button{background:#27363a;border:1px solid var(--line);padding:5px 12px}.battle-bottom{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;margin-top:20px}.combat-log{max-height:270px;overflow:auto;margin:0;padding-left:20px;font-size:12px;color:#c7d1cf}.combat-log li{padding:5px 0;border-bottom:1px solid #ffffff09}.source-id{overflow-wrap:anywhere;font:10px Consolas,monospace!important}details summary{color:var(--gold);cursor:pointer;font-size:12px}#combat-stat-data{font-size:10px;max-height:200px}.battle-bottom .panel{min-width:0}@media(max-width:700px){.battle-bottom{grid-template-columns:1fr}.combat-stage{gap:20px;padding:20px 14px 0}.combat-actor canvas{height:auto}.actor-label{gap:7px}.actor-label b{font-size:17px}.combat-controls{padding:16px;gap:12px}.combat-controls .primary{min-width:150px}.turn-strip{padding:12px 16px;flex-direction:column;gap:4px}.actor-extra{font-size:10px}.combat-stage{gap:14px}.boost-control{margin-right:0}.combat-controls select{min-width:80px}.combat-controls .secondary{padding:12px}} 
