/* BITIRO Simulador · estilos. Medidas y patrones tomados de la interfaz actual de BITIRO Lab
   (ver docs/pilot-ui-reference.md). Todo el color sale de tokens.css. */
*{box-sizing:border-box}
html{min-width:320px}
[hidden]{display:none!important}
body{margin:0;background:var(--surface-page);color:var(--text-primary);font:400 var(--text-body)/1.5 var(--font-sans);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
h1,p{margin:0}
code,pre{font-family:var(--font-mono)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.skip-link{position:fixed;top:10px;left:12px;z-index:100;padding:10px 16px;background:var(--surface-panel);border:2px solid var(--brand-blue);border-radius:var(--radius-control);transform:translateY(-200%)}
.skip-link:focus{transform:none}

/* Barra superior */
.topbar{position:sticky;top:0;z-index:20;height:var(--header-height);display:flex;align-items:center;gap:var(--space-5);padding:0 clamp(12px,2.2vw,32px);background:var(--surface-panel);border-bottom:1px solid var(--border-default)}
.brand{color:inherit;display:inline-flex;gap:10px;align-items:center;text-decoration:none;flex-shrink:0;min-width:0}
.brand img{width:34px;height:34px;object-fit:contain}
.brand strong{display:block;font-size:19px;line-height:1.15;letter-spacing:-.6px;font-weight:600;white-space:nowrap}
.brand strong span{font-weight:400;color:var(--text-secondary)}
.brand small{display:block;font-size:11px;color:var(--text-secondary);margin-top:1px;white-space:nowrap}

/* Workspace: simulador y editor lado a lado (≈58/42 como el Lab); el canvas ocupa todo el ancho de su panel */
.workspace{display:flex;flex-direction:column;padding:10px clamp(8px,1vw,14px) 12px;scroll-margin-top:var(--header-height)}
.workspace:focus{outline:0}
.workspace-grid{display:grid;gap:10px;grid-template-columns:minmax(0,60fr) minmax(0,40fr);flex:1;min-height:0}
.workspace:not(.editor-open) .workspace-grid{grid-template-columns:minmax(0,1fr)}
.workspace:not(.editor-open) .code-panel{display:none}
@media(min-width:1024px){.workspace{height:calc(100dvh - var(--header-height));min-height:520px}}
@media(min-width:1280px){.workspace-grid{grid-template-columns:minmax(0,58fr) minmax(0,42fr)}}

/* Botones */
.button,.runtime-actions button,.simulator-toolbar>button,.camera-mode-switch button,.zoom-controls button,.menu>summary,.menu-item,.toggle-ir{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:28px;padding:4px 10px;border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-panel);font-size:var(--text-label);font-weight:500;line-height:1.35;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out)}
.button:hover,.runtime-actions button:hover:not(:disabled),.menu>summary:hover,.menu-item:hover,.toggle-ir:hover{background:var(--surface-panel-muted);border-color:var(--border-strong)}
button:disabled{cursor:not-allowed;opacity:.55}
.primary,.runtime-actions .primary,.editor-bottom-bar .primary{background:var(--action-primary);border-color:var(--action-primary);color:var(--text-on-action);font-weight:600}
.primary:hover:not(:disabled),.runtime-actions .primary:hover:not(:disabled),.editor-bottom-bar .primary:hover:not(:disabled){background:var(--action-primary-hover);border-color:var(--action-primary-hover);box-shadow:var(--shadow-action)}
select{min-height:28px;padding:3px 26px 3px 8px;border:1px solid var(--border-default);border-radius:var(--radius-control);background-color:var(--surface-panel-raised);font-size:var(--text-label);font-weight:500;max-width:100%;min-width:0}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--action-primary);flex-shrink:0}

/* Menús emergentes (<details class="pop">) */
.pop{position:relative}
.pop>summary{list-style:none;cursor:pointer}
.pop>summary::-webkit-details-marker{display:none}
.menu[open]>summary{background:var(--surface-panel-muted);border-color:var(--border-strong)}
.menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:268px;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--surface-panel-raised);border:1px solid var(--border-default);border-radius:var(--radius-floating);box-shadow:var(--shadow-floating)}
.menu-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);font-size:var(--text-label)}
.menu-check{display:flex;align-items:center;gap:8px;font-size:var(--text-label)}
.menu-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}
.menu-divider{height:1px;background:var(--border-subtle);margin:2px 0}
.menu-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.menu-item{justify-content:flex-start;width:100%;min-height:32px}
.toggle-ir{flex-direction:column;align-items:flex-start;gap:0;padding:6px 10px}
.toggle-ir span{font-size:11px;color:var(--text-secondary);font-weight:500}
.toggle-ir strong{font-size:var(--text-label)}
.toggle-ir[aria-pressed=true]{background:var(--action-primary-soft);border-color:var(--action-primary);color:var(--action-primary)}
.toggle-ir[aria-pressed=true] span{color:inherit}

