@font-face{font-family:Ethiopic;src:url('assets/fonts/NotoSerifEthiopic-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}*{box-sizing:border-box}body{margin:0;background:#eee9dd;color:#263e32;font:16px/1.5 system-ui,-apple-system,'Segoe UI',sans-serif}button,select,input{font:inherit}button{cursor:pointer;border:1px solid #c7cebf;border-radius:8px;background:#fffaf0;color:#263e32;padding:10px 15px;font-weight:650}button:hover{background:#e3ecd9}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,select:focus-visible{outline:3px solid #be862a;outline-offset:3px}.primary{background:#28533c;color:#fff8e9;border-color:#28533c}.primary:hover{background:#396d50}.danger{color:#963f33;border-color:#c48272}.brand{font-family:Georgia,Ethiopic,serif;font-size:30px;color:#fff8e6;text-decoration:none;font-weight:bold;display:flex;align-items:center;gap:12px}.brand [lang]{font-family:Ethiopic,'Noto Sans Ethiopic','Nyala',sans-serif}.version{font:10px system-ui;letter-spacing:1.7px;color:#d6c89d;border-left:1px solid #778577;padding-left:15px;margin-left:7px}header{background:#203d30;padding:20px max(24px,calc((100vw - 1480px)/2));display:flex;justify-content:space-between;gap:20px;align-items:center}nav{display:flex;gap:8px}nav button{background:transparent;color:#fff9ed;border-color:#647568;font-size:13px}main{max-width:1530px;margin:auto;padding:28px}.intro{display:flex;justify-content:space-between;align-items:center;margin:0 0 25px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;color:#69745f}h1{font:42px/1.15 Georgia,serif;margin:10px 0 0}h1 em{font-weight:normal;color:#698064}h2{font:23px/1.25 Georgia,serif;margin:6px 0 10px}.intro-note{border-left:3px solid #bc9a4f;padding-left:20px;max-width:370px;color:#60705e;font-size:15px}.status{display:grid;grid-template-columns:1.2fr 1.2fr 1.2fr .8fr;border:1px solid #d2cbb8;background:#faf6e9;border-radius:12px;margin-bottom:22px;overflow:hidden}.status>div{padding:16px 22px;border-right:1px solid #ddd6c5}.status small{display:block;font-size:10px;letter-spacing:1.5px;color:#75806b}.status strong{font-size:19px;display:block;margin-top:3px}.meter{height:4px;background:#e1e4d6;margin-top:8px;border-radius:5px;overflow:hidden}.meter i{display:block;height:100%;background:#55815b}.layout{display:grid;grid-template-columns:minmax(0,1fr) 345px;gap:22px}.map-panel,.action-panel,.dispatch,.commanders,.hand-panel{background:#faf7ed;border:1px solid #d8cfba;border-radius:14px;padding:20px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.pill{display:inline-block;background:#e9eddf;color:#60704f;border-radius:5px;padding:5px 9px;font-size:11px}.map-panel{padding:20px 16px 10px}#map{background:#f0e5ce;border:1px solid #e0d5bd;border-radius:10px;margin-top:10px;overflow:hidden}#map svg{width:100%;height:auto;display:block}.map-key{display:flex;gap:16px;font-size:11px;flex-wrap:wrap;margin:12px 0 6px}.key{display:inline-block;width:15px;height:6px;border-radius:3px;margin-right:4px}.green{background:#2c7550}.red{background:#934e42}.gold{background:#b28a35}.map-note{font-size:11px;color:#78806e;margin:6px 0}.action-panel{border-top:4px solid #aa8335;min-height:260px}#actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}#actions select{width:100%;padding:9px;border-radius:7px;border:1px solid #c9cebf;background:#fffdf5}#action-desc{font-size:14px;color:#63715f}.private-note{background:#e7eddf;border-radius:8px;padding:12px;font-size:13px;white-space:pre-wrap;margin-top:13px}.private-note:empty{display:none}.dispatch{margin-top:18px}#log{max-height:250px;overflow-y:auto;font-size:12px}#log>div{padding:9px 0;border-bottom:1px solid #e3dfd1}#log small{color:#8e927e;font-size:10px}.commanders{margin-top:22px}#players{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.commander{display:block;text-align:left;padding:0;overflow:hidden;border-color:#d8d9c9;background:#fffaf0;position:relative}.commander.active{box-shadow:0 0 0 2px #ba9346}.commander.you{border-color:#35684a}.portrait{height:105px;background:linear-gradient(150deg,#64775e,#293e32);position:relative;display:flex;align-items:center;justify-content:center;font:32px Georgia;color:#eee4bf}.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 28%}.commander .info{padding:10px;font-size:12px}.commander strong{display:block;font-size:12px}.commander small{color:#7c846e;display:block;font-size:10px}.troop-dots{display:flex;gap:3px;margin:7px 0}.troop-dot{width:12px;height:12px;border-radius:50%;background:#d8d9c9;border:1px solid #b4b9a2}.troop-dot.ready{background:#497854;border-color:#497854}.troop-dot.lost{background:#a65b4a;border-color:#a65b4a}.hand-panel{margin-top:22px}#hand-help{font-size:13px;color:#77806a}#hand{display:flex;gap:11px;overflow-x:auto;padding:4px 3px 15px;min-height:140px}.card{flex:0 0 153px;min-height:185px;background:#fffdf4;border:1px solid #cfc9b1;border-radius:10px;padding:13px;text-align:left;display:flex;flex-direction:column;font-weight:400;box-shadow:0 3px 5px #30462f09}.card b{font:19px/1.2 Georgia,serif;margin:9px 0}.card .symbol{font-size:21px;color:#587449}.card small{font-size:11px;line-height:1.45;color:#68735e}.card .card-status{font-size:10px;letter-spacing:.4px;margin-top:auto;padding-top:12px;color:#a2782f}.card.selected{outline:3px solid #b99039}.card.restricted{background:#eeeadd}.muted{font-size:12px;color:#7e8674}.badge{position:absolute;top:5px;left:5px;background:#274e38;color:#fff7de;border-radius:4px;padding:2px 5px;font-size:9px}.incap{color:#9a5041!important}footer{text-align:center;color:#7a8370;font-size:11px;padding:30px 0 12px}dialog{border:1px solid #c6c8b2;border-radius:15px;background:#fcf8ed;color:#2c4436;max-width:680px;width:calc(100% - 30px);padding:28px;max-height:85vh;overflow-y:auto}dialog::backdrop{background:#12251acc}.close{margin-top:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label{font-size:13px}.form-grid select{display:block;width:100%;padding:10px;margin-top:6px;border:1px solid #c5cab7;border-radius:7px;background:#fffdf4}.rules p,.rules li{font-size:14px}.rules h3{margin-bottom:5px}.outcome{background:#dce8d5;padding:16px;border-radius:10px}.outcome.lost{background:#efddd3}.routes-table{width:100%;border-collapse:collapse}.routes-table td,.routes-table th{padding:7px;border-bottom:1px solid #d3d6c1;font-size:13px;text-align:left}@media(max-width:1100px){.layout{grid-template-columns:1fr}aside{display:grid;grid-template-columns:1fr 1fr;gap:15px}.dispatch{margin-top:0}#players{grid-template-columns:repeat(4,1fr)}.portrait{height:125px}.intro-note{font-size:13px}}@media(max-width:650px){header{padding:15px;align-items:flex-start}.brand{font-size:25px;flex-wrap:wrap;gap:7px}.version{width:100%;border:0;padding:0;margin:0;font-size:8px}nav{gap:5px}nav button{padding:7px;font-size:11px}main{padding:14px}.intro{display:block}h1{font-size:31px}.intro-note{margin-top:16px}.status{grid-template-columns:1fr 1fr}.status>div{padding:12px}.status strong{font-size:16px}.layout{gap:14px}aside{display:block}.dispatch{margin-top:14px}#players{grid-template-columns:repeat(2,1fr)}.portrait{height:110px}.section-head{align-items:flex-start;flex-wrap:wrap}.map-panel{padding:13px 8px}.map-panel h2{font-size:20px}.form-grid{grid-template-columns:1fr}#map{overflow-x:auto}#map svg{min-width:620px}.card{flex-basis:145px}.map-note{font-size:11px}}

.order-detail{width:100%;background:#f0eddf;padding:12px;border-radius:8px;margin-bottom:8px}.order-detail>div{margin-bottom:9px}.order-detail small{display:block;letter-spacing:1px;font-size:9px;color:#7a806c}.order-detail b{font-size:13px}.order-detail p{font-size:12px;color:#6b735f;margin:7px 0 0}

/* Geʽez text sits above the page parchment and below every panel. */
body{position:relative;isolation:isolate;min-height:100vh}
.manuscript-backdrop{position:fixed;inset:130px -3vw -100px;z-index:-1;pointer-events:none;user-select:none;display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:center;overflow:hidden;opacity:.17;color:#715626;font-family:Ethiopic,serif;font-size:clamp(40px,5.7vw,96px);font-weight:400;line-height:2.15;text-align:center}
.manuscript-backdrop>div:first-child{transform:rotate(-5deg)}
.manuscript-backdrop>div:last-child{transform:rotate(4deg) translateY(90px)}
footer a{color:#667457;text-underline-offset:3px}
#map text{font-family:Ethiopic,system-ui,sans-serif}
@media(max-width:650px){.manuscript-backdrop{inset:90px -8vw 0;grid-template-columns:1fr;gap:0;font-size:55px;line-height:2.5}.manuscript-backdrop>div:last-child{display:none}}

/* Denser manuscript texture: repeated short excerpt, compact columns. */
.manuscript-backdrop{inset:110px 20px -30px;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;align-items:start;font-size:25px;line-height:1.55;text-align:justify;overflow:hidden}
.manuscript-backdrop>div:first-child,.manuscript-backdrop>div:last-child{transform:none}
.manuscript-backdrop p{margin:0 0 10px;word-spacing:0;letter-spacing:0}
@media(max-width:1000px){.manuscript-backdrop{grid-template-columns:repeat(2,minmax(0,1fr));font-size:23px;gap:24px}.manuscript-backdrop>div:last-child{display:none}}
@media(max-width:650px){.manuscript-backdrop{inset:90px 12px -30px;grid-template-columns:1fr;font-size:21px;line-height:1.5;gap:0}.manuscript-backdrop>div:not(:first-child){display:none}}

/* Header context and top-to-bottom play order. */
.brand{flex-wrap:wrap}.brand .setting{font:inherit;color:inherit}.commanders,.hand-panel{margin:0 0 22px}


/* Ethiopian flag palette for the top panel. */
body>header{background:linear-gradient(to bottom,rgba(238,233,221,0) 35%,rgba(238,233,221,.25) 60%,rgba(238,233,221,.75) 85%,#eee9dd 100%),linear-gradient(105deg,#078930 0%,#078930 12%,#fcdd09 48%,#fcdd09 55%,#da121a 90%,#da121a 100%)}
.brand{color:#102018}
.brand .version{color:#102018;background:#fff8e6;border-left:0;border-radius:5px;padding:6px 8px}
header nav button{color:#102018;background:#fff8e6;border-color:#fff8e6}
header nav button:hover{background:#fffdf5;border-color:#fffdf5}

/* Keep the hand and turn controls together above the map. */
body>header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:20px;padding:16px max(24px,calc((100vw - 1480px)/2))}
body>header .brand{justify-self:start;font-size:30px;gap:8px;min-width:0}
.header-amharic{grid-column:2;justify-self:center;font-family:Ethiopic,'Noto Sans Ethiopic','Nyala',sans-serif;font-size:60px;line-height:1.1;color:#102018}
body>header nav{justify-self:end}
main{padding:20px 28px}
.intro{margin-bottom:16px}
h1{font-size:36px;margin-top:0}
.commanders{padding:14px;margin-bottom:16px}

.commander .info{padding:8px}
.troop-dots{margin:5px 0}
.status{margin-bottom:16px}
.status>div{padding:12px 18px}
.play-row{display:grid;grid-template-columns:minmax(0,1fr) 345px;gap:22px;align-items:start;margin-bottom:22px}
.play-row>.hand-panel{margin:0;min-width:0;padding:16px}
.play-row>.action-panel{min-width:0;padding:16px}
.play-row .section-head{flex-wrap:wrap}
.play-row h2{font-size:21px}
#hand-help{margin:8px 0}
#hand{display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));grid-auto-rows:1fr;gap:10px;overflow:visible;min-height:0;padding:4px 3px 6px}
#hand .card{min-width:0;min-height:160px;padding:10px}
#hand .card b{font-size:17px;margin:7px 0;overflow-wrap:anywhere}
#hand .card .symbol{font-size:18px}
#hand .card .card-status{overflow-wrap:anywhere}
#actions .outcome{width:100%;padding:12px}
#actions .outcome p{margin:6px 0}
.layout>aside{display:block;min-width:0}
.layout .dispatch{margin-top:0}
.footer-version{display:block;width:auto;margin:24px 0 0;border:0;padding:0;color:#7a8370}
@media(max-width:1100px) and (min-width:851px){#players{grid-template-columns:repeat(7,minmax(0,1fr))}.commander .info{padding:6px}.commander strong{font-size:11px}.play-row{grid-template-columns:minmax(0,1fr) 310px;gap:16px}}
@media(max-width:850px){.play-row{grid-template-columns:minmax(0,1fr) 290px;gap:14px}body>header{gap:12px;padding:14px}body>header .brand{font-size:22px}.header-amharic{font-size:60px}main{padding:16px}}
@media(max-width:650px){body>header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}body>header .brand{font-size:18px;display:block}.brand .setting{display:block;font-size:13px}.header-amharic{font-size:50px}body>header nav{flex-direction:column;gap:5px}body>header nav button{font-size:11px;padding:6px 8px}main{padding:14px}.intro h1{font-size:30px}.play-row{display:flex;flex-direction:column}.play-row>.action-panel{order:-1;width:100%;min-height:0}.play-row>.hand-panel{width:100%}#hand{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.commanders{padding:12px}}

/* Larger portrait windows preserve faces and upper bodies. */
.portrait{height:210px}
.portrait img{object-fit:contain;object-position:center;background:#e6dfcf}
@media(max-width:1100px){.portrait{height:250px}}
@media(max-width:650px){.portrait{height:220px}}

/* Dynamic hand and outcome changes should not move the player's viewport. */
body{overflow-anchor:none}

/* Let the map meet the panel edges while keeping its headings and key inset. */
.map-panel{padding:0 0 10px;overflow:hidden}
.map-panel>.section-head{padding:20px 16px 0}
#map{border-left:0;border-right:0;border-radius:0}
.map-panel>.map-key{margin:12px 16px 6px}
.map-panel>.map-note{margin:6px 16px}
@media(max-width:650px){
 .map-panel>.section-head{padding:13px 8px 0}
 .map-panel>.map-key{margin-left:8px;margin-right:8px}
 .map-panel>.map-note{margin-left:8px;margin-right:8px}
}

/* One continuous passage flows between columns; no cloned or repeated text. */
.manuscript-backdrop{display:block;column-count:3;column-gap:36px;column-fill:auto;height:calc(100vh - 110px);bottom:auto}
@media(max-width:1000px){.manuscript-backdrop{column-count:2;column-gap:24px}}
@media(max-width:650px){.manuscript-backdrop{inset:90px 12px auto;height:calc(100vh - 90px);column-count:1;column-gap:0}}

.map-key .key.italian{width:9px;height:9px;border-radius:0;background:#82473d;transform:rotate(45deg);vertical-align:middle}

/* Mark removal from command directly on the leader portrait. */
.portrait .disgrace-banner,.portrait .incap-banner{position:absolute;left:0;right:0;top:65%;transform:translateY(-50%);padding:7px 4px;background:#82473df2;color:#fff8e6;font:700 14px/1.3 system-ui,sans-serif;letter-spacing:.12em;text-align:center;box-shadow:0 2px 5px #0003;pointer-events:none}

.italian-threat{background:#f5e3bc;border-left:3px solid #b18b35;border-radius:6px;padding:10px 12px;font-size:13px;line-height:1.45}

.portrait .incap-banner{font-size:clamp(9px,.9vw,14px);letter-spacing:.04em}

/* Fill Mengesha's portrait window without leaving a band below the photograph. */
.portrait:has(img[src$="/mengesha-photo.jpg"]){background:#e6dfcf}
.portrait img[src$="/mengesha-photo.jpg"]{object-fit:cover;width:90%}

/* Match the command-status banner height. */
.portrait .traitor-banner{position:absolute;left:0;right:0;top:65%;transform:translateY(-50%);padding:7px 4px;background:#672e24f2;color:#fff8e6;font:700 14px/1.3 system-ui,sans-serif;letter-spacing:.12em;text-align:center;box-shadow:0 2px 5px #0003;pointer-events:none}

/* Identify the human commander with a full-width portrait banner. */
.portrait .badge{top:65%;left:0;right:0;transform:translateY(-50%);border-radius:0;padding:7px 4px;background:#274e38;color:#fff8e6;font:700 14px/1.3 system-ui,sans-serif;letter-spacing:.12em;text-align:center;box-shadow:0 2px 5px #0003;pointer-events:none}
