
:root{
 color-scheme:dark;font:14px/1.42 "Segoe UI",system-ui,sans-serif;
 /* Canonical RTE DesignerTheme.cpp (sRGB rounded) */
 --bg:#252525;--side:#2d2d2d;--panel:#282828;--pane:#2d2d2d;
 --frame:#1d1d1d;--frame-hover:#656564;--line:#50504f;
 --dim:#90908e;--text:#dfdfdb;--secondary:#b9b9b7;
 --orange:#c35b25;--orange-hover:#df7134;--green:#60a676;
 --red:#d04946;--select:#0078d4;--radius:3px
}
*{box-sizing:border-box}[hidden]{display:none!important}
html,body{min-height:100%}
body{margin:0;background:var(--bg);color:var(--text)}
button,input,select{font:inherit}
button{cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--select);outline-offset:2px}
::selection{background:var(--select);color:#fff}
.app{min-height:100vh;display:grid;grid-template-columns:246px minmax(0,1fr);grid-template-rows:42px minmax(0,1fr);grid-template-areas:"mast mast" "side content"}
.masthead{grid-area:mast;display:flex;align-items:stretch;position:sticky;top:0;z-index:30;background:#202020;border-bottom:1px solid var(--line);min-width:0}
.brand{width:246px;min-width:246px;border-right:1px solid #363635;padding:8px 21px 6px;color:#f3f3ef;font-size:20px;font-weight:750;letter-spacing:-.045em;white-space:nowrap;line-height:1.1}
.brand b{color:var(--orange);font-weight:750}
.primary-tabs{display:flex;align-items:stretch;gap:0;min-width:0;overflow-x:auto;scrollbar-width:thin}
.primary-tabs button{height:100%;border:0;border-bottom:2px solid transparent;background:transparent;color:#a9a9a7;text-transform:uppercase;letter-spacing:.025em;font-size:12px;font-weight:650;padding:0 18px;white-space:nowrap}
.primary-tabs button:hover{background:#2b2b2b;color:var(--text)}
.primary-tabs button.active{border-bottom-color:var(--orange);color:#f5f3ef;background:#2a2a29}
.host-chip{margin-left:auto;min-width:150px;padding:4px 14px;display:flex;align-items:center;gap:10px;border-left:1px solid #363635;background:#242424}
.host-chip strong{display:block;font-size:12px;font-weight:620;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis}
.host-chip small{display:block;color:var(--dim);font-size:11px;white-space:nowrap}
aside{grid-area:side;background:var(--side);border-right:1px solid var(--line);padding:12px 10px;display:flex;flex-direction:column;gap:12px;position:sticky;top:42px;height:calc(100vh - 42px);overflow-y:auto}
.menu{display:flex;flex-direction:column;gap:2px}
.menu button{display:flex;align-items:center;gap:11px;width:100%;padding:11px 12px;border:0;border-left:2px solid transparent;text-align:left;background:transparent;color:#c9c9c5;font-size:13px}
.menu button:hover{background:#373736;color:#fff}
.menu button.active{border-left-color:var(--orange);background:#41403e;color:#fff}
.menu button .icon{display:inline-grid;place-items:center;width:19px;color:#999995;font-family:Consolas,monospace;font-size:14px;flex-shrink:0}
.menu button.active .icon{color:var(--orange-hover)}
.menu button .nav-label{flex:1}
.menu button .nav-flag{font-size:10px;color:var(--dim)}
main{grid-area:content;min-width:0;display:flex;flex-direction:column}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:#7e7e7a;flex-shrink:0}
.dot.online{background:var(--green)}.dot.offline{background:var(--red)}.dot.unknown{background:#777774}
.wrap{padding:11px 25px 16px;width:100%;min-width:0}
h1{font-size:21px;letter-spacing:-.035em;font-weight:650;margin:0 0 3px}
h2{font-size:14px;margin:0;font-weight:650}
p{margin:0}.muted{color:var(--dim)}.small{font-size:12px}
.intro{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:10px}
.pill{display:inline-flex;align-items:center;border:1px solid #69472e;background:#372c24;color:#e5a579;font-size:10px;font-weight:650;padding:5px 10px;letter-spacing:.04em}
.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}
.card,.panel{background:var(--panel);border:1px solid #414140;border-radius:var(--radius)}
.card{padding:13px 15px}.metric{font-size:24px;font-weight:650;margin:4px 0 0;letter-spacing:-.03em}
.panel{margin-bottom:13px;overflow:hidden}
.panel-head{padding:12px 15px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #3c3c3b;gap:12px;background:#292929}
.panel-body{padding:15px}
.btn{border:1px solid #5b5b59;border-radius:3px;color:var(--text);background:#363635;padding:8px 12px;white-space:nowrap;font-size:12px}
.btn:hover{background:#464645}.btn.primary{background:var(--orange);border-color:#9c4b21;color:#fff}
.btn.primary:hover{background:var(--orange-hover)}
.btn:disabled{cursor:not-allowed;opacity:.43}
.input{border:1px solid #555552;border-radius:3px;background:var(--frame);color:var(--text);padding:8px 10px;min-width:170px}
.input:focus{border-color:var(--orange);outline:none}
.flex{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.connection-panel{padding:11px 14px;display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.connection-panel label{display:flex;align-items:center;gap:8px;color:var(--dim);font-size:12px}
.connection-panel .input{min-width:200px;width:min(300px,55vw)}
.auth-panel{margin-bottom:14px}
.alert{font-size:12px;color:var(--dim)}.alert.error{color:var(--red)}
.tools{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
table{border-collapse:collapse;width:100%}th,td{padding:11px 13px;text-align:left;border-bottom:1px solid #3b3b3b}
th{font-size:11px;color:#aaaaa7;font-weight:600;background:#2c2c2b}
td{font-size:12px}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#323231}
.machine-name{font-weight:650;color:#f1f1ef}
.code{font-family:Consolas,ui-monospace,monospace;font-size:11px;color:var(--dim);overflow-wrap:anywhere}
.chip{display:inline-flex;align-items:center;gap:7px;border:1px solid #4b4b4a;background:#323231;padding:4px 7px;font-size:11px;color:#c8c8c5}
.chip.online{border-color:#42674e;color:#9ad1a6;background:#26352b}
.chip.offline{border-color:#724140;color:#f1aaa8;background:#3d2727}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hint{padding:11px 14px;background:#30302f;border-top:1px solid #454543;color:var(--dim);font-size:11px}
.mapping-canvas{position:relative;width:100%;min-height:180px;max-height:480px;aspect-ratio:16/9;background:#1c1c1c;border:1px solid #61615e;overflow:hidden}
.mapping-canvas .map-tile{position:absolute;background:#c35b2528;border:2px solid var(--orange);min-width:2px;min-height:2px;padding:6px;font-size:11px;color:#f1ad85;overflow:hidden}
.mapping-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:10px}
.mapping-summary{background:#30302f;border:1px solid #454543;padding:11px}
.mapping-summary strong{display:block;font-weight:650;margin-bottom:5px}
.editor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:10px}
.editor-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.editor-field label,.editor-field>span{color:var(--secondary);font-size:11px}
.editor-field .input{min-width:0;width:100%}
.editor-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:11px}
.editor-route{border:1px solid #4b4b4a;background:#2d2d2c;padding:13px;display:flex;flex-direction:column;gap:10px}
.editor-route.enabled{border-left:3px solid var(--orange)}
.editor-status{margin-left:auto;max-width:100%;color:#e6ab83;font-size:11px}
.empty{text-align:center;padding:30px 20px;color:var(--dim)}
.node-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(195px,1fr));gap:8px}
.node{background:#30302f;border:1px solid var(--line);border-radius:2px;padding:11px;text-align:left;min-height:62px;color:var(--text)}
.node.selected{border-color:var(--orange);box-shadow:inset 3px 0 var(--orange)}
.node .code{display:block;margin-top:5px}
.property-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:9px 0;border-bottom:1px solid #3e3e3d}
.property-row:last-child{border:0}.property-row code{font-size:12px;word-break:break-word;color:#ecaa7d}
.notice{padding:11px 13px;border-left:2px solid var(--orange);background:#342b26;color:#debb9f;font-size:12px;margin-bottom:13px}
.status-strip{display:flex;align-items:center;gap:0;flex-wrap:wrap;padding:9px 13px;background:#292929;border:1px solid #414140;margin-bottom:13px}
.status-item{display:flex;align-items:center;gap:8px;padding:3px 17px;border-right:1px solid #4d4d4a;color:var(--dim);font-size:12px}
.status-item:first-child{padding-left:0}.status-item:last-child{border:0}
.status-item strong{font-size:14px;font-weight:650;color:var(--text)}
.section-empty{padding:24px;display:flex;flex-direction:column;gap:10px}
.section-empty h2{font-size:17px}
.section-empty .scope{align-self:start}
.advanced-block{border-top:1px solid #484847;margin-top:12px}
.advanced-block>summary{padding:12px 15px;cursor:pointer;color:#b8b8b4;font-size:12px}
.advanced-block>summary:hover{background:#333332}
.advanced-block[open]>summary{border-bottom:1px solid #454544}
.advanced-block>.panel-body{padding:12px 15px}
.mini-list{display:grid;gap:8px}
.mini-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #424240;padding:8px 0;font-size:12px}
.mini-row:last-child{border:0}
footer{padding:12px 25px;color:var(--dim);font-size:11px;margin-top:auto}
.output-workspace{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(315px,1fr);gap:13px;align-items:start}
.output-workspace>.panel,.output-workspace .panel{min-width:0}
.output-editor-col{min-width:0}
.output-workspace .mapping-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.output-workspace .editor-grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr))}
.output-workspace .editor-route .route-title{min-width:0;flex:1}
.route-title strong{display:block;font-size:13px}
.editor-route .advanced-block{margin-top:0}
.editor-route .advanced-block>summary{padding:10px 0}
.editor-route .advanced-block>.panel-body{padding:10px 0 0}
.output-advanced{background:#292928;border:1px solid #424240;padding:0 15px;margin-top:13px}
.output-advanced>.panel{margin-top:10px}
.output-advanced>.panel:last-child{margin-bottom:14px}
.output-advanced>summary{padding:12px 0;font-weight:600}
.output-advanced .panel-head{background:#313130}
.machine-name-row{align-items:center;flex-wrap:wrap}
.machine-name-row>div:first-child{min-width:200px;flex:1}
.machine-name-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:2;flex-wrap:wrap}
.machine-name-controls>.input{width:min(330px,100%);flex:1;min-width:170px}
.machine-name-controls>.small{width:100%;text-align:right}
#machine-error-message:empty{display:none}
@media(max-width:720px){.machine-name-row>div:first-child,.machine-name-controls{flex-basis:100%}.machine-name-controls>.small{text-align:left}}
.setting-list{display:flex;flex-direction:column;gap:0}
.setting-row{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid #3d3d3c;padding:11px 0;font-size:12px}
.setting-row:first-child{padding-top:2px}.setting-row:last-child{border-bottom:0;padding-bottom:2px}
.setting-row strong{font-weight:600;color:var(--text)}
.setting-value{font-weight:600;text-align:right}
.setting-note{padding:0 2px 16px}
.hardware-list{display:flex;flex-direction:column;gap:11px}
.hardware-row{padding:13px;background:#30302f;border:1px solid #454543;display:flex;align-items:flex-start;flex-wrap:wrap;gap:12px}
.hardware-main{flex:1;min-width:220px;display:flex;flex-direction:column;gap:3px}
.hardware-main strong{font-size:14px}
.hardware-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.device-technical{flex-basis:100%;margin-top:2px}
.device-technical .code{text-align:right;max-width:65%}
.focused-mapping{box-shadow:inset 3px 0 var(--orange)}
.chip.unsaved{color:#e9b386;border-color:#775037;background:#382b24}
.btn.primary:disabled{background:#383837;border-color:#494947;color:#999995;opacity:1}
.btn.subtle-danger{color:#dba3a1;border-color:#6c4846;margin-top:11px}
.btn.subtle-danger:hover{background:#46302f}
#output-live-state:empty{display:none}
.route-source-label{font-size:11px}
@media(max-width:1280px){.output-workspace{grid-template-columns:minmax(0,1fr)}}
@media(max-width:1100px){.app{grid-template-columns:190px minmax(0,1fr)}.brand{width:190px;min-width:190px;font-size:18px;padding:9px 15px}.primary-tabs button{padding:2px 13px 0;font-size:12px}.host-chip{min-width:125px;padding:9px}.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-table{overflow-x:auto}.wide-table table{min-width:780px}}
@media(max-width:720px){.app{display:block}.masthead{position:sticky;height:auto;min-height:42px;flex-wrap:wrap}.brand{height:42px;border:0;width:auto;min-width:0;flex:1}.host-chip{height:42px;border:0;min-width:auto;margin-left:0}.primary-tabs{order:3;width:100%;height:37px;border-top:1px solid #383837}.primary-tabs button{padding:0 16px}aside{position:static;height:auto;overflow:visible;padding:0 8px 8px;gap:0}.menu{flex-direction:row;overflow-x:auto}.menu button{width:auto;min-width:max-content;padding:9px 11px}.wrap{padding:16px 12px}.intro{align-items:start;flex-direction:column;gap:7px}.summary{gap:8px}.card{padding:10px}.metric{font-size:21px}.grid2{grid-template-columns:1fr}.panel-head,.panel-body{padding:11px}.status-item{padding:4px 9px}footer{padding:10px 12px}}
.layout-workspace{display:grid;grid-template-columns:200px minmax(350px,1fr) 315px;gap:10px;min-height:650px}.layout-side{min-width:0;padding:12px;background:#282828;border:1px solid #414140}.layout-side h2{margin-bottom:12px}.layout-list{display:grid;gap:5px;margin:10px 0 16px}.layout-list button{background:#343433;color:var(--text);border:1px solid #4b4b49;text-align:left;padding:8px 10px;overflow:hidden;text-overflow:ellipsis}.layout-list button.active{border-color:var(--orange);background:#4b382b}.layout-tools{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.layout-tools .btn{padding:6px 9px}.layout-stage-shell{background:#191919;border:1px solid #50504f;min-width:0;display:flex;flex-direction:column}.layout-toolbar{padding:10px;border-bottom:1px solid #414140;display:flex;align-items:center;flex-wrap:wrap;gap:7px}.layout-viewport{position:relative;flex:1;min-height:520px;overflow:hidden;touch-action:none;cursor:grab;background-color:#191919;background-image:radial-gradient(#424240 0.8px,transparent .8px);background-size:18px 18px}.layout-viewport.panning{cursor:grabbing}.layout-board{position:absolute;background:#262626;border:1px solid #727271;box-shadow:0 5px 25px #0008;transform-origin:top left}.layout-tile{position:absolute;border:2px solid #abb7c1;background:#829bb135;cursor:move;user-select:none;touch-action:none;overflow:visible}.layout-tile.active{border-color:var(--orange);background:#c35b2535;z-index:5}.layout-tile.locked{border-style:dashed;cursor:not-allowed}.layout-tile-label{position:absolute;top:3px;left:5px;font-size:12px;white-space:nowrap;text-shadow:0 1px 3px #000}.layout-resize{position:absolute;width:12px;height:12px;right:-7px;bottom:-7px;background:var(--orange);border:1px solid #e8b591;cursor:nwse-resize}.layout-stat{padding:8px 11px;font-size:11px;color:var(--dim);border-top:1px solid #414140}.layout-properties{display:grid;grid-template-columns:1fr 1fr;gap:10px}.layout-name-only .editor-field,.layout-side> .layout-properties .editor-field:first-child{grid-column:1/-1}.layout-properties .input{min-width:0;width:100%}.layout-warning{padding:9px;margin-top:12px;color:#e5af87;border:1px solid #755037;background:#382a22;font-size:11px}@media(max-width:1200px){.layout-workspace{grid-template-columns:180px minmax(300px,1fr)}.layout-workspace>.layout-side:last-child{grid-column:1/-1}.layout-properties{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:760px){.layout-workspace{display:flex;flex-direction:column}.layout-viewport{min-height:420px}.layout-stage-shell{min-height:500px}.layout-properties{grid-template-columns:repeat(2,minmax(0,1fr))}}

.layout-page-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-left:auto}
.layout-page-actions .btn{padding:6px 13px}
.layout-live-toggle,.layout-led-toggle,.layout-lock{display:inline-flex;align-items:center;gap:7px;color:var(--secondary);font-size:12px;cursor:pointer;white-space:nowrap}
.layout-live-toggle{padding:5px 9px;border:1px solid #4b4b49;background:#292928;border-radius:3px}
.layout-live-toggle input,.layout-led-toggle input,.layout-lock input{accent-color:var(--orange);cursor:pointer;margin:0}
.layout-title-row{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:13px;min-width:0}
.layout-title-row h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layout-led-toggle{margin-left:auto;flex-shrink:0;font-size:11px}
.layout-name-only{display:grid;grid-template-columns:1fr;margin-bottom:13px}
.layout-led-group{border-top:1px solid #424241;padding-top:12px;margin-top:12px}
.layout-led-group h3{font-size:12px;margin:0 0 8px;font-weight:650;color:#e5e3dd}
.layout-led-group>p{margin:-3px 0 9px;line-height:1.35}
.layout-led-group .layout-properties{gap:8px}
.layout-led-group .editor-field{gap:4px}
.layout-led-group .editor-field>span{font-size:10px}
.layout-led-group .input,.layout-name-only .input{padding:6px 8px;font-size:12px}
.layout-dimension-summary{border-top:1px solid #444442;margin-top:14px;padding-top:10px;color:#b8c4b4;font-size:11px}
.layout-advanced{margin-top:12px}
.layout-advanced>summary{padding:9px 0;font-weight:600}
.layout-advanced-content{padding:11px 0}
.layout-lock{margin-top:12px}
.layout-ghost{position:absolute;border:2px dashed #e5bd7a;box-shadow:inset 0 0 0 1px #b48a5355;opacity:.5;pointer-events:none;z-index:0}
.layout-ghost-label{position:absolute;top:4px;left:6px;font-size:11px;color:#e5bd7a;text-shadow:0 1px 2px #000}
.layout-tile{z-index:1}
@media(max-width:760px){.layout-page-actions{justify-content:flex-start;margin:0;width:100%}.layout-title-row{flex-wrap:wrap}}

/* Layout v3: continuous unbounded viewport around an immutable pixel origin. */
.layout-board{overflow:visible}
.layout-list button.active{border-color:#e98243;background:#4a3327;box-shadow:inset 3px 0 0 var(--orange);color:#fff;font-weight:650}
.layout-tile{border-width:calc(2px * var(--inverse-layout-scale, 1));overflow:visible;box-sizing:border-box;transition:background-color .1s}
.layout-tile:hover{background:#bf6a3340!important}
.layout-tile.active{z-index:5!important;border-color:var(--orange)!important;background:#e8793340!important;box-shadow:0 0 0 calc(3px * var(--inverse-layout-scale, 1)) #c35b255f,inset 0 0 0 calc(1px * var(--inverse-layout-scale, 1)) #f5c09a}
.layout-tile.locked{cursor:pointer}
.layout-tile-label{position:absolute;top:50%;left:50%;width:max-content;max-width:calc(100% - 18px);padding:6px 10px;background:#202020ca;color:#f6f0eb;border:1px solid #636362;border-radius:3px;transform:translate(-50%,-50%) scale(var(--inverse-layout-scale, 1));transform-origin:center center;text-shadow:0 1px 3px #000;font-size:13px;line-height:1.2;white-space:nowrap;pointer-events:none;text-align:center;user-select:none;overflow:hidden;text-overflow:ellipsis}
.layout-tile-label strong{display:block;font-weight:650}
.layout-tile-label>span{display:block;margin-top:3px;color:#cfcbc7;font-size:10px}
.layout-tile.active .layout-tile-label{background:#452c20f2;border-color:var(--orange);color:#fff;box-shadow:0 1px 7px #000a}
.layout-tile.tiny .layout-tile-label{display:none}
.layout-resize{width:calc(12px * var(--inverse-layout-scale, 1));height:calc(12px * var(--inverse-layout-scale, 1));right:calc(-6px * var(--inverse-layout-scale, 1));bottom:calc(-6px * var(--inverse-layout-scale, 1));display:none;z-index:7}
.layout-tile.active:not(.locked) .layout-resize{display:block}
.layout-axis{position:absolute;pointer-events:none;z-index:6}
.layout-axis-x{top:0;bottom:0;width:1px;background:repeating-linear-gradient(to bottom,#8c919477 0,#8c919477 5px,transparent 5px,transparent 11px)}
.layout-axis-y{left:0;right:0;height:1px;background:repeating-linear-gradient(to right,#8c919477 0,#8c919477 5px,transparent 5px,transparent 11px)}
.layout-origin-label{position:absolute;color:#a2a4a0;background:#1b1b1bde;border:1px solid #454744;font:10px Consolas,monospace;padding:1px 3px;pointer-events:none;z-index:7;white-space:nowrap}
.layout-snap-guide{position:absolute;pointer-events:none;z-index:12}
.layout-snap-guide-x{top:0;bottom:0;width:1px;border-left:1px dashed #df9956}
.layout-snap-guide-y{left:0;right:0;height:1px;border-top:1px dashed #df9956}
.layout-snap-tag{position:absolute;top:9px;left:7px;padding:3px 6px;background:#432b1d;color:#ffc38f;border:1px solid #885432;border-radius:2px;font:11px "Segoe UI",sans-serif;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.layout-snap-guide-y .layout-snap-tag{top:-25px;left:9px}
.layout-ghost-label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(var(--inverse-layout-scale, 1));transform-origin:center center;font-size:11px;background:#281d0e;color:#e0ba79;padding:4px 7px;white-space:nowrap;pointer-events:none}

.layout-board.active-composition{outline:1px dashed #b7744b9e;outline-offset:2px}
.layout-tile-label{border-left:3px solid var(--screen-color, #829bb1)}
.layout-list{gap:0;margin:3px 0 9px}.layout-side h2{margin-bottom:4px}
.layout-list button{height:25px;padding:2px 7px;border:0!important;background:transparent!important;box-shadow:none!important;border-radius:2px;font-size:12px;line-height:20px}
.layout-list button:hover:not(.active){background:#ffffff0b!important}
.layout-list button.active{background:#4a3327!important;box-shadow:inset 2px 0 var(--orange)!important;color:#fff;font-weight:650}
.layout-axis-x{top:auto;bottom:auto;height:50px;width:1px;transform:translateY(-50%);background:repeating-linear-gradient(to bottom,#c6cac5d0 0px,#c6cac5d0 5px,transparent 5px,transparent 9px)}
.layout-axis-y{left:auto;right:auto;width:50px;height:1px;transform:translateX(-50%);background:repeating-linear-gradient(to right,#c6cac5d0 0px,#c6cac5d0 5px,transparent 5px,transparent 9px)}
.layout-led-grid{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.layout-led-grid-line{position:absolute;background:#ccd5d94a;pointer-events:none}
.layout-led-grid-line.vertical{width:1px;top:0;bottom:0}
.layout-led-grid-line.horizontal{height:1px;left:0;right:0}
.layout-led-grid-half{position:absolute;left:0;right:0;bottom:0;box-sizing:border-box;border-top:2px dashed #eeab60;background:repeating-linear-gradient(45deg,#c35b2517 0px,#c35b2517 8px,transparent 8px,transparent 16px);pointer-events:none}
.layout-half-label{position:absolute;bottom:calc(3px * var(--inverse-layout-scale,1));left:calc(4px * var(--inverse-layout-scale,1));transform:scale(var(--inverse-layout-scale,1));transform-origin:left bottom;font-size:11px;color:#ffc18a;background:#2b211ac9;padding:1px 4px;white-space:nowrap}
.layout-tile-diagonals{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}
.layout-tile-diagonals line{stroke:#e2e9eb;stroke-opacity:.28;stroke-width:.8;vector-effect:non-scaling-stroke}

/* Layout V5: shared coordinate space; visualizer height never follows inspector. */
.layout-workspace{height:calc(100dvh - 148px);min-height:480px;align-items:stretch}
.layout-side{height:100%;min-height:0;overflow-y:auto}
.layout-stage-shell{height:100%;min-height:0;overflow:hidden}
.layout-toolbar,.layout-stat{flex:0 0 auto}
.layout-viewport{flex:1 1 auto;min-height:0}
.layout-board{background:transparent;border:0;box-shadow:none;overflow:visible}
.layout-composition{position:absolute;box-sizing:border-box;background:rgba(119,151,170,.035);border:1px solid #89969e58;cursor:move;touch-action:none;user-select:none;z-index:0}
.layout-composition.active{background:rgba(119,151,170,.055);border:1px dashed #cc986aaf;z-index:0}
.layout-composition-name{position:absolute;top:0;left:0;transform:scale(var(--inverse-layout-scale,1));transform-origin:top left;color:#b0bbc095;font-size:11px;pointer-events:none;background:#25252570;padding:1px 4px;white-space:nowrap}
.layout-tile{background:#829bb119!important}
.layout-tile:hover{background:#829bb12e!important}
.layout-tile.active{background:#c35b251c!important}
.layout-tile-diagonals line{stroke:#dae5e9;stroke-opacity:.52}
.layout-tile-label{max-width:none;overflow:visible}
.layout-tile-label>span{font-size:10px;color:#d3d9dc}
/* Layout V6: world-anchored dot raster, bottom-most origin and pixel-crisp selection. */
.layout-viewport{background-image:none;isolation:isolate}
.layout-origin-underlay{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.layout-origin-underlay .layout-axis{z-index:0}
.layout-board{z-index:1}
.layout-selection-rect{position:absolute;box-sizing:border-box;border:1px solid #f5a56a;background:transparent;border-radius:0;box-shadow:none;outline:0;pointer-events:none;z-index:3;transform-origin:center center}
.layout-selection-rect[hidden]{display:none}
.layout-snap-guide{z-index:4}
.layout-tile.active{border-color:transparent!important;box-shadow:none!important}
.layout-tile.active .layout-tile-label{box-shadow:none}
.layout-tile{border-width:0!important;box-shadow:none!important}
.layout-composition{border-color:transparent!important;border-width:0!important}
.layout-composition.active{border-color:transparent!important}
.layout-geometry-overlay{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:visible}
.layout-outline{position:absolute;box-sizing:border-box;border:1px solid #75818b;background:transparent;box-shadow:none;pointer-events:none;transform-origin:center center}
.layout-outline.composition{border-color:#8a959b83;border-style:dashed}
.layout-outline.selected{border-color:#f5a56a;border-style:solid}
.layout-outline.invalid{border-color:#e66866}
.layout-outline.unmapped{border-color:#ba5555}
.layout-outline.secondary-selected{border-color:#ddbf91}
.layout-handle{position:absolute;box-sizing:border-box;width:12px;height:12px;background:#f1a46d;border:1px solid #2c211c;pointer-events:auto;transform:translate(-50%,-50%);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);z-index:2}
.layout-handle[data-edge="nw"],.layout-handle[data-edge="se"]{cursor:nwse-resize}
.layout-handle[data-edge="ne"],.layout-handle[data-edge="sw"]{cursor:nesw-resize}
.layout-handle[data-edge="n"],.layout-handle[data-edge="s"]{cursor:ns-resize}
.layout-handle[data-edge="w"],.layout-handle[data-edge="e"]{cursor:ew-resize}
.layout-marquee{position:absolute;display:none;pointer-events:none;z-index:8;border:1px solid #dfa36d;background:#d78e5430;box-sizing:border-box}
.layout-marquee.active{display:block}

.layout-tile-label.is-compact>span,.layout-tile-label.is-vertical>span{display:none}
.layout-tile-label.is-vertical{transform:translate(-50%,-50%) rotate(-90deg) scale(var(--inverse-layout-scale,1))}
.layout-tile-label.is-hidden{display:none}
.layout-toolbar{flex-wrap:nowrap;gap:5px;padding:7px}
.layout-menu-anchor{margin-left:auto;position:relative;flex-shrink:0}
.layout-toolbar>.small{white-space:nowrap;font-size:10px}
.layout-view-menu{position:absolute;right:0;top:calc(100% + 7px);z-index:50;background:#242424;border:1px solid #66605a;box-shadow:0 12px 28px #0009;width:228px;max-height:min(600px,76vh);overflow:auto;padding:10px}
.layout-view-menu strong{font-size:12px;display:block;margin-bottom:8px}
.layout-view-menu label{display:flex;gap:9px;align-items:center;padding:5px 0;color:#ded9d1;font-size:12px}
.layout-view-menu .input{width:100%;font-size:12px}
.layout-view-menu button{margin-top:5px;width:100%;text-align:left}
.layout-viewport.black-world{background-color:#000}
.layout-tile{background:var(--layout-screen-fill,#829bb119)!important}
.layout-tile.active{background:var(--layout-screen-fill,#829bb119)!important}
.layout-measurements{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}
.layout-measurement{position:absolute;pointer-events:none;font:10px Consolas,monospace;color:#e4c99b;text-shadow:0 1px #000}
.layout-measurement.horizontal{text-align:center;border-top:1px solid #d4b987a6;height:13px;padding-top:2px}
.layout-measurement.vertical{writing-mode:vertical-rl;transform:rotate(180deg);border-right:1px solid #d4b987a6;width:15px;text-align:center}
/* One Mapping editor uses the same GPU Output Draft; no shadow mapping store. */
.led-map-panel{margin:12px 0 18px;border:1px solid #4a4947;background:#222222}
.led-map-header{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #444441}
.led-map-header h3{margin:0;font-size:13px;color:#ddd9d1}
.led-map-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(205px,.8fr);gap:12px;padding:12px}
.led-map-stage{position:relative;width:100%;aspect-ratio:16/9;min-height:120px;max-height:340px;border:1px solid #717b81;background:#829bb111;overflow:hidden}
.led-map-screen-label{position:absolute;top:4px;left:6px;font:11px Consolas,monospace;color:#ced9df;z-index:2;pointer-events:none;text-shadow:0 1px 2px #000}
.led-map-region{position:absolute;box-sizing:border-box;border:2px solid #e89d5c;background:#c35b253c;cursor:move;touch-action:none;min-height:4px;min-width:4px}
.led-map-region.active{border-color:#ffba78;background:#e89d5c40}
.led-map-region-tag{position:absolute;bottom:3px;left:3px;max-width:95%;font-size:10px;background:#201914e0;color:#f7ddc3;padding:2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.led-map-route{border-bottom:1px solid #3f3f3d;padding:7px 0}
.led-map-route:last-child{border-bottom:0}
.led-map-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:5px 0}
.led-map-row select{max-width:200px}
.led-map-route .btn{font-size:11px;padding:4px 7px}
.led-map-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:8px 0}
.led-map-fields .input{width:100%;min-width:0;padding:6px 4px;font-size:11px}
.led-map-fields label{font-size:10px;color:#b5b7b5;min-width:0}
.led-map-fields label span{display:block;margin-bottom:3px}
.led-map-notice{font-size:11px;color:#bfa68e;padding:6px 0;line-height:1.4}
.led-map-error{font-size:11px;color:#ffc1a5;padding:6px 0}
@media(max-width:950px){.led-map-grid{grid-template-columns:minmax(0,1fr)}}
.layout-led-grid-half{z-index:2}
@media(max-width:760px){.layout-workspace{height:auto;min-height:0}.layout-side{height:auto;max-height:260px}.layout-stage-shell{height:65dvh;min-height:410px}}