/* Panel del simulador */
.simulation-panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--surface-panel-raised);border:1px solid var(--border-sim-panel);border-radius:var(--radius-panel);scroll-margin-top:calc(var(--header-height) + 8px)}
.simulator-toolbar{display:flex;align-items:center;gap:8px;min-height:40px;padding:4px 6px;background:var(--surface-toolbar);border-bottom:1px solid var(--border-subtle);border-radius:calc(var(--radius-panel) - 1px) calc(var(--radius-panel) - 1px) 0 0}
.track-field{display:block;min-width:0;flex:0 1 184px;width:184px;max-width:184px}
.track-field select{width:100%;text-overflow:ellipsis;background-color:var(--surface-panel)}
.camera-mode-switch{display:inline-flex;gap:2px;padding:2px;background:var(--surface-segment);border:1px solid var(--border-segment);border-radius:var(--radius-panel);min-width:0}
.camera-mode-switch button{min-height:25px;padding:3px 8px;border:0;background:transparent;border-radius:var(--radius-control);color:var(--text-secondary);gap:5px}
.camera-mode-switch button svg{flex-shrink:0}
.camera-mode-switch button:hover{background:rgba(255,255,255,.6)}
.camera-mode-switch button.active,.camera-mode-switch button[aria-pressed=true]{background:#fff;color:var(--action-navy);font-weight:600;box-shadow:0 1px 2px rgba(11,13,16,.08)}
.menu{margin-left:auto}
.scene-wrap{position:relative;flex:1;min-height:240px;background:var(--stage-bg);overflow:hidden}
#scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}
#scene:active{cursor:grabbing}
.scene-top-label,.scene-source,.live-badge,.zoom-controls{position:absolute;z-index:2;font:500 var(--text-micro)/1.3 var(--font-mono);color:var(--stage-ink)}
.scene-top-label,.scene-source,.live-badge{pointer-events:none}
.scene-top-label{top:10px;left:10px;display:grid;gap:2px;max-width:60%;padding:6px 9px;background:rgba(7,12,18,.72);border-radius:var(--radius-control)}
.scene-top-label small{font-size:var(--text-micro);color:var(--stage-ink-soft)}
.scene-top-label #trackName{display:none}
.live-badge{top:10px;right:10px;padding:5px 9px;background:rgba(7,12,18,.72);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-pill);letter-spacing:.06em}
.scene-source{left:10px;bottom:10px;max-width:calc(100% - 190px);color:var(--stage-ink-soft);font-size:var(--text-micro);text-shadow:0 0 4px rgba(7,12,18,.9)}
.zoom-controls{right:10px;bottom:10px;display:inline-flex;align-items:center;gap:2px;padding:2px;background:rgba(7,12,18,.72);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-control)}
.zoom-controls button{min-width:28px;min-height:28px;padding:2px 7px;border:0;background:transparent;color:var(--stage-ink);font-size:16px}
.zoom-controls button:hover{background:rgba(255,255,255,.14)}
.zoom-controls output{min-width:42px;text-align:center;font:600 var(--text-micro) var(--font-mono)}
.zoom-controls button:focus-visible{outline-color:#fff}

/* Telemetría: una fila de instrumentos del robot bajo el canvas (sin columna lateral) */
.telemetry>summary{display:none}
.telemetry-strip{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;background:var(--surface-panel-soft);border-top:1px solid var(--border-default)}
.tcell{display:grid;align-content:center;gap:1px;min-width:0;padding:2px 8px;background:rgba(255,255,255,.7);border:1px solid var(--border-subtle);border-radius:var(--radius-control)}
.tlabel{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;line-height:1.3}
.readout{font:500 14px/1.25 var(--font-mono);white-space:nowrap}
.sensor-row{display:flex;gap:10px}
.sensor{display:inline-flex;align-items:baseline;gap:5px}
.sensor b{font:600 11px var(--font-mono);color:var(--text-secondary)}
.sensor strong{font:500 14px/1.25 var(--font-mono)}
.lcd-cell{padding:0;background:transparent;border:0;gap:3px;align-content:center}
.lcd-cell .tlabel{padding-left:2px}
/* LCD 16×2 como componente del robot: bisel, pantalla con retícula de caracteres y texto monoespaciado. */
.lcd-bezel{padding:5px;background:#2D353C;border:2px solid #4A545D;border-radius:var(--radius-control);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 3px rgba(11,13,16,.25)}
/* La retícula 16×2 se dibuja con el mismo avance que el texto (1ch + letter-spacing): cada carácter queda centrado en su celda. */
#lcd{--ls:.4ch;--cell:calc(1ch + var(--ls));--pad:6px;--rowh:26px;--grid:rgba(36,49,39,.3);margin:0;box-sizing:content-box;width:calc(16 * var(--cell));height:calc(2 * var(--rowh));padding:var(--pad) calc(var(--pad) - var(--ls) / 2) var(--pad) calc(var(--pad) + var(--ls) / 2);border-radius:3px;background-color:var(--lcd-bg);background-image:linear-gradient(90deg,var(--grid) 1px,transparent 1px),linear-gradient(180deg,var(--grid) 1px,transparent 1px);background-repeat:repeat-x,repeat-y;background-size:var(--cell) calc(2 * var(--rowh)),calc(16 * var(--cell)) var(--rowh);background-position:var(--pad) var(--pad);box-shadow:inset 0 1px 4px rgba(20,32,23,.5),inset 0 0 0 1px var(--lcd-border);color:var(--lcd-text);font:500 17px/var(--rowh) var(--font-mono);letter-spacing:var(--ls);font-variant-ligatures:none;white-space:pre;overflow:hidden;text-shadow:0 0 1px rgba(36,49,39,.3)}

/* Barra de ejecución (≈31 px en el Lab) */
/* Entradas del robot: Pulsador e IR, siempre visibles (alternan, como en el Lab) */
.inputs-strip{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:5px 8px;background:var(--surface-panel-soft);border-top:1px solid var(--border-default)}
.inputs-strip .tlabel{margin-right:2px}
.input-chip{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:3px 10px;border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-panel-raised);font-size:var(--text-label);font-weight:500;line-height:1.3;cursor:pointer;white-space:nowrap;transition:background var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out)}
.input-chip:hover{background:var(--surface-panel-muted);border-color:var(--border-strong)}
.input-chip .dot{width:8px;height:8px;flex:none;border-radius:50%;border:1.5px solid var(--text-secondary);background:transparent}
.input-chip strong{font:500 11px var(--font-mono);color:var(--text-secondary)}
.input-chip[aria-pressed=true]{background:var(--action-primary-soft);border-color:var(--action-primary);color:var(--action-primary)}
.input-chip[aria-pressed=true] .dot{background:var(--action-primary);border-color:var(--action-primary)}
.input-chip[aria-pressed=true] strong{color:var(--action-primary);font-weight:600}
.runtime-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:3px 6px;border-top:1px solid var(--border-default);background:var(--surface-panel-raised);flex-wrap:wrap}
.runtime-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.runtime-actions button{min-height:28px;padding:4px 12px;font-weight:600}
.runtime-actions button:disabled{opacity:1;background:var(--surface-panel-soft);border-color:var(--border-subtle);color:#868D94;font-weight:500}
.run-proxy{display:none!important}
.workspace:not(.editor-open) .run-proxy{display:inline-flex!important}
.runtime-clock{display:flex;align-items:baseline;gap:8px;font-size:var(--text-label);color:var(--text-secondary)}
.runtime-clock strong{font:500 13px var(--font-mono);color:var(--text-primary)}
.runtime-clock small{font-size:var(--text-micro)}
.status-strip{padding:6px 10px;border-top:1px solid var(--border-subtle);border-radius:0 0 calc(var(--radius-panel) - 1px) calc(var(--radius-panel) - 1px);background:var(--surface-panel-soft);font-size:var(--text-label);color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}

/* Editor: panel navy, barra de archivo de 34 px, Monaco-like 14/24 px y pie con secundario + Ejecutar */
.code-panel{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--editor-panel);color:var(--editor-secondary-text);border:1px solid var(--editor-border);border-radius:var(--radius-panel);overflow:hidden}
.file-bar{display:flex;align-items:center;gap:var(--space-3);min-height:34px;padding:0 6px 0 10px;background:var(--editor-chrome);border-bottom:1px solid var(--editor-border)}
.file-name{display:inline-flex;align-items:center;gap:8px;font:400 var(--text-label) var(--font-mono);color:var(--instrument-text)}
.file-state{margin-left:auto;font-size:var(--text-micro);color:var(--instrument-text-soft)}
#codeClose{width:30px;height:30px;border:0;background:transparent;color:var(--instrument-text-muted);border-radius:var(--radius-control);cursor:pointer}
#codeClose:hover{background:var(--instrument-line)}
.editor-meta{display:flex;justify-content:space-between;gap:var(--space-3);padding:5px 10px;border-bottom:1px solid var(--instrument-line);font-size:var(--text-micro);color:var(--instrument-text-soft)}
.editor-meta span{white-space:nowrap}
.editor-area{position:relative;display:flex;flex:1;min-height:180px;background:var(--editor-bg)}
.gutter{margin:0;flex:none;width:54px;padding:12px 12px 12px 0;text-align:right;color:var(--editor-gutter);font:400 14px/24px var(--font-mono);overflow:hidden;user-select:none;background:var(--editor-bg)}
.gutter .ln{display:inline}
.gutter .ln.on{color:var(--editor-gutter-active)}
.code-stack{position:relative;flex:1;min-width:0}
/* La entrada real es el <textarea>; la capa .hl (aria-hidden) solo pinta el texto coloreado encima, sin capturar el ratón. */
#src,.hl{margin:0;box-sizing:border-box;padding:12px 14px 12px 12px;font:400 14px/24px var(--font-mono);letter-spacing:0;tab-size:2;white-space:pre;font-variant-ligatures:none;font-kerning:none;text-rendering:auto}
#src{position:absolute;inset:0;width:100%;height:100%;resize:none;border:0;outline:0;background:transparent;color:var(--syn-text);caret-color:var(--editor-cursor);overflow:auto;scrollbar-color:var(--editor-border) var(--editor-bg)}
.has-hl #src{color:transparent;-webkit-text-fill-color:transparent}
#src::selection{background:var(--editor-selection);color:transparent;-webkit-text-fill-color:transparent}
.hl-clip{position:absolute;left:0;top:0;overflow:hidden;pointer-events:none;width:100%;height:100%}
.hl{position:absolute;left:0;top:0;min-width:100%;color:var(--syn-text);background:none;pointer-events:none;will-change:transform}
.hl-line{position:absolute;left:0;right:0;top:0;height:24px;background:var(--editor-line-highlight);will-change:transform}
.t-kw{color:var(--syn-keyword)}.t-str{color:var(--syn-string)}.t-com{color:var(--syn-comment)}.t-num{color:var(--syn-number)}.t-op{color:var(--syn-operator)}
.t-api{color:var(--syn-api);font-weight:500}
.t-b1{color:var(--syn-bracket-1)}.t-b2{color:var(--syn-bracket-2)}.t-b3{color:var(--syn-bracket-3)}.t-bx{color:var(--syn-bracket-error)}
.editor-area:focus-within{box-shadow:inset 0 0 0 2px var(--focus-ring)}
#src:focus-visible{outline:0}
@media(forced-colors:active){.has-hl #src{color:CanvasText;-webkit-text-fill-color:CanvasText}.hl-clip{display:none}}
.compiler{padding:8px 12px;border-top:1px solid var(--instrument-line);background:var(--instrument-panel-deep);font:400 var(--text-label)/1.5 var(--font-mono);color:var(--instrument-text-muted);white-space:pre-wrap;max-height:120px;overflow:auto}
.compiler:focus-visible{outline-offset:-3px}
.compiler .ok{color:#7FD9A6}.compiler .warn{color:#F4C07A}.compiler .err{color:#FF9AA6}
.code-panel details{border-top:1px solid var(--instrument-line);padding:6px 12px;font-size:var(--text-label);color:var(--instrument-text-muted);max-height:34%;overflow:auto}
.code-panel summary{cursor:pointer;font-weight:500}
.code-panel details p{margin:8px 0 4px;line-height:1.6}
.code-panel details code{color:var(--syn-string)}
.editor-bottom-bar{display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--editor-chrome);border-top:1px solid var(--editor-border)}
.editor-bottom-bar button,.editor-bottom-bar select{min-height:32px;border-radius:var(--radius-control);font-size:var(--text-label)}
.example-field{display:flex;min-width:0}
.example-field select{height:32px;min-width:0;max-width:150px;padding:5px 26px 5px 10px;background-color:var(--editor-secondary-bg);border:1px solid var(--editor-border);color:var(--editor-secondary-text);font-weight:500}
.example-field select:hover{border-color:var(--instrument-text-soft)}
.restore-button{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:5px 12px;border:1px solid var(--editor-border);border-radius:var(--radius-control);background:var(--editor-secondary-bg);color:var(--editor-secondary-text);font:500 var(--text-label)/1.3 var(--font-sans);cursor:pointer;white-space:nowrap}
.restore-button:hover{border-color:var(--instrument-text-soft)}
.execute-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;flex:1;height:32px;padding:5px 8px;border:1px solid;cursor:pointer;font-weight:600}
.execute-button:disabled{background:var(--instrument-line);border-color:var(--instrument-line)}

