:root{--wood-0:#1d130b;--wood-1:#2e1f13;--wood-2:#45301d;--wood-3:#5d4128;--brass:#c9a35a;--brass-hi:#ecd08e;--brass-lo:#7d6130;--parch-0:#f1e6c8;--parch-1:#e4d3a8;--parch-2:#d2bd8c;--ink:#2c1d10;--ink-soft:#6b5434;--light:#f6ecd3;--light-soft:#cdb78f;--red:#b33a26;--green:#4f8a3a;--side-w:300px;--font:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--safe-l:env(safe-area-inset-left,0px)}*{box-sizing:border-box}html,body{height:100%;color:var(--light);font-family:var(--font);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#8fb3c9;margin:0;font-size:14px;overflow:hidden}#app{position:fixed;inset:0}#app canvas{touch-action:none;-webkit-touch-callout:none;display:block}button{font:inherit;color:inherit;cursor:pointer}.hidden{display:none!important}.glyph{flex:none;width:18px;height:18px}.muted{color:var(--ink-soft)}.small{font-size:12px}img.ico{object-fit:contain;vertical-align:middle;filter:drop-shadow(0 1px 1px #28180859);flex:none;width:40px;height:40px;display:inline-block}img.ico:not(.ready){opacity:.35}img.ico.good:not(.ready){opacity:1;background:radial-gradient(circle, var(--c) 0 42%, transparent 44%);border-radius:50%}img.ico.xs{width:18px;height:18px}img.ico.sm{width:26px;height:26px}img.ico.lg{width:64px;height:64px}#side{width:calc(var(--side-w) + var(--safe-l));padding:8px 8px 8px calc(8px + var(--safe-l));z-index:10;transition:transform .25s;position:fixed;top:0;bottom:0;left:0}body.side-hidden #side{transform:translate(-100%)}#side-frame{background:repeating-linear-gradient(92deg, #ffffff06 0 2px, transparent 2px 9px), repeating-linear-gradient(88deg, #0000001f 0 1px, transparent 1px 23px), linear-gradient(180deg, var(--wood-2), var(--wood-1) 40%, var(--wood-0));border:2px solid var(--brass-lo);border-radius:10px;flex-direction:column;gap:6px;height:100%;padding:8px;display:flex;box-shadow:inset 0 0 0 1px #ecd08e40,inset 0 2px 8px #ffdca014,0 8px 24px #00000073}#side-toggle{border:1px solid var(--brass-lo);background:var(--wood-1);width:22px;height:56px;color:var(--brass-hi);border-left:none;border-radius:0 8px 8px 0;place-items:center;margin-top:-28px;padding:0;display:grid;position:absolute;top:50%;right:-18px}#side-toggle svg{width:16px;height:16px;transition:transform .25s}body.side-hidden #side-toggle svg{transform:rotate(180deg)}#minimap-wrap{aspect-ratio:1;background:linear-gradient(145deg, var(--brass-hi), var(--brass-lo));border-radius:6px;flex:none;align-self:center;width:100%;max-height:34vh;padding:3px;box-shadow:0 2px 6px #00000080}#minimap{cursor:crosshair;touch-action:none;background:#24343c;border-radius:4px;width:100%;height:100%;display:block}#tabs{flex:none;grid-template-columns:repeat(5,1fr);gap:4px;display:grid}#tabs button{background:linear-gradient(180deg, var(--wood-3), var(--wood-2));color:var(--light-soft);letter-spacing:.02em;border:1px solid #c9a35a59;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:5px 0 4px;font-size:10.5px;display:flex}#tabs button .glyph{width:20px;height:20px}#tabs button.on{color:var(--ink);border-color:var(--brass-hi);background:linear-gradient(180deg, var(--parch-0), var(--parch-2))}.pane{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;color:var(--ink);background:radial-gradient(ellipse at 30% 0%, #fffae68c, transparent 60%), radial-gradient(ellipse at 100% 100%, #966e322e, transparent 55%), linear-gradient(180deg, var(--parch-0), var(--parch-1));border-radius:6px;flex-direction:column;flex:1;gap:6px;padding:10px 10px 12px;display:flex;overflow:hidden auto;box-shadow:inset 0 0 0 1px #7d61308c,inset 0 0 18px #78501e40}.pane h3{margin:0 0 2px;font-size:17px}.pane h4{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);border-bottom:1px solid #7d61304d;margin:6px 0 2px;padding-bottom:2px;font-size:12px}.pane p{margin:2px 0;line-height:1.35}.objectives{background:#fffcf073;border-radius:6px;box-shadow:inset 0 0 0 1px #7d61304d}.obj-head{width:100%;color:var(--ink);background:0 0;border:none;justify-content:space-between;padding:5px 8px;font-weight:600;display:flex}.objectives .next{margin:0;padding:0 8px 6px;font-size:12.5px;line-height:1.3}.objectives.open .next{display:none}.objectives ol{margin:0;padding:0 8px 6px 26px;font-size:12.5px;line-height:1.35;display:none}.objectives.open ol{display:block}.objectives li.on{color:var(--green);-webkit-text-decoration:line-through #4f8a3a80;text-decoration:line-through #4f8a3a80}.tools{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.tools button,.chips button,.small-btn{background:linear-gradient(180deg, #fbf4df, var(--parch-1));color:var(--ink);border:1px solid #7d613080;border-radius:6px;justify-content:center;align-items:center;gap:5px;padding:6px 8px;font-size:12.5px;display:inline-flex}.tools button.on,.chips button.on{background:linear-gradient(180deg, var(--wood-3), var(--wood-2));color:var(--brass-hi);border-color:var(--brass)}.scroll{flex-direction:column;gap:2px;display:flex}.grid{grid-template-columns:repeat(3,1fr);gap:5px;display:grid}.card{color:var(--ink);background:linear-gradient(#fffcf0d9,#e4d3a8d9);border:1px solid #7d613059;border-radius:7px;flex-direction:column;align-items:center;gap:1px;min-width:0;padding:4px 2px 5px;display:flex}.card>img.ico{width:58px;height:58px}.card .nm{text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11.5px;line-height:1.1;overflow:hidden}.card .cost{color:var(--ink-soft);align-items:center;gap:1px;font-size:11px;display:flex}.card.on{border-color:var(--brass);background:linear-gradient(180deg, var(--wood-3), var(--wood-2));color:var(--brass-hi)}.card.on .cost{color:var(--light-soft)}@media (hover:hover){.card:hover,.tools button:hover,.chips button:hover{border-color:var(--brass);box-shadow:0 0 0 1px #c9a35a66}}.infocard{background:linear-gradient(180deg, var(--parch-1), var(--parch-2));border-top:1px solid #7d613080;margin:4px -10px -12px;padding:8px 10px 10px;font-size:12.5px;position:sticky;bottom:-12px;box-shadow:0 -6px 12px #78501e26}.ic-head{align-items:center;gap:8px;display:flex}.ic-head b{font-size:15px}.ic-head .cost,.ic-head .worker{color:var(--ink-soft);align-items:center;gap:3px;display:flex}.flow{flex-wrap:wrap;align-items:center;gap:2px;font-weight:600;display:flex}.flow .arrow{color:var(--ink-soft);margin:0 6px}.goods{grid-template-columns:repeat(2,1fr);gap:3px 8px;display:grid}.goods .g{align-items:center;gap:5px;min-width:0;display:flex}.goods .g img.ico{width:30px;height:30px}.goods .nm{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;overflow:hidden}.goods b{font-variant-numeric:tabular-nums}.stats{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.stats>div{background:#fffcf080;border-radius:6px;flex-direction:column;align-items:center;padding:5px 0;display:flex;box-shadow:inset 0 0 0 1px #7d613040}.stats b{font-size:17px}.stats span{color:var(--ink-soft);font-size:10.5px}.people{grid-template-columns:repeat(2,1fr);gap:3px 6px;display:grid}.people .p{grid-template-rows:auto auto;grid-template-columns:34px 1fr auto;align-items:center;column-gap:5px;display:grid}.people .p img.ico{background:#fffcf099;border-radius:50%;grid-row:span 2;width:34px;height:34px}.people .nm{font-size:12px;line-height:1.1}.people em{color:var(--red);grid-column:2/4;font-size:10.5px;font-style:normal}.blist .bl{align-items:center;gap:6px;font-size:12.5px;display:flex}.blist .bl span{flex:1}.dist{background:#fffcf073;border-radius:6px;padding:6px;box-shadow:inset 0 0 0 1px #7d613040}.dist-head{align-items:center;gap:6px;display:flex}.dist-row{align-items:center;gap:5px;margin-top:4px;font-size:12.5px;display:flex}.dist-row span{flex:1}.seg{display:flex}.seg button{width:24px;height:26px;color:var(--ink);background:#fbf4df;border:1px solid #7d613080;padding:0;font-size:12px}.seg button:first-child{border-radius:5px 0 0 5px}.seg button:last-child{border-radius:0 5px 5px 0}.seg button+button{border-left:none}.seg button.on{background:var(--wood-2);color:var(--brass-hi)}.chips{flex-wrap:wrap;gap:4px;display:flex}.chips button .glyph{width:15px;height:15px}.sel-head{align-items:center;gap:8px;display:flex}.sel-head>div{flex:1;min-width:0}.sel-head h3 small{color:var(--ink-soft);font-size:12px;font-weight:400}.sel-head .status{color:var(--ink-soft);font-size:12.5px}.sel-head .x{color:var(--ink-soft);background:0 0;border:none;align-self:flex-start;padding:2px}.warn{color:var(--red);background:#b33a261f;border-radius:5px;margin:0;padding:4px 8px;font-size:12.5px}.sel-body{flex-direction:column;gap:4px;display:flex}.slots{flex-wrap:wrap;gap:6px;display:flex}.slot{background:#fffcf08c;border-radius:6px;flex-direction:column;align-items:center;min-width:56px;padding:3px 6px 4px;font-size:12.5px;display:flex;box-shadow:inset 0 0 0 1px #7d613040}.row{align-items:center;gap:6px;font-size:13px;display:flex}.row span{flex:1}.who{background:#fffcf080;border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.who img.ico{background:#fffcf0b3;border-radius:50%;width:46px;height:46px}.who>div{flex-direction:column;flex:1;gap:2px;display:flex}.who small{color:var(--ink-soft)}.who.missing img.ico{filter:grayscale()opacity(.6)}.small-btn{align-self:flex-start;padding:4px 8px;font-size:12px}.bar{background:#3c28142e;border-radius:4px;height:7px;overflow:hidden;box-shadow:inset 0 1px 2px #0003}.bar i{background:linear-gradient(#e6c06a,#b4862e);border-radius:4px;width:0;height:100%;transition:width .2s linear;display:block}.bar.big{height:11px}.bar.cond i{background:linear-gradient(90deg,#b33a26,#d9a23a 30%,#6aa84f 60%) 0 0/300px 100%}.queue{gap:4px;display:flex}.qslot{background:#fffcf099;border:1px solid #7d613066;border-radius:6px;place-items:center;width:44px;height:44px;padding:0;display:grid}.qslot.empty{background:0 0;border-style:dashed}.qslot img.ico{width:38px;height:38px}.training{align-items:center;gap:8px;display:flex}.training>div{flex:1}.trainees{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}.trainees button{color:var(--ink);background:linear-gradient(#fffcf0e6,#e4d3a8e6);border:1px solid #7d613059;border-radius:6px;flex-direction:column;align-items:center;min-width:0;padding:3px 2px 4px;font-size:11px;display:flex;position:relative}.trainees button span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.trainees em{color:var(--ink-soft);font-size:10.5px;font-style:normal;position:absolute;top:2px;right:4px}.danger{color:var(--red);background:#b33a2614;border:1px solid #b33a2680;border-radius:6px;margin-top:auto;padding:7px}.danger.confirm{background:var(--red);color:#fff}#top{top:8px;left:calc(var(--side-w) + var(--safe-l) + 18px);pointer-events:none;z-index:5;justify-content:space-between;align-items:flex-start;gap:10px;transition:left .25s;display:flex;position:fixed;right:10px}body.side-hidden #top,body.side-hidden #bottom{left:26px}.pill{pointer-events:auto;color:var(--light);background:linear-gradient(#2e1f13eb,#1d130beb);border:1px solid #c9a35a8c;border-radius:10px;padding:6px 10px;box-shadow:0 4px 14px #00000059}#goal{align-items:center;gap:8px;min-width:220px;display:flex}#goal>div{flex:1}.goal-label{margin-bottom:3px;font-size:12.5px}#goal .bar{background:#ffffff1f}#goal b{font-variant-numeric:tabular-nums;font-size:13px}#hud{align-items:center;gap:12px;display:flex}.hud-time{align-items:center;gap:10px;display:flex}.hud-time b{font-size:13px;line-height:1.1;display:block}.hud-time small{color:var(--light-soft);font-variant-numeric:tabular-nums}.hud-time .season{color:#b6dc8a;background:#82aa5a40;border-radius:50%;place-items:center;width:28px;height:28px;display:grid}.hud-time .season.winter{color:#d4ecff;background:#aac8e640}.hud-time .wx{color:var(--brass-hi);align-items:center;gap:4px;display:flex}.hud-speed{gap:2px;display:flex}.hud-speed button{min-width:32px;height:30px;color:var(--light-soft);background:#ffffff0f;border:1px solid #0000;border-radius:6px;place-items:center;padding:0 6px;font-size:13px;display:grid}.hud-speed button.on{border-color:var(--brass);color:var(--brass-hi);background:#c9a35a38}#bottom{left:calc(var(--side-w) + var(--safe-l) + 18px);pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:8px;transition:left .25s;display:flex;position:fixed;bottom:12px;right:10px}#hint{pointer-events:none;text-align:center;max-width:640px;font-size:13px}#hint b{color:var(--brass-hi)}#toast{opacity:0;background:#1d130beb;border:1px solid #c9a35a8c;border-radius:999px;padding:7px 14px;font-size:13.5px;transition:opacity .2s,transform .2s;transform:translateY(6px)}#toast.show{opacity:1;transform:none}#toast.error{color:#ffd5c8;border-color:#d9553fcc}.modal{z-index:20;background:#0f0a0573;place-items:center;display:grid;position:fixed;inset:0}.sheet{width:min(560px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--ink);background:linear-gradient(180deg, var(--parch-0), var(--parch-1));border:2px solid var(--brass-lo);border-radius:10px;padding:18px 22px;line-height:1.45;overflow-y:auto;box-shadow:0 16px 48px #00000080}.sheet h2{margin:0 0 8px}.sheet ul{padding-left:20px}.sheet button{border:1px solid var(--brass);background:linear-gradient(180deg, var(--wood-3), var(--wood-2));color:var(--brass-hi);border-radius:6px;margin-top:8px;padding:8px 18px}@media (width<=900px){:root{--side-w:270px}.hud-time .wx small,.goal-label{display:none}#goal{min-width:140px}}@media (width<=640px){:root{--side-w:min(300px, 86vw)}#top{left:26px}#bottom{left:10px}}.tools button{padding:6px 4px;font-size:12px}
