.top-status{grid-template-columns:1.35fr repeat(6,1fr);height:56px}.top-status>div{padding:9px 12px}.scene{height:260px}.block-panel{background:#172024;color:#e8efef;border-top:1px solid #647478;padding:7px 10px}.block-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:8px;letter-spacing:.12em}.block-title small{color:#91a2a5;font-size:7px}.block-map{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.block{position:relative;min-height:42px;padding:6px 5px;border:1px solid #4c5a5d;background:#283235;color:#839194;font-size:7px}.block strong{display:block;font-size:7px;letter-spacing:.07em}.block span{display:block;margin-top:4px;font-size:10px;font-weight:bold}.block.occupied{border-color:#62d985;background:#214431;color:#eaffef;box-shadow:inset 0 0 12px #62d98533}.block.transfer{border-style:dashed}.block.transfer.occupied{border-color:#65badd;background:#1d3b46}.block.stop-show:after{content:"SHOW STOP";position:absolute;right:3px;top:3px;color:#e9b84c;font-size:5px}

/* Compact two-seat rows, stacked front-to-back within the car. */
.seat-row{left:42px;right:auto;width:88px;height:25px}.seat-row.back{top:-5px}.seat-row.front{top:27px}.row-restraint{left:0;right:auto;width:88px;top:2px;transform:translateY(-18px);transition:transform .75s cubic-bezier(.2,.75,.25,1)}.vehicle.locked .row-restraint,.seat-row.locked .row-restraint{transform:translateY(7px)}.vehicle:after{content:attr(data-car);right:7px;bottom:5px;padding:2px 5px;border-radius:8px;background:#fff;color:#8b1d22;font-size:11px;box-shadow:0 1px 3px #0005}

/* Platform lighting, edge fencing and protected staff positions. */
.floor-lights{position:absolute;left:0;right:0;bottom:3px;height:4px;background:repeating-linear-gradient(90deg,#55cfe4 0 18px,transparent 19px 35px);box-shadow:0 0 9px #55cfe4}.platform-fence{position:absolute;top:-21px;height:21px;border-top:3px solid #7d8c8f;background:repeating-linear-gradient(90deg,transparent 0 25px,#7d8c8f 26px 30px)}.load-fence{left:0;right:0}.unload-fence.left-fence{left:0;width:34%}.unload-fence.right-fence{right:0;width:38%}.staff-post{position:absolute;top:51px;z-index:5;width:58px;height:46px}.load-post{left:3%}.unload-post{right:3%}.staff-console{position:absolute;left:0;top:6px;width:38px;height:25px;padding:5px 3px;background:#59676a;border:2px solid #263135;border-radius:2px;display:flex;gap:4px}.staff-console i{width:10px;height:10px;border-radius:50%;border:2px solid #263135}.mini-estop{background:#e2383f}.mini-clear{background:#55d781}.staff-gate{position:absolute;left:41px;top:0;width:5px;height:45px;background:linear-gradient(90deg,#657477,#e8eeee,#78878a);transform-origin:bottom;transition:transform .55s}.staff-gate:after{content:"";position:absolute;left:3px;top:3px;width:31px;height:5px;background:#9ba9ab;border:1px solid #536164}.staff-gate.open{transform:rotate(-82deg)}.staff{top:54px;width:38px}.load-staff{left:7%}.unload-staff{left:89%}.load-staff.inspecting{left:20%}.unload-staff.inspecting{left:70%}.staff-button,.staff span{display:none}.guest-queue{left:28%;bottom:12px;grid-template-columns:repeat(4,15px);width:82px}.guest-queue.board .queue-person:nth-child(-n+4){transform:translate(-115px,-62px)}

.announcement-subtitle{position:absolute;left:50%;bottom:8px;z-index:9;transform:translate(-50%,15px);width:min(720px,80%);padding:9px 14px;border-radius:3px;background:#071114e8;color:#fff;text-align:center;font-size:11px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;box-shadow:0 4px 15px #0007}.announcement-subtitle.show{opacity:1;transform:translate(-50%,0)}.announcement-subtitle b{color:#6ddbed;margin-right:8px}

.row-locks{display:flex;gap:7px;margin-bottom:8px}.row-locks span{display:flex;align-items:center;gap:6px;padding:5px 8px;background:#20282a;color:#bdc9ca;border:1px solid #0f1415;font-size:7px}.row-locks i{width:11px;height:11px;border-radius:50%;background:#4c5658;border:2px solid #111}.row-locks i.green{background:#5ade7d;box-shadow:0 0 8px #5ade7d}.row-locks i.red{background:#ef454d;box-shadow:0 0 8px #ef454d}.load-service{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.load-service .load-safety{margin:0;padding:0;border:0}.transfer-button{min-height:46px;border:2px solid #1a1e1f;background:#455053;color:#f2f5f4;font-size:8px;font-weight:bold;box-shadow:inset 0 0 0 2px #758083,0 3px 0 #191c1d;cursor:pointer}.transfer-button:disabled{opacity:.35;cursor:not-allowed}.transfer-button.ready{box-shadow:inset 0 0 0 2px #758083,0 3px 0 #191c1d,0 0 12px #61d986}.transfer-button kbd{float:right}.unload-buttons{grid-template-columns:1fr 1fr 1.2fr}.add-car{width:100%;margin-top:9px}.real-button.restraint-control{height:96px}.real-button.restraint-control>i{background:#f0b844!important}.real-button.restraint-control.active>i{background:#63e18c!important}

.audio-panel{margin-top:10px;padding:11px;background:linear-gradient(145deg,#4d5354,#303536);border:2px solid #747c7d;box-shadow:inset 0 0 0 4px #252a2b,0 7px 16px #0005}.audio-panel .console-label{margin-bottom:8px}.audio-routing{display:grid;grid-template-columns:1.1fr repeat(4,1fr);gap:6px}.audio-routing label{grid-row:span 2;padding:8px;background:#172022;color:#b9c6c7;font-size:8px}.audio-routing select{display:block;width:100%;height:34px;margin-top:7px;background:#eef4f4;border:1px solid #758588;color:#203034}.audio-routing button{min-height:42px;border:2px solid #181d1e;background:#3c4749;color:#f1f5f4;font-size:7px;font-weight:bold;cursor:pointer;box-shadow:inset 0 0 0 2px #697578}.audio-routing button:active{background:#347f90;transform:translateY(1px)}

@media(max-width:1100px){.top-status{grid-template-columns:repeat(4,1fr);height:auto}.top-status>div:first-child{grid-column:auto}.block-map{grid-template-columns:repeat(4,1fr)}.operator-desk{grid-template-columns:1fr 1fr}.main-console{grid-column:span 2}.audio-routing{grid-template-columns:repeat(3,1fr)}.audio-routing label{grid-row:auto}}
@media(max-width:650px){.top-status{grid-template-columns:1fr 1fr}.block-map{grid-template-columns:1fr 1fr}.load-buttons,.unload-buttons{grid-template-columns:1fr 1fr}.audio-routing{grid-template-columns:1fr 1fr}.audio-routing label{grid-column:span 2}.load-service{grid-template-columns:1fr}}
