*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#1d2022;color:#d6d8d7;font:13px "Microsoft YaHei",Arial,sans-serif}button,select{font:inherit;color:inherit;border:1px solid #515658;background:#34393b;border-radius:2px;cursor:pointer}button:hover{background:#444a4b}button:focus-visible,select:focus-visible{outline:2px solid #baa66b;outline-offset:2px}button:disabled{opacity:.5;cursor:default}button:disabled:hover{background:inherit}.workstation{display:grid;grid-template-columns:minmax(0,1fr) 338px;height:100dvh;width:100%;overflow:hidden}.viewport{position:relative;min-width:0;background:#111416;height:100%;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none;outline:0;cursor:grab}.viewtools{position:absolute;right:10px;top:10px;display:flex;gap:4px;align-items:center}.viewtools button,.viewtools select{padding:5px 8px;font-size:11px;background:#292e30df;border-color:#5a606167;color:#c5c8c6}.viewtools .help{width:25px;padding:5px}.vehicle-status{position:absolute;left:0;right:0;bottom:0;min-height:29px;display:flex;justify-content:center;align-items:center;gap:12px;padding:5px 10px;color:#c7cbc7;background:#15191bbd;border-top:1px solid #62696a55;font:12px Consolas,"Microsoft YaHei",monospace;pointer-events:none}.vehicle-status b{font-weight:normal;color:#e2e4dc}.vehicle-status i{font-style:normal;color:#717977}.assessment{background:#292d2f;border-left:1px solid #505657;display:flex;flex-direction:column;min-height:0;overflow:auto}header{padding:20px 18px 15px;border-bottom:1px solid #454b4d}h1{font-size:18px;font-weight:500;margin:0;line-height:1.5;letter-spacing:.5px}header p{color:#9fa6a3;font-size:12px;margin:7px 0 0}.tabs{display:flex;margin:15px 18px 10px}.tabs button{width:50%;padding:7px;border-radius:0;font-size:12px;background:#242829;color:#a5aca9}.tabs .selected{background:#454b4a;color:#e4e7e1;border-bottom:2px solid #9caa9c}.session{display:flex;justify-content:space-between;padding:0 18px 12px;color:#9ea8a1;font-size:11px}.session #state{color:#aabbaa}time{font-family:Consolas,monospace}.alert{margin:0 18px 15px;padding:10px 11px;border-left:3px solid #b79a4c;background:#3b372c;color:#d2be88}.alert b{font-size:12px;font-weight:500;display:block}.alert span{font-size:11px;line-height:1.7;display:block;margin-top:5px;color:#b4ad97}.processhead{display:flex;justify-content:space-between;gap:6px;font-size:10px;color:#939d98;padding:0 18px}.processhead b{white-space:nowrap;font-weight:normal;color:#bbc6b9}.progress{height:2px;background:#454b48;margin:9px 18px 12px}.progress i{display:block;height:100%;width:0;background:#718b71;transition:width .2s}ol{list-style:none;margin:0;padding:0 9px;flex:1}li{margin:0;border-bottom:1px solid #3e4445}li button{display:flex;width:100%;gap:10px;text-align:left;border:0;border-left:2px solid transparent;padding:11px 9px;background:transparent;border-radius:0}li.current button{border-left-color:#b79a4c;background:#393b33}li .stepnum{flex:none;width:22px;height:22px;border:1px solid #626d65;color:#9da79f;font:11px/20px Consolas;text-align:center;border-radius:2px}li.current .stepnum{color:#d6c18b;border-color:#9c8953}li.completed .stepnum{color:#afc2aa;border-color:#6f876a}li b{font-size:12px;line-height:22px;font-weight:normal;color:#d2d8d0}li p{font-size:10px;color:#969e98;line-height:1.65;margin:3px 0 0}li.completed b{color:#98aa97}.logpanel{margin:12px 18px;color:#a6afa8;font-size:11px}summary{cursor:pointer;padding:5px 0}#logs{max-height:130px;overflow:auto;font-size:10px;line-height:1.65}#logs p{margin:7px 0}#logs span{color:#7f8d84}#logs .bad{color:#c5aa70}footer{padding:12px 18px 13px;border-top:1px solid #474d4e}.sessiontools{display:flex;gap:6px;margin-bottom:9px}.sessiontools button{flex:1;font-size:11px;padding:7px 2px}.finish{width:100%;padding:10px;background:#4c5d4b;border-color:#687764;color:#e4e9de;font-size:12px}.finish:hover{background:#5a6b56}footer small{display:block;text-align:center;color:#7e8981;font-size:9px;margin-top:9px}.deviceTip{position:absolute;bottom:41px;left:50%;transform:translateX(-50%);color:#d9dbd3;background:#292d2ee8;border:1px solid #74796a;padding:6px 10px;font-size:11px;pointer-events:none;border-radius:2px}.deviceTip[hidden]{display:none}#sceneError{position:absolute;left:15%;top:45%;padding:18px;color:#dac388;background:#282a28}dialog{border:1px solid #68716c;background:#2c3231;color:#dde2d9;border-radius:3px;max-width:650px;width:90%;max-height:85vh;overflow:auto;padding:26px}dialog::backdrop{background:#080b0bc9}dialog h2{font-size:18px;font-weight:500}dialog p{font-size:12px;line-height:1.9;color:#aeb9af}dialog .score{font-size:52px;color:#b8c6ad;margin:15px 0}dialog table{width:100%;font-size:11px;border-collapse:collapse;text-align:left}dialog td,dialog th{border-bottom:1px solid #4a5550;padding:8px}dialog button,.secondary{padding:8px 12px;margin-top:10px}@media(max-height:850px) and (min-width:801px){header{padding:12px 18px 10px}h1{font-size:16px}.tabs{margin-top:10px}.alert{margin-bottom:10px;padding:8px}li button{padding:8px 9px}li p{font-size:10px}.logpanel{margin:5px 18px}footer{padding-top:9px}}@media(max-width:1000px){.workstation{grid-template-columns:minmax(0,1fr) 290px}.vehicle-status{gap:7px;font-size:10px}.viewtools{gap:3px}.viewtools button,.viewtools select{padding:5px;font-size:10px}}@media(max-width:700px){.workstation{height:auto;min-height:100dvh;display:block;overflow:visible}.viewport{height:64dvh;min-height:360px}.assessment{border-left:0;border-top:1px solid #505657}.viewtools{right:7px;top:7px}.vehicle-status{gap:5px;font-size:9px;flex-wrap:wrap;justify-content:flex-start;min-height:29px}.viewtools select{max-width:65px}ol{flex:none}header{padding:14px 18px}.deviceTip{bottom:46px;max-width:90%;white-space:nowrap}}@media print{body{background:white;color:black}.workstation{display:none}dialog[open]{position:static;display:block;max-height:none;width:100%;max-width:none;background:white;color:black;border:0}dialog p{color:#333}dialog button,#closeDialog{display:none}dialog::backdrop{background:transparent}}

