:root{--bg:#edf1e9;--surface:rgba(250,252,248,.97);--ink:#18372a;--muted:#627b6d;--line:rgba(29,62,43,.16);--accent:#d0e848;--solid:#244939;--radius:22px;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}
:root[data-theme=dark]{--bg:#0a1913;--surface:rgba(15,35,26,.97);--ink:#edf2e7;--muted:#a2b6a7;--line:rgba(211,231,195,.16);--solid:#c8e43f}
*{box-sizing:border-box}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:10px 16px;transition:background .18s,border-color .18s}button:hover{border-color:var(--solid)}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #8bb857;outline-offset:3px}[hidden]{display:none!important}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}
.factory-header{height:74px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-bottom:1px solid var(--line);gap:16px;background:var(--surface)}.brand{display:flex;align-items:center;gap:11px;font-size:17px;font-weight:650;white-space:nowrap}.brand img{width:41px;height:41px}.brand small{display:block;font:9px/1.8 ui-monospace,monospace;letter-spacing:.15em;color:var(--muted)}.source-date{font-size:11px;color:var(--muted);white-space:nowrap}.source-date i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#87ad51;margin-right:7px}.quiet{border:0;background:transparent;font-size:12px;padding:8px}
.stage{position:relative;height:calc(100dvh - 74px);min-height:440px;overflow:hidden;isolation:isolate}#viewport{position:absolute;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}.scene-heading{position:absolute;left:28px;top:76px;pointer-events:none;transition:opacity .2s}.scene-heading p,.eyebrow{font:10px/1.7 ui-monospace,monospace;letter-spacing:.12em;color:var(--muted)}.scene-heading h1{font-size:clamp(22px,2.5vw,38px);line-height:1.35;margin:12px 0;font-weight:550;letter-spacing:.02em}.scene-heading span{font-size:12px;color:var(--muted)}.stage.has-selection .scene-heading{opacity:0}.view-tabs{position:absolute;left:50%;top:18px;transform:translateX(-50%);display:flex;background:var(--surface);padding:4px;border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap}.view-tabs button{font-size:12px;padding:9px 17px;border:0;background:transparent}.view-tabs button[aria-pressed=true]{background:var(--accent);color:#233518}.catalog-toggle{position:absolute;top:20px;left:24px;font-size:12px;padding:12px 15px;display:flex;gap:12px}.catalog-toggle span{font-family:ui-monospace,monospace;opacity:.55}.panel-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-top button{width:32px;height:32px;font-size:22px;padding:0;background:transparent;border:0;flex-shrink:0}.catalog{position:absolute;z-index:6;left:20px;top:73px;bottom:89px;width:268px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:0 15px 45px #0002}.catalog .panel-top{font-size:14px}.search-label{font-size:0;margin:12px 0}.search-label input{font:12px/1.5 sans-serif;color:var(--ink);padding:10px 14px;width:100%;border:1px solid var(--line);border-radius:var(--radius);background:transparent}#equipment-list{overflow:auto;min-height:0;flex:1}.device-list-button{width:100%;display:flex;gap:10px;text-align:left;padding:11px 8px;border:0;background:transparent;border-radius:var(--radius);margin-bottom:3px;align-items:center}.device-list-button b{font:10px ui-monospace,monospace;color:var(--muted)}.device-list-button span{font-size:12px}.device-list-button small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.device-list-button[aria-pressed=true]{background:var(--accent);color:#20351a}.device-list-button[aria-pressed=true] small{color:#3e5529}.muted{font-size:11px;line-height:1.7;color:var(--muted)}.catalog-note{border-top:1px solid var(--line);padding-top:12px;margin:8px 0 0;font-size:10px}
.hotspots{position:absolute;inset:0;pointer-events:none}.hotspot{position:absolute;padding:0;width:29px;height:29px;border:1px solid rgba(220,230,209,.8);background:#153d2de6;color:#edf5d7;box-shadow:0 3px 12px #0003;pointer-events:auto;font:10px ui-monospace,monospace;transform:translate(-50%,-50%);border-radius:50%}.hotspot[aria-pressed=true]{background:var(--accent);color:#183021;z-index:2;width:34px;height:34px}
.inspector{position:absolute;right:20px;top:74px;bottom:91px;z-index:5;width:294px;overflow:auto;padding:17px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 18px 48px #0003}.inspector h2{font-size:18px;font-weight:600;line-height:1.4;margin:10px 0 5px;word-break:keep-all;overflow-wrap:break-word}.device-model{font:12px/1.5 ui-monospace,monospace;color:var(--muted);margin:0 0 15px}.photo-main{position:relative;display:block;width:100%;padding:0;border:0;overflow:hidden;border-radius:var(--radius)}.photo-main img{width:100%;height:155px;object-fit:cover}.photo-main span{position:absolute;bottom:8px;right:8px;padding:5px 8px;border-radius:var(--radius);color:#f5f7ed;background:#153427c9;font-size:10px}.photo-thumbs{display:flex;gap:7px;margin-top:8px}.photo-thumbs button{padding:0;width:48px;height:36px;overflow:hidden;border-radius:var(--radius);border:2px solid transparent}.photo-thumbs button[aria-pressed=true]{border-color:var(--solid)}.photo-thumbs img{width:100%;height:100%;object-fit:cover}.device-detail{font-size:12px;line-height:1.8;color:var(--muted);margin:12px 0}.dimensions{padding:12px;border:1px solid var(--line);border-radius:var(--radius)}.dimensions div{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.dimensions b{font-weight:400}.dimensions strong{display:block;font:17px/2 ui-monospace,monospace}.dimensions small{color:var(--muted);font-size:10px}.source-lines{display:grid;grid-template-columns:54px 1fr;gap:7px;font-size:10px;line-height:1.6;margin:12px 0}.source-lines dt{color:var(--muted)}.source-lines dd{margin:0}.primary{background:var(--accent)!important;color:#213219!important;border-color:transparent!important}.inspector .primary{width:100%;font-size:12px}
.scene-tools{position:absolute;z-index:7;left:50%;bottom:38px;transform:translateX(-50%);display:flex;align-items:center;gap:3px;padding:5px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:0 8px 22px #0002;white-space:nowrap}.scene-tools button{font-size:11px;padding:11px 13px;border:0;background:transparent}.scene-tools button[aria-pressed=true]:not(.primary){background:var(--bg)}.tool-divider{height:19px;width:1px;background:var(--line);margin:0 3px}.stage-foot{position:absolute;bottom:12px;left:24px;right:24px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted);gap:12px;pointer-events:none}.load-notice{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:20px 26px;z-index:10;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);font-size:13px;max-width:80%;text-align:center}.load-notice button{display:block;margin:12px auto 0}.process-panel{position:absolute;left:50%;transform:translateX(-50%);bottom:102px;z-index:4;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 20px;max-width:95%;text-align:center}.process-panel>span{font-size:10px;color:var(--muted)}#process-steps{display:flex;gap:12px;margin-top:10px;font-size:11px;white-space:nowrap}#process-steps span{opacity:.48}#process-steps .active{opacity:1;color:var(--solid);font-weight:650}
.photo-gallery{position:absolute;inset:73px 24px 92px;background:var(--bg);overflow:auto;z-index:3;padding:12px 0}.photo-gallery h2{margin:5px 0 18px;font-size:26px}.photo-gallery .eyebrow{margin:0}#gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}#gallery-grid button{padding:0;overflow:hidden;text-align:left;border-radius:var(--radius)}#gallery-grid img{width:100%;aspect-ratio:1.5;object-fit:cover}#gallery-grid span{display:block;font-size:11px;padding:13px}.stage.is-photos .scene-heading,.stage.is-photos .catalog-toggle,.stage.is-photos .scene-tools{display:none}
dialog{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:28px;width:min(640px,94vw);max-height:90dvh;box-shadow:0 20px 90px #0005}dialog::backdrop{background:#03110bc9;backdrop-filter:blur(5px)}dialog h2{font-size:25px;margin:12px 0 20px}dialog p,dialog li{font-size:13px;line-height:1.9}dialog li{margin:10px 0}dialog ul{padding-left:20px}.dialog-close{position:absolute;top:9px;right:9px;background:var(--surface);font-size:22px;width:38px;height:38px;padding:0;z-index:2}#photo-dialog{width:90vw;padding:12px}#full-photo{width:100%;height:72dvh;object-fit:contain}#full-caption{margin:12px;text-align:center;color:var(--muted);font-size:12px}
@media(max-width:960px){.source-date{display:none}.view-tabs{left:auto;right:20px;transform:none}.scene-heading{top:93px}.inspector{width:255px}.photo-main img{height:120px}.inspector h2{font-size:16px}.scene-tools button{padding:10px 10px}.stage-foot #status{max-width:66%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#gallery-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.factory-header{height:62px;padding:0 14px}.brand{font-size:14px;gap:8px}.brand img{width:33px;height:33px}.brand small{font-size:8px}.quiet{font-size:10px}.stage{height:calc(100dvh - 62px);min-height:460px}.view-tabs{right:10px;top:12px}.view-tabs button{font-size:10px;padding:9px 10px}.catalog-toggle{left:10px;top:14px;font-size:10px;padding:10px 11px}.catalog-toggle span{display:none}.scene-heading{left:18px;top:74px}.scene-heading h1{font-size:23px}.scene-heading p{font-size:8px}.scene-heading span{font-size:10px}.catalog{left:10px;top:65px;width:250px;bottom:83px}.scene-tools{bottom:35px;width:calc(100% - 20px);justify-content:space-between;gap:0;padding:4px}.scene-tools button{font-size:10px;padding:10px 9px}.tool-divider{margin:0;width:1px}.stage-foot{left:14px;right:14px;font-size:9px;bottom:10px}.stage-foot #scale-note{display:none}.stage-foot #status{max-width:100%}.inspector{top:auto;bottom:84px;left:10px;right:10px;width:auto;max-height:42%;padding:12px 15px}.inspector .photo-main{width:35%;float:right;margin:0 0 10px 10px}.inspector .photo-main img{height:90px}.inspector .photo-thumbs{display:none}.inspector .source-lines{clear:both}.inspector h2{font-size:16px;margin:2px 0}.inspector .dimensions{max-width:61%;padding:8px 10px}.dimensions strong{font-size:12px}.dimensions div{font-size:9px}.dimensions b{display:none}.device-detail{font-size:10px;margin:7px 0}.device-model{margin:2px 0 9px;font-size:11px}.dimensions small{font-size:9px}.inspector .panel-top{height:22px}.process-panel{bottom:88px;max-width:calc(100% - 20px);padding:12px 10px}#process-steps{gap:8px;font-size:9px}.stage.is-playing .inspector{display:none}.photo-gallery{inset:65px 14px 40px}#gallery-grid{gap:10px}#gallery-grid span{padding:10px;font-size:10px}dialog{padding:24px}.hotspot{width:25px;height:25px;font-size:9px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.dimensions strong{white-space:nowrap}
@media(min-width:561px) and (max-width:960px){.dimensions strong{font-size:14px}}