/* Diálogos */
dialog{max-width:min(94vw,720px);padding:var(--space-5);border:1px solid var(--border-default);border-radius:var(--radius-floating);background:var(--surface-panel-raised);color:var(--text-primary);box-shadow:var(--shadow-floating)}
dialog::backdrop{background:rgba(7,20,38,.42)}
.reference-title{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}
.reference-title h2{margin:0;font-size:17px}
.reference-title button{border:0;background:transparent;font-size:16px;cursor:pointer;min-width:44px;min-height:44px;border-radius:var(--radius-control)}
.reference-dialog img{max-height:70vh;width:auto;margin:var(--space-3) auto 0;display:block}
.reference-dialog p{font-size:var(--text-label);color:var(--text-secondary)}

.confirm-dialog{width:min(92vw,420px)}
.confirm-dialog h2{margin:0 0 var(--space-2);font-size:17px}
.confirm-dialog p{margin:0 0 var(--space-4);font-size:var(--text-label);color:var(--text-secondary);line-height:1.5}
.confirm-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}

/* 1024–1279: dos columnas con el canvas dominante; la telemetría puede ocupar dos filas */
@media(min-width:1024px) and (max-width:1279px){
 /* Telemetría en rejilla 2×2 con el LCD a la derecha: una sola banda de ~100 px en vez de dos filas sueltas */
 .telemetry-strip{display:grid;grid-template-columns:auto auto 1fr auto;gap:6px;align-items:stretch}
 .telemetry-strip>.tcell:nth-child(1){grid-column:1;grid-row:1}
 .telemetry-strip>.tcell:nth-child(2){grid-column:2;grid-row:1}
 .telemetry-strip>.tcell:nth-child(3){grid-column:1;grid-row:2}
 .telemetry-strip>.tcell:nth-child(4){grid-column:2;grid-row:2}
 .telemetry-strip>.lcd-cell{grid-column:3;grid-row:1/3;justify-self:start;align-self:center;margin-left:4px}
 .scene-source{max-width:calc(100% - 175px)}
 .camera-mode-switch button{padding:3px 6px}
 .track-field{flex-basis:150px;width:150px;max-width:150px}
}

