:root{color-scheme:dark;--bg: #0e0f12;--fg: #e7e9ee;--muted: #9aa0aa;--accent: #7aa2f7;--line: #262a33;--researcher: #f7a072;--participant: #8fd694;font-family:system-ui,-apple-system,Segoe UI,Malgun Gothic,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);line-height:1.55}.app{min-height:100vh}.page{max-width:780px;margin:0 auto;padding:2.5rem 1.25rem 4rem}.page__header{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.75rem;margin-bottom:1.25rem}.page__title{font-size:1.5rem;margin:0}.lead{color:var(--fg)}.notice,.placeholder{color:var(--muted);background:#15171c;border:1px solid var(--line);border-radius:8px;padding:.85rem 1rem}.badge{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;border:1px solid var(--researcher);color:var(--researcher)}.route-list{list-style:none;padding:0;display:grid;gap:.5rem}.route-list__item{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;padding:.6rem .85rem}.route-list__item a{color:var(--accent);text-decoration:none;font-weight:600}.route-list__path{color:var(--muted);font-size:.85rem}.tag{margin-left:auto;font-size:.72rem;padding:.1rem .5rem;border-radius:999px;border:1px solid var(--line)}.tag--researcher{color:var(--researcher);border-color:var(--researcher)}.tag--participant{color:var(--participant);border-color:var(--participant)}.lang-toggle-row{display:flex;justify-content:flex-end;margin:-.5rem 0 1rem}.lang-toggle{font:inherit;font-size:.85rem;background:transparent;color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:.3rem .85rem;cursor:pointer}.lang-toggle:hover{border-color:var(--accent)}.consent__intro{color:var(--muted);font-size:1.05rem;margin:0 0 1.5rem}.consent__sections{display:flex;flex-direction:column;gap:.75rem}.consent__section{border:1px solid var(--line);background:#15171c;border-radius:12px;padding:.9rem 1.15rem}.consent__section h2{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin:0 0 .35rem;font-weight:600}.consent__section p{margin:0;color:var(--fg)}.consent__agree{display:flex;gap:.7rem;align-items:flex-start;background:#12211a;border:1px solid var(--participant);border-radius:12px;padding:1rem 1.15rem;margin:1.5rem 0 1.1rem;cursor:pointer}.consent__agree input{margin-top:.15rem;width:1.2rem;height:1.2rem;accent-color:var(--participant);flex:0 0 auto;cursor:pointer}.consent__agree span{font-weight:500}.consent__actions{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.consent__start{font:inherit;font-weight:600;background:var(--participant);color:#08130b;border:none;border-radius:10px;padding:.7rem 1.6rem;cursor:pointer}.consent__start:disabled{background:#2a2f38;color:var(--muted);cursor:not-allowed}.consent__decline{color:var(--muted);font-size:.9rem;margin:0}.screenout__reasons{list-style:none;padding:0;margin:1.25rem 0;display:flex;flex-direction:column;gap:.6rem}.screenout__reasons li{border:1px solid var(--line);background:#15171c;border-radius:10px;padding:.8rem 1rem;color:var(--fg)}.preview{margin-top:1.5rem;border-top:1px solid var(--line);padding-top:1rem}.preview__banner{font-weight:700;color:var(--researcher);border:1px solid var(--researcher);border-radius:8px;padding:.55rem .85rem}.preview__note{color:var(--muted);font-size:.98rem;line-height:1.6}.preview__controls{display:flex;flex-wrap:wrap;gap:1rem;margin:1rem 0}.preview__controls label{display:flex;flex-direction:column;gap:.25rem;font-size:.85rem;color:var(--muted)}.preview__controls.preview__checkbox,.preview__checkbox{flex-direction:row;align-items:center;gap:.4rem}.preview__controls input,.preview__controls select{background:#15171c;color:var(--fg);border:1px solid var(--line);border-radius:6px;padding:.35rem .5rem}.preview__kv{display:grid;grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:.5rem 0 1rem}.preview__kv dt{color:var(--muted)}.preview__kv dd{margin:0}.badge--ok{color:var(--participant);border-color:var(--participant)}.badge--warn{color:var(--researcher);border-color:var(--researcher)}.preview__warnings,.preview__issues{margin:.25rem 0 1rem;padding-left:1.1rem;font-size:.88rem}.preview__issues{color:#ff9a9a}.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:1.25rem}.data-table{border-collapse:collapse;width:100%;font-size:.85rem}.data-table th,.data-table td{border-bottom:1px solid var(--line);padding:.35rem .6rem;text-align:left;white-space:nowrap}.data-table th{color:#c3c8d2;font-weight:600;position:sticky;top:0;background:#15171c}.explorer-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.explorer-viewswitch{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.explorer-viewswitch button{font:inherit;font-size:.95rem;font-weight:600;color:var(--muted);background:transparent;border:none;padding:8px 16px;cursor:pointer}.explorer-viewswitch button+button{border-left:1px solid var(--line)}.explorer-viewswitch button.is-active{color:#08131f;background:var(--accent)}.explorer-toolbar .sep{width:1px;height:22px;background:var(--line)}.explorer-modeswitch{display:inline-flex;gap:4px}.explorer-modeswitch button{font:inherit;font-size:.85rem;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:8px;padding:5px 12px;cursor:pointer}.explorer-modeswitch button.is-active{color:var(--fg);border-color:var(--accent);background:#7aa2f71f}.explorer-layout{display:flex;gap:18px;align-items:flex-start}.explorer-rail{flex:0 0 232px;max-width:232px;position:sticky;top:8px;max-height:calc(100vh - 40px);overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:8px;background:#12151c}.explorer-rail__group{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;padding:6px 8px 4px}.explorer-rail__dims{display:flex;gap:4px;padding:2px 4px 8px;flex-wrap:wrap}.explorer-rail__dims button{font:inherit;font-size:.82rem;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:999px;padding:3px 11px;cursor:pointer}.explorer-rail__dims button.is-active{color:var(--fg);border-color:var(--accent);background:#7aa2f71f}.explorer-rail__item{display:block;width:100%;text-align:left;font:inherit;color:var(--fg);background:transparent;border:none;border-radius:8px;padding:9px 10px;cursor:pointer;line-height:1.3}.explorer-rail__item:hover{background:#7aa2f714}.explorer-rail__item.is-active{background:var(--accent);color:#08131f}.explorer-rail__item.is-active .explorer-rail__meta{color:#0b2038}.explorer-rail__name{font-weight:600;font-size:.95rem}.explorer-rail__meta{font-size:.78rem;color:var(--muted);margin-top:2px}.explorer-main{flex:1 1 auto;min-width:0}.explorer-stimblock{margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}.explorer-stimblock:last-child{border-bottom:none}@media (max-width: 720px){.explorer-layout{flex-direction:column}.explorer-rail{position:static;flex-basis:auto;max-width:none;width:100%;max-height:240px}}.portal-tabs{display:flex;gap:6px;align-items:stretch;border-bottom:2px solid var(--line);margin:0 0 22px;flex-wrap:wrap}.portal-tab{display:inline-flex;align-items:center;gap:9px;font:inherit;font-size:1.05rem;font-weight:600;color:var(--muted);background:transparent;border:none;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;padding:12px 22px;margin-bottom:-2px;cursor:pointer;transition:color .12s ease,background .12s ease,border-color .12s ease}.portal-tab:hover{color:var(--fg);background:#7aa2f714}.portal-tab.is-active{color:var(--fg);border-bottom-color:var(--accent)}.portal-tab__step{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:.82rem;font-weight:700;color:var(--muted);background:#1b1f27;border:1px solid var(--line)}.portal-tab.is-active .portal-tab__step{color:#08131f;background:var(--accent);border-color:var(--accent)}.monitor-section{margin:0 0 44px}.monitor-section+.monitor-section{border-top:1px solid var(--line);padding-top:32px}.section-title{font-size:1.35rem;font-weight:700;margin:.6rem 0 .5rem;letter-spacing:-.01em}.section-title .count{font-size:1rem;font-weight:600;opacity:.85;margin-left:6px}.section-title .hint{font-size:.9rem;font-weight:400;color:var(--muted);margin-left:8px}.preview__sim{margin-bottom:1.5rem}.calib-layout{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:flex-start}.calib-canvas{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#000}.calib-controls{flex:1;min-width:280px;display:flex;flex-direction:column;gap:.75rem}.calib-controls fieldset{border:1px solid var(--line);border-radius:8px;padding:.5rem .75rem}.calib-controls legend{color:var(--muted);font-size:.85rem}.calib-controls label{display:flex;flex-direction:column;gap:.2rem;font-size:.82rem;color:var(--muted);margin:.25rem 0}.calib-controls input,.calib-controls select{background:#15171c;color:var(--fg);border:1px solid var(--line);border-radius:6px;padding:.3rem .45rem}.calib-levels{display:flex;gap:.35rem;flex-wrap:wrap}.calib-levels button{padding:.3rem .6rem;border:1px solid var(--line);border-radius:6px;background:#15171c;color:var(--fg)}.calib-levels button.active{border-color:var(--accent);color:var(--accent)}.calib-yaw{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.calib-compare-toggle{margin:1rem 0}.compare-controls{display:flex;flex-wrap:wrap;gap:.75rem;align-items:end;margin-bottom:.75rem}.compare-grid{display:flex;flex-wrap:wrap;gap:.75rem}.compare-cell{border:1px solid #2a2f3a;border-radius:6px;overflow:hidden;background:#000}.compare-cell__caption{font-size:.72rem;padding:.25rem .4rem;color:#cfe0ff}.compare-cell__meta{font-size:.68rem;color:#8aa0c0;max-width:190px}.compare-rubric{width:100%;border-collapse:collapse;font-size:.78rem}.compare-rubric th,.compare-rubric td{border:1px solid #2a2f3a;padding:.3rem;text-align:left}.compare-fps{font-size:.75rem;color:#9fb6d8;align-self:center}.hybrid-yaw-row{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.75rem}.hybrid-yaw-row__label{min-width:12rem;font-size:.78rem;color:#cfe0ff;padding-top:.4rem}.hybrid-params{display:flex;flex-wrap:wrap;gap:1.5rem}.hybrid-params dl{min-width:16rem}
