:root{--bg: #12171c;--panel: #1b2229;--line: #2c3640;--text: #e8ecef;--muted: #8d99a4;--accent: #ffaa3c;--ok: #6fcf7a;font-family:Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}.app{display:grid;grid-template-columns:1fr 320px;height:100%}.map{position:relative;min-width:0;min-height:0}.game-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:none}.toast{position:absolute;top:78px;left:50%;transform:translate(-50%);background:#14181ceb;border:1px solid var(--accent);padding:8px 14px;border-radius:6px;pointer-events:none}.hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#14181ccc;padding:6px 12px;border-radius:6px;font-size:13px;color:var(--muted);pointer-events:none;max-width:calc(100% - 24px);text-align:center}.hud{background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.hud header{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:space-between;align-items:baseline;padding:14px 16px;border-bottom:1px solid var(--line)}.hud h1{font-size:16px;margin:0}.clock{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:600}.hud section{padding:12px 16px;border-bottom:1px solid var(--line)}.hud h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px}.muted{color:var(--muted);font-size:12px;margin:8px 0 0}button{background:#2a343e;color:var(--text);border:1px solid var(--line);border-radius:5px;padding:4px 10px;font:inherit;font-size:13px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.active{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.devices{list-style:none;margin:0;padding:0}.devices li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;border-radius:5px;cursor:pointer}.devices li.selected{background:#ffdc5a1f;outline:1px solid rgba(255,220,90,.5)}.ready{color:var(--ok);font-size:13px}.cooldown{position:relative;width:110px;height:20px;background:#2a343e;border-radius:4px;overflow:hidden;font-size:12px}.cooldown .bar{position:absolute;inset:0 auto 0 0;background:#ffaa3c73}.cooldown .label{position:relative;display:block;text-align:center;line-height:20px;font-variant-numeric:tabular-nums}.log{flex:1;min-height:0;overflow-y:auto}.log ul{list-style:none;margin:0;padding:0;font-size:13px}.log li{display:grid;grid-template-columns:52px 1fr;gap:2px 8px;padding:5px 0;border-bottom:1px solid var(--line)}.log .time{color:var(--muted);font-variant-numeric:tabular-nums}.log .cam{grid-column:2;color:var(--muted);font-size:12px}.dev .section-body{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.dev .speeds{display:flex;gap:4px}.dev label{font-size:13px}.devices li.feeder{align-items:center}.level-icon{width:26px;height:26px;flex:none}.devices .name{flex:1;display:flex;flex-direction:column}.devices .sub{font-size:12px;color:var(--muted)}.devices .actions{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.herds{list-style:none;margin:0;padding:0;font-size:12px;color:var(--muted)}.pop-summary{font-size:12px;margin:0}.events{font-size:12px;width:100%}.events ul{list-style:none;margin:4px 0 0;padding:0;max-height:160px;overflow-y:auto;color:var(--muted)}.events .time{font-variant-numeric:tabular-nums;color:var(--text)}.hud{overflow-y:auto}.map-controls{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px}.map-controls button{width:32px;height:32px;padding:0;font-size:16px;background:#1b2229e6}.goal-banner{position:absolute;top:120px;left:50%;transform:translate(-50%);background:#285a32f2;border:1px solid var(--ok);padding:10px 18px;border-radius:8px;font-weight:600}.cash-row{display:flex;justify-content:space-between;align-items:baseline}.cash{font-size:22px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.goal{list-style:none;margin:0;padding:0;font-size:13px}.goal li{display:flex;justify-content:space-between;padding:2px 0;font-variant-numeric:tabular-nums}.goal li.done{color:var(--ok)}.buy{margin-top:8px;width:100%}.kills{margin-bottom:8px!important}.kills li{color:var(--ok)}.kills li.neighbour{color:#ff8a7a}.fill-all{margin:0 0 8px}.dog-hunts{list-style:none;margin:0 0 8px;padding:0;font-size:13px}.dog-hunts li{padding:2px 0}.dog-planning{display:flex;gap:6px}.dog-planning .buy{margin-top:0}.drive-progress{display:block;width:100%;height:24px}.drive-progress .label{line-height:24px}.map-controls button{display:flex;align-items:center;justify-content:center}.map-controls button.active{background:var(--accent);color:#1a1a1a}.land-summary{font-size:13px;margin:0}.section-header{display:flex;align-items:baseline;gap:6px;width:100%;padding:0;margin:0 0 8px;background:none;border:none;border-radius:0;text-align:left;cursor:pointer}.section-header:hover:not(:disabled){border-color:transparent}.section-header:hover h2{color:var(--text)}.section-header h2{margin:0}.chevron{width:10px;color:var(--muted);font-size:11px}.section-summary{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}section.collapsed .section-header{margin-bottom:0}section.log.collapsed{flex:none}section.collapsed .fill-all{margin:8px 0 0}.subgoal{margin-top:6px!important;padding-top:6px!important;border-top:1px solid var(--line)}.daynight{position:absolute;top:10px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;pointer-events:none;max-width:calc(100% - 110px)}.daynight-bar{display:block;max-width:100%;border-radius:8px;border:1px solid rgba(255,255,255,.35);box-shadow:0 2px 8px #0006}.daynight-label{font-size:12px;color:var(--text);background:#14181cbf;padding:2px 8px;border-radius:5px;font-variant-numeric:tabular-nums;white-space:nowrap}.goal-banner{display:flex;align-items:center;gap:12px}.banner-close{background:none;border:none;color:var(--text);font-size:18px;line-height:1;padding:0 2px;opacity:.8}.banner-close:hover:not(:disabled){opacity:1;border-color:transparent}.hud header .pause{padding:2px 8px;font-size:12px}.paused-banner{position:absolute;bottom:64px;left:50%;transform:translate(-50%);background:#14181ceb;border:1px solid var(--accent);color:var(--text);padding:8px 14px;border-radius:6px;font-size:14px;z-index:2}.game-buttons{display:flex;gap:6px}