/* Apilado (≤1023): simulador, controles, editor; objetivos táctiles de ~44 px */
@media(max-width:1023px){
 .workspace{height:auto;min-height:calc(100dvh - var(--header-height));gap:var(--space-2)}
 .workspace-grid{grid-template-columns:minmax(0,1fr)!important;gap:10px}
 .scene-wrap{flex:none;height:clamp(240px,46dvh,440px);min-height:0}
 .code-panel{min-height:440px}
 .run-proxy{display:inline-flex!important}
 .editor-bottom-bar .primary{background:transparent;border-color:var(--editor-border);color:var(--instrument-text);font-weight:500}
 .editor-bottom-bar .primary:hover:not(:disabled){background:var(--instrument-line);box-shadow:none;border-color:var(--instrument-text-soft)}
 .input-chip,.restore-button,.button,.runtime-actions button,.camera-mode-switch button,.zoom-controls button,.editor-bottom-bar button,.menu>summary,.menu-item,.toggle-ir,select,.guide-button,#codeClose,.telemetry>summary,.example-field select,.execute-button{min-height:44px}
 .zoom-controls button{min-width:44px}
 .simulator-toolbar{flex-wrap:wrap;row-gap:var(--space-2);padding:8px}
 .track-field{flex:1 1 0;max-width:none}
 .menu{margin-left:0}
 .menu>summary{min-width:44px}
 .camera-mode-switch{order:3;flex:1 1 100%;gap:4px}
 .camera-mode-switch button{flex:1 1 0;padding:3px 4px;min-width:0}
 .menu-check{min-height:44px}
 .inputs-strip{padding:8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}
 .inputs-strip .tlabel{grid-column:1/-1}
 .input-chip{flex-direction:column;align-items:flex-start;justify-content:center;gap:0;padding:4px 8px;white-space:normal}
 .input-chip .dot{display:none}
 .menu-check input{width:20px;height:20px}
 #codeClose{width:44px}
 .code-panel summary{display:flex;align-items:center;min-height:44px}
 .telemetry>summary{display:flex;align-items:center;justify-content:space-between;padding:0 12px;cursor:pointer;font-weight:500;list-style:none;border-top:1px solid var(--border-subtle)}
 .telemetry>summary::-webkit-details-marker{display:none}
 .telemetry>summary::after{content:'';width:8px;height:8px;border-right:2px solid var(--text-secondary);border-bottom:2px solid var(--text-secondary);transform:rotate(45deg);transition:transform var(--motion-fast)}
 .telemetry[open]>summary::after{transform:rotate(-135deg)}
 .telemetry-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .telemetry-strip .tcell:first-child{grid-column:1/-1}
 .telemetry-strip .lcd-cell{grid-column:1/-1}
 .runtime-bar{flex-direction:column;align-items:stretch;gap:8px;padding:8px}
 .runtime-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
 .runtime-actions .run-proxy{grid-column:1/-1}
 .runtime-clock{justify-content:flex-end}
 /* Orden en pantalla: canvas → controles → estado → telemetría */
 .simulation-panel .scene-wrap{order:1}
 .simulation-panel .inputs-strip{order:2}
 .simulation-panel .runtime-bar{order:3}
 .simulation-panel .status-strip{order:4}
 .simulation-panel .telemetry{order:5}
 .simulation-panel .simulator-toolbar{order:0}
 .status-strip{border-radius:0}
}
@media(max-width:767px){
 .topbar{padding:0 12px;gap:10px}
 .brand small{display:none}
 .workspace{padding:8px 8px 16px}
 .file-state{display:none}
 .menu-panel{position:fixed;left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:calc(100dvh - 24px);overflow:auto}
 #codeClose{display:none}
 .scene-source{max-width:calc(100% - 172px);bottom:10px;line-height:1.35}
 .scene-top-label{max-width:56%}
 .zoom-controls output{display:none}
 .example-field select{max-width:none}
 .execute-button{flex:1 1 100%}
 .editor-bottom-bar{flex-wrap:wrap}
 .example-field{flex:1 1 100%}
 .example-field select{width:100%}
}
@media(max-width:400px){
 .brand strong{font-size:17px}
 .scene-top-label small #trackSize,.scene-top-label small .sep{display:none}
 .camera-mode-switch button{font-size:12px;padding:3px 2px;gap:3px}
 .camera-mode-switch button svg{display:none}
 .editor-meta span:first-child{display:none}
}
/* Móvil horizontal: más canvas, menos cromo */
@media(max-height:480px) and (max-width:1023px){
 .simulator-toolbar{flex-wrap:nowrap}
 .camera-mode-switch{order:0;flex:0 0 auto}
 .camera-mode-switch button{flex:0 0 auto;padding:3px 12px}
 .track-field{max-width:260px}
 .menu{margin-left:auto}
 .scene-wrap{height:max(200px,calc(100dvh - var(--header-height) - 70px))}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:0s!important;animation-duration:0s!important;scroll-behavior:auto!important}}

