:root{--bg:#101828;--win:#2c48b0;--win-dark:#1c2c78;--edge:#f8f8f8;--shadow:#080c20;--ink:#f8f8f8;--muted:#b8c8f0;--gold:#f8d040;--red:#f86048;--green:#70e060;font-family:Pixelify Sans,Courier New,monospace}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);margin:0}body{background-color:var(--bg);background-image:linear-gradient(45deg,#142038 25%,#0000 25% 75%,#142038 75%),linear-gradient(45deg,#142038 25%,#0000 25% 75%,#142038 75%);background-position:0 0,8px 8px;background-size:16px 16px}[hidden]{display:none!important}.win,.card,#panel,#action-menu,#game header{background:linear-gradient(180deg, var(--win) 0%, var(--win-dark) 100%);border:3px solid var(--edge);box-shadow:0 0 0 2px var(--shadow), 4px 4px 0 2px #0008;text-shadow:1px 1px 0 var(--shadow);border-radius:6px}button{font:inherit;color:var(--ink);text-shadow:1px 1px 0 var(--shadow);cursor:pointer;text-align:left;background:0 0;border:2px solid #0000;border-radius:4px;padding:6px 12px 6px 22px;font-size:16px;position:relative}button:hover:not(:disabled),button:focus-visible{border-color:var(--gold);background:#fff2;outline:none}button:hover:not(:disabled):before,button:focus-visible:before{content:"";border:5px solid #0000;border-left:7px solid var(--gold);margin-top:-5px;position:absolute;top:50%;left:6px}button:disabled{opacity:.4;cursor:default}button.quiet{opacity:.85}.screen{justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.card{width:100%;max-width:560px;padding:24px 28px}h1{color:var(--gold);letter-spacing:3px;text-shadow:3px 3px 0 #a04010, 5px 5px 0 var(--shadow);margin:0;font-size:56px}h2{color:var(--gold);margin:0 0 12px;font-size:26px}.tag,.chapter-no{color:var(--muted);margin:4px 0 18px}.buttons{flex-direction:column;gap:4px;margin:18px 0;display:flex}.lines p{margin:0 0 10px;line-height:1.45}.goal{color:var(--gold)}.roster{color:var(--muted);padding-left:18px}details{color:var(--muted)}details li{margin:6px 0;line-height:1.35}summary{cursor:pointer;color:var(--ink)}#game{flex-direction:column;justify-content:flex-start;align-items:stretch;gap:8px;padding:8px}#game header{align-items:center;gap:14px;padding:4px 10px;display:flex}#title{color:var(--gold);font-size:18px}#status{color:var(--muted);flex:1}#game main{flex:1;gap:8px;min-height:0;display:flex}#board-wrap{flex:1;justify-content:center;align-items:center;min-width:0;display:flex;position:relative}#board{cursor:pointer;image-rendering:pixelated;border:3px solid var(--shadow);display:block;box-shadow:0 0 0 2px #50608044}#panel{width:290px;padding:12px;font-size:15px;overflow-y:auto}#goal-line{color:var(--gold);margin-bottom:10px}#info{min-height:150px}#info h3{margin:0 0 2px;font-size:18px}#info .sub{color:var(--muted);margin-bottom:6px;line-height:1.3}#info .tile{border-top:2px solid #ffffff30;margin-top:8px;padding-top:6px}#info table{border-collapse:collapse;clear:both}#info td{padding:1px 12px 1px 0}#info td:nth-child(odd){color:var(--muted)}.portrait{float:left;width:64px;height:64px;image-rendering:pixelated;border:2px solid var(--edge);background:linear-gradient(#88c8f8,#58a038 80%);border-radius:4px;margin:0 10px 6px 0}.portrait.foe{background:linear-gradient(#f8a888,#805030 80%)}.forecast{border:2px solid var(--edge);background:#0003;border-radius:4px;margin-bottom:10px;padding:8px}.forecast .kill{color:var(--green)}.forecast .risk{color:var(--red)}#log{color:var(--muted);border-top:2px solid #ffffff30;margin-top:14px;padding-top:8px;padding-left:18px;font-size:14px}#log li{margin:2px 0}#action-menu{z-index:5;flex-direction:column;gap:0;min-width:150px;padding:4px;display:flex;position:absolute}#action-menu button{padding:4px 10px 4px 22px;font-size:15px}#action-menu .cost{float:right;color:var(--gold);margin-left:14px}#action-menu .cost small{color:var(--muted);font-size:12px}.rank{color:var(--gold)}#action-menu small.elite{color:var(--gold);font-size:11px}canvas.battle{z-index:7;image-rendering:pixelated;cursor:pointer;border:3px solid var(--edge);box-shadow:0 0 0 2px var(--shadow), 6px 6px 0 2px #0008;border-radius:6px;position:absolute}#banner{text-align:center;pointer-events:none;z-index:6;letter-spacing:4px;color:var(--ink);border-top:3px solid var(--edge);border-bottom:3px solid var(--edge);text-shadow:2px 2px 0 var(--shadow);background:linear-gradient(90deg,#0000,#2c48b0ee 20% 80%,#0000);padding:10px 0;font-size:36px;animation:1.1s steps(8,end) forwards banner;position:absolute;top:40%;left:0;right:0}@keyframes banner{0%{opacity:0;transform:scaleY(.2)}20%{opacity:1;transform:scaleY(1)}80%{opacity:1}to{opacity:0}}.floater{pointer-events:none;z-index:4;text-shadow:2px 2px 0 var(--shadow), -1px -1px 0 var(--shadow);font-size:22px;animation:.9s steps(9,end) forwards rise;position:absolute;transform:translate(-50%,-50%)}.floater.dmg{color:#fff}.floater.heal{color:var(--green)}.floater.info{color:var(--gold);font-size:17px}@keyframes rise{0%{opacity:1;margin-top:0}70%{opacity:1}to{opacity:0;margin-top:-30px}}.card.wide{max-width:900px;max-height:calc(100vh - 32px);overflow-y:auto}.pick-label{color:var(--gold);margin:14px 0 6px}.factions{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;display:grid}button.faction{background:#0002;border:2px solid #ffffff40;flex-direction:column;gap:3px;min-height:100%;padding:8px 10px 10px;display:flex}button.faction.picked{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:#ffffff20}button.faction:hover:before,button.faction:focus-visible:before{display:none}button.faction b{font-size:18px}button.faction .sub{color:var(--muted);font-size:13px}button.faction .trait{color:var(--ink);font-size:13px;line-height:1.25}button.faction .trait:before{content:"· ";color:var(--gold)}.army{gap:0;margin-bottom:4px;display:flex}.army canvas{width:32px;height:32px;image-rendering:pixelated}.buttons.row{flex-direction:row}.fog-toggle{color:var(--ink);cursor:pointer;align-items:center;gap:8px;margin-top:16px;display:flex}.fog-toggle input{width:18px;height:18px;accent-color:var(--gold)}@media (width<=760px){#game main{flex-direction:column}#panel{width:auto;max-height:34vh}#status{display:none}h1{font-size:42px}}
