*{box-sizing:border-box}body{margin:0;background:#171d1b;color:#eee4cc;font-family:"Microsoft YaHei",serif}button{font:inherit;cursor:pointer;color:inherit;border:1px solid #8d7953;background:#292e28;padding:12px 24px;transition:.2s}button:hover{background:#655739;transform:translateY(-2px)}button:disabled{opacity:.35;cursor:default}h1,h2,h3{font-family:STKaiti,KaiTi,serif;font-weight:400}h1{font-size:80px;letter-spacing:20px;margin:20px 0}small,.muted{color:#adad96}p{line-height:1.9}.home{min-height:100vh;background:linear-gradient(90deg,#111b19ed,#111b1933),url('assets/cover-1080p.png') center/cover;display:flex;align-items:center;padding:9vw}.home section{max-width:650px}.eyebrow{letter-spacing:7px;color:#ccae70;font-size:12px}.home button{display:block;width:260px;margin:16px 0;background:#1c2521cc}.gold{color:#ddbd7e}.screen{min-height:100vh;padding:40px 6vw;background:radial-gradient(ellipse at top,#384038,#171d1b 70%)}.top{display:flex;align-items:center;justify-content:space-between;gap:20px}.tabs{display:flex;gap:12px;justify-content:center;margin:30px}.active{background:#8c7044!important}.cards{display:flex;justify-content:center;gap:24px;flex-wrap:wrap}.country{width:250px;min-height:330px;padding:30px;text-align:left;background:linear-gradient(#1c2925aa,#1a211fee),url('assets/court.jpg') center/cover}.country strong{display:block;font:70px KaiTi;margin:30px 0}.country p{font-size:13px}.start{text-align:center;margin:30px}header{background:#202a25;border-bottom:1px solid #6c6349;padding:20px 28px;display:grid;grid-template-columns:1fr 1.2fr auto;gap:30px}.policy{display:flex;align-items:center;gap:12px;font-size:12px;margin:7px 0}.track{height:6px;background:#8e9b99;flex:1}.track i{display:block;height:100%;background:#c9a66c}.stats{display:flex;gap:26px;justify-content:center;margin:8px}.stat{text-align:center;cursor:help}.stat b{display:block;color:#dbbd80;font-size:22px}.stat small{font-size:11px}.board{display:grid;grid-template-columns:1fr 310px;height:calc(100vh - 140px)}.mapwrap{position:relative;overflow:hidden;background:#d5c9a7}canvas{width:100%;height:100%;display:block}.maptitle{position:absolute;top:25px;left:30px;color:#343c31;pointer-events:none}.maptitle h2{margin:0;font-size:30px}.maphint{position:absolute;bottom:20px;left:30px;color:#4e5548;font-size:12px}aside{padding:25px;background:#202a25;overflow:auto}aside h2{font-size:25px}.log{font-size:12px;color:#b4b6a0;border-top:1px solid #4d5343;padding:12px 0;line-height:1.8}.next{width:100%;background:#8b7044;margin:20px 0}.overlay{position:fixed;inset:0;background:#090f10bb;z-index:10;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(5px)}.dialog{background:#e5dac0;color:#30392f;width:650px;max-width:100%;max-height:90vh;overflow:auto;padding:36px;border:1px solid #b59a63;box-shadow:0 20px 90px #0008}.dialog h2{font-size:32px;margin-top:5px}.dialog button{background:#394638;color:#f1e8d3;margin:6px 0;width:100%;text-align:left}.dialog img{width:100%;height:145px;object-fit:cover;filter:sepia(.5)}.dialog small{color:#716a55}.skills{display:grid;gap:12px}.badge{border:1px solid #898060;padding:5px 10px;font-size:12px}.selected{outline:2px solid #e0bd7a}footer{text-align:center;color:#969b87;font-size:11px;margin-top:20px}@media(max-width:850px){h1{font-size:50px}header{grid-template-columns:1fr;gap:8px;padding:12px}.board{height:auto;grid-template-columns:1fr}.mapwrap{height:55vh}aside{padding:20px}.stats{gap:20px}.country{width:42%;min-height:230px;padding:15px}.country strong{font-size:44px;margin:15px 0}.home{padding:8vw}.screen{padding:20px}.top{flex-wrap:wrap}}
/* Keep game panels scrollable without showing native scrollbar tracks/thumbs. */
html,body,body *{scrollbar-width:none;-ms-overflow-style:none}
html::-webkit-scrollbar,body::-webkit-scrollbar,body *::-webkit-scrollbar{display:none;width:0;height:0}
/* Silk, lacquer and bronze: illustrated game HUD. */
body{background:#14221d}button{border:1px solid #a68b53;box-shadow:inset 0 0 0 3px #131c1699,inset 0 0 16px #bc965020,0 3px 7px #0005;background:linear-gradient(135deg,#4d4b32,#242e23);letter-spacing:2px;border-radius:2px}button:hover{box-shadow:inset 0 0 12px #b6905040,0 0 16px #d4ae5840;color:#ffe6ae}.home section{position:relative;padding:35px;border-left:1px solid #c2a46460}.home button{background:linear-gradient(90deg,#5c4b2adc,#1c2822df);border-color:#b29862}.screen{background:linear-gradient(#14211cba,#14211cdd),url('assets/terrain.png') center/cover}.screen h2{text-shadow:0 4px 10px #000}.country{position:relative;overflow:hidden;width:280px;height:440px;border:1px solid #ac925b;background:linear-gradient(0deg,#111d19 0%,#17251f44 70%),url('assets/terrain.png') center/cover;box-shadow:0 10px 30px #0008,inset 0 0 25px #0008}.country strong{position:relative;z-index:1;color:#ebd3a0;text-shadow:0 3px 4px #000;font-size:85px;margin:110px 0 0}.country small,.country span,.country p{position:relative;z-index:1}.country p{background:#14221ecc;padding:8px}.portrait-art{position:absolute;inset:0 0 55px 30px;background:url('assets/atlas-transparent.png') 0 0/300% 200% no-repeat;pointer-events:none}.country:nth-child(2) .portrait-art{background-position:50% 0}.country.selected{transform:translateY(-8px);box-shadow:0 0 35px #d3b06455}.board{height:calc(100vh - 137px);padding:12px;gap:10px;background:linear-gradient(135deg,#101d18,#3d3a28)}.mapwrap{border:5px ridge #837346;box-shadow:inset 0 0 50px #252a1b80,0 5px 30px #0007;border-radius:3px}.mapwrap:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 50px #292b2260;pointer-events:none}.maptitle{top:18px;left:22px;background:#e1d2a9bf;padding:12px 18px;border-left:3px solid #625d3b}.maptitle .eyebrow{color:#6e643d}.maptitle h2{font-size:24px;letter-spacing:4px}.maphint{background:#e5d7afba;padding:7px 12px;left:20px;bottom:15px}.mapwrap canvas{object-fit:fill}header{background:linear-gradient(90deg,#192b24,#304135,#182b23);border:3px ridge #8f7950;box-shadow:0 4px 15px #0009;position:relative;z-index:2}.track{height:9px;border:1px solid #b2996566;box-shadow:inset 0 2px 4px #0006;background:linear-gradient(#586b64,#8a9b8d)}.track i{background:linear-gradient(#e0c58b,#8f713e)}.stat b{text-shadow:0 2px 4px #000}.stat{padding:0 14px;border-right:1px solid #b8a16b33}.stat:last-child{border:0}aside{border:3px ridge #7c7049;background:linear-gradient(#19291fec,#1b2a24f5),url('assets/terrain.png') center/cover;padding:18px 24px;position:relative}.advisor-art{height:150px;background:url('assets/atlas-transparent.png') 0 0/300% 200% no-repeat;width:150px;float:right;shape-outside:inset(0);margin:-10px -15px 5px 0;mask-image:linear-gradient(#000 75%,transparent)}aside>.eyebrow{display:block;font-size:10px;letter-spacing:3px;padding-top:10px}aside h2{font-size:23px;letter-spacing:2px}aside>p{font-size:12px;min-height:65px}#target{clear:both;padding:12px;background:#111c1780;border:1px solid #9b855744;min-height:120px}.log{border-color:#b49b5c30}.next{background:linear-gradient(#9b7843,#65502f);font-size:15px;padding:17px 10px}.dialog{background:linear-gradient(#e8dcbcef,#d3c19be8),url('assets/terrain.png') center/cover;border:7px ridge #998052;box-shadow:0 0 0 1px #d9c58d,0 25px 100px #000b}.dialog>img{height:210px;object-position:center 40%;border:2px solid #9c8457}.dialog button{background:linear-gradient(90deg,#344c3c,#23372c);padding:16px 20px}.dialog button small{color:#bcbb9b}.relic-art{display:block;width:120px;height:120px;margin:auto;background-image:url('assets/atlas-transparent.png');background-size:300% 200%;background-repeat:no-repeat}.dialog .relic-choice{text-align:center;display:inline-block;width:31%;margin:1%;vertical-align:top;padding:12px 4px}.relic-choice p{font-size:12px;letter-spacing:0}.skills button{border-left:5px solid #b7a06b}.home h1{color:#ebd4a6;text-shadow:3px 4px 0 #382f23,0 6px 25px #000;letter-spacing:15px}@media(max-width:850px){.board{height:auto;padding:5px}.mapwrap{height:65vh}.country{width:44%;height:340px;min-height:0}.country strong{margin-top:60px;font-size:60px}.portrait-art{left:0}.advisor-art{height:130px;width:130px}.maptitle h2{font-size:16px}.maphint{font-size:10px}.dialog .relic-choice{display:block;width:100%}}

#app:has(>header){height:100dvh;display:flex;flex-direction:column;overflow:hidden}#app>header{flex-shrink:0}#app>.board{flex:1;min-height:0;height:auto}.advisor-art{position:absolute;top:15px;right:8px;float:none;width:105px;height:145px;margin:0;pointer-events:none}aside>h2{position:relative;max-width:165px;font-size:20px;line-height:1.6}aside>p{padding-right:90px;min-height:90px}aside>.eyebrow{position:relative;z-index:1;font-size:9px}@media(max-width:850px){#app:has(>header){height:auto;overflow:visible}.board{flex:none!important}.mapwrap{height:65vh;min-height:430px}aside>h2{max-width:none;padding-right:100px}}
/* Floating HUD above the static, full viewport map. */
#app:has(>header){display:block;position:relative;height:100dvh;overflow:hidden}#app>header{position:absolute;inset:16px 340px auto 16px;z-index:3;border:1px solid #a68b53;box-shadow:0 7px 25px #0006;background:linear-gradient(90deg,#192b24ed,#304135eb);padding:15px 18px;grid-template-columns:1fr 1.1fr auto;gap:15px;backdrop-filter:blur(10px)}#app>.board{position:absolute;inset:0;height:100%;padding:0;display:block;background:#b7ac89}.board>.mapwrap{position:absolute;inset:0;width:100%;height:100%;border:0;border-radius:0;overflow:hidden;isolation:isolate;touch-action:manipulation;background:#b7ac89}.mapwrap canvas{position:absolute;left:0;top:0;max-width:none;max-height:none;transform-origin:0 0;cursor:pointer;touch-action:manipulation;user-select:none}.mapwrap:after{z-index:1;box-shadow:inset 0 0 70px #20291f6b;pointer-events:none}.board>aside{position:absolute;z-index:3;right:16px;top:16px;bottom:16px;width:300px;max-height:calc(100dvh - 32px);border:1px solid #a68b53;background:linear-gradient(#19291ff0,#1b2a24ed);box-shadow:0 8px 35px #0006;backdrop-filter:blur(10px)}.maptitle{top:175px;left:28px;z-index:2;pointer-events:none}.maphint{z-index:2;left:28px;bottom:28px;pointer-events:none}@media(max-width:1150px){#app>header{inset:12px 12px auto;grid-template-columns:1fr 1.2fr auto;padding:10px;gap:10px}.board>aside{top:175px;bottom:12px;right:12px;width:260px;max-height:calc(100dvh - 187px)}.maptitle{top:175px;left:18px}.stat{padding:0 6px}.stats{gap:10px}.maphint{left:18px;bottom:18px}}@media(max-width:650px){#app>header{inset:8px 8px auto;grid-template-columns:1fr auto;gap:5px;padding:8px}header>div:first-child{grid-column:1/-1}.stats{gap:8px;margin:4px}.stat b{font-size:16px}.stat small{font-size:9px}.board>.mapwrap{height:100%;min-height:0}.board>aside{top:auto;bottom:8px;right:8px;width:210px;max-height:35dvh;padding:12px;font-size:11px}.advisor-art{display:none}aside>.eyebrow,aside>p,aside>h3,aside>.log{display:none}aside>h2{font-size:16px;padding:0;margin:0 0 8px}#target{min-height:0;padding:6px}#target h2{font-size:17px;margin:3px 0}#target p{margin:3px 0}.next{margin:8px 0;padding:10px;font-size:12px}.maptitle{top:185px;left:12px;padding:7px 10px}.maptitle h2{font-size:14px}.maphint{left:12px;bottom:12px;font-size:9px;max-width:145px}}
.policy>span{min-width:64px;font-variant-numeric:tabular-nums}.policy>span:last-child{text-align:right}
.turn-status{clear:both;padding:12px 0!important;min-height:0!important;font-size:12px;color:#c9b988}.cancel-attack{position:absolute;z-index:4;left:28px;bottom:72px;padding:15px 24px;background:linear-gradient(#794d37,#4a3028);border-color:#c29a68;box-shadow:0 6px 24px #0007}.selecting-target canvas{cursor:crosshair}.selecting-target .maphint{color:#543a24;border-left:3px solid #9a6a35}.dialog .secondary-action{margin-top:15px;background:#465144;font-size:13px;padding:10px 20px}@media(max-width:650px){.cancel-attack{left:12px;bottom:62px;max-width:145px;padding:12px;font-size:12px}}

/* Preserve the complete 2:1 event paintings, including on narrow screens. */
.dialog img.event-illustration{display:block;width:100%;height:auto;aspect-ratio:2/1;object-fit:contain;filter:none;margin-bottom:14px;background:#bda079}

/* The terrain canvas shares the realm registration; it never receives input. */
.board>.mapwrap .map-terrain{width:100%;height:100%;pointer-events:none;cursor:default;z-index:0}