/* ── Escenario: editor de cajas (SCENARIO-PROPS-1) ─────────────────────────────────── */
.scenario-dialog{width:min(94vw,760px);max-height:calc(100dvh - 24px);overflow:auto}
.scenario-intro{margin:0 0 var(--space-3);font-size:var(--text-label);color:var(--text-secondary)}
.scenario-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,260px);gap:var(--space-4);align-items:start}
.scenario-map-wrap{min-width:0;display:flex;justify-content:center}
.scenario-map{display:block;width:auto;max-width:100%;max-height:min(58dvh,520px);height:auto;touch-action:none;user-select:none;border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-panel-muted)}
.sc-floor{fill:#F2EFE8}.sc-line{fill:none;stroke:#1E252C;stroke-linecap:round;stroke-linejoin:round}
.sc-zone.green{fill:#91C5A8}.sc-zone.red{fill:#D8978D}
.sc-robot circle{fill:rgba(36,88,166,.10);stroke:var(--focus-ring);stroke-width:.5;stroke-dasharray:1.6 1.2}.sc-robot line{stroke:var(--focus-ring);stroke-width:.7;stroke-linecap:round}
.sc-box{cursor:grab}.sc-box rect{fill:#C9A06B;stroke:#7A5A33;stroke-width:.5}.sc-box text{font:600 4px var(--font-sans,sans-serif);fill:#2B2013;pointer-events:none}
.sc-box.sel rect{stroke:var(--focus-ring);stroke-width:1.1;fill:#DDB67F}
.scenario-side{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}
.scenario-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.scenario-actions .button[aria-pressed=true]{background:var(--action-primary-soft);border-color:var(--action-primary)}
.scenario-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}
.scenario-item[aria-pressed=true]{background:var(--action-primary-soft);border-color:var(--action-primary);font-weight:600}
.scenario-empty{font-size:var(--text-label);color:var(--text-secondary)}
.scenario-fields{margin:0;padding:var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-control);display:grid;gap:var(--space-2)}
.scenario-fields legend{padding:0 var(--space-1);font-size:var(--text-label);font-weight:600}
.scenario-field{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:var(--space-2);font-size:var(--text-label)}
.scenario-field input{min-height:32px;min-width:0;width:100%;padding:3px 8px;border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-panel-raised);font:inherit}
.scenario-field input:disabled{background:var(--surface-panel-soft)}
.scenario-field .unit,.scenario-hint{color:var(--text-secondary)}
.scenario-hint{margin:0;font-size:var(--text-micro)}
.scenario-note{margin:0;min-height:1.5em;font-size:var(--text-label);color:var(--text-secondary)}
.scenario-footer{flex-wrap:wrap;margin-top:var(--space-4)}.scenario-spacer{flex:1 1 0}
@media(max-width:1023px){.scenario-field input{min-height:44px}}
@media(max-width:640px){.scenario-layout{grid-template-columns:minmax(0,1fr)}.scenario-map{max-height:38dvh}.scenario-dialog{padding:var(--space-4)}.scenario-spacer{display:none}.scenario-footer{position:sticky;bottom:calc(-1 * var(--space-4));margin-bottom:calc(-1 * var(--space-4));padding:var(--space-3) 0;background:var(--surface-panel-raised);justify-content:flex-end}}

/* ── Modo calibración (SIM-CALIBRATION-1) ───────────────────────────────────────────────────────────────────────
   Cambio de interfaz, no de runtime: oculta editor y controles de programación, amplía el plotter y deja solo la LCD.
   Ningún valor de sensor se muestra fuera de la LCD que el programa del alumno escribe. */
.calibration-layer{position:absolute;inset:0;z-index:3;pointer-events:none}
.calibration-layer[hidden]{display:none}
.calibration-grab{position:absolute;left:0;top:0;width:72px;height:72px;margin:-36px 0 0 -36px;border-radius:50%;border:2px dashed rgba(255,255,255,.8);background:rgba(14,13,159,.14);pointer-events:auto;touch-action:none;cursor:grab;will-change:transform}
.calibration-grab:active{cursor:grabbing}
.calibration-grab:focus-visible,.calibration-rotate:focus-visible{outline:3px solid #fff;outline-offset:2px}
.calibration-rotate{position:absolute;left:0;top:0;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0;display:grid;place-items:center;border-radius:50%;border:2px solid #fff;background:var(--action-primary);color:#fff;pointer-events:auto;touch-action:none;cursor:grab;will-change:transform;box-shadow:0 2px 6px rgba(7,12,18,.45)}
.calibration-rotate:active{cursor:grabbing}
.calibration-hint{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);margin:0;max-width:min(70%,440px);padding:5px 10px;background:rgba(7,12,18,.72);border-radius:var(--radius-control);font:500 var(--text-micro)/1.35 var(--font-mono);color:var(--stage-ink);text-align:center;pointer-events:none}
.workspace.calibration-mode .workspace-grid{grid-template-columns:minmax(0,1fr)!important}
.workspace.calibration-mode .code-panel,
.workspace.calibration-mode .simulator-toolbar,
.workspace.calibration-mode .inputs-strip,
.workspace.calibration-mode .telemetry-strip>.tcell:not(.lcd-cell),
.workspace.calibration-mode .telemetry>summary,
.workspace.calibration-mode .scene-source,
.workspace.calibration-mode #step,
.workspace.calibration-mode #runBar{display:none!important}
.workspace.calibration-mode .telemetry-strip{display:flex;justify-content:center}
.workspace.calibration-mode .scene-wrap{border-top:0}
@media(min-width:1024px){
 .workspace.calibration-mode .simulation-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,300px);grid-template-rows:auto auto 1fr}
 .workspace.calibration-mode .scene-wrap{grid-column:1;grid-row:1/4;min-height:0}
 .workspace.calibration-mode .telemetry{grid-column:2;grid-row:1}
 .workspace.calibration-mode .runtime-bar{grid-column:2;grid-row:2}
 .workspace.calibration-mode .status-strip{grid-column:2;grid-row:3;align-self:start}
}
@media(max-width:1023px){
 .workspace.calibration-mode .scene-wrap{height:clamp(300px,62dvh,640px)}
}
@media(max-width:1023px){
 .workspace.calibration-mode .simulation-panel .telemetry{order:2}
 .workspace.calibration-mode .simulation-panel .runtime-bar{order:3}
 .workspace.calibration-mode .simulation-panel .status-strip{order:4}
 .calibration-hint{left:10px;transform:none;max-width:calc(100% - 170px);text-align:left}
}

