:root{--parchment:#efe7d6;--parchment-raised:#f3ead6;--parchment-sunk:#e7dcc4;--paper-edge:#c9b896;--paper-edge-strong:#b9a67f;--field:#241f17;--field-line:#3b3327;--field-ink:#e8dcc0;--ink:#2b2318;--ink-soft:#5d5343;--ink-faint:#7d6f58;--seal:#7a2518;--seal-bright:#a8381f;--good:#2f5233;--good-ink:#e7f0e2;--warn:#7a6318;--warn-ink:#f6eed6;--danger:#8a2010;--danger-ink:#fbeae6;--wood:#5e6b3a;--stone:#7d7468;--iron:#6a5a4e;--food:#7a6318;--gold:#8a6a2f;--serif:"Spectral", ui-serif, Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--step-0:.95rem;--step-1:1.15rem;--step-2:1.45rem;--step-3:1.9rem;--small:.82rem;--tiny:.72rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--edge:1px solid var(--paper-edge);--edge-strong:1px solid var(--paper-edge-strong);--radius:2px;font:var(--step-0) / 1.6 var(--serif);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--parchment);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background:var(--parchment);min-height:100dvh;margin:0}h1,h2,h3{font-variant:small-caps;letter-spacing:.03em;text-wrap:balance;margin:0 0 var(--sp-3);font-weight:800}h1{font-size:var(--step-3);line-height:1.15}h2{font-size:var(--step-2);margin-top:var(--sp-6)}h3{font-size:var(--step-1);margin-top:var(--sp-5)}p{margin:0 0 var(--sp-3);max-width:68ch}a{color:var(--seal);text-underline-offset:.18em}a:hover{color:var(--seal-bright)}:focus-visible{outline:2px solid var(--seal);outline-offset:2px}button,input,select{font:inherit;color:inherit}button{font-family:var(--mono);font-size:var(--small);padding:var(--sp-2) var(--sp-3);background:var(--parchment-sunk);border:var(--edge-strong);border-radius:var(--radius);cursor:pointer}button:hover:not(:disabled){background:var(--parchment-raised);border-color:var(--seal)}button:disabled{opacity:.45;cursor:not-allowed}input,select{padding:var(--sp-2);background:var(--parchment-raised);border:var(--edge);border-radius:var(--radius);min-width:0}label{gap:var(--sp-1);font-size:var(--small);color:var(--ink-soft);flex-direction:column;display:inline-flex}form{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-direction:column;align-items:flex-start;display:flex}nav{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--parchment-sunk);border-bottom:var(--edge-strong);display:flex}nav ul{gap:var(--sp-2) var(--sp-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}nav a{font-variant:small-caps;letter-spacing:.06em;color:var(--ink-soft);text-decoration:none}nav a:hover{color:var(--seal)}nav a.here{color:var(--ink);border-bottom:2px solid var(--seal);font-weight:600}main{padding:var(--sp-5) var(--sp-4);max-width:68rem;margin:0 auto}.resources,.missions,.reports,.recruit,.research,.buildings,.recruit-queue,.build-queue{margin:0 0 var(--sp-4);gap:var(--sp-2);flex-direction:column;padding:0;list-style:none;display:flex}.mission,.report,.unit,.research-item,.building,.recruit-queue>li,.build-queue>li{align-items:baseline;gap:var(--sp-2) var(--sp-3);padding:var(--sp-3);background:var(--parchment-raised);border:var(--edge);border-left:3px solid var(--paper-edge-strong);border-radius:var(--radius);flex-wrap:wrap;min-width:0;display:flex}.resources{gap:var(--sp-2) var(--sp-4);padding:var(--sp-3);background:var(--parchment-sunk);border:var(--edge);border-radius:var(--radius);flex-flow:wrap}.resources>li{align-items:baseline;gap:var(--sp-2);min-width:0;display:flex}.resource-name{font-variant:small-caps;letter-spacing:.04em;color:var(--ink-soft);font-size:var(--small)}.resource-amount{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600}.resource-cap{font-family:var(--mono);font-size:var(--tiny);color:var(--ink-faint);font-variant-numeric:tabular-nums}.resource-cap:before{content:"/ "}.map-tile{background:var(--field-line);border:var(--edge-strong);border-radius:var(--radius);gap:2px;max-width:min(100%,34rem);margin:0;padding:2px;list-style:none;display:grid}.map-tile>li{aspect-ratio:1;padding:var(--sp-2);background:var(--field);color:var(--field-ink);flex-direction:column;gap:2px;min-width:0;display:flex;overflow:hidden}.map-tile>li.empty{color:#6b6150;background:#1c1811}.map-tile>li.castle{box-shadow:inset 0 0 0 1px var(--field-line)}.map-tile .coords{font-family:var(--mono);font-size:var(--tiny);color:#8d8169;font-variant-numeric:tabular-nums}.map-tile .castle-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.2;overflow:hidden}.map-tile .owner{font-size:var(--small);color:#a2957c;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-tile>li.mine{box-shadow:inset 0 0 0 2px var(--seal-bright);background:#2e2316}.map-tile>li.mine .castle-name{color:#e4a894}.map-pan{gap:var(--sp-2);margin:var(--sp-3) 0;flex-wrap:wrap;display:flex}.shield,.vacation,.locked,.done,.held,.state,.kind{font-family:var(--mono);font-size:var(--tiny);letter-spacing:.04em;padding:1px var(--sp-2);border-radius:var(--radius);white-space:nowrap;align-self:flex-start}.shield{background:var(--good);color:var(--good-ink);margin-top:auto}.vacation{background:var(--warn);color:var(--warn-ink);margin-top:auto}.locked{background:var(--parchment-sunk);color:var(--ink-faint);border:var(--edge)}.done{background:var(--good);color:var(--good-ink)}.held,.state{background:var(--parchment-sunk);color:var(--ink-soft);border:var(--edge)}.kind{background:var(--ink);color:var(--parchment);font-variant:small-caps;letter-spacing:.06em}.mission .target{font-family:var(--mono);font-size:var(--small)}.mission .remaining{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--seal);margin-left:auto;font-weight:600}.mission .units{font-size:var(--small);color:var(--ink-soft);flex-basis:100%}.mission.attack{border-left-color:var(--seal)}.report{flex-direction:column;align-items:stretch}.report .when{font-family:var(--mono);font-size:var(--tiny);color:var(--ink-faint)}.report .summary{gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;align-items:baseline;display:flex}.report .outcome{font-variant:small-caps;letter-spacing:.04em;font-weight:600}.report .detail{font-size:var(--small);color:var(--ink-soft)}.report.attacker-won{border-left-color:var(--good)}.report.defender-held{border-left-color:var(--seal)}.report.spy{border-left-color:var(--ink-faint);border-left-style:dashed}.unit .name,.research-item .name,.building .name{font-weight:600;font-size:var(--step-1);flex-grow:0;flex-basis:11rem}.unit .stats,.research-item .level,.building .level{font-family:var(--mono);font-size:var(--small);color:var(--ink-soft)}.unit .held,.research-item .level,.building .level{margin-right:auto}.build-queue>li,.recruit-queue>li{border-left-color:var(--seal);font-size:var(--small)}.build-queue>li span,.recruit-queue>li span{font-family:var(--mono);color:var(--seal);font-variant-numeric:tabular-nums;font-weight:600}.building.maxed{border-left-color:var(--good);opacity:.75}.duration{font-family:var(--mono);font-size:var(--small);color:var(--ink-faint)}.affordable{gap:var(--sp-2);flex-wrap:wrap;align-items:center;margin-left:auto;display:flex}.research-item.maxed{border-left-color:var(--good);opacity:.75}.queued{padding:var(--sp-3);background:var(--parchment-sunk);border:var(--edge);border-left:3px solid var(--seal);border-radius:var(--radius);margin-bottom:var(--sp-4);font-family:var(--mono);font-size:var(--small)}.sides{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));width:100%;display:grid}.sides>*{min-width:0;padding:var(--sp-3);background:var(--parchment-raised);border:var(--edge);border-radius:var(--radius)}.cost{gap:var(--sp-1) var(--sp-3);font-family:var(--mono);font-size:var(--small);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:inline-flex}.cost>span:before{content:"";width:7px;height:7px;margin-right:var(--sp-1);vertical-align:.05em;border-radius:1px;display:inline-block}.cost-wood:before{background:var(--wood)}.cost-stone:before{background:var(--stone)}.cost-iron:before{background:var(--iron)}.cost-food:before{background:var(--food)}.cost-gold:before{background:var(--gold)}.identity{padding:var(--sp-4);background:var(--parchment-raised);border:var(--edge);border-radius:var(--radius);margin-bottom:var(--sp-5)}.identity dt{font-variant:small-caps;letter-spacing:.04em;color:var(--ink-soft);font-size:var(--small)}.identity dd{margin:0 0 var(--sp-3);font-family:var(--mono)}.danger{padding:var(--sp-4);border:1px solid var(--danger);border-radius:var(--radius);margin-top:var(--sp-6);border-left-width:3px}.danger h2{color:var(--danger);margin-top:0}.danger button{border-color:var(--danger);color:var(--danger)}.danger button:hover:not(:disabled){background:var(--danger);color:var(--danger-ink);border-color:var(--danger)}.warning{font-size:var(--small);color:var(--danger);max-width:62ch}.note{font-size:var(--small);color:var(--ink-soft);max-width:62ch}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}th,td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:var(--edge)}th{font-variant:small-caps;letter-spacing:.04em;font-size:var(--small);color:var(--ink-soft)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.spinner{padding:var(--sp-6) 0;justify-content:center;display:flex}.spinner-rule{background:var(--seal);transform-origin:50%;width:6rem;height:2px;animation:1.4s ease-in-out infinite spinner-rule}@keyframes spinner-rule{0%,to{opacity:.4;transform:scaleX(.3)}50%{opacity:1;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}.spinner-rule{opacity:.5;transform:none}}
