/* 2.1.1: bind the approved concept to the live modules; concept.css owns the design. */
:root{--font:Golos,Arial,sans-serif;--mono:Plex,monospace;--panel:var(--surface);--panel-dark:#141a14;--mint:var(--lime);--dim:var(--faint);--blue:#a6b99a}
body{letter-spacing:normal}.cc-hidden{display:none!important}#app{min-height:100vh}.main-shell{min-width:0}.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-border) transparent}.nav-link{width:100%;border:0;background:transparent;text-align:left;font-family:var(--font)}.nav-link>[data-icon]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.viewer-shortcut{display:none!important}.brand-mark,.brand-mark.small{border-color:var(--c-accent);color:var(--lime)}.brand-mark:after{background:var(--bg)}
.topbar .connection-indicator{font-size:11px;gap:7px;white-space:nowrap}.connection-indicator.online .status-dot{box-shadow:0 0 0 3px color-mix(in srgb,var(--c-accent) 4%,transparent)}.page-heading h1{font-size:29px;letter-spacing:-1px;font-weight:600;line-height:1.3;margin:0}.page-heading .eyebrow{line-height:1.5}.global-footer{align-items:center}.global-footer .button.text{font:11px var(--mono);min-height:0}.notice:empty{display:none}
/* Legacy metric shorthands must not replace Golos or split the single summary card. */
#concept-metrics{gap:0;margin:0 0 25px;background:var(--c-surface)}.metrics .metric{position:static;border:0;background:none;border-radius:0;padding:19px 21px}.metrics .metric+.metric{border-left:1px solid var(--border)}.metrics .metric-label{font:400 12px/1.5 var(--font);letter-spacing:normal;color:var(--c-text-2)}.metrics .metric>div{margin:9px 0 6px;gap:9px}.metrics .metric strong{font:400 31px/1.2 var(--font);letter-spacing:-1px}.metrics .metric strong.text-metric{font-size:22px;letter-spacing:-.6px}.metrics .metric .metric-comparison{font:16px var(--mono);color:var(--c-faint);max-width:none}.metrics .metric .metric-note{font:12px/1.5 var(--font);max-width:none}.metrics .metric small{font:12px/1.5 var(--font);color:var(--c-muted)}
/* The overview uses the same two columns as the concept, without the old roster rail. */
.operations-layout{display:grid;grid-template-columns:minmax(0,2.35fr) minmax(260px,1fr);grid-template-rows:auto auto;gap:22px;align-items:start}.operations-layout>.map-panel{grid-column:1;grid-row:1}.operations-layout>#concept-operation-aside{grid-column:2;grid-row:1}.operations-layout>.decision-panel{grid-column:1;grid-row:2}.operations-layout>#concept-fly-preview{grid-column:2;grid-row:2}.operations-layout>.cc-screen,.operations-layout>.control-tabs,.operations-layout>.control-panel,.operations-layout>.roster-panel,.operations-layout>.management-panel{grid-column:1/-1;grid-row:auto;min-width:0}body[data-section=army] .operations-layout,body[data-section=events] .operations-layout,body[data-section=eyes] .operations-layout{grid-template-columns:minmax(0,1fr)}body[data-section=events] .decision-panel{grid-column:1/-1;grid-row:auto}body[data-section=events] .decision-list{height:min(65vh,760px)}
.map-panel,.roster-panel,.decision-panel,.control-panel{background:var(--surface);border-color:var(--border)}.map-card .card-heading h2{display:flex;gap:10px;align-items:center}.live-label{display:inline-flex;font:11px var(--mono);color:var(--green);border-color:color-mix(in srgb,var(--c-accent) 26%,transparent);background:color-mix(in srgb,var(--c-accent) 5%,transparent);border-radius:3px;padding:3px 5px}.map-container{height:410px;min-height:410px;background:var(--c-surface-2);flex:1}.map-vignette{box-shadow:inset 0 0 70px #0a130d22}.map-top-strip{top:17px;left:17px;right:17px;justify-content:flex-start;gap:7px}.map-tag{font:11px var(--mono);letter-spacing:1px;background:color-mix(in srgb,var(--c-surface) 91%,transparent);border-color:color-mix(in srgb,var(--c-border-strong) 50%,transparent);border-radius:3px;padding:6px 9px;color:var(--c-text)}.map-tag i{border-radius:50%;background:var(--green)}.map-source-status{font:11px var(--mono);background:color-mix(in srgb,var(--c-surface) 79%,transparent);border:1px solid color-mix(in srgb,var(--c-border-strong) 22%,transparent);color:var(--c-text-2);border-radius:3px;padding:6px 8px;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-tools{top:auto;right:16px;bottom:65px;border-color:var(--c-border-strong);background:color-mix(in srgb,var(--c-surface) 93%,transparent);gap:0}.map-tools button{height:29px;width:27px;color:var(--c-text-2);font:20px var(--mono)}.map-tools button:hover{background:var(--c-surface-3)}.map-tools button svg{width:15px;height:15px}.map-bottom-strip{bottom:18px;left:17px;right:18px;align-items:end}.coordinates{font:11px var(--mono);color:var(--c-text-2);background:color-mix(in srgb,var(--c-surface) 87%,transparent);border:1px solid color-mix(in srgb,var(--c-border-strong) 27%,transparent);border-radius:3px;padding:7px 9px}.coordinates span{color:var(--c-muted);margin:0 7px}.map-bottom-strip .map-scale{position:static;color:var(--c-text-2);font:11px var(--mono);gap:0;text-shadow:0 1px 2px var(--c-surface)}.map-scale i{margin:5px auto 0;border-color:var(--c-muted);height:6px}.map-zoom{display:none}.map-footer.map-bottom{padding:17px 20px;gap:12px;flex-wrap:wrap;background:var(--surface);font-size:11px}.map-footer .mono{font-size:11px;letter-spacing:.3px}.map-footer .legend{gap:10px;font-size:11px}.legend-dot{height:5px;width:5px;border-radius:1px}.legend-dot.army{background:var(--c-accent)}.legend-dot.builder{background:var(--c-accent)}.legend-dot.enemy{background:var(--c-danger)}.legend-dot.player{background:var(--c-warn)}.legend-dot.dynmap{border-color:var(--c-muted)}#sensor-map-note,#map-update{display:none}.map-tooltip{border-color:color-mix(in srgb,var(--c-accent) 85%,var(--c-border));background:color-mix(in srgb,var(--c-surface) 96%,transparent);color:var(--c-text);border-radius:5px}.map-tooltip span{color:var(--c-text-2)}.map-empty{border-color:var(--c-border-strong);background:color-mix(in srgb,var(--c-surface) 92%,transparent);border-radius:5px}.map-empty span{line-height:1.7}.map-layer-controls{padding:13px 17px;gap:12px;flex-wrap:wrap;border-top:1px solid var(--border);background:var(--c-surface)}.map-layer-controls label{color:var(--c-text-2);font-size:11px;gap:6px}.map-layer-controls input{width:11px;height:11px;border-color:color-mix(in srgb,var(--c-accent) 83%,var(--c-border));background:var(--c-surface-2)}.map-layer-controls input:checked{background:var(--lime);border-color:var(--lime);box-shadow:inset 0 0 0 2px var(--c-surface-2)}.map-command-tools{padding:12px 17px;gap:9px;background:var(--c-surface);border-color:var(--border)}.map-command-tools label{font-size:12px;color:var(--c-text-2)}.map-command-tools span{color:var(--muted);font-size:11px}.map-command-tools input,.map-command-tools select{padding:7px 9px;font-size:12px;border-color:var(--c-border-strong);background:var(--c-inset)}.map-command-tools button{font-size:12px;padding:8px 10px;background:var(--c-surface-2);border-color:var(--c-border-strong);color:var(--c-text)}
.decision-heading.card-heading{padding:22px 23px 10px}.decision-heading h2{font-size:16px;font-weight:600;letter-spacing:-.4px}.decision-heading .event-count{display:none}.decision-list{height:232px;padding:0 23px 12px;scrollbar-color:var(--c-border-strong) transparent}.decision-list .event-row{grid-template-columns:48px 6px minmax(0,1fr);gap:12px;padding:12px 0;border-color:var(--c-border)}.event-time{font:11px/1.7 var(--mono);color:var(--faint)}.event-mark{background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-accent) 4%,transparent)}.event-text{font-size:12px;color:var(--c-text-2)}.event-text strong{font-weight:400;color:var(--text)}.event-source{font:11px var(--mono);color:var(--c-muted);letter-spacing:.6px}.empty-state{color:var(--faint);line-height:1.8}.selected-bot .bot-health{font:11px var(--mono);color:var(--c-text-2)}.selected-bot .bot-health>span{gap:5px}
/* The remaining army controls keep their API and use the same olive cards. */
.roster-panel{max-height:none;min-height:0}.roster-heading{padding:22px 23px 18px}.roster-heading h2{font-size:16px;font-weight:600}.count-badge{background:var(--c-surface-2);border-color:var(--c-border-strong);color:var(--c-accent);border-radius:3px}.roster-tabs{margin-inline:23px;border-color:var(--border);gap:22px}.roster-tabs button{color:var(--muted);padding-bottom:12px}.roster-tabs button span{color:var(--c-muted)}.roster-search{margin:16px 23px 8px;max-width:410px}.roster-search svg{color:var(--c-muted)}.roster-search input{background:var(--c-inset);border-color:var(--c-border-strong);color:var(--text);border-radius:5px;padding:10px 12px 10px 30px}.roster-list{padding:5px 15px 16px;max-height:580px;scrollbar-color:var(--c-border-strong) transparent;display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:8px}.roster-list>.empty-state{grid-column:1/-1}.bot-card{padding:15px;border:1px solid var(--c-border);border-radius:5px;background:var(--c-surface)}.bot-card:hover{background:var(--c-surface-2)}.bot-card.selected{background:var(--c-surface-3);border-color:color-mix(in srgb,var(--c-accent) 85%,var(--c-border))}.bot-avatar{background:var(--c-surface-3);border-color:color-mix(in srgb,var(--c-accent) 73%,var(--c-border));color:var(--c-accent);border-radius:5px}.bot-avatar.builder{background:var(--c-surface-3);border-color:var(--c-border-strong);color:var(--c-accent)}.bot-avatar.offline{background:var(--c-surface-2);border-color:var(--c-border-strong);color:var(--c-muted)}.bot-name{font:400 11px var(--font);max-width:none}.bot-squad,.bot-status,.bot-task,.bot-coordinates,.bot-source{color:var(--c-muted)}.bot-task{font-size:12px;color:var(--c-text-2)}.bot-coordinates{font:11px/1.7 var(--mono)}.bot-aim{border-color:var(--c-border-strong);color:var(--c-text-2)}.roster-panel .bot-health{font:11px var(--mono);margin:0;border:0;padding:0;display:inline;color:var(--c-muted)}.roster-panel .bot-health.low{color:var(--red)}.roster-bottom{border-color:var(--border);color:var(--c-muted);padding:13px 23px}.text-button{color:var(--c-accent)}.control-tabs{position:static;display:flex;flex-wrap:wrap;gap:7px;padding:0;background:none;border:0;border-radius:0;z-index:auto}.control-tabs button{font:11px var(--font);padding:10px 13px;border-radius:5px;border-color:var(--c-border-strong);background:var(--c-surface-2);color:var(--c-text-2)}.control-tabs button[aria-pressed=true]{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-accent-ink)}.management-panel,.war-panel{padding:23px;background:var(--surface);border:1px solid var(--border);border-radius:7px;color:var(--text)}.management-panel .panel-heading{padding:0 0 16px;border-bottom:1px solid var(--border);align-items:center;flex-direction:row}.management-panel .panel-heading h2{font-size:17px;font-weight:600}.management-panel h2{color:var(--text);letter-spacing:-.4px}.management-panel h3{font-size:14px;font-weight:600;letter-spacing:-.2px}.management-panel p,.war-panel p{color:var(--muted);font-size:11px;line-height:1.8}.management-panel .war-form{gap:12px;align-items:end}.management-panel .war-form label{font-size:12px;color:var(--c-text-2);min-width:140px;gap:6px}.management-panel .war-form strong{font-size:11px;color:var(--c-text-2)}.management-panel input,.management-panel select,.management-panel textarea{background:var(--c-inset);border-color:var(--c-border-strong);color:var(--text);font-size:11px;padding:10px 11px;min-width:0;max-width:100%}.management-panel input[type=checkbox]{width:13px;min-width:0;accent-color:var(--lime)}.management-panel input[type=range]{padding:0;accent-color:var(--lime)}.management-panel button{background:var(--c-surface-2);border-color:var(--c-border-strong);color:var(--c-text);font-size:11px;padding:10px 13px}.management-panel button:hover{background:var(--c-surface-3)}.management-panel details{border-color:var(--c-border-strong);border-radius:5px;background:var(--c-surface)}.management-panel summary{font-size:11px;color:var(--c-text-2)}.war-note{border-color:var(--border)}.control-heading{padding:22px 23px 0}.control-heading h2{font-size:16px;font-weight:600}.module-row{margin-inline:23px;border-color:var(--border)}.module-row strong{font:11px var(--font)}.module-row div>span,.module-note,.relation-form>label{color:var(--c-muted)}.module-note,.relation-form{margin-inline:23px}.relation-form input,.relation-form select{border-color:var(--c-border-strong);background:var(--c-inset);font-size:12px}.switch{background:var(--c-surface-3);border-color:var(--c-border-strong)}.switch[aria-checked=true]{background:var(--c-border-strong);border-color:var(--c-accent)}.switch[aria-checked=true] i{background:var(--lime)}
/* Live-only content inside the concept's build, Fly and admin layouts. */
.cc-screen{grid-column:1/-1;min-width:0}.cc-screen p,.cc-screen dd{overflow-wrap:anywhere}.cc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:22px}.cc-list-row{display:flex;flex-direction:column;gap:5px;padding:16px 23px;border-bottom:1px solid var(--c-border);overflow-wrap:anywhere}.cc-list-row:last-child{border-bottom:0}.cc-list-row strong{font-size:11px;font-weight:400}.cc-list-row>span{font-size:12px;line-height:1.7;color:var(--muted)}.cc-muted{color:var(--muted);font-size:11px;line-height:1.8}.cc-builders-list>.cc-muted,#cc-build-skills>.cc-muted,#cc-learning-events>.cc-muted,#cc-backups>.cc-muted{margin:0;padding:16px 23px 22px}.cc-skills-card{margin-top:22px}.cc-screen progress{display:block;appearance:none;width:100%;height:4px;overflow:hidden;border:0;border-radius:2px;background:var(--c-surface-3);accent-color:var(--lime)}.cc-screen progress::-webkit-progress-bar{background:var(--c-surface-3)}.cc-screen progress::-webkit-progress-value{background:var(--lime)}.cc-screen progress::-moz-progress-bar{background:var(--lime)}.cc-activations{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--c-violet) 4%,transparent),transparent 66%)}.cc-signal-node{position:absolute;display:block;width:5px;height:5px;border-radius:50%;background:var(--c-violet);box-shadow:0 0 9px color-mix(in srgb,var(--c-violet) 40%,transparent)}.neural-legend b{font-weight:400;color:var(--c-text-2)}.decision-verdict{justify-content:space-between}.decision-verdict b{font-weight:400;font-family:var(--mono);margin-left:8px}.feedback-card form>label{display:block}.feedback-card form>label+label{margin-top:17px}.feedback-card label textarea,.feedback-card label select{font-family:var(--font)}.feedback-choice[data-feedback-kind=punish]>b{color:var(--red)}.feedback-choice[data-feedback-kind=punish].active{border-color:var(--c-danger);background:color-mix(in srgb,var(--c-danger) 4%,transparent)}.cc-rewards{display:flex;gap:24px;margin:20px 23px 0;padding-top:18px;border-top:1px solid var(--border);font-size:12px;color:var(--c-accent)}.cc-rewards b{font:19px var(--mono);display:block;margin-top:6px}.cc-rewards>span+span{color:var(--c-warn)}.learning-card>.notice.cc-training-note{margin:20px 23px 0}.cc-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:23px}.cc-stat-grid>article{padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:7px;min-width:0}.cc-stat-grid span{display:block;font-size:12px;color:var(--muted);margin-bottom:13px}.cc-stat-grid strong{display:block;font-size:23px;font-weight:400;letter-spacing:-.6px;overflow-wrap:anywhere}.cc-details{display:grid;grid-template-columns:1fr auto;gap:16px;margin:0;padding:0 23px 23px;font-size:11px}.cc-details dt{color:var(--muted)}.cc-details dd{margin:0;font:12px var(--mono);text-align:right}.cc-access-note{margin:20px 23px 0;font-size:12px;line-height:1.8;color:var(--muted)}.cc-admin-actions{padding:0 23px 23px;margin:0}#cc-admin-result,#cc-feedback-result{font-size:12px;color:var(--lime);line-height:1.8}.cc-screen button:disabled{cursor:not-allowed}
/* Keep the real viewer's renderer and controls, with the approved palette. */
#viewer-panel{padding:0;overflow:hidden}#viewer-panel .panel-heading{padding:22px 23px 19px;border-bottom:1px solid var(--border)}#viewer-panel .panel-heading h2{font-size:16px}#view-connection{font:11px var(--mono);color:var(--muted)}#viewer-panel>.war-form{margin:0;padding:14px 20px;align-items:center;gap:12px}#viewer-panel .war-form label{min-width:0;font-size:11px}#viewer-panel .war-form select{width:auto;padding:7px 8px;font-size:12px}#viewer-panel .war-form button{padding:8px 10px;font-size:11px}#viewer-panel .war-form input[type=range]{max-width:110px;height:auto;min-width:70px}#viewer-panel>.bot-viewport{border:0;border-block:1px solid var(--border);height:480px;background:var(--c-surface);margin-top:0;border-radius:0}#viewer-panel>.bot-viewport canvas{touch-action:none;cursor:grab}#viewer-panel>.bot-viewport canvas.dragging{cursor:grabbing}#viewer-panel>.bot-viewport:fullscreen{height:100vh;width:100vw}#viewer-panel>.bot-viewport .view-overlay{background:color-mix(in srgb,var(--c-surface) 87%,transparent);color:var(--c-text-2);font-size:12px}#viewer-panel>.bot-viewport .view-caption,#viewer-panel>.bot-viewport .view-hud{font-family:var(--mono);background:color-mix(in srgb,var(--c-surface) 72%,transparent);border-color:color-mix(in srgb,var(--c-accent) 40%,transparent);color:var(--c-text)}#viewer-panel>p{margin:0;padding:13px 23px;font-size:12px;line-height:1.8;color:var(--muted)}#viewer-panel>#view-details{border-bottom:1px solid var(--border);color:var(--c-text-2)}
.login-screen{background:radial-gradient(ellipse at 25% 60%,color-mix(in srgb,var(--c-accent) 9%,transparent),transparent 65%),var(--c-inset)}.login-form{background:var(--c-surface);border-color:var(--c-border-strong);border-radius:7px}.login-intro h1 span{color:var(--lime)}.login-intro>p,.login-form>p{color:var(--c-muted)}.login-form input{background:var(--c-inset);border-color:var(--c-border-strong);border-radius:5px;color:var(--text);font-family:var(--mono)}.primary-button{background:var(--lime);color:var(--c-accent-ink);border-radius:5px}.primary-button:hover{background:var(--c-accent)}.login-foot{border-color:var(--border);color:var(--c-muted)}.login-cross{border-color:var(--lime)}
@media(min-width:1600px){.operations-layout{gap:26px;grid-template-columns:minmax(0,2.35fr) minmax(260px,1fr)}.map-container{height:480px;min-height:480px}.metrics .metric{padding:22px 25px}.metrics .metric strong{font-size:36px}.metrics .metric strong.text-metric{font-size:22px}#viewer-panel>.bot-viewport{height:590px}}
@media(max-width:1250px){.operations-layout{grid-template-columns:minmax(0,1.8fr) 270px;gap:18px}.metrics .metric{padding:17px}.metrics .metric-label{font-size:11px}.metrics .metric strong.text-metric{font-size:18px}.metrics .metric small{font-size:11px}.metrics .metric .metric-note{font-size:11px}.map-source-status{display:none}.map-footer.map-bottom{padding:13px;font-size:11px}.map-footer .legend{gap:8px;font-size:11px}.map-layer-controls{padding:12px 15px;gap:10px}.map-layer-controls label{font-size:11px}.cc-stat-grid{gap:14px}.cc-stat-grid>article{padding:17px}.cc-stat-grid strong{font-size:20px}#viewer-panel>.bot-viewport{height:450px}}
@media(max-width:1050px){.nav-link>[data-icon]{display:inline-flex}.nav-link>span:not([data-icon]){display:none}.page-heading h1{font-size:25px}.metrics .metric{padding:17px}.topbar .connection-indicator{font-size:11px}.cc-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#viewer-panel>.bot-viewport{height:500px}}
@media(max-width:800px){.operations-layout{grid-template-columns:minmax(0,1fr);gap:22px}.operations-layout>.map-panel,.operations-layout>#concept-operation-aside,.operations-layout>.decision-panel,.operations-layout>#concept-fly-preview{grid-column:1;grid-row:auto}.operations-layout>#concept-operation-aside{grid-template-columns:1fr 1fr;gap:18px}.metrics .metric:nth-child(3){border-left:0;border-top:1px solid var(--border)}.metrics .metric:nth-child(4){border-top:1px solid var(--border)}.metrics .metric-label{font-size:12px}.metrics .metric strong.text-metric{font-size:23px}.page-heading h1{font-size:27px}.map-container{height:400px;min-height:400px}.map-footer.map-bottom{font-size:11px}.map-footer .legend{font-size:11px}.decision-list{height:225px}.map-top-strip{left:12px}.map-bottom-strip{left:12px}.cc-actions{gap:8px}.cc-details{font-size:12px}.management-panel{padding:20px}.management-panel .panel-heading{flex-wrap:wrap;gap:8px}.management-panel .war-form label{width:auto;flex:1;min-width:150px}#viewer-panel>.bot-viewport{height:450px}}
@media(max-width:540px){.sidebar{overflow:visible}.nav-link>span:not([data-icon]){display:block}.nav-link{width:auto;font-size:11px}.nav-link>[data-icon]{height:18px}.nav-link[data-section=admin]>span:not([data-icon]){font-size:0}.nav-link[data-section=admin]>span:not([data-icon]):after{content:'Админка';font-size:11px}.nav-link[data-section=build]>span:not([data-icon]){font-size:0}.nav-link[data-section=build]>span:not([data-icon]):after{content:'Стройка';font-size:11px}.topbar .connection-indicator{font-size:11px;gap:5px}.topbar-actions>.icon-button{display:none}.page-heading h1{font-size:26px}.metrics .metric{padding:17px}.metrics .metric-label{font-size:11px}.metrics .metric strong{font-size:30px}.metrics .metric strong.text-metric{font-size:20px}.metrics .metric small{font-size:11px}#concept-metrics{margin-bottom:18px}.operations-layout,.operations-layout>#concept-operation-aside{gap:17px}.operations-layout>#concept-operation-aside{grid-template-columns:1fr}.map-container{height:365px;min-height:365px}.map-top-strip{left:10px;right:10px;top:13px}.map-tag{font-size:11px;padding:6px 7px}.map-tools{right:10px;bottom:60px}.map-bottom-strip{left:10px;right:10px;bottom:15px;gap:5px}.coordinates{font-size:11px;padding:6px}.coordinates span{margin-inline:4px}.map-bottom-strip .map-scale{font-size:11px}.map-scale i{max-width:60px}.map-footer.map-bottom{padding:13px 12px;font-size:11px;gap:9px}.map-footer .legend{font-size:11px;gap:9px}.live-label{font-size:11px}.decision-heading.card-heading{padding:20px 18px 10px;gap:9px}.decision-heading h2{font-size:15px}.decision-heading .button.text{font-size:11px}.decision-list{height:245px;padding-inline:18px}.decision-list .event-row{grid-template-columns:41px 5px minmax(0,1fr);gap:9px}.event-time{font-size:11px}.roster-heading{padding:20px 18px 16px}.roster-heading h2{font-size:15px}.roster-tabs{margin-inline:18px;gap:19px}.roster-search{margin-inline:18px;max-width:none}.roster-list{padding:5px 10px 12px;grid-template-columns:1fr}.roster-bottom{padding-inline:18px}.control-heading{padding-inline:18px}.module-row,.module-note,.relation-form{margin-inline:18px}.management-panel{padding:18px}.management-panel .war-form label{min-width:100%;width:100%}.management-panel .war-form textarea{width:100%}.control-tabs{gap:6px}.control-tabs button{font-size:12px;padding:9px 10px}.cc-stat-grid{gap:10px}.cc-stat-grid>article{padding:16px}.cc-stat-grid strong{font-size:19px}.cc-stat-grid span{font-size:11px}.cc-details{padding-inline:18px;font-size:12px;gap:13px}.cc-details dd{font-size:11px}.cc-access-note{margin-inline:18px}.cc-admin-actions{padding-inline:18px}.cc-list-row{padding-inline:18px}.cc-rewards{margin-inline:18px}.learning-card>.notice.cc-training-note{margin-inline:18px}.cc-builders-list>.cc-muted,#cc-build-skills>.cc-muted,#cc-learning-events>.cc-muted,#cc-backups>.cc-muted{padding-inline:18px}#viewer-panel .panel-heading{padding:19px 17px 16px}#viewer-panel>.war-form{padding:12px;gap:10px}#viewer-panel .war-form label{width:auto;min-width:0;flex:1}#viewer-panel .war-form select{max-width:150px}#viewer-panel .war-form button{font-size:11px;padding:8px}#viewer-panel>.bot-viewport{height:410px}#viewer-panel>p{padding-inline:17px;font-size:11px}.global-footer .button.text{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

body[data-section=army] .control-tabs [data-panel="viewer-panel"]{display:none}.cc-pause-actions{display:grid;gap:10px;margin:22px 0}

.map-container .map-legend{bottom:18px;left:17px;max-width:75%;flex-wrap:wrap;gap:12px;z-index:2}.map-bottom-strip .coordinates{display:none}.map-bottom-strip{pointer-events:none}.map-bottom-strip .map-scale{margin-left:auto}.map-panel{align-self:stretch}@media(max-width:540px){.map-container .map-legend{left:10px;bottom:15px;gap:8px;max-width:78%;font-size:11px}}

/* A canvas must not contribute intrinsic dimensions to the flex map card. */
#world-map{position:absolute;inset:0;width:100%;height:100%}.map-panel .map-container{flex:0 0 auto}

.towny-layer-status{font:11px var(--mono);color:var(--c-text-2);background:color-mix(in srgb,var(--c-surface) 91%,transparent);border:1px solid color-mix(in srgb,var(--c-border-strong) 50%,transparent);border-radius:3px;padding:6px 8px;white-space:nowrap}@media(max-width:540px){.towny-layer-status{font-size:11px;padding:5px}.map-top-strip{flex-wrap:wrap}}

#workspace>.notice:not([hidden]){margin-bottom:18px}

/* 2.3 · объёмная схема стройки */
.building-art.build-view{position:relative;width:100%;height:clamp(300px,42vw,460px);margin:14px 0 0;transform:none;isolation:isolate;border:1px solid var(--border);border-radius:4px;background:radial-gradient(ellipse at 50% 60%,color-mix(in srgb,var(--c-accent) 7%,transparent),transparent 65%),repeating-linear-gradient(0deg,color-mix(in srgb,var(--c-accent) 3%,transparent) 0 1px,transparent 1px 24px),repeating-linear-gradient(90deg,color-mix(in srgb,var(--c-accent) 3%,transparent) 0 1px,transparent 1px 24px),var(--c-bg);overflow:hidden}
.build-view canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.build-view-hud{position:absolute;left:12px;right:12px;top:10px;display:flex;align-items:center;gap:10px;pointer-events:none;z-index:1}
.build-view-hud .mono{font-size:12px;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.build-view-tools{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:6px;padding:5px 8px;background:color-mix(in srgb,var(--c-bg) 80%,transparent);border:1px solid var(--border);border-radius:3px;z-index:1}
.build-view-tools .icon-button{width:28px;height:28px;font-size:15px;line-height:1}
.bv-slice{display:flex;align-items:center;gap:6px;font:11px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-left:4px}
.bv-slice input{width:92px;accent-color:var(--lime)}
#bv-slice-value{font-size:12px;color:var(--text);min-width:38px}
.build-view-legend{position:absolute;left:12px;bottom:12px;display:flex;gap:12px;font-size:12px;color:var(--muted);z-index:1;pointer-events:none}
.build-view-legend span{display:inline-flex;align-items:center;gap:5px}
.build-view-legend i{width:10px;height:10px;display:inline-block;border-radius:1px}
.bv-solid{background:var(--c-warn)}.bv-ghost{border:1px solid color-mix(in srgb,var(--c-accent) 40%,transparent);background:color-mix(in srgb,var(--c-accent) 5%,transparent)}.bv-layer{border:1px solid color-mix(in srgb,var(--c-warn) 80%,transparent);background:color-mix(in srgb,var(--c-warn) 16%,transparent)}
@media(max-width:600px){.build-view-legend{display:none}.bv-slice input{width:70px}.building-art.build-view{height:300px}}

/* 2.3 · ключи доступа */
.keys-card{grid-column:1/-1;margin-bottom:18px}
.keys-card .card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.ak-form{margin:16px 0 4px;padding:16px;border:1px solid var(--border);border-radius:4px;background:var(--c-bg)}
.ak-row{display:grid;grid-template-columns:1fr 180px;gap:14px}
.ak-row label,.ak-row select,.ak-row input{display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--muted)}
.ak-row input,.ak-row select{height:36px;padding:0 10px;font-size:12px}
.ak-presets{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 10px}
.ak-presets .mono{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;margin-right:4px}
.ak-chip{border:1px solid color-mix(in srgb,var(--c-accent) 20%,transparent);background:color-mix(in srgb,var(--c-accent) 3%,transparent);color:var(--text);border-radius:999px;padding:5px 11px;font-size:11px;cursor:pointer}
.ak-chip:hover{border-color:var(--lime);color:var(--lime)}
.ak-matrix{display:grid;gap:6px;margin-bottom:14px}
.ak-cat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid color-mix(in srgb,var(--c-text-2) 3%,transparent)}
.ak-cat>span{font-size:12px}
.ak-levels{display:inline-flex;padding:2px}
.ak-levels input{position:absolute;opacity:0;pointer-events:none}
.ak-levels label{padding:6px 12px;font-size:11px;color:var(--muted);cursor:pointer;border-radius:2px;user-select:none}
.ak-levels input:checked+label{background:color-mix(in srgb,var(--c-accent) 13%,transparent);color:var(--lime)}
.ak-levels input[value=none]:checked+label{background:color-mix(in srgb,var(--c-text-2) 5%,transparent);color:var(--text)}
.ak-levels input[value=control]:checked+label{background:color-mix(in srgb,var(--c-warn) 13%,transparent);color:var(--amber)}
.ak-levels input:disabled+label{opacity:.25;cursor:not-allowed}
.ak-levels input:focus-visible+label{outline:1px solid var(--lime)}
.ak-created{margin:14px 0;padding:14px;border:1px solid color-mix(in srgb,var(--c-accent) 33%,transparent);border-radius:4px;background:color-mix(in srgb,var(--c-accent) 5%,transparent)}
.ak-created strong{display:block;font-size:12px;margin-bottom:10px;color:var(--lime)}
.ak-secret{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ak-secret code{flex:1;min-width:0;padding:9px 11px;background:var(--c-bg);border:1px solid var(--border);font:12px var(--mono);overflow-wrap:anywhere;user-select:all}
.ak-list{display:grid;gap:10px;margin-top:14px}
.ak-key{display:grid;gap:8px;padding:13px 14px;border:1px solid var(--border);border-radius:4px;background:color-mix(in srgb,var(--c-text-2) 1%,transparent)}
.ak-key-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ak-key-head strong{font-size:13px}
.ak-perms{display:flex;flex-wrap:wrap;gap:6px}
.ak-perm{font-size:12px;padding:3px 8px;border-radius:2px;border:1px solid color-mix(in srgb,var(--c-accent) 20%,transparent);color:var(--lime);background:color-mix(in srgb,var(--c-accent) 4%,transparent)}
.ak-perm.control{border-color:color-mix(in srgb,var(--c-warn) 27%,transparent);color:var(--amber);background:color-mix(in srgb,var(--c-warn) 5%,transparent)}
.ak-perm.none{border-color:var(--border);color:var(--muted)}
.ak-key small{font-size:12px}
.ak-key-actions{display:flex;gap:8px}
.button.danger:hover{color:var(--red)!important;border-color:color-mix(in srgb,var(--c-danger) 40%,transparent)!important}
@media(max-width:600px){.ak-row{grid-template-columns:1fr}.ak-cat{flex-direction:column;align-items:flex-start}.ak-levels{width:100%}.ak-levels label{flex:1;text-align:center}}

/* 2.3 · права гостевого ключа (сервер проверяет всё сам, тут только интерфейс) */
.nav-link[hidden],.rail-button[hidden],.keys-card[hidden],.ak-form[hidden],.ak-created[hidden],#ak-result[hidden],#ak-expiry-label[hidden]{display:none!important}
body[data-role=guest] #cc-admin-access .admin-grid>article:not(.keys-card){display:none}
.no-admin [data-admin-tab=system],.no-admin [data-admin-tab=backups]{display:none!important}
.no-players .player-link-card,.ro-players .player-link-forms{display:none!important}
.ro-build [data-build]:not([data-build=report]),.ro-build [data-build=report],.no-build [data-pause-action=build],.ro-build [data-pause-action=build]{display:none!important}
.ro-army #concept-new-operation,.no-army #concept-new-operation,.ro-army [data-pause-action=war],.ro-army [data-pause-action=drill],.no-army [data-pause-action=war],.no-army [data-pause-action=drill]{display:none!important}
.ro-army .management-panel:not(#viewer-panel) :is(form,.war-form,.war-buttons) :is(button,input,select,textarea){pointer-events:none;opacity:.4}
.ro-fly #cc-feedback{pointer-events:none;opacity:.45}
.ro-admin #cc-restart,.ro-admin #cc-backup{display:none!important}
body[data-role=guest] .page-heading h1:after{content:"";display:none}
body[data-role=guest].ro-build[data-section=build] .page-heading h1:after,body[data-role=guest].ro-army[data-section=army] .page-heading h1:after,body[data-role=guest].ro-fly[data-section=fly] .page-heading h1:after,body[data-role=guest].ro-admin[data-section=admin] .page-heading h1:after,body[data-role=guest][data-section=eyes] .page-heading h1:after{content:"ТОЛЬКО ПРОСМОТР";display:inline-block;vertical-align:middle;margin-left:14px;padding:4px 9px;font:12px var(--mono);letter-spacing:1.5px;color:var(--amber);border:1px solid color-mix(in srgb,var(--c-warn) 33%,transparent);border-radius:2px;text-shadow:none}

/* 2.3.1 · текстуры камеры */
.pack-card{margin-top:18px}.pack-card[hidden]{display:none!important}
.pk-servers{display:grid;gap:8px;margin-top:12px}
.pk-server{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid var(--border);border-radius:4px;background:color-mix(in srgb,var(--c-text-2) 1%,transparent)}
.pk-server strong{display:block;font-size:12px}.pk-server small{font-size:12px}
#pk-result[hidden]{display:none!important}

/* Keep army controls visible before the roster and sensor modules. */
body[data-section=army] .operations-layout>.control-tabs{order:-2}
body[data-section=army] .operations-layout>#army-panel{order:-1;scroll-margin-top:16px}

body[data-section=army] .operations-layout>#medics-panel{order:-1;scroll-margin-top:16px}