/* UI-GUIDE-1 · botón «Guía» del editor y diálogo de referencia técnica */
.guide-button{margin-left:auto;min-height:28px;padding:0 12px;border:1px solid var(--instrument-text-muted);background:transparent;color:var(--instrument-text);border-radius:var(--radius-control);font:inherit;font-size:var(--text-label);font-weight:500;cursor:pointer}
.guide-button:hover{background:var(--instrument-line);border-color:var(--instrument-text)}
.guide-button:active{background:var(--editor-border)}
.guide-button:focus-visible{outline:2px solid var(--text-inverse);outline-offset:2px}
#guideClose:focus-visible{outline:2px solid var(--action-primary);outline-offset:2px}
@media(max-width:1023px),(pointer:coarse){.guide-button{min-height:44px;padding:0 14px}}
.guide-dialog{width:min(94vw,860px);max-width:860px;max-height:min(84dvh,660px);padding:0;overflow:hidden;border-radius:var(--radius-floating);box-shadow:var(--shadow-floating)}
.guide-dialog[open]{display:flex;flex-direction:column}
.guide-dialog::backdrop{background:rgba(7,20,38,.56)}
.guide-dialog .reference-title{margin:0;padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);align-items:flex-start;border-bottom:1px solid var(--border-default);background:var(--surface-panel-raised)}
.guide-heading h2{margin:0;font-size:17px;line-height:1.3}
.guide-sub{margin:2px 0 0;font-size:var(--text-label);line-height:1.4;color:var(--text-secondary)}
.guide-dialog .reference-title button{margin-top:-4px;border:1px solid transparent}
.guide-dialog .reference-title button:hover{background:var(--surface-panel-muted)}
.guide-tools{flex:none;display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-5);background:var(--surface-panel);border-bottom:1px solid var(--border-subtle)}
.guide-search{width:100%;min-height:36px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface-panel-raised);color:var(--text-primary);font:inherit;font-size:var(--text-body)}
.guide-search:focus-visible{outline:2px solid var(--action-primary);outline-offset:1px}
.guide-search-status{margin:0;min-height:1.1em;line-height:1.1;font-size:var(--text-micro);color:var(--text-secondary)}
.guide-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:var(--space-4) var(--space-5) var(--space-5);background:var(--surface-page);font-size:14px;line-height:1.5;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;display:grid;gap:var(--space-3);align-content:start}
.guide-body:focus-visible{outline:2px solid var(--action-primary);outline-offset:-2px}
.guide-topic{background:var(--surface-panel-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-panel)}
.guide-topic[hidden],.guide-item[hidden],.guide-empty[hidden]{display:none}
.guide-topic>summary{display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-4);cursor:pointer;list-style:none;border-radius:var(--radius-panel)}
.guide-topic>summary::-webkit-details-marker{display:none}
.guide-topic>summary::after{content:"";margin-left:auto;flex:none;width:8px;height:8px;border-right:2px solid var(--text-secondary);border-bottom:2px solid var(--text-secondary);transform:rotate(45deg);transition:transform .15s}
.guide-topic[open]>summary::after{transform:rotate(-135deg)}
.guide-topic>summary:hover{background:var(--surface-hover)}
.guide-topic>summary:focus-visible{outline:2px solid var(--action-primary);outline-offset:-2px}
.guide-num{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-pill);background:var(--action-primary-soft);color:var(--action-primary);font-weight:600;font-size:var(--text-label)}
.guide-topic-title{display:grid;gap:1px;min-width:0}
.guide-topic-title strong{font-size:15px;font-weight:600;line-height:1.3}
.guide-topic-title small{font-size:var(--text-label);color:var(--text-secondary);line-height:1.4}
.guide-topic[open]>summary{border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-panel) var(--radius-panel) 0 0}
.guide-topic-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:var(--space-3);padding:var(--space-4)}
.guide-lead,.guide-program-card,.guide-note{grid-column:1/-1}
.guide-lead{margin:0;color:var(--text-secondary)}
.guide-item{min-width:0;padding:var(--space-3);background:var(--surface-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-control);display:flex;flex-direction:column;gap:var(--space-2)}
.guide-item h4{margin:0;font-size:14px;font-weight:600;line-height:1.35}
.guide-item p,.guide-item ul{margin:0}
.guide-item ul{padding-left:1.1em;display:grid;gap:4px}
.guide-body code{padding:0 4px;border-radius:3px;background:var(--surface-panel-muted);font:500 12.5px/1.45 var(--font-mono);overflow-wrap:anywhere}
.guide-sig,.guide-program{margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-control);background:var(--editor-bg);color:var(--editor-text);font:400 12.5px/1.55 var(--font-mono);overflow-x:auto;white-space:pre;tab-size:2}
.guide-sig code,.guide-program code{padding:0;background:none;border-radius:0;font:inherit;color:inherit;overflow-wrap:normal}
.guide-program{font-size:13px}
.guide-program:focus-visible{outline:2px solid var(--action-primary);outline-offset:2px}
.guide-program-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.guide-copy{flex:none;min-height:32px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface-panel-raised);color:var(--text-primary);font:inherit;font-size:var(--text-label);font-weight:500;cursor:pointer}
.guide-copy:hover{background:var(--surface-hover)}
.guide-copy:focus-visible{outline:2px solid var(--action-primary);outline-offset:2px}
.guide-try{padding:6px var(--space-3);border-left:3px solid var(--action-primary);background:var(--action-primary-soft);border-radius:0 var(--radius-control) var(--radius-control) 0;color:var(--text-primary)}
.guide-caution{padding:6px var(--space-3);border-left:3px solid var(--border-strong);background:var(--surface-panel-muted);border-radius:0 var(--radius-control) var(--radius-control) 0;color:var(--text-secondary);font-size:var(--text-label)}
.guide-note{background:var(--surface-panel)}
.guide-results{display:grid;gap:var(--space-4)}
.guide-results[hidden]{display:none}
.guide-results-title{margin:0 0 var(--space-2);font-size:var(--text-label);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--action-primary)}
.guide-results-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:var(--space-3)}
.guide-results-list>[hidden]{display:none}
.guide-result-topic{margin:0;font-size:var(--text-micro);letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary)}
.guide-results-list .guide-program-card{grid-column:1/-1}
.guide-more{justify-self:start;margin-top:var(--space-2);min-height:36px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--surface-panel-raised);color:var(--text-primary);font:inherit;font-size:var(--text-label);font-weight:500;cursor:pointer}
.guide-more:hover{background:var(--surface-hover)}
.guide-more:focus-visible{outline:2px solid var(--action-primary);outline-offset:2px}
.guide-steps{margin:0;padding-left:1.3em;display:grid;gap:2px}
@media(max-width:700px){.guide-more{min-height:44px}}
.guide-empty{margin:0;padding:var(--space-4);text-align:center;color:var(--text-secondary)}
.guide-search-status,.guide-empty{overflow-wrap:anywhere}
@media(max-width:700px){.guide-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 24px)}.guide-dialog .reference-title{padding-left:var(--space-4)}.guide-tools{padding:var(--space-2) var(--space-3)}.guide-search{min-height:44px}.guide-body{padding:var(--space-3) var(--space-3) var(--space-4)}.guide-topic>summary{min-height:60px;padding:var(--space-2) var(--space-3)}.guide-topic-body{padding:var(--space-3);grid-template-columns:minmax(0,1fr)}.guide-copy{min-height:44px}.guide-item{padding:var(--space-2) var(--space-3)}.guide-sig,.guide-program{font-size:12px;padding:var(--space-2)}}
@media(min-width:1024px) and (max-height:700px){.guide-dialog{max-height:calc(100dvh - 32px)}}

