:root{
  --bg:#060f17;--panel:#0b1722;--panel2:#122536;--line:#1d3a4d;--text:#edf7ff;--muted:#8faabc;
  --red:#df3434;--red2:#ff6666;--green:#31d970;--yellow:#ffcf38;--cyan:#6fe7ff;--blue:#5aa7ff;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text);background:radial-gradient(circle at top,rgba(223,52,52,.08),transparent 28%),linear-gradient(180deg,#04090e,#061018 45%,#040b12)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:240px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:18px 16px;background:linear-gradient(180deg,rgba(6,14,21,.98),rgba(9,18,27,.98));border-right:1px solid rgba(223,52,52,.32);display:flex;flex-direction:column;gap:16px}.brand,.mini-brand{display:flex;align-items:center;gap:12px}.brand img,.mini-brand img{width:52px;height:52px;object-fit:contain}.brand h1{font-size:2rem;margin:0 0 4px;letter-spacing:.05em}.brand a{color:var(--muted);font-size:.92rem}nav{display:flex;flex-direction:column;gap:10px}.nav-link{padding:12px 14px;border:1px solid rgba(255,255,255,.06);background:rgba(255,255,255,.025);border-radius:12px;color:#cce0ee}.nav-link.active,.nav-link:hover{background:linear-gradient(135deg,rgba(223,52,52,.96),rgba(132,15,15,.92));color:#fff}.sidebar-card{padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.025)}.sidebar-card h4{margin:0 0 8px}.sidebar-card p{color:var(--muted);margin:6px 0;font-size:.9rem}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.07);padding-top:14px;color:var(--muted);font-size:.86rem}.main-content{padding:18px 18px 30px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid rgba(223,52,52,.34);border-radius:18px;background:rgba(8,16,24,.88);padding:16px 18px;backdrop-filter:blur(8px)}.topbar h2{margin:0 0 4px;font-size:1.85rem;letter-spacing:.02em}.topbar p{margin:0;color:var(--muted)}.topbar-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.partner-badge,.status-pill,.admin-pill{border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);padding:10px 12px}.partner-badge{min-width:106px;text-align:center;display:grid;gap:1px}.partner-badge b{color:var(--yellow);font-size:1.25rem}.partner-badge span{color:var(--muted);font-size:.72rem}.status-pill i{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 10px rgba(49,217,112,.85);margin-right:6px}.kpi-row{margin-top:16px;display:grid;grid-template-columns:repeat(8,1fr);gap:12px}.kpi{min-height:84px;padding:14px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(12,24,36,.96),rgba(10,18,28,.96));display:grid;align-content:center;gap:3px}.kpi strong{font-size:1.8rem}.kpi span{font-weight:700}.kpi small{color:var(--muted)}.controls{margin-top:16px;display:grid;grid-template-columns:1fr 1fr 1.1fr .8fr;gap:12px}.control-card{border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(12,24,36,.96),rgba(10,18,28,.96));padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.control-card label{display:grid;gap:8px;flex:1}.control-card label span{color:var(--muted);font-size:.9rem}.control-card input[type=range],.control-card select,.control-card button{width:100%;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--text);padding:10px}.control-card b{color:var(--yellow)}.buttons{display:grid;grid-template-columns:repeat(3,1fr)}.buttons button{cursor:pointer}.checks{display:grid;align-content:center}.checks label{display:flex;align-items:center;gap:8px}input[type=checkbox]{accent-color:var(--red)}.station-grid{margin-top:16px;display:grid;grid-template-columns:1fr 380px;gap:16px;align-items:start}.card{border-radius:18px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(9,18,27,.97),rgba(10,19,28,.98));box-shadow:0 12px 30px rgba(0,0,0,.26);padding:14px}.card-title{font-weight:800;letter-spacing:.04em;margin-bottom:12px}.with-action{display:flex;justify-content:space-between;align-items:center;gap:10px}.tag{padding:6px 10px;border-radius:999px;border:1px solid rgba(49,217,112,.22);background:rgba(49,217,112,.12);color:var(--green);font-size:.84rem}.meta-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.meta-bar>div{padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03)}.meta-bar b{display:block;color:var(--muted);font-size:.78rem;margin-bottom:4px}.viewport-shell{position:relative}.viewport-help{position:absolute;left:14px;top:14px;z-index:8;padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.08);background:rgba(10,18,26,.82);color:var(--muted);font-size:.88rem}.scene-viewport{height:1150px;border-radius:20px;border:1px solid rgba(255,255,255,.07);background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.07),transparent 23%),radial-gradient(circle at 84% 16%,rgba(111,231,255,.1),transparent 28%),linear-gradient(180deg,#0f1e2c,#09111a 45%,#05090e);overflow:hidden;perspective:1600px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.scene-viewport:active{cursor:grabbing}.scene-world{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(62deg) rotateZ(-30deg) scale(1)}.floor{position:absolute;left:100px;top:190px;width:1280px;height:750px;border-radius:18px;background:linear-gradient(180deg,rgba(94,106,118,.95),rgba(43,52,60,.98));box-shadow:inset 0 0 0 4px rgba(255,255,255,.04),inset 0 0 80px rgba(255,255,255,.03),0 32px 70px rgba(0,0,0,.45);transform:translateZ(0)}.safe-zone{position:absolute;left:210px;top:322px;width:640px;height:410px;border:3px dashed rgba(255,207,56,.75);border-radius:20px;background:rgba(255,207,56,.04);transform:translateZ(2px)}.amr-lane{position:absolute;border-radius:999px;background:linear-gradient(180deg,rgba(111,231,255,.88),rgba(40,120,144,.88));box-shadow:0 0 16px rgba(111,231,255,.36);transform:translateZ(4px)}.amr-lane.main{left:300px;top:820px;width:800px;height:24px}.amr-lane.dock{left:506px;top:610px;width:24px;height:230px;background:linear-gradient(180deg,rgba(255,207,56,.88),rgba(176,118,14,.88))}.light-curtain{position:absolute;top:322px;width:14px;height:410px;background:repeating-linear-gradient(180deg,rgba(255,85,85,.85) 0 8px,rgba(255,255,255,.08) 8px 18px);border-radius:999px;box-shadow:0 0 18px rgba(255,85,85,.32);transform:translateZ(18px)}.light-curtain.left{left:205px}.light-curtain.right{left:846px}.station-frame{position:absolute;left:300px;top:360px;width:430px;height:270px;transform-style:preserve-3d}.station-label,.rack-label,.dock-label{position:absolute;padding:4px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:rgba(10,18,26,.84);font-size:.82rem}.station-label{top:-30px;left:0}.deck{position:absolute;left:0;top:70px;width:340px;height:160px;border-radius:8px;background:linear-gradient(180deg,#46515b,#1f272e);border:1px solid rgba(255,255,255,.08);box-shadow:0 22px 44px rgba(0,0,0,.3)}.deck::before{content:"";position:absolute;left:14px;right:-18px;top:-18px;height:18px;transform:skewX(-40deg);background:linear-gradient(180deg,#74818c,#434d57)}.deck::after{content:"";position:absolute;top:8px;right:-18px;width:18px;bottom:-1px;transform:skewY(-49deg);background:linear-gradient(180deg,#252e35,#12181e)}.deck-top{position:absolute;left:22px;top:80px;width:250px;height:114px;border-radius:8px;background:linear-gradient(180deg,#67727d,#313a43);transform:translateZ(26px);border:1px solid rgba(255,255,255,.12)}.projector-post{position:absolute;left:282px;top:24px;width:14px;height:145px;border-radius:999px;background:linear-gradient(180deg,#edf4f7,#8e9ba4);transform:translateZ(40px);box-shadow:0 0 14px rgba(0,0,0,.22)}.projector-head{position:absolute;left:255px;top:18px;width:70px;height:34px;border-radius:8px;background:linear-gradient(180deg,#f5f8fa,#aab5bd);transform:translateZ(58px);border:1px solid rgba(0,0,0,.16)}.projector-cone{position:absolute;left:104px;top:78px;width:190px;height:118px;background:linear-gradient(180deg,rgba(57,255,132,.72),rgba(57,255,132,.08));clip-path:polygon(72% 0,100% 0,88% 100%,0 100%);transform:translateZ(48px) skewX(-7deg);filter:blur(.6px);opacity:.95}.projector-cone.off{opacity:.05}.holder-table{position:absolute;left:65px;top:105px;width:176px;height:72px;border-radius:8px;background:linear-gradient(180deg,#bfc8d0,#6a747e);transform:translateZ(42px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.holder-grid{position:absolute;left:75px;top:116px;width:156px;height:50px;transform:translateZ(46px);background:repeating-linear-gradient(90deg,rgba(255,255,255,.25) 0 2px,transparent 2px 22px),repeating-linear-gradient(180deg,rgba(255,255,255,.2) 0 2px,transparent 2px 16px);border-radius:6px}.tube-on-table{position:absolute;left:82px;top:122px;transform:translateZ(60px);z-index:2}.tube-on-table .tube svg{width:170px!important;height:36px!important}.hmi-screen{position:absolute;left:300px;top:82px;width:100px;height:76px;border-radius:10px;background:linear-gradient(180deg,#253d4f,#0d1720);transform:translateZ(52px);border:1px solid rgba(111,231,255,.2);padding:8px;font-size:.76rem}.hmi-screen b{display:block;color:#fff}.hmi-screen span{color:var(--cyan)}.qr-camera,.vision-camera{position:absolute;width:30px;height:24px;border-radius:6px;background:linear-gradient(180deg,#1c2832,#0b1117);border:1px solid rgba(255,255,255,.1);transform:translateZ(62px)}.qr-camera{left:45px;top:72px}.vision-camera{left:245px;top:58px}.qr-camera::after,.vision-camera::after{content:"";position:absolute;left:10px;top:7px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#6fe7ff,#0b5f82);box-shadow:0 0 10px rgba(111,231,255,.9)}.operator-human{position:absolute;left:18px;top:115px;width:54px;height:100px;transform:translateZ(52px);transform-style:preserve-3d}.operator-human .head{position:absolute;left:18px;top:0;width:22px;height:22px;border-radius:50%;background:#d6e0e8}.operator-human .body{position:absolute;left:14px;top:24px;width:28px;height:44px;border-radius:10px 10px 6px 6px;background:linear-gradient(180deg,#262f39,#0e151c);box-shadow:inset 0 -10px 0 rgba(223,52,52,.18)}.operator-human .arm{position:absolute;top:33px;width:10px;height:38px;border-radius:999px;background:#1f2832;transform-origin:top center}.operator-human .arm.left{left:8px;transform:rotate(24deg)}.operator-human .arm.right{left:38px;transform:rotate(-48deg);animation:humanReach 1.6s ease-in-out infinite alternate}.operator-human .leg{position:absolute;top:66px;width:10px;height:34px;border-radius:999px;background:#111820}.operator-human .leg.left{left:18px}.operator-human .leg.right{left:32px}@keyframes humanReach{from{transform:rotate(-30deg)}to{transform:rotate(-64deg)}}.tube-rack{position:absolute;left:890px;top:350px;width:190px;height:190px;transform-style:preserve-3d}.rack-label{top:-28px;left:0}.rack-frame{position:absolute;inset:0;border-radius:8px;background:linear-gradient(180deg,#4c5660,#1b232b);box-shadow:0 18px 34px rgba(0,0,0,.28)}.rack-frame::before{content:"";position:absolute;left:12px;right:-14px;top:-14px;height:14px;transform:skewX(-40deg);background:linear-gradient(180deg,#77838e,#45505a)}.rack-tubes{position:absolute;left:18px;right:16px;top:26px;display:grid;gap:12px;transform:translateZ(28px)}.rack-tubes .tube svg{width:158px!important;height:26px!important}.dock-label{transform:translateZ(18px)}.dock-label.load{left:470px;top:735px}.dock-label.unload{left:630px;top:735px}.dock-label.standby-a{left:830px;top:735px}.dock-label.standby-b{left:990px;top:735px}.trolley-layer{position:absolute;inset:0;pointer-events:none}.trolley{position:absolute;width:96px;height:72px;transform-style:preserve-3d;filter:drop-shadow(0 14px 20px rgba(0,0,0,.32));z-index:4}.trolley::after{content:"";position:absolute;left:10px;right:-8px;bottom:-12px;height:12px;background:radial-gradient(ellipse at center,rgba(0,0,0,.35),transparent 72%)}.trolley-top{position:absolute;left:10px;right:12px;top:18px;bottom:10px;border-radius:4px;background:linear-gradient(180deg,#788592,#46515b);border:1px solid rgba(255,255,255,.12)}.trolley-top::before{content:"";position:absolute;left:7px;right:-12px;top:-12px;height:12px;transform:skewX(-40deg);background:linear-gradient(180deg,#a3adb6,#64707b)}.trolley-top::after{content:"";position:absolute;top:5px;right:-12px;width:12px;bottom:-1px;transform:skewY(-48deg);background:linear-gradient(180deg,#46505a,#272f36)}.trolley-rack{position:absolute;left:18px;right:24px;top:22px;height:34px;border:2px solid rgba(218,230,238,.78);border-radius:5px}.trolley-load{position:absolute;left:12px;right:12px;top:5px;transform:translateZ(22px);display:flex;justify-content:center}.trolley-load .tube svg{width:130px!important;height:28px!important}.trolley-tag{position:absolute;left:18px;top:-18px;border-radius:999px;padding:2px 8px;background:linear-gradient(135deg,rgba(223,52,52,.95),rgba(126,14,14,.95));font-weight:800;font-size:.7rem;color:#fff}.trolley.moving .trolley-tag{background:linear-gradient(135deg,rgba(255,207,56,.98),rgba(192,122,0,.98));color:#1d1300}.amr{position:absolute;left:300px;top:820px;width:54px;height:38px;border-radius:12px;background:linear-gradient(180deg,#5f6973,#2a323a);border:2px solid rgba(255,255,255,.12);box-shadow:0 14px 24px rgba(0,0,0,.38),inset 0 -8px 0 rgba(223,52,52,.16);z-index:3}.amr-top{position:absolute;left:8px;right:8px;top:5px;height:8px;border-radius:999px;background:linear-gradient(180deg,#ff6464,#911515)}.amr-lift{position:absolute;left:17px;right:17px;top:-3px;height:8px;border-radius:6px;background:linear-gradient(180deg,#e7eef2,#8f9ca4);opacity:.25}.amr.lifted .amr-lift{opacity:1;top:-8px;box-shadow:0 0 10px rgba(255,207,56,.55)}.amr.ghost{opacity:.15;filter:blur(.5px)}.amr.ghost.b{opacity:.08}.scan-beam{position:fixed;width:0;height:3px;background:linear-gradient(90deg,rgba(111,231,255,0),rgba(111,231,255,1),rgba(111,231,255,0));box-shadow:0 0 12px rgba(111,231,255,.95);transform-origin:0 50%;pointer-events:none;z-index:9999;display:none}.photo-flash{position:absolute;left:290px;top:345px;width:470px;height:320px;border-radius:24px;background:radial-gradient(circle at center,rgba(255,255,255,.82),rgba(255,255,255,.14) 48%,transparent 70%);mix-blend-mode:screen;opacity:0;pointer-events:none;z-index:8}.photo-flash.active{animation:flash .28s ease-out}@keyframes flash{0%{opacity:0}30%{opacity:1}100%{opacity:0}}.touch-nav{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:12px}.touch-nav button{padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}.side-panels{display:grid;gap:16px}.status-list,.kv-grid,.safety-grid,.trolley-panel{display:grid;gap:8px}.status-row,.kv-row,.safety-row,.trolley-row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:9px 10px;border-radius:10px;background:rgba(255,255,255,.03)}.status-row.active{box-shadow:inset 0 0 0 2px rgba(255,207,56,.45)}.event-log{max-height:360px;overflow:auto;display:grid;gap:8px}.log-entry{display:grid;grid-template-columns:68px 16px 1fr;gap:8px;color:#d7e8f5;font-size:.9rem}.log-entry i{color:var(--green);font-style:normal}.workflow-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.step-card{min-height:102px;padding:10px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.03);position:relative}.step-card.active{box-shadow:inset 0 0 0 2px rgba(255,207,56,.55),0 0 18px rgba(255,207,56,.12)}.step-card .n{position:absolute;left:8px;top:8px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff;font-weight:800;font-size:.76rem}.step-card p{margin:30px 0 0;line-height:1.25}.lower-grid{margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:16px}.operation-grid,.program-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.operation-card,.program-card{padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03)}.program-card{cursor:pointer}.program-card.active{box-shadow:inset 0 0 0 2px rgba(255,207,56,.5)}.program-card h4,.operation-card h4{margin:0 0 8px}.program-card .meta,.operation-card p{color:var(--muted);font-size:.9rem;margin:4px 0}.report-tabs{display:flex;gap:8px}.report-tabs button{padding:8px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}.report-tabs button.active{background:linear-gradient(135deg,rgba(223,52,52,.95),rgba(126,14,14,.92))}.report-content{display:grid;grid-template-columns:1.15fr .85fr;gap:14px}.report-panel{padding:12px;border-radius:14px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.03)}.report-table{width:100%;border-collapse:collapse;font-size:.9rem}.report-table th,.report-table td{padding:8px 6px;border-bottom:1px solid rgba(255,255,255,.08);text-align:left}.report-table th{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.05em}.pass{color:var(--green)}.warn{color:var(--yellow)}.fail{color:#ff8585}.footer{text-align:center;color:var(--muted);padding:22px 0 8px}.tube svg{overflow:visible}.hidden{display:none!important}@media(max-width:1700px){.kpi-row{grid-template-columns:repeat(4,1fr)}.station-grid{grid-template-columns:1fr}.side-panels{grid-template-columns:repeat(3,1fr)}}@media(max-width:1200px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.controls,.meta-bar,.lower-grid,.report-content,.workflow-grid,.operation-grid,.program-grid{grid-template-columns:1fr}.side-panels{grid-template-columns:1fr}.scene-viewport{height:820px}.touch-nav{grid-template-columns:repeat(3,1fr)}}@media(max-width:760px){.topbar,.topbar-right{align-items:flex-start}.kpi-row{grid-template-columns:repeat(2,1fr)}.buttons{grid-template-columns:1fr}.scene-viewport{height:680px}.viewport-help{left:8px;right:8px;font-size:.8rem}}

/* ===== v2 polish: full 3D station, operator HMI, samples, V-block jigs ===== */
.station-grid{grid-template-columns:1fr 420px}
.scene-viewport{height:1380px;background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.1),transparent 23%),radial-gradient(circle at 84% 16%,rgba(111,231,255,.12),transparent 28%),radial-gradient(circle at 60% 0%,rgba(255,207,56,.08),transparent 20%),linear-gradient(180deg,#102131,#09111a 45%,#05090e)}
.floor{width:1360px;height:820px;left:90px;top:200px;background:linear-gradient(180deg,rgba(104,116,128,.96),rgba(48,57,65,.99));}
.safe-zone{width:700px;height:450px;left:200px;top:340px}
.amr-lane.main{top:880px;width:860px;left:290px}.amr-lane.dock{top:635px;height:270px;left:520px}
.station-frame{left:285px;top:370px;width:500px;height:330px}
.station-fence{position:absolute;left:-28px;top:60px;width:420px;height:200px;border-radius:12px;border:3px solid rgba(175,186,196,.4);border-left-width:6px;border-bottom-width:6px;transform:translateZ(16px);box-shadow:0 0 0 1px rgba(255,255,255,.04)}
.deck{width:390px;height:185px;top:85px}.deck-top{width:292px;height:128px;top:96px;left:34px;background:linear-gradient(180deg,#6f7a86,#39414a)}
.projector-post{left:328px;top:18px;height:172px}.projector-head{left:300px;top:12px;width:82px;height:38px}.projector-cone{left:122px;top:92px;width:210px;height:136px}
.holder-table{left:84px;top:122px;width:220px;height:88px;border-radius:12px;background:linear-gradient(180deg,#d7dde3,#7c8791)}
.holder-grid{left:92px;top:132px;width:202px;height:68px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.23) 0 2px,transparent 2px 24px),repeating-linear-gradient(180deg,rgba(255,255,255,.18) 0 2px,transparent 2px 18px)}
.vblk-zone{position:absolute;left:96px;top:128px;width:198px;height:74px;transform:translateZ(54px);pointer-events:none}
.vblk-holder{position:absolute;width:56px;height:52px;transform-style:preserve-3d}
.vblk-holder.left{left:0;top:10px}.vblk-holder.center{left:70px;top:4px}.vblk-holder.right{left:140px;top:10px}.vblk-holder.active{filter:drop-shadow(0 0 12px rgba(255,207,56,.5))}
.v-base{position:absolute;left:0;right:0;bottom:0;height:18px;border-radius:5px;background:linear-gradient(180deg,#95a1ab,#55606a)}
.v-base::before{content:"";position:absolute;left:4px;right:-6px;top:-6px;height:6px;transform:skewX(-38deg);background:linear-gradient(180deg,#c8d0d6,#79848e)}
.v-base::after{content:"";position:absolute;top:2px;right:-6px;width:6px;bottom:-1px;transform:skewY(-48deg);background:linear-gradient(180deg,#58636c,#313942)}
.v-face{position:absolute;bottom:16px;width:21px;height:21px;background:linear-gradient(180deg,#eef4f8,#acb8c1)}
.v-face.a{left:8px;clip-path:polygon(0 100%,100% 0,100% 100%)}.v-face.b{right:8px;clip-path:polygon(0 0,0 100%,100% 100%)}
.v-post{position:absolute;bottom:18px;width:6px;height:18px;border-radius:999px;background:linear-gradient(180deg,#f7fbfd,#94a1a9);box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.v-post.p1{left:8px}.v-post.p2{left:24px}.v-post.p3{right:8px}
.v-tag{position:absolute;left:5px;top:-12px;font-size:.6rem;padding:1px 5px;border-radius:999px;background:rgba(12,20,28,.82);border:1px solid rgba(255,255,255,.08)}
.tube-on-table{left:92px;top:132px;transform:translateZ(74px)}.tube-on-table .tube svg{width:188px!important;height:42px!important;filter:drop-shadow(0 0 8px rgba(111,231,255,.32))}
.hmi-screen{left:348px;top:98px;width:120px;height:92px;background:linear-gradient(180deg,#28455a,#0f1720)}.hmi-screen small{display:block;color:#ffc94a;margin-top:6px;font-size:.68rem}
.qr-camera{left:52px;top:88px}.vision-camera{left:280px;top:68px}
.operator-human{left:20px;top:128px;transform:translateZ(58px) scale(1.05)}
.operator-human.working .arm.right{animation:humanReach .8s ease-in-out infinite alternate}.operator-human.working .body{box-shadow:inset 0 -12px 0 rgba(49,217,112,.18)}
.tube-rack{left:905px;top:330px;width:240px;height:248px}.rack-tubes{left:16px;right:14px;top:22px;grid-template-columns:1fr;gap:8px}.rack-slot{padding:4px 6px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06)}.rack-slot.active{box-shadow:inset 0 0 0 2px rgba(255,207,56,.45)}.rack-slot .tube svg{width:168px!important;height:24px!important}
.trolley{width:108px;height:84px}.trolley-load .tube svg{width:138px!important;height:30px!important}.trolley-rack::before,.trolley-rack::after{content:"";position:absolute;width:6px;top:-12px;bottom:-3px;background:linear-gradient(180deg,#eff5f8,#8f9ca5)}.trolley-rack::before{left:9px}.trolley-rack::after{right:9px}
.amr{width:60px;height:42px}.amr-top{height:10px}
.lower-grid.triple{grid-template-columns:1.2fr 1fr 1fr}
.operator-hmi-grid{display:grid;gap:12px}.hmi-large-screen{border-radius:18px;border:1px solid rgba(111,231,255,.18);background:linear-gradient(180deg,#132331,#08111a);padding:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03),0 18px 36px rgba(0,0,0,.25)}
.hmi-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08)}.hmi-header span{color:#dcefff;font-weight:700;letter-spacing:.05em}.hmi-header b{padding:6px 10px;border-radius:999px;background:rgba(255,207,56,.14);color:#ffcf38}
.hmi-body{display:grid;grid-template-columns:1.2fr .8fr;gap:12px;margin-top:12px}.hmi-pane{border-radius:14px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);padding:12px}.hmi-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.hmi-kpis>div{padding:10px;border-radius:12px;background:rgba(255,255,255,.03)}.hmi-kpis small{display:block;color:var(--muted);margin-bottom:4px}.hmi-kpis strong{display:block}
.hmi-visuals{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.hmi-tube-preview,.hmi-jig-preview{min-height:150px;border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));display:grid;place-items:center;position:relative;overflow:hidden}.mini-stage{padding:14px 10px;border-radius:12px;background:rgba(255,255,255,.03);box-shadow:0 8px 16px rgba(0,0,0,.18)}
.hmi-checklist{display:grid;gap:8px}.hmi-check-row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:9px 10px;border-radius:10px;background:rgba(255,255,255,.03)}.hmi-check-row b{color:#dff8e7}
.hmi-footer-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.hmi-footer-bar button{padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(180deg,rgba(223,52,52,.92),rgba(120,14,14,.92));color:#fff}
.samples-grid,.jigs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;max-height:650px;overflow:auto;padding-right:4px}.sample-card3d,.jig-card3d{padding:12px;border-radius:16px;border:1px solid rgba(255,255,255,.07);background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.02));cursor:pointer}.sample-card3d.active,.jig-card3d.active{box-shadow:inset 0 0 0 2px rgba(255,207,56,.45),0 0 18px rgba(255,207,56,.08)}
.sample-stage{height:116px;border-radius:14px;background:linear-gradient(180deg,rgba(84,97,109,.24),rgba(35,43,50,.24));display:grid;place-items:center;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);margin-bottom:10px;position:relative}.sample-stage::after{content:"";position:absolute;left:16px;right:16px;bottom:18px;height:14px;background:radial-gradient(ellipse at center,rgba(0,0,0,.3),transparent 70%)}
.sample-stage .tube svg{width:146px!important;height:34px!important;filter:drop-shadow(0 0 8px rgba(111,231,255,.32))}
.sample-info h4{margin:0 0 2px}.sample-info b{display:block;margin-bottom:6px}.sample-info small{display:block;color:var(--muted);line-height:1.3}
.jig3d{position:relative;width:150px;height:120px;transform-style:preserve-3d}.jig-top{position:absolute;left:20px;right:20px;bottom:22px;height:28px;border-radius:6px;background:linear-gradient(180deg,#96a3ad,#58636d);box-shadow:0 12px 18px rgba(0,0,0,.22)}.jig-top::before{content:"";position:absolute;left:8px;right:-10px;top:-10px;height:10px;transform:skewX(-38deg);background:linear-gradient(180deg,#cdd4d9,#7d8892)}.jig-top::after{content:"";position:absolute;top:4px;right:-10px;width:10px;bottom:0;transform:skewY(-48deg);background:linear-gradient(180deg,#59636d,#323941)}
.jig-v{position:absolute;bottom:49px;width:40px;height:38px;background:linear-gradient(180deg,#ecf3f8,#b1bcc5)}.jig-v.left{left:34px;clip-path:polygon(0 100%,100% 0,100% 100%)}.jig-v.right{right:34px;clip-path:polygon(0 0,0 100%,100% 100%)}
.jig-pin{position:absolute;bottom:48px;width:8px;height:28px;border-radius:999px;background:linear-gradient(180deg,#f7fbfd,#94a1a9);box-shadow:0 0 0 1px rgba(0,0,0,.08)}.jig-pin.p1{left:36px}.jig-pin.p2{left:70px}.jig-pin.p3{right:36px}.jig-label{position:absolute;left:44px;top:8px;padding:3px 9px;border-radius:999px;background:rgba(12,20,28,.88);border:1px solid rgba(255,255,255,.08);font-size:.75rem}.jig3d.active{filter:drop-shadow(0 0 14px rgba(255,207,56,.42))}
.jig-card3d{display:grid;justify-items:center;gap:10px}.jig-meta{display:grid;gap:4px}.jig-meta small{color:var(--muted);line-height:1.3}
.report-content{grid-template-columns:1.1fr .9fr}
@media(max-width:1700px){.lower-grid.triple{grid-template-columns:1fr}.samples-grid,.jigs-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1200px){.station-grid,.lower-grid.triple,.hmi-body,.hmi-visuals,.samples-grid,.jigs-grid{grid-template-columns:1fr}.scene-viewport{height:980px}.station-frame{transform:scale(.86);transform-origin:top left}.tube-rack{transform:scale(.82);transform-origin:top left}}
