:root{color-scheme:dark;--gold:#e1bd76;--muted:#b9b3a2;--paper:#ebe2ce}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{font:15px "Microsoft JhengHei",system-ui,sans-serif;background:#151811;color:var(--paper)}button,select{font:inherit;color:inherit;border:1px solid #756348;background:#292c24;padding:8px 12px;border-radius:3px}button{cursor:pointer}button:hover{background:#484632;border-color:#e4c485}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,select:focus-visible{outline:2px solid #f5d493;outline-offset:2px}header{height:62px;display:flex;gap:24px;align-items:center;padding:0 20px;background:linear-gradient(#343c32,#222820);border-bottom:3px double #96835a;position:relative;z-index:2;box-shadow:0 4px 18px #0006}.brand{font-family:Georgia,"PMingLiU",serif;font-weight:bold;font-size:22px;color:var(--gold);white-space:nowrap}.brand span{display:block;letter-spacing:5px;font-size:10px;color:#c3c6ae;margin-top:3px}#resources{display:flex;gap:26px;flex:1}.res{display:grid;grid-template-columns:auto auto;column-gap:9px;align-items:center}.res label{font-size:13px;color:var(--muted)}.res b{font-size:20px;font-variant-numeric:tabular-nums}.res small{grid-column:2;font-size:10px;color:#a8b89a}.top-actions{display:flex;align-items:center;gap:7px;font-size:13px}.top-actions button{font-size:13px;padding:6px 8px}#clock{font-variant-numeric:tabular-nums}main{height:calc(100dvh - 260px);position:relative;overflow:hidden;background:#233e4b}#battle{display:block;width:100%;height:100%;touch-action:none;cursor:default}.chapter{position:absolute;top:20px;left:24px;pointer-events:none;text-shadow:0 2px 5px #000}.chapter small{font-size:12px;letter-spacing:3px;color:#efddac}.chapter .year{display:block;letter-spacing:2px;color:#d0d7be;margin-top:-2px}.chapter .year:empty{display:none}.chapter h1{font-size:23px;letter-spacing:4px;margin:5px 0;font-family:Georgia,"PMingLiU",serif}.chapter p{font-size:12px;margin:4px 0;color:#d0d7be}.goals{position:absolute;right:20px;top:18px;background:#172119bc;border:1px solid #777b4f;padding:12px 16px;font-size:12px;line-height:1.9;pointer-events:none;color:#d5d9c6}.goals b{display:block;color:var(--gold);font-size:13px}#toast{position:absolute;bottom:35px;left:50%;transform:translateX(-50%);padding:12px 24px;background:#15251deb;border:1px solid #c4a768;opacity:0;pointer-events:none;max-width:80%;border-radius:3px;transition:opacity .15s}#toast.visible{opacity:1}.view-buttons{position:absolute;bottom:12px;left:16px;display:flex;gap:5px}.view-buttons button{font-size:12px;padding:6px 10px;background:#202b22dc}#eventLog{position:absolute;bottom:15px;right:18px;font-size:12px;text-align:right;text-shadow:0 2px 3px #000;pointer-events:none;line-height:1.8;color:#e0ddc7}.command-deck{height:198px;display:grid;grid-template-columns:310px minmax(0,1fr) 230px;background:linear-gradient(135deg,#34372b,#252a22);border-top:4px double #a28b5b;padding:12px 18px;gap:20px;box-shadow:0 -4px 25px #0005;position:relative}.selection-info{border-right:1px solid #655e42;padding-right:18px}.selection-title{display:flex;justify-content:space-between;align-items:center}.selection-title h2{font-family:Georgia,"PMingLiU",serif;font-size:19px;color:#edcf8e;margin:0 0 5px}.selection-title span{font-size:12px;color:#bac1a9}.selected-body{display:flex;gap:12px;align-items:center}.selected-body>div{flex:1;min-width:0}#portrait{width:85px;height:85px;background:#1c241b99;border:1px solid #7b7154}.health{height:5px;background:#12180f;margin-top:7px}.health i{height:100%;display:block;background:#94ba63}#selectionStats{font-size:13px;line-height:1.7}#selectionTask{font-size:12px;color:#c0bca7;margin:6px 0}#queue{font-size:12px;line-height:1.7;color:#d9cba6;margin-top:7px}#group{display:flex;flex-wrap:wrap;gap:3px;margin-top:6px;max-height:44px;overflow:hidden}#group .thumb{width:36px;height:34px;background:#1c241b99;border:1px solid #6d6548;cursor:pointer;border-radius:2px}#group .thumb:hover{border-color:#e4c485}#group span{font-size:11px;color:#c0bba3;align-self:center}dialog label.check{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#dfc28a}dialog label.check input{width:18px;height:18px;accent-color:#e1bd76}dialog label.check small{width:100%;font-size:11px;color:#a9b19d;margin-left:26px}.orders-heading{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:#e1c58f;margin-bottom:9px}#hint{font-size:11px;color:#b1b7a2}.orders{overflow:auto}#actions{display:flex;gap:7px;flex-wrap:wrap}.order{position:relative;width:93px;min-height:105px;padding:5px 4px;background:linear-gradient(#4b503b,#2e372a);text-align:center}.order canvas{display:block;width:48px;height:43px;margin:auto}.order span{font-size:12px;display:block}.order small{font-size:10px;display:block;color:#c0bba3;margin-top:3px}.minimap-wrap{border:2px ridge #ab9060;background:#172015;position:relative;align-self:start;justify-self:end}.minimap-wrap canvas{width:208px;height:147px;display:block;cursor:crosshair;touch-action:none}.minimap-wrap span{font-size:10px;text-align:center;display:block;background:#202419;color:#c1b898;padding:3px}dialog{width:min(550px,94vw);color:var(--paper);border:1px solid #ad925b;border-radius:5px;background:linear-gradient(140deg,#293c2c,#1c281e);padding:34px;box-shadow:0 35px 100px #000a;max-height:94dvh;overflow:auto}dialog::backdrop{background:#0c150cbb;backdrop-filter:blur(5px)}dialog h2{font-family:Georgia,"PMingLiU",serif;font-size:35px;line-height:1.4;color:#f1e4c1;margin:13px 0}dialog p{font-size:14px;line-height:1.9;color:#bdc6b2}.eyebrow{font-size:11px;letter-spacing:2px;color:#d0b47b}dialog label{display:block;font-size:14px;color:#dfc28a;margin:16px 0}dialog select{display:block;width:100%;margin-top:7px;padding:10px;background:#18231b}.form-row{display:flex;gap:15px}.form-row label{flex:1;margin-top:0}.brief{border-top:1px solid #536049;padding:15px 0;font-size:13px;line-height:1.9;color:#bdc6b2}.primary{background:linear-gradient(#e7c582,#c9a45d);color:#20291c;font-weight:bold;border:1px solid #eedca2;width:100%;padding:13px}.primary:hover{background:#edcc8a;color:#1c271a}#resume,#help{margin-top:10px;width:100%}#helpDialog h2{font-size:27px}@media(max-width:1000px){header{gap:12px;padding:0 12px}.brand{font-size:18px}#resources{gap:12px}.res b{font-size:17px}.res label{font-size:11px}.command-deck{grid-template-columns:240px 1fr 184px;padding:10px;gap:12px}.minimap-wrap canvas{width:174px;height:147px}#hint{display:none}.order{width:75px}.goals{max-width:230px}.selected-body{gap:7px}#portrait{width:65px;height:75px}}@media(max-width:700px){header{height:91px;flex-wrap:wrap;gap:3px 10px;padding:7px 10px}.brand{font-size:17px}.brand span{display:none}#resources{width:100%;order:3;justify-content:space-between;flex:auto}.res{column-gap:5px}.res b{font-size:16px}.res small{display:none}.top-actions{margin-left:auto;font-size:12px}.top-actions button{font-size:11px}main{height:calc(100dvh - 291px)}.command-deck{height:200px;grid-template-columns:135px minmax(0,1fr);gap:10px}.minimap-wrap{position:fixed;right:10px;top:100px;opacity:.9}.minimap-wrap canvas{width:106px;height:93px}.minimap-wrap span{display:none}.goals{display:none}.chapter{left:12px;top:12px}.chapter h1{font-size:19px}.chapter p{max-width:200px;font-size:10px}.selection-info{padding-right:8px}.selection-title h2{font-size:15px}.selected-body{display:block}#portrait{display:none}#group{display:none}#selectionStats{font-size:12px}#selectionTask{font-size:11px}.order{width:67px;min-height:73px}.order canvas{width:32px;height:28px}.order span{font-size:11px}.order small{font-size:9px}#eventLog{display:none}.view-buttons{left:8px;gap:3px}.view-buttons button{padding:5px;font-size:11px}dialog{padding:24px}dialog h2{font-size:28px}}
#speechCaption{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);max-width:70%;padding:9px 18px;background:#162019de;color:#f7e8c1;border-radius:4px;pointer-events:none;font-size:15px;text-align:center}#speechCaption:empty{display:none}#terrainLabel{position:absolute;left:24px;top:115px;font-size:11px;color:#d9dfc9;text-shadow:0 1px 3px #000;pointer-events:none}#audioDialog input[type=range]{width:100%;margin-top:12px}#closeAudio{width:100%;margin-top:12px}@media(max-width:700px){#terrainLabel{top:91px;left:12px;font-size:10px}#speechCaption{font-size:13px;max-width:85%}}

/* Strategy-game shell: metal trim, recessed controls and a campaign menu. */
:root{--gold:#d9b877;--muted:#aaa394;--paper:#eee6d5;--edge:#766344;--panel:#242622}
body{display:grid;grid-template-rows:72px minmax(0,1fr) 218px;background:#101411}
[hidden]{display:none!important}
button,select{border-radius:2px;box-shadow:inset 0 1px #ffffff0c,0 2px 4px #0003;transition:background .15s,border-color .15s,box-shadow .15s}
button{background:linear-gradient(#383b33,#242720);border-color:#706044}
button:hover:not(:disabled){background:linear-gradient(#4a4b3c,#34382d);border-color:#d9b877;box-shadow:inset 0 1px #ffffff15,0 0 12px #d9b87712}
button:active:not(:disabled){box-shadow:inset 0 2px 6px #0007}
header{height:auto;gap:24px;padding:0 22px;background:repeating-linear-gradient(0deg,#ffffff02 0 1px,transparent 1px 4px),linear-gradient(#30332c,#1b201c);border-bottom:3px double #a68b59;box-shadow:0 4px 20px #0009}
.brand{font-size:23px;letter-spacing:3px;text-shadow:0 2px 2px #000}.brand span{font-family:Georgia,serif;letter-spacing:4px;font-size:8px;color:#a79a7c;margin-top:5px}
#resources{gap:0;align-self:stretch;align-items:center}.res{min-width:106px;padding:4px 18px;border-left:1px solid #96815b30;column-gap:10px}.res b{font-family:Georgia,"Microsoft JhengHei",serif;font-size:24px;color:#f7ecd0;text-shadow:0 2px 2px #000}.res label{font-size:12px;color:#c0b49c}.res small{color:#a0b394;font-size:10px}.res:last-child{border-right:1px solid #96815b30}
.top-actions{gap:6px}.top-actions button{padding:8px 10px;font-size:12px}#clock{font:14px Consolas,monospace;color:#cfbd98;margin-right:8px}
main{height:auto;min-height:0}.chapter{top:20px;left:22px;padding:0 0 0 13px;border-left:2px solid #d9b877a0}.chapter small{font-size:10px;letter-spacing:2px}.chapter h1{font-size:22px;letter-spacing:3px;margin:4px 0}.chapter p{font-size:11px;color:#e0dfcc}.goals{top:18px;right:18px;background:linear-gradient(110deg,#161d18ed,#19221bcc);border:1px solid #ad945850;border-top:2px solid #ad9458a0;box-shadow:0 4px 18px #0004;padding:11px 16px;font-size:11px}.goals b{letter-spacing:2px;font-size:12px;margin-bottom:3px}#terrainLabel{left:37px;top:110px;font-size:10px;color:#c3cdb8}
.view-buttons{left:18px;bottom:14px;gap:5px}.view-buttons button{background:linear-gradient(#30392eee,#1c251dee);border-color:#8a7955;font-size:11px;padding:8px 12px;box-shadow:0 3px 8px #0005}#zoomIn,#zoomOut{width:34px;padding:8px 0}#eventLog{font-size:11px;line-height:1.9;color:#e4dbc3;right:20px}#toast{background:#171f18f5;border:1px solid #b79a60;box-shadow:0 5px 25px #0007;color:#f4e4be;font-size:13px}#speechCaption{background:#152018e8;border:1px solid #9c89554d;border-bottom:2px solid #b59a5a;border-radius:2px;font-size:14px}
.command-deck{height:auto;min-height:0;grid-template-columns:290px minmax(0,1fr) 214px;padding:12px 18px;gap:16px;border-top:4px double #ad925f;background:repeating-linear-gradient(0deg,#bca17404 0 1px,transparent 1px 5px),linear-gradient(110deg,#303028,#202720 45%,#292b23);box-shadow:0 -5px 22px #0009,inset 0 1px #ead39928}
.selection-info{min-width:0;padding:10px 12px;border:1px solid #8c785447;background:linear-gradient(135deg,#121912ab,#272d214d);box-shadow:inset 0 1px 10px #0005;overflow:auto}.selection-title{gap:6px;margin-bottom:8px}.selection-title h2{font-size:18px;margin:0;letter-spacing:1px}.selection-title span{font-size:11px;white-space:nowrap}.selected-body{gap:12px}#portrait{width:80px;height:80px;background:radial-gradient(ellipse at 50% 60%,#62644755,#131a13 75%);border:1px solid #a38a58;box-shadow:inset 0 0 14px #0008,0 0 0 3px #0d130d66}#selectionStats{font-size:12px;line-height:1.8}.health{height:7px;border:1px solid #070d07;box-shadow:0 1px #ffffff12;margin-top:6px}.health i{background:linear-gradient(#b1c579,#588444)}#selectionTask{font-size:11px;line-height:1.5;color:#b1b5a3;margin:5px 0}#queue{font-size:11px;margin-top:5px}#group{max-height:38px}#group .thumb{background:radial-gradient(#4c5137,#172016);border-color:#81724e}
.orders{min-width:0;padding:3px 0;scrollbar-width:thin;scrollbar-color:#796b4d #171e17}.orders-heading{font-size:12px;letter-spacing:1px;border-bottom:1px solid #9d85533d;padding-bottom:9px;margin-bottom:10px}#hint{font-size:10px;letter-spacing:0;color:#979f8e}#actions{gap:7px}.order{width:86px;min-height:111px;padding:7px 4px;border:1px solid #8d784d;background:linear-gradient(145deg,#49503c,#252f23 70%);box-shadow:inset 0 0 0 2px #111a1455,inset 0 1px #dbcba338,0 3px 5px #0005}.order canvas{width:56px;height:50px;margin:1px auto 5px;filter:drop-shadow(0 3px 2px #0008)}.order span{font-size:11px;color:#f0e1be;line-height:1.5}.order small{font-size:10px;color:#b8b49c;margin-top:5px}.order:disabled{opacity:.48;filter:saturate(.55)}
.minimap-wrap{align-self:center;justify-self:end;border:3px ridge #9f8859;box-shadow:0 0 0 2px #11170f,0 3px 12px #0008;background:#101a10}.minimap-wrap canvas{width:202px;height:auto;aspect-ratio:208/170}.minimap-wrap span{background:#1a2118;border-top:1px solid #7b6a43;color:#b8ac8a;font-size:9px;letter-spacing:1px;padding:5px 0}
dialog{border:1px solid #b49a61;border-radius:2px;background:repeating-linear-gradient(0deg,#d4be8403 0 1px,transparent 1px 4px),linear-gradient(140deg,#2c3328,#161f19);box-shadow:0 35px 100px #000c,inset 0 0 0 4px #ae905d15;padding:30px;scrollbar-width:thin;scrollbar-color:#8c774c #182019}dialog::backdrop{background:radial-gradient(ellipse at center,#101a14b0,#050a07e8);backdrop-filter:blur(7px)}dialog h2{color:#f2dfb4;text-shadow:0 2px 3px #000}dialog select{color:#e8dfcd;background:#131c16;border:1px solid #706344;padding:9px 10px;font-size:13px;margin-top:6px}dialog label{font-size:12px;margin:12px 0;color:#cdbb93}dialog p{color:#b3b9a8}dialog label.check{font-size:12px;gap:7px;align-content:center}dialog label.check small{font-size:10px;line-height:1.5;margin-left:25px;color:#979e8e}
#setup{width:min(1020px,95vw);padding:0;max-height:94dvh}#setup[open]{display:grid;grid-template-columns:.95fr 1.1fr}.setup-intro{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px 30px;overflow:hidden;border-right:1px solid #a68a544d;background:radial-gradient(ellipse at 50% 55%,#75804b30,transparent 65%),repeating-linear-gradient(35deg,transparent 0 49px,#ba9e5710 49px 50px),linear-gradient(150deg,#30392a,#111d17 80%)}.setup-intro:before{content:"";position:absolute;inset:12px;border:1px solid #a98b513d;pointer-events:none;z-index:-1}.setup-intro .eyebrow{font-size:9px;letter-spacing:3px;color:#b9a677}.setup-intro h2{font-size:54px;letter-spacing:8px;margin:17px 0 9px;padding-left:8px}.title-rule{display:flex;align-items:center;gap:12px;width:70%;color:#c0a066;font-size:9px}.title-rule:before,.title-rule:after{content:"";height:1px;background:linear-gradient(90deg,transparent,#aa8d51);flex:1}.title-rule:after{transform:rotate(180deg)}.setup-intro .setup-tagline{font-size:13px;line-height:2.1;letter-spacing:2px;margin:20px 0 0;color:#c0c5ad}.setup-art{position:relative;width:100%;max-width:390px;aspect-ratio:640/520;margin:4px 0 12px}.setup-art canvas{position:relative;display:block;width:100%;height:auto;filter:drop-shadow(0 15px 12px #0008)}.compass-ring{position:absolute;inset:10% 13%;border:1px solid #c3a36333;border-radius:50%;box-shadow:0 0 0 9px #d2ae5a05,0 0 0 10px #c3a36322;transform:scaleY(.65) rotate(-30deg)}.compass-ring:before,.compass-ring:after{content:"";position:absolute;inset:12%;border:1px solid #c3a36322;transform:rotate(45deg)}.compass-ring:after{transform:rotate(0)}.campaign-caption{font-size:10px;letter-spacing:2px;color:#baa57a}.campaign-caption span{padding:0 5px;color:#6d7055}.setup-options{padding:28px 34px 26px}.panel-kicker{color:#9e8c65;font:9px Georgia,serif;letter-spacing:3px}.setup-options h3{font-family:Georgia,"PMingLiU",serif;font-size:26px;letter-spacing:3px;color:#eddbb1;margin:6px 0}.setup-options .setup-description{font-size:12px;margin:0 0 19px;color:#a0aa97}.form-row{gap:14px}.form-row label{min-width:0;margin-bottom:12px}.brief{border-top:1px solid #9b84543d;font-size:11px;line-height:1.9;color:#969f8d;padding:12px 0 16px}.primary{background:linear-gradient(#e0c187,#b69150);border:1px solid #ebcf8f;box-shadow:inset 0 1px #fff6,0 3px 12px #0005;color:#252416;font-size:14px;letter-spacing:2px;padding:13px}.primary:hover:not(:disabled){background:linear-gradient(#edd59c,#c9a562);color:#242215}.primary span{float:right;font-size:18px;line-height:19px}.setup-secondary{display:flex;gap:10px}.setup-secondary button{flex:1;width:auto!important;margin-top:10px!important;font-size:11px;color:#c3b798;padding:9px}#helpDialog p{font-size:13px}
@media(max-width:1100px){header{gap:12px;padding:0 12px}.res{min-width:85px;padding:4px 10px}.res b{font-size:21px}.brand{font-size:20px}.top-actions button{padding:7px}.command-deck{grid-template-columns:248px minmax(0,1fr) 190px;gap:12px;padding:12px}.minimap-wrap canvas{width:180px}#hint{display:none}.order{width:78px}.setup-intro h2{font-size:46px}}
@media(max-width:800px){body{grid-template-rows:96px minmax(0,1fr) 202px}header{flex-wrap:wrap;gap:3px 10px;padding:8px 12px}.brand{font-size:18px}.brand span{display:none}#resources{order:3;width:100%;flex:auto;justify-content:space-between;align-self:auto}.res{min-width:0;flex:1;padding:2px 10px}.res b{font-size:19px}.res small{display:none}.top-actions{margin-left:auto}.command-deck{grid-template-columns:210px minmax(0,1fr) 150px;padding:10px;gap:10px}.minimap-wrap canvas{width:140px}.order{width:70px;min-height:102px}.order canvas{width:48px;height:43px}.selection-info{padding:8px}#portrait{width:60px;height:60px}.selection-title h2{font-size:16px}.selected-body{gap:8px}.goals{max-width:210px}#setup[open]{grid-template-columns:.8fr 1.2fr}.setup-intro{padding:28px 16px}.setup-intro h2{font-size:36px;letter-spacing:4px}.setup-options{padding:25px}.setup-intro .eyebrow{font-size:8px;letter-spacing:1px}.campaign-caption{font-size:9px;letter-spacing:0}.setup-intro .setup-tagline{font-size:11px;letter-spacing:1px}}
@media(max-width:700px){header{height:auto}.top-actions button{font-size:10px;padding:6px}#clock{font-size:12px;margin-right:0}.res label{font-size:10px}.res b{font-size:17px}.res{padding:2px 6px;column-gap:5px}main{height:auto}.command-deck{height:auto;grid-template-columns:138px minmax(0,1fr)}.selection-info{padding:7px}.selection-title h2{font-size:14px}.selection-title{flex-wrap:wrap}.selected-body{display:block}#portrait,#group{display:none}.order{width:65px;min-height:92px;padding:5px 3px}.order canvas{width:40px;height:36px}.order span{font-size:10px}.order small{font-size:9px}.orders-heading{font-size:11px;margin-bottom:8px}.minimap-wrap{position:fixed;top:108px;right:10px;opacity:.92}.minimap-wrap canvas{width:106px;height:auto;aspect-ratio:208/170}.minimap-wrap span{display:none}.chapter{left:12px;top:14px;padding-left:9px}.chapter h1{font-size:19px}.chapter p{font-size:10px;max-width:190px}#terrainLabel{left:23px;top:100px}.goals,#eventLog{display:none}.view-buttons{left:8px;gap:3px;bottom:10px}.view-buttons button{padding:7px;font-size:10px}#zoomIn,#zoomOut{width:28px}.setup-intro{display:none}#setup[open]{grid-template-columns:1fr;width:min(460px,95vw)}.setup-options{padding:24px}.setup-options h3{font-size:25px}.setup-options .setup-description{margin-bottom:15px}dialog{padding:24px}#speechCaption{font-size:12px;max-width:85%}}
@media(prefers-reduced-motion:reduce){button,select,#toast{transition:none}}

/* v0.4 多國設定與勢力列 */.player-rows-head,.player-row{display:grid;grid-template-columns:54px 1fr 86px 86px;gap:6px;align-items:center}.player-rows-head{font-size:11px;color:#a9b19d;margin-top:10px;padding:0 2px}.player-row{margin:5px 0}.player-row select{margin:0;padding:6px 8px;font-size:13px;width:100%}.player-row select:disabled{opacity:.4}.player-tag{display:inline-block;font-size:12px;font-weight:bold;color:#1c271a;border-radius:3px;padding:5px 0;text-align:center}.standings-title{margin-top:9px}.standing{display:block;font-size:12px;line-height:1.7}.standing i{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:2px;vertical-align:middle}.standing.out{opacity:.45;text-decoration:line-through}@media(max-width:700px){.player-rows-head,.player-row{grid-template-columns:40px 1fr 70px 70px}}

/* v0.5 存讀檔 */.save-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;margin:7px 0;font-size:13px}.save-row span{color:#d9cba6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-actions{display:flex;gap:10px;margin:14px 0}.save-actions>*{flex:1}.file-button{display:block;text-align:center;border:1px solid #756348;background:#292c24;padding:8px 12px;border-radius:3px;cursor:pointer;font-size:15px}.file-button:hover{background:#484632;border-color:#e4c485}.file-button input{display:none}#closeSave{margin-top:6px}

/* P3 research overview */
#techDialog{width:min(940px,95vw)}#techList{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;margin:20px 0}.tech-card{padding:15px;border:1px solid #776442;background:linear-gradient(145deg,#30372a,#162018)}.tech-card h3{margin:0 0 9px;color:#e2c486;font-size:16px}.tech-card p{font-size:12px;line-height:1.7;margin:6px 0}.tech-card strong{display:block;font-size:12px;color:#b6bd9d;margin-top:10px}.tech-card.available{border-color:#b6a269}.tech-card.done strong{color:#a4d18a}.tech-card.researching strong{color:#efd083}.tech-card button{margin-top:10px;width:100%;font-size:12px}.tech-order{border-top:2px solid #b29a60}

/* v1.0 贈送視窗 */.gift-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;font-size:14px;color:#dfc28a}.gift-row input{width:110px;padding:7px;font:inherit;color:inherit;background:#18231b;border:1px solid #756348;border-radius:3px}#giftClose{margin-top:8px;width:100%}

/* v1.4 統計表 */#reportTable{margin:12px 0;overflow:auto}#reportTable table{width:100%;border-collapse:collapse;font-size:12px}#reportTable th,#reportTable td{padding:4px 6px;border-bottom:1px solid #4b5240;text-align:right;white-space:nowrap}#reportTable th:first-child,#reportTable td:first-child{text-align:left}#reportTable tr.out{opacity:.5}#reportTable i{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:2px;vertical-align:middle}#reportTable .timeline{font-size:11px;color:#a9b19d;margin-top:8px}#surrender{margin-top:10px;width:100%}
.standing.offer{background:#3a3418;border-left:3px solid #f2d36b}.standing button{pointer-events:auto;margin-left:4px;padding:1px 6px;font-size:11px;background:#2b3320;color:#f6e9ba;border:1px solid #6b7a4a;border-radius:3px;cursor:pointer}.standing button:hover{background:#40502c}.goals .standing b.peace{display:inline;color:#9fe3ff;font-size:12px;letter-spacing:0;margin:0}

/* Battlefield study, 2026-09-12: compact controls leave more room for the world. */
.orders-heading{padding-bottom:5px;margin-bottom:6px}
#actions{gap:5px;align-content:start}
.order{min-height:82px;padding:4px 3px;overflow-wrap:anywhere}
.order canvas{width:42px;height:36px;margin:0 auto 2px}
.order small{margin-top:2px;line-height:1.3}
.chapter{top:14px}.chapter h1{font-size:18px;letter-spacing:2px}
#terrainLabel{top:92px}
@media(min-width:801px){
 body{grid-template-rows:54px minmax(0,1fr) 174px}
 header{gap:12px;padding:0 14px}.brand{font-size:19px}.brand span{margin-top:2px;font-size:7px}
 .res{min-width:78px;padding:2px 10px}.res b{font-size:21px}.res label{font-size:11px}
 .top-actions{gap:4px}.top-actions button{padding:6px;font-size:11px}#clock{margin-right:2px}
 .command-deck{grid-template-columns:258px minmax(0,1fr) 178px;padding:8px 12px;gap:12px}
 .selection-info{padding:7px 9px}.selection-title{margin-bottom:5px}.selection-title h2{font-size:16px}
 #portrait{width:66px;height:66px}.selected-body{gap:9px}#selectionStats{font-size:11px;line-height:1.55}
 .minimap-wrap canvas{width:168px}.minimap-wrap span{padding:3px 0}
 .order{width:78px}.order span{font-size:10px}
 .goals{padding:7px 10px;font-size:10px}.standing{font-size:11px;line-height:1.55}
}
@media(max-width:800px){
 body{grid-template-rows:96px minmax(0,1fr) 178px}
 .order{min-height:80px}.order canvas{width:36px;height:32px}
 .command-deck{padding:8px}.orders-heading{font-size:11px}
}
.info-card{position:fixed;left:50%;top:80px;transform:translateX(-50%);z-index:60;max-width:520px;background:#16221bf2;border:1px solid #c4a768;border-radius:6px;padding:14px 18px;color:#e9e2c8;font-size:13px;line-height:1.7;box-shadow:0 8px 30px #000a}.info-card h3{margin:0 0 6px;color:#f3e2a6;font-size:16px}.info-card p{margin:2px 0}.info-card small{color:#b8b39f}.info-card button{margin-top:8px;padding:4px 12px;background:#2b3320;color:#f6e9ba;border:1px solid #6b7a4a;border-radius:3px;cursor:pointer}.standing .namebtn{pointer-events:auto;background:none;border:none;color:inherit;font:inherit;padding:0;cursor:pointer;text-decoration:underline dotted #8a8a6a}.timeline-box{margin-top:10px;font-size:12px;line-height:1.6;color:#d5d9c6;max-height:180px;overflow:auto}.timeline-box h3{margin:6px 0;color:#f3e2a6;font-size:14px}
#campaignDialog{width:min(860px,96vw)}#campaignDialog[open]{display:grid;grid-template-rows:auto auto auto auto minmax(0,1fr) auto;gap:4px;align-content:start}/* 2026-09-21：對話框用格線排版，清單佔剩下的高度自己捲，整個對話框不用再捲 */
#campaignList{display:grid;gap:14px;min-height:0;max-height:60dvh;overflow:auto;padding-right:4px;align-content:start}.campaign-group h3{margin:8px 0 4px;color:#f3e2a6;font-size:15px;border-bottom:1px solid #6b6a4a;padding-bottom:4px}.campaign-card{padding:10px 12px;border:1px solid #776442;background:linear-gradient(145deg,#30372a,#162018);display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center;margin-bottom:8px}.campaign-card h4{margin:0;font-size:15px;color:#f6e9ba}.campaign-card p{margin:0;font-size:12px;color:#d5d9c6;grid-column:1}.campaign-card .meta{color:#b8b39f}.campaign-card .curr{color:#9fd3a4}.campaign-card button{grid-column:2;grid-row:1/5}
.goals{max-height:calc(100dvh - 150px);overflow:auto;scrollbar-width:thin}/* 12 國時不要壓到下方指令列 */
.goals-head{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:22px}
.goals-sum{font-size:12px;color:#d5d9c6;white-space:nowrap}.goals-sum .offer-badge{color:var(--gold);font-weight:bold;animation:goalsBlink 1.2s ease-in-out infinite alternate}
@keyframes goalsBlink{from{opacity:1}to{opacity:.45}}
.goals-toggle{pointer-events:auto;margin-left:auto;padding:2px 8px;font-size:11px;min-height:22px;line-height:1;background:#2b3320;color:#f6e9ba;border:1px solid #6b7a4a;border-radius:3px;cursor:pointer;white-space:nowrap}
.goals.collapsed{padding:6px 10px;max-height:none;overflow:visible;width:max-content;max-width:min(60vw,420px)}.goals.collapsed .goals-head{flex-wrap:nowrap}.goals.collapsed .goals-sum{white-space:nowrap}.goals.collapsed .goals-sum b{white-space:nowrap;display:inline}.goals.collapsed .goals-body{display:none}
.mode-hint{display:block;margin-top:4px;font-size:11px;line-height:1.4;font-weight:normal;letter-spacing:0;color:#b8b39f}
dialog .mode-hint{color:#7a5a3a}
/* 劇情戰役清單改版（2026-09-21 Helen：故事太多→分類按鍵＋一行一局＋依時期分段） */
.campaign-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 6px}
.campaign-tab{flex:1 1 auto;min-height:44px;padding:8px 14px;font-size:15px;font-weight:bold;letter-spacing:1px;border:1px solid #776442;background:#1c261d;color:#d9d4b8}
.campaign-tab small{font-weight:normal;opacity:.75;margin-left:4px;font-size:12px}
.campaign-tab.active{background:linear-gradient(#e7c582,#c9a45d);color:#20291c;border-color:#eedca2}
.campaign-subtitle{margin:0 0 2px;font-size:12px;color:#b8b39f}
.campaign-rows{display:grid;gap:0}
.campaign-period{margin:12px 0 2px;font-size:14px;color:#f3e2a6;border-bottom:1px solid #6b6a4a;padding-bottom:3px}
.campaign-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:7px 6px;border-bottom:1px solid #4a4a36;cursor:pointer}
.campaign-row:hover{background:#ffffff0d}
.campaign-row .year{font-size:13px;color:#b8b39f;white-space:nowrap;min-width:3.5em}
.campaign-row .what{display:grid;gap:1px;min-width:0}
.campaign-row .what b{font-size:15px;color:#f6e9ba;font-weight:normal}
.campaign-row .what small{font-size:12px;color:#9fd3a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.campaign-row button{min-height:38px;padding:6px 14px;width:auto;font-size:14px;letter-spacing:1px;white-space:nowrap}
@media(max-width:560px){.campaign-row{grid-template-columns:minmax(0,1fr) auto}.campaign-row .year{grid-column:1;font-size:12px}.campaign-row .what{grid-column:1}.campaign-row button{grid-column:2;grid-row:1/3}.campaign-tab{font-size:14px;padding:8px 10px}}#briefDialog{width:min(640px,94vw)}.side-lock{margin:6px 0 10px;color:#b8b39f;font-size:12.5px}.side-pick{margin:6px 0 10px;padding:8px 10px;border:1px solid #6b6a4a;background:#141d16}.side-pick b{display:block;color:#f3e2a6;font-size:13px}.side-pick .hint{display:block;color:#b8b39f;font-size:12px;margin-bottom:6px}.side-pick button{margin:3px 6px 3px 0;padding:6px 10px;font-size:13px;border:1px solid #776442;background:#243027;color:#e6e1cf;border-radius:4px;cursor:pointer}.side-pick button.on{background:linear-gradient(#5a5f43,#3a4332);color:#f6e9ba;border-color:#ad9458;box-shadow:inset 0 0 0 1px #ad945880}#briefText p{font-size:13.5px;line-height:1.7}#briefText .objectives{padding:8px 10px;border:1px solid #6b6a4a;background:#0f1712}.standing.objectives{display:block;line-height:1.6}
.chart-box{margin:8px 0}.chart-box canvas{display:block;margin:6px 0;border:1px solid #4b5240;border-radius:4px;max-width:100%}.chart-tabs button{margin:0 6px 4px 0;padding:3px 10px;background:#2b3320;color:#e9e2c8;border:1px solid #6b7a4a;border-radius:3px;cursor:pointer;font-size:12px}.chart-tabs button.on{background:#c4a768;color:#1c281e;font-weight:bold}.chart-legend{font-size:12px;color:#d5d9c6;display:flex;flex-wrap:wrap;gap:4px 12px}.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;vertical-align:middle}
#toast{white-space:pre-line}#queue button.qcancel{margin:2px 4px 2px 0;padding:2px 8px;background:#3a2f22;color:#f6e9ba;border:1px solid #8a6f43;border-radius:3px;cursor:pointer;font-size:12px}#queue button.qcancel:hover{background:#5a3f2a}#eventLog div.jump{cursor:pointer;pointer-events:auto;text-decoration:underline dotted #b8b39f}#eventLog div.jump:hover{color:#fff3c4}
.pause-banner{position:absolute;top:14px;left:50%;transform:translateX(-50%);padding:10px 22px;background:#15251deb;border:1px solid #c4a768;color:#f6e9ba;font-size:18px;letter-spacing:2px;border-radius:4px;pointer-events:none;z-index:5}.pause-banner small{font-size:12px;letter-spacing:0;color:#d5d9c6}.tutorial-box{position:absolute;left:24px;bottom:60px;max-width:min(420px,70%);padding:10px 14px;background:#172119d9;border:1px solid #777b4f;border-radius:4px;font-size:13px;line-height:1.6;color:#e9e2c8;z-index:4}.tutorial-box button{margin-left:10px;padding:2px 8px;background:#2b3320;color:#f6e9ba;border:1px solid #6b7a4a;border-radius:3px;cursor:pointer;font-size:12px}@media(max-width:700px){.tutorial-box{left:8px;bottom:8px;max-width:90%;font-size:12px}}
.touch-bar{position:absolute;left:50%;transform:translateX(-50%);bottom:12px;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:96%;z-index:5}.touch-bar button{min-width:44px;min-height:40px;padding:6px 10px;font-size:13px;background:#202b22dc;color:#e9e2c8;border:1px solid #6b7a4a;border-radius:6px;touch-action:manipulation;-webkit-user-select:none;user-select:none}.touch-bar button.on{background:#c4a768;color:#1c281e;font-weight:bold}
@media(pointer:fine){.touch-bar{display:none}}
@media(pointer:coarse){.order{min-width:74px;min-height:96px}.view-buttons button{min-height:44px;min-width:44px;font-size:13px}.top-actions button{min-height:40px}#queue button.qcancel{min-height:36px;padding:6px 10px}.standing button{min-height:36px;padding:4px 10px}.goals{pointer-events:auto}dialog button{min-height:42px}canvas#battle{touch-action:none;-webkit-user-select:none;user-select:none}.chapter,#terrainLabel,#eventLog{-webkit-user-select:none;user-select:none}}
.gift-quick{margin-left:6px;padding:4px 8px;background:#2b3320;color:#f6e9ba;border:1px solid #6b7a4a;border-radius:3px;font-size:12px;cursor:pointer}
@media(max-width:700px){.goals.show{display:block;position:fixed;top:96px;left:8px;right:8px;max-width:none;max-height:52vh;overflow:auto;pointer-events:auto;z-index:7;font-size:12px}#eventLog{display:block;bottom:66px;right:8px;font-size:10px;max-width:58%;line-height:1.5}#eventLog div:nth-child(n+2){display:none}.touch-bar{bottom:6px;gap:4px}.touch-bar button{min-width:38px;min-height:36px;padding:4px 7px;font-size:12px}}
@media(max-height:520px) and (orientation:landscape){body{grid-template-rows:52px minmax(0,1fr) 140px}header{padding:2px 10px;gap:6px;height:auto}.brand{font-size:15px}.res b{font-size:15px}.res label{font-size:10px}.top-actions button{padding:4px 6px;font-size:10px;min-height:0}.command-deck{height:auto;padding:6px 10px;gap:8px;grid-template-columns:150px minmax(0,1fr)}.minimap-wrap{display:none}.order{min-height:78px;width:64px}.order canvas{width:36px;height:32px}.chapter{display:none}.view-buttons{bottom:6px}.touch-bar{bottom:6px}.goals{display:none}.goals.show{display:block;position:fixed;top:56px;right:8px;max-height:60vh;overflow:auto;pointer-events:auto;z-index:7}}
@media(max-width:700px){.res label{white-space:nowrap;font-size:9px}.res{column-gap:3px;padding:2px 4px}.res b{font-size:15px}.touch-bar{bottom:60px;left:4px;right:4px;transform:none;max-width:none;justify-content:center}.tutorial-box{bottom:150px;left:6px;right:6px;max-width:none;font-size:11px;padding:6px 8px}.view-buttons{bottom:8px}}
@media(max-height:520px) and (orientation:landscape){header{overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;white-space:nowrap}.top-actions{flex-wrap:nowrap;margin-left:auto}.top-actions button{padding:3px 5px;font-size:10px;white-space:nowrap}#clock{font-size:11px}.res{padding:1px 5px}.res b{font-size:14px}.touch-bar{left:auto;right:8px;bottom:50px;transform:none;max-width:60%;justify-content:flex-end}.tutorial-box{bottom:44px;left:6px;max-width:45%;font-size:10px;padding:4px 6px}.goals.show{max-width:46%;font-size:11px}}
.teacher-link{display:inline-block;margin:6px 0 0 8px;color:#9fd8dc;font-size:13px;text-decoration:underline dotted}
.license-line{margin:10px 0 0;font-size:11px;color:#9a9a86;letter-spacing:.5px}.license-line a{color:#b8b39f}

/* Campaign menus: aged hide, engraved ink and a folded expedition chart. */
dialog{
 --ink:#432b19;--faded-ink:#705033;--paper:#432b19;
 color-scheme:light;color:var(--ink);border:1px solid #916037;border-radius:5px 9px 4px 7px;
 background:
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.68' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Cpath fill='%23714725' opacity='.13' filter='url(%23grain)' d='M0 0h180v180H0z'/%3E%3C/svg%3E"),
  radial-gradient(ellipse at 2% 10%,#92552345,transparent 40%),
  radial-gradient(ellipse at 98% 92%,#80502750,transparent 45%),
  linear-gradient(100deg,#c99b60,#efdab0 16%,#e7c994 50%,#f0ddb5 78%,#c99b60);
 box-shadow:0 28px 90px #140b06c9,inset 0 0 0 4px #70421a26,inset 0 0 38px #80481755;
 scrollbar-color:#986d3e #ddbe88;
}
dialog::backdrop{background:radial-gradient(ellipse at 45% 35%,#45321ce0,#120d08f2);backdrop-filter:blur(8px)}
dialog h2,dialog h3,dialog h4{color:var(--ink);text-shadow:0 1px #fff2cd80}
dialog p,dialog label,dialog label.check,dialog .brief,dialog .meta{color:var(--faded-ink)}
dialog .eyebrow,dialog .panel-kicker{color:#7b4a25}
dialog label.check small{color:#73573b}
dialog label.check input,dialog input[type=range]{accent-color:#854027}
dialog select,dialog .gift-row input{
 color:#3e291b;background:#f6e5bd99;border:1px solid #a47c4f;
 box-shadow:inset 0 2px 5px #6d43191a,0 1px #fff0ce80;
}
dialog select option,dialog select optgroup{color:#3e291b;background:#f1dfb7}
dialog select:disabled{opacity:.65}
dialog button,dialog .file-button{
 color:#56351e;border:1px solid #a27949;background:linear-gradient(#f4dfb4bb,#d7b27dbb);
 box-shadow:inset 0 1px #fff3d6aa,0 2px 3px #6b451b20;
}
dialog button:hover:not(:disabled),dialog .file-button:hover{
 color:#382014;border-color:#784620;background:linear-gradient(#fbe9c4,#e4c28c);
 box-shadow:inset 0 1px #fff7de,0 2px 8px #764c2426;
}
dialog button:focus-visible,dialog select:focus-visible,dialog input:focus-visible,dialog a:focus-visible{
 outline:2px solid #7e3423;outline-offset:3px;
}
dialog .primary{color:#fff1cc;border:1px solid #703722;background:linear-gradient(#a35a36,#7d3c27);text-shadow:0 1px #4b211a;box-shadow:inset 0 1px #e4ad7280,0 3px 8px #62351240}
dialog .primary:hover:not(:disabled){color:#fff6df;background:linear-gradient(#b5683e,#91452c);border-color:#673019}
#setup{width:min(1080px,95vw)}
#setup[open]{grid-template-columns:.95fr 1.1fr}
#setup .setup-intro{
 padding:44px 28px 32px;border-right:1px solid #99704180;
 background:
  linear-gradient(90deg,transparent 49.5%,#8c60351c 50%,#fff0ca40 50.5%,transparent 51%),
  linear-gradient(0deg,transparent 49.5%,#8c603521 50%,#fff0ca40 50.5%,transparent 51%),
  radial-gradient(ellipse at center,#f9e7bd45,transparent 65%);
 box-shadow:inset -10px 0 22px #855b2420;
}
#setup .setup-intro:before{inset:16px;border:1px solid #865d3866;box-shadow:0 0 0 5px #f6dba533,inset 0 0 0 4px #8b603515}
#setup .setup-intro:after{
 content:"";position:absolute;inset:25px;z-index:-1;pointer-events:none;opacity:.6;/* 2026-09-21 Helen 說看起來只是變色：藏寶路線與羅盤加深 */
 background:center / 100% 100% no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='800' viewBox='0 0 420 800' fill='none' stroke='%23543418'%3E%3Cg stroke-width='1.2'%3E%3Cpath d='M-20 160Q60 80 90 170T165 245L153 304 191 340 170 390 104 419 89 476 30 491-20 460M-20 176Q56 102 77 177T150 254L136 304 174 345 154 378 94 407 77 462 27 476-20 446M440 403L370 370 326 405 337 463 289 496 300 552 268 593 297 651 351 673 370 743 430 766M440 419L373 387 342 410 351 469 306 500 315 554 284 592 309 639 366 663 383 731 430 751'/%3E%3Cpath stroke-dasharray='5 8' d='M59 650C220 650 112 530 231 470S360 272 285 216'/%3E%3Cpath d='m274 205 22 22m0-22-22 22' stroke-width='3'/%3E%3C/g%3E%3Cg opacity='.5'%3E%3Cpath d='M0 100H420M0 300H420M0 500H420M0 700H420M70 0V800M210 0V800M350 0V800'/%3E%3C/g%3E%3C/svg%3E");
}
#setup .setup-intro .eyebrow{color:#795333;letter-spacing:2.5px}
#setup .setup-intro h2{color:#53311c;font-family:"DFKai-SB","BiauKai","KaiTi","PMingLiU",serif;font-size:58px;letter-spacing:8px;text-shadow:0 2px #ffedbd80}
#setup .title-rule{color:#8f492a}
#setup .title-rule:before,#setup .title-rule:after{background:linear-gradient(90deg,transparent,#96673d)}
#setup .setup-tagline{color:#65472c;font-size:14px;line-height:2.2}
#setup .setup-art{margin:24px 0;max-width:360px}
#setup .setup-art canvas{filter:sepia(.7) saturate(.65) contrast(.92) drop-shadow(0 12px 9px #66451c40);mix-blend-mode:multiply}
#setup .compass-ring{inset:3% 9%;transform:rotate(-18deg);border-color:#895c3baa;box-shadow:0 0 0 8px #d2ae5a18,0 0 0 9px #895c3b88}
#setup .compass-ring:before{inset:12%;border-color:#895c3b80}
#setup .compass-ring:after{content:"N";inset:-24px 0 auto;border:0;transform:rotate(18deg);font:16px Georgia,serif;color:#805532}
#setup .campaign-caption,#setup .campaign-caption span{color:#725030}
#setup .setup-options{padding:32px 36px;background:#fff0cf24;min-width:0}
#setup .setup-options h3{color:#53311c;letter-spacing:4px}
#setup .setup-description{color:#795638}
#setup .brief{border-top:1px solid #99704466;color:#735438}
#setup .player-rows-head{color:#715336}
#setup .setup-secondary{flex-wrap:wrap;gap:8px}
#setup .setup-secondary button{flex:1 1 29%;margin-top:0!important;color:#58371f}
#setup .teacher-link{color:#704328;margin:8px 0 0;font-size:12px}
#setup .license-line{flex-basis:100%;font-size:10px;line-height:1.8;margin:0;color:#795b3e}
#setup .license-line a{color:#674329}
@media(min-width:701px){
 #setup .setup-intro{position:sticky;top:0;align-self:start;height:calc(94dvh - 2px);min-height:480px}
 #setup .setup-art{width:min(100%,38dvh);margin:16px 0}
}
dialog .save-row span,dialog .gift-row,dialog .timeline-box,dialog .chart-legend{color:#60432b}
dialog .campaign-group h3{color:#623b21;border-color:#aa875c}
dialog .campaign-tab{background:#f6e6c033;color:#5a3a20;border-color:#aa875c}
dialog .campaign-tab.active{background:linear-gradient(#9c4b2a,#6e3218);color:#fbe9c4;border-color:#4d2210}
dialog .campaign-subtitle,dialog .campaign-row .year{color:#7a5a3a}
dialog .campaign-period{color:#623b21;border-color:#aa875c}
dialog .campaign-row{border-color:#c9a878}
dialog .campaign-row:hover{background:#7a4a2a14}
dialog .campaign-row .what b{color:#3a2513}
dialog .campaign-row .what small{color:#4e6b3a}
dialog .campaign-card,dialog .tech-card,dialog .side-pick,dialog #briefText .objectives{background:#fae9c244;border-color:#aa875c}
dialog .campaign-card h4,dialog .tech-card h3,dialog .side-pick b,dialog .timeline-box h3{color:#59351f}
dialog .campaign-card p,dialog .campaign-card .meta,dialog .side-lock,dialog .side-pick .hint,dialog .tech-card strong{color:#715237}
dialog .campaign-card .curr,dialog .tech-card.done strong{color:#445a30}
dialog .tech-card.researching strong{color:#8a3d23}
dialog .side-pick button.on,dialog .chart-tabs button.on{background:#855037;color:#fff0ce;border-color:#643922}
dialog #reportTable th,dialog #reportTable td{border-color:#aa875c}
@media(max-width:800px) and (min-width:701px){
 #setup[open]{grid-template-columns:.8fr 1.2fr}
 #setup .setup-intro{padding:30px 18px}#setup .setup-intro h2{font-size:38px;letter-spacing:4px}
 #setup .setup-intro .eyebrow{font-size:8px;letter-spacing:1px}#setup .setup-options{padding:25px}
}
@media(max-width:700px){
 #setup[open]{grid-template-columns:minmax(0,1fr);width:min(460px,95vw)}
 #setup .setup-intro{display:flex;padding:25px 20px 22px;border-right:0;border-bottom:1px solid #99704180}
 #setup .setup-intro:before{inset:9px}#setup .setup-intro h2{font-size:36px;letter-spacing:6px;margin:8px 0}
 #setup .setup-intro .eyebrow{font-size:8px;letter-spacing:1.5px}
 #setup .setup-tagline{font-size:11px;line-height:1.8;margin:10px 0 0}
 #setup .setup-art,#setup .campaign-caption{display:none}
 #setup .setup-options{padding:22px 18px}#setup .form-row{gap:10px}
 #setup .player-rows-head,#setup .player-row{grid-template-columns:36px minmax(0,1fr) 58px 62px;gap:4px}
 #setup .player-row select{padding:7px 3px;font-size:12px}
}

/* 君主對話（2026-09-21）：畫面左側立繪＋對話框；不擋操作，點一下或幾秒後收起 */
#rulerTalk{position:fixed;left:12px;bottom:calc(var(--panel-h,190px) + 60px);/* 讓出左下角的縮放／回城鎮按鈕列 */z-index:40;display:flex;align-items:flex-end;gap:10px;max-width:min(560px,70vw);pointer-events:auto;cursor:pointer;animation:rt-in .35s ease-out}
#rulerTalk[hidden]{display:none}
@keyframes rt-in{from{transform:translateX(-24px);opacity:0}to{transform:none;opacity:1}}
#rulerTalk .rt-portrait{position:relative;width:150px;height:190px;flex:none;border:2px solid #ad9458;border-radius:6px;background:radial-gradient(ellipse at 50% 30%,#3b4a3a,#151c17 70%);box-shadow:0 10px 24px #0009,inset 0 0 0 1px #0006;overflow:hidden}
#rulerTalk .rt-portrait img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;display:none}
#rulerTalk .rt-portrait.has-img img{display:block}
#rulerTalk .rt-portrait.has-img .rt-fallback{display:none}
#rulerTalk .rt-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:bold 64px "Noto Serif TC",Georgia,serif;color:#efddac;text-shadow:0 2px 10px #000}
#rulerTalk .rt-fallback:before{content:"";position:absolute;left:50%;top:38%;width:70px;height:70px;transform:translateX(-50%);border-radius:50%;background:#6b7d63;opacity:.35}
#rulerTalk .rt-fallback:after{content:"";position:absolute;left:50%;bottom:-20px;width:150px;height:110px;transform:translateX(-50%);border-radius:75px 75px 0 0;background:#55684f;opacity:.35}
#rulerTalk .rt-bubble{position:relative;background:linear-gradient(#2b3427f2,#161e18f2);border:1px solid #ad945880;border-radius:8px;padding:10px 14px 8px;color:#f1e6c6;min-width:220px;box-shadow:0 10px 24px #0009}
#rulerTalk .rt-bubble:before{content:"";position:absolute;left:-9px;bottom:26px;border:9px solid transparent;border-right-color:#ad945880;border-left:0}
#rulerTalk .rt-name{color:#efddac;font-weight:bold;font-size:14px;letter-spacing:1px;margin-bottom:4px}
#rulerTalk .rt-name small{color:#b8b39f;font-weight:normal;margin-left:6px}
#rulerTalk .rt-text{font-size:15px;line-height:1.6}
#rulerTalk .rt-hint{display:block;color:#8f8a76;font-size:11px;margin-top:6px;text-align:right}
@media(max-width:820px){#rulerTalk{left:8px;bottom:calc(var(--panel-h,150px) + 52px);max-width:82vw;gap:6px}#rulerTalk .rt-portrait{width:96px;height:122px}#rulerTalk .rt-fallback{font-size:40px}#rulerTalk .rt-text{font-size:13.5px}#rulerTalk .rt-bubble{min-width:160px;padding:8px 10px 6px}}

/* 死海古卷質感（2026-09-21 Helen：「我想要有這種感覺」／「不要一塊一塊拼，直接一整張」）：一整張撕裂焦邊羊皮（程序生成 ui/parchment-sheet.png，background-size 100% 100%）、墨色文字、縫線分欄；文字區保持乾淨以利投影閱讀 */
dialog{box-sizing:border-box;max-width:calc(100vw - 16px);border:0;padding:46px 52px;border-radius:0;background:url("ui/parchment-sheet.png") center/100% 100% no-repeat;box-shadow:none;filter:drop-shadow(0 22px 40px #000000c8) drop-shadow(0 0 2px #2a170a80);color:#3a2513;--ink:#3a2513;--faded-ink:#5b3d22}/* 一整張羊皮（Helen：不要一塊一塊拼），撕裂邊在圖的 alpha 裡，內縮 46px 讓內容不壓到破邊 */
dialog::backdrop{background:radial-gradient(ellipse at 45% 35%,#2f2114e6,#0b0805f5);backdrop-filter:blur(6px)}
dialog h2,dialog h3,dialog h4{color:#2f1c0e;font-family:"Noto Serif TC","PMingLiU",Georgia,serif;letter-spacing:3px;text-shadow:0 1px 0 #f3dfb0}
dialog p,dialog label,dialog label.check,dialog .brief,dialog .meta{color:#4b3119}
#setup .setup-intro{border-right:2px dashed #6f4a27;box-shadow:inset -6px 0 14px #7a4f2412;background-image:linear-gradient(90deg,transparent 49.5%,#8c60351c 50%,#fff0ca40 50.5%,transparent 51%),linear-gradient(0deg,transparent 49.5%,#8c603521 50%,#fff0ca40 50.5%,transparent 51%)}
#setup .setup-intro:after{opacity:.55}
#briefText .objectives{background:#f7e8c266;border:1px solid #8a5d33aa;border-left:3px solid #8a5d33}
#briefText p,#briefText{color:#3a2513}
.campaign-card{background:#f6e6bf55;border:1px solid #8a5d3388}
.campaign-card p{color:#4b3119}.campaign-card .meta{color:#6b4a2a}.campaign-card .curr{color:#4d5f2a}
dialog select,dialog .gift-row input{background:#fbecc8cc;color:#2f1c0e;border:1px solid #8a5d33}
dialog button,dialog .file-button{background:linear-gradient(#f3dfb2,#d6b27a);color:#3a2513;border:1px solid #7f5630}
dialog .primary{background:linear-gradient(#9c4b2a,#6e3218);color:#fbe9c4;border-color:#4d2210}
@media(max-width:820px){dialog{padding:30px max(26px,5vw)}}/* 2026-09-21：平板寬度羊皮撕邊約占 4～5% 寬，內距跟著寬度走，文字才不會被撕邊蓋住 */
#setup{padding:22px 30px 26px}#setup .setup-intro{padding-left:14px}@media(max-width:820px){#setup{padding:20px 14px}}

/* 王與王的主動溝通（2026-09-21）：傳訊視窗、地圖上的使者、回覆對話框依通訊方式換皮 */
#messageDialog{width:min(560px,94vw)}#msgKinds{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}#msgKinds button{text-align:left;padding:8px 10px;line-height:1.35}#msgKinds button small{display:block;font-weight:normal;opacity:.8;font-size:12px}#msgGiftRows{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:6px 0}#msgGiftRows label{font-size:12px}#msgGiftRows input{width:100%;box-sizing:border-box}
.standing .msgbtn{margin-left:4px}
#rulerTalk .rt-medium{display:inline-block;font-size:11px;color:#c9c0a0;border:1px solid #ad945860;border-radius:10px;padding:0 7px;margin-bottom:5px}
#rulerTalk[data-medium=telegraph] .rt-bubble{background:#efe4c8;color:#2a2418;border-color:#7d6a3f;font-family:"Courier New",monospace}#rulerTalk[data-medium=telegraph] .rt-name{color:#4a3a1c}#rulerTalk[data-medium=telegraph] .rt-name small,#rulerTalk[data-medium=telegraph] .rt-hint,#rulerTalk[data-medium=telegraph] .rt-medium{color:#6b5a35}
#rulerTalk[data-medium=radio] .rt-portrait,#rulerTalk[data-medium=hotline] .rt-portrait{filter:grayscale(.4) contrast(1.1)}#rulerTalk[data-medium=radio] .rt-bubble{border-color:#8fa39a;background:linear-gradient(#25302b,#121a16)}
#rulerTalk[data-medium=hotline] .rt-bubble{border-color:#c0473c;background:linear-gradient(#3a2222,#1a1010)}
#rulerTalk[data-medium=video] .rt-portrait{border-color:#3fa7d6;border-radius:10px;box-shadow:0 0 0 3px #10222c,0 0 18px #3fa7d680}#rulerTalk[data-medium=video] .rt-portrait:after{content:"● LIVE";position:absolute;top:6px;left:8px;font:bold 10px system-ui;color:#ff5252;text-shadow:0 0 4px #000}#rulerTalk[data-medium=video] .rt-bubble{border-color:#3fa7d6;background:linear-gradient(#17262e,#0c151a)}
#rulerTalk[data-medium=hologram] .rt-portrait{border-color:#4fd8ff;background:radial-gradient(ellipse at 50% 30%,#0e3b4a,#04131a 70%);box-shadow:0 0 22px #4fd8ff88}#rulerTalk[data-medium=hologram] .rt-portrait img{filter:sepia(1) hue-rotate(150deg) saturate(2.2) brightness(1.1);opacity:.9}#rulerTalk[data-medium=hologram] .rt-portrait:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,#4fd8ff14 0 2px,transparent 2px 5px);pointer-events:none;z-index:2}#rulerTalk[data-medium=hologram] .rt-bubble{border-color:#4fd8ff;background:linear-gradient(#0f2a33f0,#06141af0);color:#d8f6ff}
#rulerTalk[data-medium=crystal] .rt-portrait{border-color:#b48cff;border-radius:50% 50% 8px 8px;box-shadow:0 0 24px #b48cff88}#rulerTalk[data-medium=crystal] .rt-bubble{border-color:#b48cff;background:linear-gradient(#2a1f3d,#140f20)}
#rulerTalk[data-medium=envoy] .rt-bubble,#rulerTalk[data-medium=courier] .rt-bubble,#rulerTalk[data-medium=pigeon] .rt-bubble{background:linear-gradient(#e9d7ae,#d6bf8c);color:#3a2513;border-color:#8a6a3a}#rulerTalk[data-medium=envoy] .rt-name,#rulerTalk[data-medium=courier] .rt-name,#rulerTalk[data-medium=pigeon] .rt-name{color:#3a2513}#rulerTalk[data-medium=envoy] .rt-name small,#rulerTalk[data-medium=envoy] .rt-hint,#rulerTalk[data-medium=envoy] .rt-medium,#rulerTalk[data-medium=courier] .rt-name small,#rulerTalk[data-medium=courier] .rt-hint,#rulerTalk[data-medium=courier] .rt-medium,#rulerTalk[data-medium=pigeon] .rt-name small,#rulerTalk[data-medium=pigeon] .rt-hint,#rulerTalk[data-medium=pigeon] .rt-medium{color:#6b5a35}
