:root{font-family:"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:#344952;background:#f1f3f1;--ink:#253f4a;--muted:#839395;--gold:#b49a6a;--line:#dbe3e0;--accent:#678f87}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 0,#dce8e299,transparent 60%),#f1f3f1}button,input,select{font:inherit}button,a{touch-action:manipulation}button{border:1px solid #d3ddda;border-radius:5px;background:#fcfdfa;padding:9px 13px;color:#56716f;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#e4eee7;border-color:#8ba89d}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid #b59157;outline-offset:3px}a{color:inherit;text-decoration:none}header{height:88px;background:#213943;color:#e0e8e3;display:flex;justify-content:space-between;align-items:center;padding:0 40px;border-bottom:3px solid #c8b584}.brand{display:flex;align-items:center;gap:14px;font-family:serif;font-size:24px;letter-spacing:5px}.brand img{width:52px;height:52px}.brand small{display:block;font-family:system-ui;font-size:8px;letter-spacing:3px;margin-top:5px;color:#a6b8b8}nav{display:flex;align-items:center;gap:25px;font-size:11px}nav>span{font-size:10px;color:#9eafb0}nav button{background:none;color:#d9e1d6;border-color:#647771;font-size:11px}main{max-width:1600px;margin:auto;padding:32px 36px 22px}.intro{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:28px}.eyebrow{font-size:9px;letter-spacing:2.4px;color:#9b9577}h1{font-family:serif;font-size:34px;font-weight:500;letter-spacing:3px;margin:12px 0}h1 em{font-style:normal;color:#75918a}.intro p{font-size:11px;color:#849591;letter-spacing:.6px;margin:0}.chapter-progress{display:flex;align-items:center;gap:12px;position:relative;padding:0 15px 26px}.chapter-dot{border:1px solid #cbd8d1;border-radius:50%;height:32px;width:32px;display:grid;place-items:center;color:#a0afa7;font-family:serif;font-size:12px;background:#edf1ea}.chapter-dot.active{background:#486d66;border-color:#486d66;color:#f0ead7;box-shadow:0 0 0 4px #d9e4dc}.chapter-dot.complete{background:#b1c4b5;color:#456b60}.chapter-progress i{width:38px;height:1px;background:#c3d1c8}.chapter-progress small{position:absolute;bottom:0;width:100%;left:0;text-align:center;color:#a4aca0;letter-spacing:2px;font-size:8px}.summary{display:grid;grid-template-columns:1.5fr 1fr .8fr .8fr 165px;align-items:center;background:#fffef9;border:1px solid #d9e1d9;border-radius:7px;padding:20px 24px;gap:20px;margin-bottom:23px}.summary>div:not(:first-child){border-left:1px solid #e2e7dd;padding-left:27px}.summary small{display:block;color:#8a998e;font-size:10px;letter-spacing:1px}.summary strong{display:block;font-family:serif;font-size:27px;font-weight:500;margin-top:7px;letter-spacing:1px}.summary em{font:10px system-ui;color:#9ca895;letter-spacing:0;margin-left:5px}.chapter-summary{display:flex;align-items:center;gap:16px}.chapter-symbol{font-size:43px;color:#afa178}.chapter-summary small{font-size:8px;letter-spacing:2px}.chapter-summary strong{font-size:24px}.primary{background:#466d63;color:#f5f2dd;border-color:#466d63;font-size:12px;padding:13px 18px}.primary:hover{background:#36584f;color:#fff}.summary .primary{display:flex;justify-content:space-between;gap:12px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:23px;align-items:start}.battle-column{min-width:0}.board-panel{border:1px solid #c4d3c9;border-radius:7px;overflow:hidden;background:#d9e4df}.board-top{height:51px;background:#eaf0e9;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 18px;border-bottom:1px solid #c9d8cd}.board-top>div{display:flex;gap:7px;align-items:center}.board-top i{display:inline-block;width:6px;height:6px;background:#5c8b6f;border-radius:50%;margin-right:4px}.board-top b{font-size:12px;font-weight:500}.board-top span{font-size:8px;color:#879d90;letter-spacing:1.4px;margin-left:12px}.board-top button{padding:4px 8px;font-size:10px;background:transparent;min-width:29px;border-color:#c3d2c8}.board-top #assist{margin-left:7px;color:#557764}.board-scroll{overflow:auto;scrollbar-width:thin;scrollbar-color:#a3bcb0 #dce7df;max-height:780px}#board{display:block;width:100%;height:auto;min-height:360px}#board [role=button]{cursor:pointer;outline:none}#board [role=button]:focus polygon,#board [role=button]:hover polygon{stroke:#fff5b4;stroke-width:2.5}.tile-highlight{pointer-events:none}.board-legend{display:flex;align-items:center;gap:19px;padding:13px 17px;background:#eaf0e7;border-top:1px solid #c5d4c8;font-size:9px;color:#799182}.board-legend i{width:8px;height:8px;display:inline-block;border-radius:2px;margin-right:5px}.move-key{background:#80b8d5}.attack-key{background:#d99b92}.heal-key{background:#a6c998}.board-legend small{margin-left:auto;font-size:9px;color:#829582}.mission-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #d8dfd3;border-radius:6px;background:#e8ede2;padding:16px 20px;margin-top:15px}.mission{display:flex;align-items:center;gap:14px;flex:1}.mission>span{font-size:27px;color:#a99f76}.mission small{font-size:9px;color:#85937d}.mission p{font-size:11px;margin:5px 0 0;color:#667860}.mission b{font-size:10px;font-weight:400;white-space:nowrap;margin-left:auto;color:#967970}.mission-row>button{border:0;background:none;font-size:9px;color:#8e9b7b}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.section-heading h2{font-family:serif;font-size:19px;font-weight:500;letter-spacing:1px;margin:0}.section-heading h2 span{font-family:system-ui;font-size:8px;letter-spacing:1px;color:#9ba69a;margin-left:12px}.section-heading small{font-size:9px;color:#92a18f}.party{margin-top:27px}.roster{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:15px}.hero-card{padding:0;background:#fffef9;border:1px solid #d7dfd5;overflow:hidden;text-align:left;position:relative}.hero-card.selected{border-color:#8ea991;box-shadow:0 0 0 1px #8ea991}.hero-card.down{opacity:.45}.hero-card>svg{width:100%;height:105px;display:block;background:#e3ebe1}.hero-card .card-body{display:block;padding:12px}.hero-card b{font-family:serif;font-size:16px;font-weight:500;letter-spacing:1px;display:block}.hero-card small{font-size:9px;color:#8f9b88;display:block;margin-top:4px}.hero-card .card-status{position:absolute;top:9px;right:8px;border-radius:10px;background:#fffef2de;color:#6d896b;font-size:8px;padding:3px 7px}.hero-card progress{margin-top:10px;height:3px}.hero-card .card-body>span{display:block;font-size:8px;color:#8da18a;margin-top:6px}.unit-panel{border:1px solid #d5dfd4;background:#fffef9;border-radius:7px;padding:20px;overflow:hidden}.unit-panel>.section-heading>span{font-size:11px;letter-spacing:1px}.portrait{margin:17px -20px 0;background:radial-gradient(ellipse at center,#f3eedb,#dce5e2);height:163px;border-block:1px solid #e4e8d9;overflow:hidden}.portrait svg{width:100%;height:100%}.unit-heading{display:flex;justify-content:space-between;align-items:center;margin:20px 0}.unit-heading small{font-size:10px;color:#98a18a;letter-spacing:1px}.unit-heading h2{font-family:serif;font-size:29px;font-weight:500;margin:6px 0 0;letter-spacing:3px}.unit-heading>span{font-family:serif;font-size:15px;color:#ab9e78;border:1px solid #ddd9c4;border-radius:3px;padding:5px 8px}.vital{margin:14px 0}.vital>div{display:flex;justify-content:space-between;font-size:10px;color:#81907f}.vital b{font-size:10px;font-weight:500;color:#738371}progress{width:100%;height:5px;border:0;border-radius:4px;overflow:hidden;background:#e7ebdf;display:block;margin-top:8px}progress::-webkit-progress-bar{background:#e7ebdf}progress::-webkit-progress-value{background:#86a78a;border-radius:4px}progress::-moz-progress-bar{background:#86a78a}.magic progress::-webkit-progress-value{background:#a29dbf}.magic progress::-moz-progress-bar{background:#a29dbf}.attributes{display:grid;grid-template-columns:repeat(4,1fr);margin:21px 0 15px;border-block:1px solid #e4e7dc;padding:15px 0}.attributes>div{text-align:center;border-right:1px solid #e0e6db}.attributes>div:last-child{border:0}.attributes small{font-size:9px;color:#a0a893;display:block}.attributes b{font:21px serif;color:#667d69;display:block;margin-top:7px}.terrain-info{font-size:10px;color:#9a9e83;line-height:1.8;padding-bottom:16px}.commands{display:grid;grid-template-columns:1fr 1fr;gap:8px}.commands button{font-size:11px;padding:11px}.commands .active{background:#e6eee1;border-color:#88a17e;color:#49694f}.commands .skill{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;background:#eeeaf4;border-color:#d6cde4;color:#8c78a1}.commands .skill.active{background:#e1d8ef;border-color:#b79dcd}.skill small{font-size:9px}.commands p{grid-column:1/-1;color:#9c9d92;font-size:9px;line-height:1.8;margin:0 0 5px}.commands #guard{grid-column:1/-1;display:flex;justify-content:space-between;background:#f2f2e9;border-color:#dcdcca;color:#919075}.commands #guard span{font-size:9px}.action-hint{font-size:10px;color:#869887;line-height:1.8;margin-top:16px}.journal{margin-top:17px;padding:19px;border:1px solid #dce3d8;border-radius:6px;background:#e9eee6}.journal h2{font-size:16px}.journal button{font-size:9px;background:none;border:0;padding:0}.journal p{font-size:10px;color:#88987f;line-height:1.9;margin:12px 0;padding-bottom:10px;border-bottom:1px solid #dce3d2}.journal p:last-child{border:0;padding:0;margin-bottom:0}.notice{font-size:11px;color:#6c8972;border-left:3px solid #a5b49a;background:#e7eddf;margin-top:24px;padding:14px 18px;line-height:1.7}.notice.error{border-color:#be9686;color:#a06f65}footer{display:flex;align-items:center;justify-content:space-between;color:#9aa68d;font-size:9px;padding-top:19px;gap:15px}footer small{font-size:8px;margin-left:16px}footer>div{display:flex;gap:7px;flex-wrap:wrap}footer button{border:0;background:none;color:#8d9d81;font-size:9px;padding:5px}dialog{border:1px solid #cbd7ca;border-radius:13px;padding:35px;max-width:640px;width:calc(100% - 32px);max-height:88dvh;overflow:auto;background:#fafbf4;color:#486054;box-shadow:0 22px 100px #142e4166}dialog::backdrop{background:#152e37a8;backdrop-filter:blur(7px)}dialog h2{font-family:serif;font-size:28px;font-weight:500;letter-spacing:2px;margin:15px 0}dialog p,dialog li{font-size:12px;color:#8c9a83;line-height:2}dialog ol{padding-left:22px}dialog li{margin-bottom:11px}dialog .eyebrow{font-size:8px;color:#a2a180}.close{position:absolute;top:12px;right:14px;font-size:20px;border:0;background:none;padding:3px 10px;color:#7b8e7a}.wide{width:100%;margin-top:14px}dialog>small{display:block;font-size:9px;text-align:center;color:#a3ab98;margin-top:18px}label{display:block;font-size:11px;color:#889982;margin:20px 0 9px}select{width:100%;padding:12px;border:1px solid #d4ddca;border-radius:5px;background:#f1f4e8;color:#708568;font-size:12px}.dialog-crest{font-size:50px;text-align:center;color:#b3a375;margin-bottom:10px}#start-dialog{text-align:center}#start-dialog label{text-align:left}.start-heroes{display:flex;justify-content:center;gap:14px;margin:20px 0}.start-heroes svg{width:104px;height:125px;border-radius:50px 50px 8px 8px;border:1px solid #dae1d0;background:#e8eedf}.camp-crystals{background:#eff0e0;border:1px solid #dbdfc3;border-radius:6px;padding:14px;font-size:12px;color:#a69d6d}.camp-crystals b{font:24px serif;margin-left:10px}.upgrade-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e1e7d7;padding:15px 0;gap:12px}.upgrade-row b{font:17px serif;letter-spacing:1px}.upgrade-row small{display:block;font-size:10px;color:#9aa58d;margin-top:5px}.upgrade-row button{font-size:11px}.report-line{border-bottom:1px solid #e1e7d7;padding:12px 0;font-size:12px;line-height:1.9;color:#819479}[hidden]{display:none!important}
@media(min-width:1500px){.workspace{grid-template-columns:minmax(0,1fr) 320px}.unit-panel{padding:23px}.portrait{margin-inline:-23px}}
@media(max-width:1150px){main{padding:25px}.workspace{grid-template-columns:minmax(0,1fr) 270px;gap:17px}.intro h1{font-size:28px}.chapter-progress{display:none}.summary{grid-template-columns:1.4fr 1fr .7fr .6fr 140px;gap:13px;padding:18px}.summary>div:not(:first-child){padding-left:18px}.summary strong{font-size:22px}.summary em{font-size:8px}.chapter-summary{gap:8px}.chapter-symbol{font-size:33px}.chapter-summary strong{font-size:20px}.board-top{padding-inline:12px}.board-top span{display:none}.board-legend small{display:none}.mission-row{padding:14px}.mission-row>button{display:none}.roster{gap:8px}.hero-card>svg{height:87px}.hero-card .card-body{padding:10px}.hero-card b{font-size:14px}.party .section-heading small{display:none}}
@media(max-width:800px){header{padding-inline:20px;height:75px}.brand{font-size:21px;gap:9px}.brand img{width:43px;height:43px}.brand small{font-size:7px;letter-spacing:2px}nav{gap:12px;font-size:9px}nav>span{display:none}nav button{font-size:9px;padding:7px}main{padding:24px 18px}.workspace{grid-template-columns:1fr}.intro{margin-bottom:20px}.intro h1{font-size:29px}.summary{grid-template-columns:1.4fr 1fr .8fr .8fr}.summary .primary{grid-column:1/-1;text-align:center;justify-content:center;padding:11px}.summary>div:not(:first-child){padding-left:12px}.summary small{font-size:9px}.chapter-summary strong{font-size:19px}.chapter-symbol{display:none}.summary strong{font-size:23px}.summary em{font-size:9px}.summary #round em{display:block;margin:2px 0 0}.board-scroll{max-height:650px}#board{min-height:300px}.mission-row>button{display:block}.roster{gap:12px}.hero-card>svg{height:120px}.hero-card b{font-size:17px}.hero-card small{font-size:10px}.hero-card .card-status{font-size:9px}.hero-card .card-body{padding:12px}.workspace aside{display:grid;grid-template-columns:1fr 1fr;gap:15px}.journal{margin-top:0}.unit-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.unit-panel>.section-heading{grid-column:1/-1}.portrait{grid-column:1;grid-row:2;height:125px;margin:15px 0 10px;border-radius:6px}.unit-heading{grid-column:2;grid-row:2;display:block;margin:20px 0 0}.unit-heading h2{font-size:24px;margin-bottom:10px}.unit-heading>span{font-size:12px}.unit-heading small{font-size:9px}.vital{grid-column:1/-1;margin:7px 0}.attributes{grid-column:1/-1;margin:15px 0 12px}.terrain-info,.commands,.action-hint{grid-column:1/-1}.journal h2{font-size:19px}.journal p{font-size:11px}.notice{margin-top:17px}footer{flex-wrap:wrap}}
@media(max-width:480px){header{padding-inline:12px;height:69px}.brand{font-size:18px;letter-spacing:3px}.brand img{width:36px;height:36px}.brand small{font-size:6px}.brand{gap:6px}nav{gap:9px;font-size:8px}nav button{padding:6px;font-size:8px}main{padding:22px 12px 16px}.eyebrow{font-size:7px;letter-spacing:1.5px}h1,.intro h1{font-size:26px;letter-spacing:1px;margin:13px 0}.intro p{font-size:10px;line-height:1.9;max-width:310px}.summary{padding:15px;gap:12px;grid-template-columns:1fr 1fr 1fr}.chapter-summary{grid-column:1/-1;padding-bottom:13px;border-bottom:1px solid #e0e6d7;position:relative}.chapter-symbol{display:block;font-size:33px;margin-right:5px}.chapter-summary strong{font-size:22px;margin-top:4px}.chapter-summary small{font-size:8px}.summary>div:nth-child(2){border:0;padding-left:0}.summary>div:nth-child(3),.summary>div:nth-child(4){padding-left:15px}.summary strong{font-size:24px}.summary #round em{display:inline;margin-left:3px;font-size:8px}.summary>div>small{font-size:9px}.summary .primary{margin-top:3px}.board-top{height:48px;padding-inline:10px;gap:6px}.board-top b{font-size:10px}.board-top>div{gap:3px}.board-top button{font-size:9px;padding:5px 6px;min-width:26px}.board-top #assist{margin-left:3px;font-size:9px}.board-legend{gap:16px;padding:11px;font-size:8px}#board{min-height:295px}.board-scroll{max-height:530px}.mission-row{padding:12px}.mission{gap:9px}.mission>span{font-size:23px}.mission small{font-size:8px}.mission p{font-size:9px;line-height:1.7}.mission b{font-size:8px}.mission-row>button{display:none}.party{margin-top:21px}.section-heading h2{font-size:18px}.section-heading h2 span{font-size:7px;margin-left:8px}.roster{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px}.hero-card>svg{height:76px}.hero-card .card-body{padding:9px 7px}.hero-card b{font-size:12px;letter-spacing:0}.hero-card small{font-size:7px}.hero-card .card-status{font-size:6px;right:3px;top:5px;padding:3px 5px}.hero-card .card-body>span{font-size:7px}.workspace aside{grid-template-columns:1fr}.unit-panel{padding:18px;grid-template-columns:120px 1fr;column-gap:23px}.portrait{height:139px;margin-top:16px}.unit-heading{margin-top:36px}.unit-heading h2{font-size:30px}.unit-heading small{font-size:10px}.vital{margin-top:9px}.attributes{margin-top:18px}.attributes b{font-size:24px}.commands button{font-size:12px;padding:12px}.commands p{font-size:10px}.terrain-info{font-size:10px}.journal{padding:18px}.journal p{font-size:10px}.journal h2{font-size:18px}.notice{font-size:10px;padding:12px}.action-hint{font-size:11px}footer{font-size:8px;gap:8px}footer small{display:block;margin:6px 0;font-size:7px}footer>div{width:100%;gap:3px;justify-content:space-between}footer button{font-size:8px;padding:5px 2px}dialog{padding:28px 20px}dialog h2{font-size:25px;letter-spacing:1px;line-height:1.5}dialog p{font-size:11px}.start-heroes{gap:7px}.start-heroes svg{width:65px;height:93px}.dialog-crest{font-size:42px}.upgrade-row b{font-size:16px}.upgrade-row button{font-size:10px;padding:9px}.upgrade-row small{font-size:9px}}
.battle-actions{display:none}@media(max-width:800px){.battle-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:12px}.battle-actions button{padding:11px 3px;font-size:10px}.battle-actions .active{background:#dce8d7;border-color:#94ac89;color:#57754f}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Model presentation keeps the board's pastel palette and sharp SVG detail. */
.hero-card>svg{height:128px;background:linear-gradient(145deg,#f5f4e8,#dfe9e6)}
.portrait{height:192px;background:radial-gradient(ellipse at 50% 35%,#fffaf0,#dce7e5)}
#board [data-unit]:hover .unit-model,#board [data-unit]:focus-visible .unit-model{filter:drop-shadow(0 0 2px #fff4c3)}
@media(max-width:1150px) and (min-width:801px){.hero-card>svg{height:106px}}
@media(max-width:800px){.portrait{height:148px}.hero-card>svg{height:135px}}
@media(max-width:480px){.hero-card>svg{height:99px}.portrait{height:155px}.hero-card .card-status{top:5px;right:3px}}

.board-top>div:first-child{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.board-top>div:first-child small{flex-basis:100%;margin-left:18px;color:#d7e6d3;font-size:9px;letter-spacing:.08em}.battle-settings{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:18px 0 22px;padding:14px 16px;border:1px solid #d2dfd4;background:#f4f7ee;border-radius:4px}.battle-settings div{display:grid;gap:4px}.battle-settings b{font-size:14px;color:#46645c}.battle-settings small{font-size:11px;color:#74857c}.battle-settings select{min-width:190px;padding:9px 10px;border:1px solid #aabda9;border-radius:3px;background:#fff;color:#3e5754;font:inherit;font-size:11px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:560px){.battle-settings{align-items:stretch;flex-direction:column;gap:10px}.battle-settings select{width:100%}}