.assessment{background:rgba(15,23,42,.75);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-left:1px solid rgba(255,255,255,.1)}header,.assessment footer{border-color:#ffffff15}li{border-color:#ffffff0e}li .stepnum{width:7px;height:7px;min-width:7px;margin:8px 7px 0 2px;border:0;border-radius:50%;background:#424952;color:transparent;font-size:0;box-shadow:inset 0 0 2px #000}li.current .stepnum{background:#c19a52;color:transparent;animation:amber-breathe 2.8s ease-in-out infinite}li.completed .stepnum{background:#7bc995;color:transparent;box-shadow:0 0 5px #67be8660}li.current button{background:rgba(192,155,80,.07);border-left-color:#b59c60}.session time,.vehicle-status,.score{font-family:"Cascadia Mono","Bahnschrift","Consolas",monospace;font-variant-numeric:tabular-nums;letter-spacing:.3px}.session time{font-size:13px;color:#c8d3d8}.tabs .selected{background:#ffffff0b}.alert{background:rgba(183,154,76,.1)}@keyframes amber-breathe{0%,100%{opacity:.7;box-shadow:0 0 3px #c19a5230}50%{opacity:1;box-shadow:0 0 9px #c19a5270}}@media(prefers-reduced-motion:reduce){li.current .stepnum{animation:none}}

/* Keep UI feedback short; composite the panel/status independently of WebGL. */
.handover-item{display:flex;align-items:center;gap:10px;padding:12px 8px;border-bottom:1px solid #ffffff16;font-size:13px;line-height:1.8;cursor:pointer}.handover-item input{flex:none;width:17px;height:17px;accent-color:#809d88}.sop-source{padding:12px;border:1px solid #ad965d55;background:#ad965d0b}#handoverHint{color:#d0bd86}#handoverConfirm{min-height:40px}
/* Device identification is anchored to the picked physical key, never to the HUD footer. */
.deviceTip{bottom:auto;left:0;top:0;transform:translate3d(-50%,-100%,0);z-index:3;max-width:min(240px,calc(100% - 16px));width:max-content;padding:9px 13px;border:1px solid #c8d6d166;border-radius:5px;background:rgba(17,25,28,.94);color:#f8faf9;font:700 13px/1.5 "Microsoft YaHei","Noto Sans CJK SC",sans-serif;letter-spacing:.4px;white-space:nowrap;box-shadow:0 3px 12px #0006;pointer-events:none;transition:none}
.deviceTip::after{content:'';position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:#11191c;border-right:1px solid #c8d6d166;border-bottom:1px solid #c8d6d166;transform:translateX(-50%) rotate(45deg)}
button,select{transition:background-color .08s ease,border-color .08s ease,color .08s ease}
button:hover{transition-duration:.08s}
.assessment,#steps,.vehicle-status{transform:translateZ(0);backface-visibility:hidden}
li.current .stepnum{transform:translateZ(0);will-change:opacity;box-shadow:0 0 6px #c19a5250}
@keyframes amber-breathe{0%,100%{opacity:.65}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){button,select{transition:none}li.current .stepnum{animation:none;will-change:auto}}

/* Separate scene and assessment columns, retaining the industrial glass skin. */
.workstation{--assessment-width:clamp(300px,24vw,360px);grid-template-columns:minmax(0,1fr) var(--assessment-width)}
.viewport{grid-column:1;grid-row:1}
.viewtools{right:14px}
.viewtools{max-width:calc(100% - 28px);flex-wrap:wrap;justify-content:flex-end}
.vehicle-status{right:0}
.assessment{
  grid-column:2;grid-row:1;position:relative;z-index:2;isolation:isolate;
  background:rgba(11,15,25,.75);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-left:1px solid rgba(255,255,255,.08);
  box-shadow:inset 1px 0 0 rgba(255,255,255,.025);
  scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.28) transparent;
}
.assessment header{padding:22px 22px 18px;border-bottom-color:rgba(255,255,255,.07)}
.assessment h1{font-size:18px;line-height:1.6;letter-spacing:.7px;color:#ecf0f4}
.assessment header p{margin-top:8px;line-height:1.8;letter-spacing:.35px;color:#aab7c5}
.assessment .tabs{margin:18px 22px 14px;padding:3px;border:1px solid rgba(255,255,255,.07);border-radius:8px;background:rgba(0,0,0,.14)}
.assessment .tabs button{padding:8px 5px;border:1px solid transparent;border-radius:5px;background:transparent;color:#94a4b4}
.assessment .tabs .selected{border-color:rgba(167,199,184,.2);background:linear-gradient(135deg,rgba(93,126,117,.2),rgba(73,94,116,.16));color:#e4eee9;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.assessment .session{padding:0 22px 16px;line-height:1.6;letter-spacing:.3px;color:#a5b1bd}
.assessment .session #state{color:#afc7bd}
.assessment .alert{position:relative;margin:0 22px 18px;padding:13px 14px;border:1px solid rgba(211,174,92,.24);border-left:2px solid rgba(211,174,92,.6);border-radius:8px;background:linear-gradient(135deg,rgba(86,65,29,.22),rgba(26,30,36,.62));box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.assessment .alert::before{content:'';position:absolute;inset:-1px;pointer-events:none;border:1px solid rgba(218,181,105,.23);border-radius:inherit;box-shadow:0 0 12px rgba(183,144,65,.1);animation:alert-glow 3.6s ease-in-out infinite;transform:translateZ(0)}
.assessment .alert b{font-size:12.5px;line-height:1.8;letter-spacing:.35px;color:#dfc995}
.assessment .alert span{margin-top:6px;font-size:11px;line-height:1.85;letter-spacing:.25px;color:#c0b9a5}
.assessment .processhead{padding:0 22px;line-height:1.75;letter-spacing:.25px;color:#9caab7}
.assessment .processhead b{color:#ccd7d0}
.assessment .progress{margin:10px 22px 16px;height:2px;background:rgba(255,255,255,.07);border-radius:2px;overflow:hidden}
.assessment .progress i{background:linear-gradient(90deg,#788f7f,#92b2a0)}
.assessment #steps{padding:0 14px;flex:1 0 auto}
.assessment li{margin:0 0 8px;border:0}
.assessment li button{gap:12px;padding:13px 13px 14px;border:1px solid rgba(255,255,255,.055);border-left:2px solid transparent;border-radius:8px;background:rgba(255,255,255,.022)}
.assessment li button:hover:enabled{background:rgba(255,255,255,.055);border-color:rgba(196,211,224,.17)}
.assessment li.current button{background:linear-gradient(110deg,rgba(177,145,79,.10),rgba(255,255,255,.018));border-color:rgba(207,176,110,.18);border-left-color:#bca36d}
.assessment li.completed button:disabled{opacity:.9;background:rgba(92,135,110,.035);border-color:rgba(129,174,148,.065)}
.assessment li b{display:block;font-size:12.5px;font-weight:500;line-height:1.7;letter-spacing:.45px;color:#dce4eb}
.assessment li p{margin-top:6px;font-size:11px;line-height:1.85;letter-spacing:.3px;color:#a2b0bd}
.assessment li.completed b{color:#b0c5ba}
.assessment li.completed p{color:#96a99f}
.assessment li .stepnum{width:8px;min-width:8px;height:8px;margin:7px 4px 0 1px;background:#394651;border:1px solid rgba(255,255,255,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.4);color:transparent;font-size:0}
.assessment li.current .stepnum{background:#d2b271;border-color:rgba(250,226,171,.45);box-shadow:0 0 7px rgba(210,178,113,.4)}
.assessment li.completed .stepnum{background:#86c6a0;border-color:rgba(186,232,204,.4);box-shadow:0 0 6px rgba(112,184,145,.3)}
.assessment .logpanel{margin:10px 22px 16px;color:#b3c1cb;line-height:1.8;letter-spacing:.3px}
.assessment footer{padding:16px 22px 18px;border-top-color:rgba(255,255,255,.075);background:linear-gradient(180deg,rgba(11,15,25,.03),rgba(11,15,25,.32))}
.assessment .sessiontools{gap:8px;margin-bottom:12px}
.assessment .sessiontools button{padding:9px 2px;border-radius:5px;border-color:rgba(255,255,255,.105);background:rgba(255,255,255,.035);color:#bcc9d2}
.assessment .sessiontools button:hover{background:rgba(255,255,255,.07);border-color:rgba(190,207,221,.2)}
.assessment .finish{padding:13px 10px;border-radius:7px;background:linear-gradient(125deg,#28483e,#1c3649);border:1px solid rgba(137,182,162,.38);color:#e5f0eb;letter-spacing:.6px;box-shadow:inset 0 1px 0 rgba(215,240,227,.08),0 0 10px rgba(73,130,108,.07)}
.assessment .finish:hover{background:linear-gradient(125deg,#31574b,#234358);border-color:rgba(157,199,181,.58)}
.assessment footer small{margin-top:12px;line-height:1.7;letter-spacing:.35px;color:#8c9ca9}
.assessment::-webkit-scrollbar,#logs::-webkit-scrollbar{width:5px;height:5px}
.assessment::-webkit-scrollbar-track,#logs::-webkit-scrollbar-track{background:transparent}
.assessment::-webkit-scrollbar-thumb,#logs::-webkit-scrollbar-thumb{border-radius:6px;background:rgba(148,163,184,.24)}
.assessment::-webkit-scrollbar-thumb:hover,#logs::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.4)}
#logs{scrollbar-width:thin;scrollbar-color:rgba(148,163,184,.28) transparent}
@keyframes alert-glow{0%,100%{opacity:.35}50%{opacity:.85}}
@media(max-height:850px) and (min-width:701px){
  .assessment header{padding:15px 20px 12px}.assessment h1{font-size:17px}
  .assessment .tabs{margin:13px 20px 11px}.assessment .session{padding:0 20px 12px}
  .assessment .alert{margin:0 20px 14px;padding:11px 12px}
  .assessment li button{padding:11px 12px}.assessment li p{line-height:1.8}
  .assessment footer{padding:13px 20px 15px}
}
@media(max-width:1000px){.workstation{--assessment-width:300px}.assessment header{padding-left:18px;padding-right:18px}.assessment .tabs,.assessment .alert{margin-left:18px;margin-right:18px}.assessment .session,.assessment .processhead{padding-left:18px;padding-right:18px}.assessment h1{font-size:16px;letter-spacing:.4px}}
@media(max-width:700px){.viewtools{right:8px}.vehicle-status{right:0}.assessment{border-left:0;border-top:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}.assessment #steps{flex:none}.assessment h1{font-size:18px}}
@media(prefers-reduced-motion:reduce){.assessment .alert::before{animation:none}.assessment li.current .stepnum{animation:none}}

/* The scenario is discovered visually on CCTV, without an extra fault annunciator. */
#alert[hidden]{display:none!important}

/* Physical device operation and inspection, shared by desktop and touch. */
.equipment-route{color:#bdc5b5!important;font-size:11px!important;line-height:1.8!important;border-left:2px solid #727c68;padding-left:8px;margin-top:8px!important}
.device-feedback{margin:12px 20px;padding:14px;border:1px solid #62756566;border-radius:6px;background:#17231ebf;line-height:1.7;font-size:12px}.device-feedback[hidden]{display:none}.device-feedback b{font-size:14px;color:#edf0e8}.device-feedback p{margin:5px 0;color:#b7c2c5}.device-feedback strong{font-weight:500;color:#c9d9c6}.device-feedback.blocked{border-color:#9e803f;background:#2b261c}.device-feedback.blocked strong{color:#e0c48e}
.equipment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.equipment-control{padding:12px;text-align:left;white-space:normal;border:1px solid #66716c;background:#2a3433;border-radius:4px;color:#e8ede5;cursor:pointer;transition:background .08s}.equipment-control:hover{background:#3b4943}.equipment-control b{display:block;font-size:14px}.equipment-control small{display:block;margin-top:5px;color:#bdc7c4;line-height:1.65;font-size:12px}.operation-path,.device-result{padding:12px;background:#1c2927;border-left:2px solid #9c9a6a;line-height:1.8;font-size:13px}.device-result{position:sticky;bottom:0;background:#1b2829;box-shadow:0 -4px 12px #0003}.inspection{border:1px solid #62716c;padding:14px;border-radius:5px;margin:12px 0}.inspection label{display:block;margin:12px 0;line-height:1.8}.inspection input{margin-right:8px}#inspectionHint{color:#dfc38c}#dialog{max-width:760px;max-height:88vh;overflow:auto}#dialogContent h3{font-size:15px;margin:24px 0 10px;color:#cbd4cc}@media(max-width:600px){.equipment-grid{grid-template-columns:1fr}.viewtools button{font-size:11px}.device-feedback{margin:10px 12px}}

.start-panel{margin:0 18px 12px}.start-panel button{width:100%;padding:11px;font-size:15px;font-weight:600;border:1px solid #93a992;background:linear-gradient(180deg,#4d6754,#354c3d);color:#f3f7f0;border-radius:4px}.start-panel button:disabled{opacity:.65}.start-panel p{font-size:11px;color:#b9c4bf;line-height:1.7;margin:7px 0 0}

#returnCab[hidden]{display:none}#cabAccessActions:empty{display:none}#cabAccessActions .equipment-control{width:100%;margin-top:10px;padding:8px 10px}#cabAccessActions .equipment-control small{font-size:11px}

#steps .phase-heading{padding:12px 4px 5px;margin:0;border:0;background:none;font-size:12px;color:#bec8c6;font-weight:600;letter-spacing:1px;box-shadow:none}

.vector-legends{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}.vector-legend{position:absolute;display:block;text-align:center;white-space:pre;font-family:"Microsoft YaHei","Noto Sans CJK SC",sans-serif;font-weight:600;line-height:1.12;letter-spacing:0;background:none;border:0;padding:0;margin:0;pointer-events:none;text-shadow:none;transform:none;filter:none}.vector-legend[hidden]{display:none}

.viewtools{z-index:4}.vehicle-status{z-index:2}

.deduction-details{margin:18px 0;padding:12px;border:1px solid #68716c;border-radius:3px}.deduction-details h3{margin:0 0 10px}.deduction-details td{vertical-align:top;overflow-wrap:anywhere}.deduction-details .deduction-points{white-space:nowrap;color:#dfbda0;font-variant-numeric:tabular-nums}.deduction-details .deduction-total{font-weight:600;line-height:1.8}.deduction-details .no-deductions{color:#b8c6ad}@media print{.deduction-details .deduction-points,.deduction-details .no-deductions{color:#111}.deduction-details tr{break-inside:avoid}.deduction-details thead{display:table-header-group}}

.scenario-picker{display:grid;gap:7px;margin:14px 18px}.scenario-picker select{width:100%;padding:8px}.interval-actions{margin:0 18px 10px;padding:9px;background:#1d292e;border:1px solid #53615e}.interval-actions[hidden]{display:none}.interval-actions button{display:block;width:100%;margin:6px 0;padding:7px;text-align:left}.interval-actions p{margin:0 0 6px;color:#c4d2ca}
.scenario-picker [hidden]{display:none}.scenario-picker label{display:block;margin-bottom:4px}.hazard-actions{border-radius:5px;font-size:12px;line-height:1.65;background:#182329}.hazard-actions .hazard-setting{color:#d5ddd6}.reference-note{border-left:2px solid #9a9876;padding:8px 10px;background:#242b2b;color:#c9c7ac;font-size:12px;line-height:1.7}.equipment-control:disabled{cursor:default;opacity:.5}

/* Individual accepted actions keep their own progress; parent-step scoring is unchanged. */
.equipment-route .operation-item{display:inline-flex;align-items:baseline;gap:6px;max-width:100%;vertical-align:baseline}
.equipment-route .operation-dot{display:inline-block;flex:none;align-self:baseline;width:6px;height:6px;margin-top:.55em;border-radius:50%;background:#394651;border:1px solid #6c7b8666;box-shadow:inset 0 1px 1px #0005;transform:translateY(-1px)}
.equipment-route .operation-item.done .operation-dot{background:#86c6a0;border-color:#bae8cc88;box-shadow:0 0 4px #70b89140}
.equipment-route .operation-item.done{color:#a8c6b3}
.equipment-route .operation-arrow{color:#718079;white-space:pre-wrap}


/* Training workspace: restrained graphite surfaces and clear task hierarchy. */
.workstation{--assessment-width:366px;grid-template-columns:minmax(0,1fr) var(--assessment-width)}
.assessment{background:#101820;color:#dce6eb;border-left:1px solid #2b3b46;box-shadow:-10px 0 28px #0002;scrollbar-gutter:stable}
.assessment>*{flex-shrink:0}
.assessment header{padding:23px 22px 19px;background:linear-gradient(145deg,#1c2c36,#131e28 80%);border-bottom:1px solid #30424d;position:relative}
.assessment header::after{content:'';position:absolute;bottom:-1px;left:22px;width:48px;height:2px;background:#82b9b0}
.panel-eyebrow{display:flex;align-items:center;gap:7px;margin-bottom:14px;color:#9eb7c1;font-size:10px;letter-spacing:1.1px}.panel-mark{font-size:17px;color:#8dbdb4}.panel-badge{margin-left:auto;font-size:9px;letter-spacing:.5px;padding:4px 7px;border:1px solid #39525c;border-radius:5px;background:#243e4344;color:#a7ccc4}
.assessment h1{font-size:19px;font-weight:650;letter-spacing:.6px;color:#f0f5f6}.assessment header p{line-height:1.8;font-size:11px;color:#92a9b7;margin:8px 0 0}
.assessment .scenario-picker{margin:19px 20px 17px;gap:6px;padding:0}.assessment .scenario-picker label{font-size:10px;font-weight:600;letter-spacing:1px;color:#91a7b5;margin:7px 0 2px}
.assessment .scenario-picker select{min-height:40px;border:1px solid #334650;background:#1a2731;color:#dce7ec;border-radius:8px;padding:9px 28px 9px 11px;font-size:12px;box-shadow:inset 0 1px 0 #ffffff04}.assessment select:disabled{opacity:.65}.assessment .scenario-picker select:focus{border-color:#78aaa2;outline:2px solid #6a9f9822;outline-offset:2px}
.assessment .tabs{margin:0 20px 13px;padding:4px;border:1px solid #2b3c48;border-radius:9px;background:#0c131b;gap:4px}.assessment .tabs button{border:0;border-radius:6px;padding:9px 5px;font-size:11px;font-weight:600;background:transparent;color:#839bab}.assessment .tabs button.selected{background:#263b45;color:#d9eee9;box-shadow:0 1px 4px #0004,inset 0 1px 0 #ffffff0a}
.assessment .start-panel{margin:0 20px 16px}.assessment #startExercise{min-height:45px;padding:11px 14px;border-radius:8px;border:1px solid #69968b;background:linear-gradient(115deg,#3c7066,#294e50);box-shadow:0 4px 12px #0003,inset 0 1px 0 #ffffff0e;color:#edf7f4;font-size:13px;letter-spacing:1px}.assessment #startExercise:not(:disabled)::after{content:' →';margin-left:10px}.assessment #startExercise:not(:disabled):hover{background:linear-gradient(115deg,#488478,#355e60);border-color:#8dbeb0}.assessment #startExercise:disabled{opacity:.65;box-shadow:none}.assessment .start-panel p{font-size:10px;line-height:1.8;color:#8198a7;margin:8px 1px 0}
.assessment .session{margin:0 20px 19px;padding:13px 12px;display:grid;grid-template-columns:1fr 1.2fr auto;align-items:center;gap:6px;border:1px solid #2b3c46;background:#18242d;border-radius:9px;font-size:10px;color:#b0c2cc}.assessment .session #state{color:#b0c9be;font-size:10px;line-height:1.7}.assessment #timer{font-size:19px;color:#e2eeef;font-weight:600;letter-spacing:.4px;font-variant-numeric:tabular-nums}
.assessment .processhead{padding:0 22px;align-items:center;font-size:10px;color:#92a9b6;line-height:1.7;gap:14px}.assessment .processhead b{font:600 12px Consolas,monospace;color:#cde6df;letter-spacing:1px}.assessment .progress{margin:10px 22px 9px;height:4px;border-radius:4px;background:#24343e;overflow:hidden}.assessment .progress i{background:linear-gradient(90deg,#4e8f83,#a1cbb7);border-radius:4px;box-shadow:none}
.assessment #steps{padding:0 14px 8px;flex:none}.assessment #steps .phase-heading{padding:20px 8px 9px;font-size:10px;font-weight:650;letter-spacing:1.7px;color:#8ca9b8}
.assessment #steps li:not(.phase-heading){margin:0 0 9px;border:0;border-radius:10px;box-shadow:none;background:none}.assessment #steps li button{padding:14px 13px;border:1px solid #2a3a46;border-radius:10px;background:#18232d;gap:9px;box-shadow:inset 0 1px 0 #ffffff03}.assessment #steps li button:hover:not(:disabled){background:#1d2c37;border-color:#4c6573}.assessment #steps li button:disabled{opacity:1}.assessment #steps li.current button{background:linear-gradient(115deg,#30322a,#222a2a);border-color:#87764b;box-shadow:inset 3px 0 0 #c0a669}.assessment #steps li.completed button{border-color:#30483f;background:#17292366}.assessment #steps li b{font-size:12px;font-weight:600;color:#d8e5eb;line-height:1.7;letter-spacing:.2px}.assessment #steps li p{font-size:12px;line-height:1.85;color:#91a7b4;margin-top:6px}.assessment #steps li.completed b{color:#abcabb}.assessment #steps li.completed p{color:#91aa9e}.assessment #steps .stepnum{margin-top:7px;min-width:7px;width:7px;height:7px;border-radius:50%;box-shadow:none}.assessment .equipment-route{font-size:11px!important;border-left-color:#4b655e;padding-left:9px;line-height:1.95!important;color:#a3b8b1!important;margin-top:10px!important}
.assessment .interval-actions{margin:0 20px 15px;border:1px solid #34515a;border-radius:9px;padding:12px;background:#182b32;font-size:11px;line-height:1.85}.assessment .interval-actions button{border-radius:6px;border-color:#3b535b;background:#213942;padding:8px 9px}.assessment .interval-actions p{color:#acc5c8}
.assessment .device-feedback{margin:8px 20px 13px;background:#1a302c;border:1px solid #45655b;border-radius:9px;padding:13px;font-size:11px}.assessment .device-feedback.blocked{background:#302c21;border-color:#7a6845}.assessment .device-feedback b{font-size:12px}.assessment .device-feedback strong{font-size:11px}
.assessment .logpanel{margin:8px 20px 17px;border:1px solid #2a3d47;background:#141f28;border-radius:9px;padding:8px 12px}.assessment .logpanel summary{font-size:11px;font-weight:600;color:#a8c2ce;letter-spacing:.5px;padding:5px 0}.assessment #logs{max-height:190px;font-size:10px;line-height:1.8}.assessment #logs p{padding:8px 0;margin:0;border-top:1px solid #ffffff09;color:#b4c6ca}.assessment #logs span{display:block;color:#6f929f;font-size:9px}
.assessment footer{margin-top:auto;padding:15px 20px 18px;background:#111b24;border-top:1px solid #2b3c48}.assessment .sessiontools button{background:#1b2a35;border:1px solid #344955;border-radius:7px;font-size:10px;padding:9px 3px}.assessment .finish{border:1px solid #496b6c;background:#25464a;border-radius:8px;padding:12px;font-size:11px;box-shadow:none}.assessment footer small{font-size:9px;color:#6f8898;letter-spacing:.1px}
.operation-notice{position:absolute;z-index:5;top:57px;left:50%;transform:translateX(-50%);width:calc(100% - 40px);max-width:820px;display:flex;align-items:center;gap:13px;padding:14px 18px 17px;border:1px solid #679b8d99;border-radius:10px;background:linear-gradient(105deg,#152e2bf5,#16242ef5);box-shadow:0 10px 28px #0005;pointer-events:none;color:#dceee6;overflow:hidden;animation:notice-enter .18s ease-out}.operation-notice[hidden]{display:none}.notice-icon{display:grid;place-items:center;flex:none;width:28px;height:28px;background:#315c4e;border:1px solid #75b59566;border-radius:50%;font-size:15px;font-weight:700;color:#bfe5d0}.notice-copy{min-width:0;flex:1}.notice-meta{display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.6px;color:#9bbbae}.notice-meta b{font-weight:600}.notice-meta span{margin-left:auto;color:#76958f;font-size:9px}.operation-notice p{font-size:13px;line-height:1.75;margin:4px 0 0;overflow-wrap:anywhere;font-weight:500}.notice-life{position:absolute;bottom:0;left:0;right:0;height:2px;background:#87bfa6;opacity:.5}.operation-notice.is-blocked{background:linear-gradient(105deg,#342b1bf5,#242831f5);border-color:#a98a5099;color:#f0dfb8}.is-blocked .notice-icon{background:#604c2d;border-color:#b89a6466;color:#f0d399}.is-blocked .notice-meta{color:#cab789}.is-blocked .notice-life{background:#c3a66f}
@keyframes notice-enter{from{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:1100px){.workstation{--assessment-width:320px}.assessment header{padding:18px}.assessment h1{font-size:17px}.assessment .scenario-picker,.assessment .start-panel,.assessment .session,.assessment .tabs{margin-left:16px;margin-right:16px}.panel-badge{font-size:8px}.operation-notice{top:59px;width:calc(100% - 28px);padding:11px 13px 14px}.operation-notice p{font-size:12px}.notice-meta span{display:none}}
@media(max-width:700px){.workstation{grid-template-columns:1fr;grid-template-rows:minmax(320px,55dvh) 1fr}.operation-notice{top:88px;max-width:calc(100% - 24px)}.assessment header{padding:17px 20px}.assessment h1{font-size:19px}.panel-eyebrow{margin-bottom:8px}.assessment .session{grid-template-columns:1fr 1fr auto}.assessment .scenario-picker select{font-size:12px}}
@media(prefers-reduced-motion:reduce){.operation-notice{animation:none}}
.touch-movement{display:none}
@media (hover:none) and (pointer:coarse){
 .viewtools{left:8px;right:8px;flex-wrap:wrap;justify-content:flex-end;gap:5px}
 .viewtools button,.viewtools select{min-height:33px;padding:6px 8px}
 .operation-notice{top:112px;max-width:calc(100% - 24px)}
 #viewport canvas{touch-action:none;user-select:none;-webkit-user-select:none}
 .touch-movement:not([hidden]){position:absolute;display:flex;flex-direction:column;align-items:center;gap:8px;left:max(18px,env(safe-area-inset-left));bottom:44px;z-index:7;pointer-events:none}
 .touch-stick{width:112px;height:112px;position:relative;border-radius:50%;background:#14252abf;border:1px solid #a6c6cc66;box-shadow:0 5px 18px #0005,inset 0 0 20px #a9d2d411;touch-action:none;pointer-events:auto}
 .touch-stick-ring{position:absolute;inset:13px;border:1px solid #aacbd233;border-radius:50%}
 .touch-stick-knob{position:absolute;width:43px;height:43px;left:34px;top:34px;border-radius:50%;background:linear-gradient(140deg,#a1c1c6,#42626a);border:1px solid #c8e3e6aa;box-shadow:0 3px 8px #0007;will-change:transform}
 .touch-help{font-size:10px;line-height:1.4;color:#e0edeb;background:#13252bd9;padding:5px 7px;border-radius:5px;text-shadow:0 1px 2px #000;max-width:180px}
}
@media (hover:none) and (pointer:coarse) and (max-width:480px){
 .viewtools{justify-content:flex-start}
 .viewtools button,.viewtools select{font-size:10px;padding:5px 7px}
 .touch-movement:not([hidden]){left:14px;bottom:53px}
 .touch-stick{width:104px;height:104px}
 .touch-stick-knob{left:30px;top:30px}
 .touch-help{max-width:150px;font-size:9px}
 .deviceTip{left:auto;right:12px;transform:none;max-width:calc(100% - 180px);white-space:normal}
}
/* Satin glass: opaque typography over nested translucent surfaces; no overlay on the viewport. */
.assessment{
 --glass-edge:rgba(222,242,249,.15);
 --glass-surface:linear-gradient(135deg,rgba(238,249,255,.065),rgba(198,223,240,.018) 64%);
 background:radial-gradient(ellipse 130% 520px at 110% -60px,#9ec9d12a,transparent 76%),radial-gradient(ellipse 140% 620px at -40% 52%,#5e9d9a18,transparent 75%),linear-gradient(165deg,#152532f2,#101d2af7 55%,#12212cf5);
 backdrop-filter:blur(30px) saturate(115%);-webkit-backdrop-filter:blur(30px) saturate(115%);
 border-left:1px solid #d6edf72e;box-shadow:inset 1px 0 #ffffff0b,-12px 0 36px #00000024;
 scrollbar-width:thin;scrollbar-color:#a1c3cf42 transparent;color:#e1ecf2;
}
.assessment header{background:linear-gradient(120deg,#f1fbff0a,transparent 68%);border-bottom-color:#d6edf718;box-shadow:inset 0 1px #ffffff12}
.assessment h1{font-weight:600;letter-spacing:1px;color:#f0f6fa;text-shadow:0 2px 10px #0002}
.assessment header::after{width:54px;height:2px;background:linear-gradient(90deg,#a2d4cf,#a2d4cf00)}
.assessment .panel-eyebrow{color:#9ebecb;letter-spacing:1px}
.assessment .panel-badge{color:#b9d5df;background:#dcefff07;border-color:#e0f3ff24;box-shadow:inset 0 1px #ffffff0e;border-radius:6px}
.assessment header p{color:#aabfcd;line-height:1.8}
.assessment .scenario-picker label{color:#a4becb;letter-spacing:.6px}
.assessment .scenario-picker select{background:var(--glass-surface);color:#e3eef5;border:1px solid var(--glass-edge);border-radius:12px;box-shadow:inset 0 1px #ffffff10,0 4px 16px #0000000e}
.assessment .scenario-picker select option{background:#1c303e;color:#eaf4fa}
.assessment .scenario-picker select:not(:disabled):hover{border-color:#c9e9f440;background-color:#dcefff05}
.assessment .tabs{padding:4px;background:#06111f38;border:1px solid #e3f2ff12;border-radius:12px;box-shadow:inset 0 1px 5px #0002}
.assessment .tabs button{border-radius:8px;color:#91acbd}
.assessment .tabs button.selected{background:linear-gradient(125deg,#d0f1f224,#bcdcf20e);border:1px solid #d7f0fa22;box-shadow:inset 0 1px #f1ffff1c,0 3px 10px #0002;color:#e6f5f5}
.assessment #startExercise{color:#f1fffc;background:linear-gradient(115deg,#548c87b3,#376c77a3);border:1px solid #b9e5db5c;border-radius:12px;box-shadow:inset 0 1px #e6fff935,0 5px 18px #0002;letter-spacing:1px}
.assessment #startExercise:hover:not(:disabled){background:linear-gradient(115deg,#609e96cc,#437d8ab8);border-color:#c6f3e689;box-shadow:inset 0 1px #ffffff40,0 6px 22px #0003}
.assessment #startExercise:disabled{background:linear-gradient(120deg,#b6d9df14,#bddded08);border-color:#d7eaf522;box-shadow:inset 0 1px #ffffff10;color:#b1c6cf}
.assessment .session{background:var(--glass-surface);border:1px solid #deeffa1c;border-radius:12px;box-shadow:inset 0 1px #ffffff0e,0 6px 18px #0000000c;color:#a8bfce}
.assessment #timer{color:#eaf6ff;letter-spacing:1px;text-shadow:0 0 20px #afdff51c}
.assessment .processhead{color:#9eb9c8}.assessment .processhead b{color:#c8e1df}
.assessment .progress{height:3px;border-radius:3px;overflow:hidden;background:#cadfeb16;box-shadow:inset 0 1px 2px #0002}
.assessment .progress i{background:linear-gradient(90deg,#679e9b,#a5d9cd);box-shadow:0 0 10px #96d5c633}
.assessment #steps .phase-heading{color:#8faebd;letter-spacing:1px}
.assessment #steps li:not(.phase-heading){margin-bottom:12px}
.assessment #steps li button{background:var(--glass-surface);border:1px solid #d8eefa1a;border-radius:14px;box-shadow:inset 0 1px #ffffff0e,0 5px 18px #0000000d;padding:16px 14px}
.assessment #steps li button:hover:not(:disabled){background-color:#d8edff05;border-color:#d8efff38}
.assessment #steps li.current button{background:linear-gradient(120deg,#b9deeb19,#9bcede09);border-color:#a4d3dc43;box-shadow:inset 0 1px #efffff1c,inset 2px 0 #9dcfc8,0 6px 22px #00000012}
.assessment #steps li.completed button{background:linear-gradient(120deg,#95cdbd0e,#b6e4cc04);border-color:#a5dfc421;box-shadow:inset 0 1px #eafff509}
.assessment #steps li b{color:#deebf3;letter-spacing:.3px}.assessment #steps li p{color:#aabfcc;line-height:1.9}
.assessment #steps li.completed b{color:#beded1}.assessment #steps li.completed p{color:#a2c0b4}
.assessment .equipment-route{border-left-color:#adcfc534;color:#aac8c0!important}
.assessment .interval-actions,.assessment .device-feedback,.assessment .logpanel{background:linear-gradient(130deg,#bfdfe614,#c8e9ee05);border-color:#c4e7ee29;border-radius:14px;box-shadow:inset 0 1px #edffff12,0 5px 20px #00000010}
.assessment .interval-actions button,.assessment .sessiontools button{background:var(--glass-surface);border-color:#d8eef524;border-radius:9px;box-shadow:inset 0 1px #ffffff10}
.assessment .interval-actions button:hover,.assessment .sessiontools button:hover{background-color:#d5efff0b;border-color:#d8f4ff48}
.assessment .device-feedback.blocked{background:linear-gradient(125deg,#d8b66d20,#d4bb8b08);border-color:#dfc58348}
.assessment .logpanel summary{color:#b4cddc}
.assessment footer{background:linear-gradient(125deg,#d2edff05,#05152229);border-top-color:#d0e7f31a;box-shadow:inset 0 1px #ffffff05}
.assessment .finish{background:linear-gradient(120deg,#b5e4de1c,#b4d8fa09);border-color:#c1e6ee38;border-radius:10px;box-shadow:inset 0 1px #ffffff17}
.assessment .finish:hover{background-color:#bdeee80b}.assessment footer small{color:#8eaabb}
.assessment button,.assessment select{transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}
.assessment :is(button,select):focus-visible{outline:2px solid #b6e5df;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.assessment button,.assessment select{transition:none}}
@media(prefers-reduced-transparency:reduce){.assessment{background:#172935;backdrop-filter:none;-webkit-backdrop-filter:none}.assessment #steps li button,.assessment .session,.assessment .scenario-picker select{background:#243743}}