/* FIRVI 2025 · barra de competencia (Etapa B). Solo aparece en las pistas FIRVI con el modo competencia activo. */
.competition-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 10px;margin:0 0 6px;border:1px solid var(--border-default);border-radius:var(--radius-panel);background:var(--surface-panel);font-size:var(--text-label)}
.competition-bar[hidden]{display:none}
.comp-status{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-width:0}
.comp-badge{padding:2px 8px;border-radius:999px;border:1px solid var(--border-default);font-weight:600;font-size:12px;white-space:nowrap}
.comp-badge[data-state=calibration]{background:#fff6dc;border-color:#e3c36a}.comp-badge[data-state=running]{background:#e2f4ea;border-color:#79c49a}
.comp-badge[data-state=no-progress],.comp-badge[data-state=reposition-authorized]{background:#fde8e4;border-color:#e69a8c}.comp-badge[data-state=finished]{background:#eceef2}
.comp-clock{font-family:var(--font-mono,ui-monospace,monospace);font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.comp-clock.warn{color:#b3261e}
.comp-info,.comp-note{color:var(--text-secondary);font-size:12px}
.comp-note{flex:1 1 100%;margin:0}
.comp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto}
.comp-actions [hidden]{display:none}
.comp-obstacles{display:inline-flex;align-items:center;gap:6px}.comp-obstacles select{min-height:28px}
@media (max-width:640px){.comp-actions{margin-left:0;width:100%}.comp-actions .button{flex:1 1 auto}}
/* FIRVI 2025 · Etapa C · panel de evaluación (compacto, dentro de la barra de competencia) */
.comp-eval{flex:1 1 100%;min-width:0;max-width:100%;border-top:1px solid var(--border-default);padding-top:4px;font-size:12px}
.comp-eval[hidden]{display:none}
.comp-eval>summary{display:flex;gap:10px;align-items:baseline;cursor:pointer;font-weight:600}.comp-eval>summary output{font-weight:400;color:var(--text-secondary)}
.eval-tabs{display:flex;gap:6px;margin:6px 0}.eval-tabs .button{min-height:26px;padding:0 10px}.eval-tabs .button[aria-pressed=true]{font-weight:700;text-decoration:underline}
.eval-table-wrap{overflow-x:auto;max-width:100%}
.eval-table{border-collapse:collapse;width:100%;min-width:560px}.eval-table th,.eval-table td{border-bottom:1px solid var(--border-default);padding:3px 6px;text-align:left;vertical-align:top}
.eval-table td.pts{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.eval-st{display:inline-block;padding:1px 7px;border-radius:999px;border:1px solid var(--border-default);font-weight:600;white-space:nowrap}
.eval-st[data-st=validated-auto]{background:#e2f4ea;border-color:#79c49a}.eval-st[data-st=validated-judge]{background:#e4ecfb;border-color:#8aa8e6}
.eval-st[data-st=pending]{background:#fff6dc;border-color:#e3c36a}.eval-st[data-st=not-achieved]{background:#fde8e4;border-color:#e69a8c}.eval-st[data-st=not-applicable]{background:#eceef2}
.eval-why{display:block;color:var(--text-secondary)}.eval-prov{color:var(--text-secondary);font-size:11px}
.eval-judge{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.eval-judge .button{min-height:28px;padding:0 8px}.eval-judge select{min-height:28px}
.eval-totals{margin:6px 0 2px;font-weight:600}.eval-note{margin:0;color:var(--text-secondary)}
/* FIRVI 2025 · ajustes de interfaz finales. Solo presentación: ni la pista, ni la física, ni el motor, ni la puntuación cambian. */
.eval-table-wrap:focus-visible{outline-offset:-2px}
#compExecute{display:none}
@media(min-width:1024px){
 /* Escritorio: el panel de evaluación desplaza su propia tabla y deja siempre a la vista una escena útil. */
 .comp-eval[open] .eval-table-wrap{max-height:clamp(120px,20dvh,220px);overflow:auto}
 .eval-table thead th{position:sticky;top:0;z-index:1;background:var(--surface-panel)}
 .competition-on .scene-wrap{min-height:300px}
}
@media(max-width:1023px){
 /* Apilado: Ejecutar junto a las órdenes de la ronda y objetivos táctiles de 44 px en el panel del juez. */
 #compExecute:not([hidden]){display:inline-flex;order:-1}
 .comp-eval .eval-tabs .button,.eval-judge .button,.eval-judge select,.comp-eval>summary{min-height:44px}
 .comp-eval>summary{align-items:center}
}
@media(max-width:767px){
 /* La pista FIRVI lleva el botón Competencia: el selector ocupa su propia fila para que se lea «FIRVI 2025 · A/B» completo. */
 .simulator-toolbar:has(#competitionToggle:not([hidden])) .track-field{flex:1 1 100%}
 .simulator-toolbar:has(#competitionToggle:not([hidden])) #competitionToggle{flex:1 1 0}
 .comp-actions .button{min-height:44px}
 /* Panel del juez: una tarjeta por hito en lugar de una tabla de 560 px. */
 .eval-table,.eval-table tbody{display:block;min-width:0;width:100%}
 .eval-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
 .eval-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;padding:10px 2px;border-bottom:1px solid var(--border-default)}
 .eval-table tbody td{display:block;border:0;padding:0;min-width:0}
 .eval-table td.eval-hito{grid-column:1;font-weight:600;font-size:13px}
 .eval-table td.pts{grid-column:2;font-weight:600}
 .eval-table td.eval-state{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
 .eval-table td.eval-evidence,.eval-table td.eval-judge-cell{grid-column:1/-1}
 .eval-table td.eval-evidence .eval-prov{display:block;overflow-wrap:anywhere}
 .eval-judge{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .eval-judge select{grid-column:1/-1;width:100%}
 .eval-judge .button{width:100%;white-space:normal;line-height:1.2}
 .eval-judge .button[aria-label^=Quitar]{grid-column:1/-1}
}
