:root{color:#203d43;font-synthesis:none;--ink:#19383e;--muted:#788887;--teal:#146b62;--lime:#d8ed91;--line:#e3e9e3;--paper:#fbfcf8;background:#e5ebe6;font-family:Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.46}button:focus-visible,a:focus-visible{outline-offset:4px;outline:3px solid #288fcb}a{color:inherit;text-decoration:none}button,dialog{border:0}button .icon{flex-shrink:0}.icon{vertical-align:middle;width:20px;height:20px}button{transition:background .16s,box-shadow .16s,transform .16s}button:not(:disabled):active{transform:translateY(1px)}[hidden]{display:none!important}.app-header{background:var(--paper);z-index:10;border-bottom:1px solid #dbe3dc;justify-content:space-between;align-items:center;gap:25px;height:88px;padding:0 30px;display:flex;position:relative}.brand{align-items:center;gap:12px;display:flex}.brand-mark{background:var(--ink);width:43px;height:43px;color:var(--lime);border-radius:12px;place-items:center;display:grid;transform:rotate(-5deg)}.brand-mark .icon{width:26px;height:26px}.brand b{letter-spacing:-1.3px;font-size:25px;font-weight:800;line-height:1.1;display:block}.brand-dot{color:#388b6b}.brand small{letter-spacing:2px;color:#71817f;margin-top:5px;font-size:9px;font-weight:650;display:block}.header-course{align-items:center;gap:12px;font-size:14px;font-weight:600;display:flex}.course-index{color:#758a81;border:1px solid #dbe4db;border-radius:50%;place-items:center;width:34px;height:34px;font-size:12px;display:grid}.header-course small{letter-spacing:1.3px;color:var(--muted);margin-top:5px;font-size:8px;font-weight:500;display:block}.header-actions{align-items:center;gap:17px;display:flex}.prototype-badge{white-space:nowrap;background:#eaf0e7;border-radius:6px;padding:8px 11px;font-size:11px}.prototype-badge i,#save-status i{vertical-align:middle;background:#3c926c;border-radius:50%;width:5px;height:5px;margin-right:6px;display:inline-block}.plain-button,.icon-button{background:0 0;border-radius:7px;justify-content:center;align-items:center;gap:7px;padding:8px;font-size:12px;display:flex}.plain-button:hover,.icon-button:hover{background:#e8eee6}.icon-button{width:34px;height:34px}.icon-button.small{width:24px;height:24px;padding:3px}.icon-button.small .icon{width:16px;height:16px}#game{height:calc(100dvh - 132px);min-height:400px;position:relative;overflow:hidden}#viewport{position:absolute;inset:0}canvas{outline:none;width:100%;height:100%;display:block}.world-markers{pointer-events:none;position:absolute;inset:0;overflow:hidden}.hotspot,.port-hotspot{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;pointer-events:auto;background:#fbfcf5eb;border:1px solid #ffffffb8;border-radius:8px;align-items:center;gap:9px;padding:7px 10px 7px 7px;font-size:11px;font-weight:600;display:flex;position:absolute;top:0;left:0;box-shadow:0 4px 14px #233c3a15}.hotspot:after,.port-hotspot:after{content:"";opacity:.5;background:#6f8787;width:1px;height:20px;position:absolute;top:100%;left:50%}.hotspot-number{color:#778782;background:#e9eee7;border-radius:4px;padding:6px 5px;font-size:9px;font-weight:700}.hotspot-arrow{color:#94a29b;font-size:13px}.hotspot.active{background:var(--ink);color:#fff;border-color:var(--ink);z-index:2;box-shadow:0 5px 18px #19383e30}.hotspot.active .hotspot-number{background:var(--lime);color:var(--ink)}.hotspot.active .hotspot-arrow{color:var(--lime)}.hotspot:hover{box-shadow:0 5px 20px #19383e35}.port-hotspot{background:var(--ink);color:#fff;border-color:var(--ink);z-index:3;padding:10px 14px}.port-hotspot span{color:var(--lime);font-size:18px}.port-hotspot.selected{background:var(--teal)}.mission-card,.detail-panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:4;background:#fbfcf8f7;border:1px solid #ffffffb8;border-radius:14px;padding:24px;position:absolute;box-shadow:0 7px 28px #1a393b09}.mission-card{width:265px;top:24px;left:24px}.card-topline{justify-content:space-between;align-items:center;gap:8px;min-height:22px;display:flex}.eyebrow{letter-spacing:1.65px;color:#71827d;font-size:9px;font-weight:700;line-height:1.5}.level-chip{letter-spacing:.8px;color:#5b725e;background:#e8eee4;border-radius:4px;padding:4px 6px;font-size:7px;font-weight:700}h2{letter-spacing:-.9px;margin:14px 0 10px;font-size:25px;font-weight:650;line-height:1.2}h2 span{color:var(--teal)}.card-description{color:#788783;margin:0 0 22px;font-size:12px;line-height:1.75}.progress-label{color:#7c8c86;justify-content:space-between;align-items:center;font-size:10px;display:flex}.progress-label strong{color:var(--ink);font-size:11px}.progress-track{background:#e6ece2;border-radius:3px;height:4px;margin:9px 0 21px;overflow:hidden}.progress-track i{background:#568d68;border-radius:3px;height:100%;transition:width .35s;display:block}.mission-steps{margin:0;padding:0;list-style:none}.mission-steps li{color:#92a098;border-bottom:1px solid #eaf0e8;align-items:center;gap:10px;min-height:47px;padding:12px 0;font-size:12px;display:flex;position:relative}.mission-steps li:last-child{border:0}.step-dot{border:1px solid #d9e2d9;border-radius:50%;flex-shrink:0;place-items:center;width:23px;height:23px;font-size:8px;font-weight:650;display:grid}.step-dot .icon{width:14px;height:14px}.mission-steps .current{color:var(--ink);font-weight:650}.current .step-dot{background:var(--lime);border-color:var(--lime)}.mission-steps small{letter-spacing:1px;color:#7b8c76;margin-top:5px;font-size:6.5px;font-weight:600;display:block}.step-arrow{color:#5d8067;margin-left:auto;font-size:14px}.mission-steps .done{color:#417b61}.done .step-dot{background:#e5efdf;border-color:#e5efdf}.mission-note{border-top:1px solid var(--line);color:#8a9890;align-items:center;gap:10px;margin-top:17px;padding-top:16px;font-size:10px;line-height:1.7;display:flex}.mission-note .icon{color:#799479;flex-shrink:0;width:17px;height:17px}.detail-panel{scrollbar-width:thin;scrollbar-color:#cdd8ca transparent;width:304px;max-height:calc(100% - 98px);top:24px;right:24px;overflow-y:auto}.detail-panel h2{margin:15px 0 20px;font-size:28px;line-height:1.18}.detail-panel>p{color:#788781;font-size:12px;line-height:1.85}.mentor{border-top:1px solid var(--line);border-bottom:1px solid var(--line);align-items:center;gap:10px;margin:20px 0;padding:15px 0;display:flex}.mentor-avatar{color:#5b7b58;background:#e8eddc;border-radius:9px;place-items:center;width:35px;height:35px;display:grid}.mentor b{font-size:10px;font-weight:600;display:block}.mentor small{color:#87958d;margin-top:4px;font-size:8px;display:block}.intro-facts{gap:20px;margin:24px 0;display:flex}.intro-facts span{color:#8a988e;font-size:8px}.intro-facts b{letter-spacing:-1px;color:var(--ink);margin-bottom:5px;font-size:23px;font-weight:500;display:block}.primary-button,.secondary-button{border-radius:7px;justify-content:space-between;align-items:center;gap:12px;min-height:43px;padding:13px 15px;font-size:11px;font-weight:600;display:flex}.primary-button{background:var(--ink);color:#f9fcf4;width:100%}.primary-button .icon{color:var(--lime);width:17px;height:17px}.primary-button:hover:not(:disabled){background:#285751}.secondary-button{color:#486450;background:#eaf0e5;justify-content:center}.secondary-button:hover:not(:disabled){background:#dfe8d7}.secondary-button .icon{width:16px;height:16px}.full{width:100%}.text-button{color:#6a8173;background:0 0;padding:13px 0;font-size:11px}.text-button:hover{color:#174c3a}.detail-panel .panel-footnote{color:#98a397;margin:14px 0 0;font-size:9px;line-height:1.8}.tiny-dot{background:#95b281;border-radius:50%;width:6px;height:6px}.scene-caption{pointer-events:none;color:#547366;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:26px;left:27px}.scene-caption .eyebrow{color:#6d8878;font-size:8px}.scene-caption strong{letter-spacing:-.5px;color:#355d4e;font-size:20px;font-weight:500}.scene-caption>span:last-child{color:#7b9283;font-size:10px}.overview-button{color:#6c8675;z-index:3;background:#fbfcf4bf;border:1px solid #ffffff7a;border-radius:7px;align-items:center;gap:7px;padding:9px 12px;font-size:10px;display:flex;position:absolute;bottom:26px;right:27px}.overview-button span{font-size:19px;line-height:1}.overview-button:hover{background:#fbfcf8}.context-action{background:var(--ink);color:#fff;z-index:5;border-radius:9px;align-items:center;gap:12px;padding:9px 16px 9px 9px;font-size:12px;display:flex;position:absolute;bottom:29px;left:50%;transform:translate(-50%);box-shadow:0 5px 20px #183e3c25}.context-action kbd{background:var(--lime);color:var(--ink);border:0;padding:6px 9px;font-size:12px}.context-action .icon{width:17px;height:17px;color:var(--lime)}.context-action:not(:disabled):active{transform:translate(-50%)translateY(1px)}.toast{background:var(--ink);color:#f2f8ec;z-index:15;pointer-events:none;border-radius:9px;max-width:min(500px,80%);padding:13px 20px;font-size:12px;line-height:1.6;position:absolute;bottom:88px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #183e3c25}.toast.error{background:#7d4935}.app-footer{background:var(--paper);color:#86978b;border-top:1px solid #dce4dc;justify-content:space-between;align-items:center;gap:20px;height:44px;padding:0 27px;font-size:9px;display:flex}.controls-hint{align-items:center;gap:20px;display:flex}.controls-hint>span{align-items:center;gap:5px;display:flex}kbd{font:inherit;color:#6b7c6c;background:#f2f5ef;border:1px solid #dce4da;border-radius:3px;place-items:center;min-width:16px;height:18px;font-size:8px;font-weight:600;display:inline-grid}.controls-hint b{font-size:16px;font-weight:400}.controls-hint span:first-child{gap:3px}#save-status{white-space:nowrap;letter-spacing:.2px;font-size:8px}#save-status i.offline{background:#a4843b}.loading-screen{z-index:20;text-align:center;background:#edf1e8;flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0}.loader-symbol{background:var(--ink);color:var(--lime);border-radius:21px;place-items:center;width:72px;height:72px;margin-bottom:24px;display:grid;transform:rotate(-5deg)}.loader-symbol .icon{width:38px;height:38px}.loading-screen h1{letter-spacing:-1px;font-size:30px;font-weight:550}.loading-screen h1 span{color:#6d9960}.loading-screen p{color:#84937f;max-width:440px;font-size:13px;line-height:1.8}.loading-screen>small{color:#8b9d86;letter-spacing:2px;margin-top:45px;font-size:9px}.loading-screen>.primary-button{max-width:220px;margin-top:20px}.loading-track{background:#dce6d4;width:180px;height:3px;margin:24px 0 0;overflow:hidden}.loading-track i{background:#91ac78;width:45%;height:100%;animation:1.3s ease-in-out infinite loading;display:block}@keyframes loading{0%{transform:translate(-100%)}to{transform:translate(325%)}}.parts-card{flex-direction:column;width:258px;max-height:calc(100% - 104px);padding:19px 18px;display:flex}.parts-card h2{margin-bottom:8px;font-size:24px}.parts-card .card-description{margin-bottom:14px;font-size:10px;line-height:1.6}.counter{color:#6d8a6c;background:#e9f0e2;border-radius:4px;padding:4px 6px;font-size:9px}.parts-list{scrollbar-width:thin;scrollbar-color:#d3ddca transparent;overscroll-behavior:contain;min-height:80px;padding-right:3px;overflow-y:auto}.part-button{text-align:left;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #e3e9de;border-radius:7px;align-items:center;gap:9px;width:100%;margin-bottom:6px;padding:8px 7px;font-size:10px;display:flex}.part-button.selected{background:#eef4e4;border-color:#a5bb8c}.part-button:not(:disabled):hover{background:#eef4e4;border-color:#90ac7a}.part-symbol{color:#74896b;letter-spacing:-.3px;background:#e8eee3;border-radius:5px;place-items:center;width:31px;min-width:31px;height:31px;font-size:8px;font-weight:700;display:grid}.part-button small{color:#8b9a85;margin-top:3px;font-size:8px;display:block}.part-status{color:#9eac95;flex-shrink:0;margin-left:auto;font-size:15px}.part-status .icon{width:15px;height:15px}.part-button.installed{opacity:.55;border-color:#0000}.back-button{text-align:left;border-top:1px solid var(--line);flex-shrink:0;margin-top:8px;padding-bottom:1px}.assembly-illustration{background:radial-gradient(#dee9d3,#0000 68%);flex-direction:column;justify-content:center;align-items:center;gap:10px;height:120px;margin:0 -5px 20px;display:flex}.assembly-illustration>span{color:#6a8a59;background:#e5eddb;border:1px solid #d9e3ce;border-radius:15px;place-items:center;width:62px;height:62px;display:grid;transform:rotate(-8deg)}.assembly-illustration .icon{width:35px;height:35px}.assembly-illustration small{color:#8da17c;letter-spacing:2px;font-size:8px}.detail-panel h3{letter-spacing:-.5px;margin:9px 0 0;font-size:19px;font-weight:550}.detail-panel .part-info{min-height:43px;margin:10px 0 20px;font-size:11px}.assembly-help{align-items:center;gap:12px;margin:21px 0;display:flex}.assembly-help>span{color:#648857;border:1px solid #adc6a0;border-radius:50%;flex-shrink:0;place-items:center;width:27px;height:27px;font-size:20px;display:grid}.assembly-help p{color:#899b80;margin:0;font-size:9px;line-height:1.7}.socket-label{pointer-events:none;z-index:2;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;top:0;left:0}.socket-reticle{color:#365d37;background:#deefbd9e;border:1px solid #537c51;border-radius:50%;place-items:center;width:42px;height:42px;font-size:25px;font-weight:300;display:grid;box-shadow:0 0 0 5px #c2df9e30}.socket-label>span:last-child{color:#ecf4e4;white-space:nowrap;background:#24483eeb;border-radius:5px;order:-1;padding:6px 10px;font-size:9px}.socket-label{margin-top:21px}.inventory-list{scrollbar-width:thin;scrollbar-color:#d1ddc8 transparent;max-height:310px;margin:12px 0 16px;overflow-y:auto}.inventory-item{text-align:left;background:0 0;border-bottom:1px solid #e7eddf;align-items:center;gap:9px;width:100%;padding:9px 0;font-size:10px;display:flex}.inventory-item>span:nth-child(2){flex:1}.inventory-item small{color:#91a089;margin-top:3px;font-size:8px;line-height:1.5;display:block}.inventory-item>span:last-child{color:#6f8b5e;padding:0 5px;font-size:17px}.inventory-item.collected{opacity:.7}.panel-inventory>.primary-button{margin-top:9px}.network-device{background:#f1f5eb;border:1px solid #dfe7d8;border-radius:8px;margin-top:20px;padding:14px 10px 12px}.network-device .eyebrow{font-size:7px}.switch-ports{grid-template-columns:repeat(8,1fr);gap:4px;margin:13px 0;display:grid}.port-button{background:#e1e8d8;border:1px solid #0000;border-radius:3px;flex-direction:column;align-items:center;gap:5px;padding:6px 1px;font-size:7px;display:flex}.port-button>span{font-size:16px;line-height:1}.port-button.chosen{background:var(--ink);color:var(--lime)}.port-button.uplink{color:#997e49;background:#e7ddca}.port-button:hover:not(:disabled){border-color:#517a4f}.network-device>small{color:#91a082;font-size:8px}.connection-line{color:#9ba88e;letter-spacing:1px;white-space:nowrap;align-items:center;gap:9px;margin:19px 0;font-size:6px;display:flex}.connection-line i{background:#cedac1;flex:1;height:1px}.connection-line.linked{color:#48806a}.pc-port-button{text-align:left;background:#f3f6ee;border:1px dashed #afbea2;border-radius:7px;align-items:center;gap:9px;width:100%;padding:12px 10px;display:flex}.pc-port-button>.icon{color:#6b8960}.pc-port-button span{flex:1}.pc-port-button b{font-size:10px;font-weight:600}.pc-port-button small{color:#97a68a;margin-top:4px;font-size:7px;display:block}.pc-port-button.linked{opacity:1;border-style:solid;border-color:#afc8a0}.network-tests{margin:20px 0}.test-row{color:#93a08a;align-items:center;gap:9px;margin:13px 0;font-size:10px;display:flex}.test-row>span:first-child{text-align:center;width:18px;font-size:16px}.test-row small{color:#a2ad99;margin-top:4px;font-size:7px;display:block}.test-row.passed{color:#48826a}.test-row.passed small{color:#7f9d8a}.test-row.running{color:#638b53}.test-row.running>span:first-child{animation:1.5s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.success-seal{color:#4f7e42;background:#e2efcf;border:1px solid #b7cea4;border-radius:50%;place-items:center;width:76px;height:76px;margin:24px auto;display:grid}.success-seal .icon{width:35px;height:35px}.result-stats{background:#edf3e6;border-radius:8px;gap:0;margin:22px 0;padding:17px;display:flex}.result-stats span{text-align:center;color:#8b9f80;flex:1;font-size:8px}.result-stats span+span{border-left:1px solid #dbe5d0}.result-stats strong{color:#3d6344;letter-spacing:-1px;margin-bottom:5px;font-size:25px;font-weight:500;display:block}.success-list{color:#698660;margin:18px 0 23px;padding:0;font-size:10px;line-height:2.5;list-style:none}dialog{background:var(--paper);color:var(--ink);border:1px solid #e1e8db;border-radius:16px;width:calc(100% - 40px);max-width:450px;padding:32px;box-shadow:0 20px 80px #19383e30}dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#1c343b55}dialog h2{margin:17px 0;font-size:30px}dialog p{color:#7b8e7d;font-size:12px;line-height:1.9}.dialog-close{position:absolute;top:15px;right:15px}.help-list{counter-reset:help;margin:24px 0;padding:0;list-style:none}.help-list li{counter-increment:help;margin:17px 0;padding-left:34px;font-size:11px;position:relative}.help-list li:before{content:counter(help);color:#5a7a4f;background:#e6efd9;border-radius:50%;place-items:center;width:22px;height:22px;font-size:9px;display:grid;position:absolute;top:0;left:0}.help-list b{margin-bottom:5px;font-size:12px;display:block}.help-list span{color:#81927c;line-height:1.7}.button-row{gap:10px;margin-top:24px;display:flex}.button-row>button{flex:1}@media (min-width:1600px){.mission-card{width:285px;top:32px;left:32px}.detail-panel{width:320px;top:32px;right:32px}.parts-card{width:270px}}@media (max-height:800px){.mission-card{padding:19px}.mission-steps li{min-height:40px;padding:9px 0}.mission-note{margin-top:10px;padding-top:12px}.detail-panel{padding:20px}.detail-panel h2{margin-bottom:15px;font-size:25px}.assembly-illustration{height:75px;margin-bottom:15px}.assembly-illustration>span{border-radius:11px;width:48px;height:48px}.assembly-illustration small{display:none}.assembly-help{margin:16px 0}.inventory-list{max-height:230px}.scene-caption strong{font-size:17px}.parts-card{padding:17px}.app-header{height:76px}#game{height:calc(100dvh - 120px)}.network-tests{margin:12px 0}.test-row{margin:10px 0}}@media (max-width:1100px){.header-course{display:none}.mission-card{width:235px;padding:18px;top:16px;left:16px}.detail-panel{width:275px;padding:19px;top:16px;right:16px}.mission-card h2{font-size:22px}.scene-caption{max-width:240px;left:20px}.scene-caption strong{font-size:17px}.controls-hint{gap:12px}.hotspot{gap:5px;padding:5px;font-size:9px}.hotspot-number{padding:5px 4px;font-size:8px}.assembly-mode .scene-caption{display:none}.parts-card{width:226px}}@media (max-width:760px){.app-header{height:68px;padding:0 15px}.brand b{font-size:21px}.brand small{letter-spacing:1.4px;font-size:7px}.brand-mark{width:35px;height:35px}.brand-mark .icon{width:22px;height:22px}.header-actions{gap:6px}.prototype-badge{padding:7px;font-size:9px}.plain-button span{display:none}.plain-button{padding:5px}.app-footer{height:40px;padding:0 12px}.controls-hint{gap:8px;font-size:8px}.controls-hint>span:nth-child(2),.controls-hint>span:nth-child(3),#save-status{display:none}#game{height:calc(100dvh - 108px)}.mission-card{width:190px;padding:14px;top:12px;left:12px}.mission-card h2{margin:9px 0;font-size:19px}.mission-card .card-description{margin-bottom:12px;font-size:10px}.mission-steps li{gap:7px;min-height:34px;padding:7px 0;font-size:10px}.mission-steps small{display:none}.step-dot{width:20px;height:20px;font-size:7px}.mission-note{display:none}.level-chip{font-size:6px}.eyebrow{letter-spacing:1px;font-size:7px}.progress-track{margin-bottom:9px}.detail-panel{z-index:6;width:260px;max-height:calc(100% - 75px);top:12px;right:12px}.detail-panel h2{font-size:24px}.scene-caption{display:none}.overview-button{font-size:9px;bottom:17px;right:12px}.context-action{font-size:10px;bottom:17px;left:12px;transform:none}.context-action:not(:disabled):active{transform:translateY(1px)}.hotspot{font-size:8px}.hotspot-arrow{display:none}.hotspot-number{font-size:7px}.header-actions .icon-button{width:28px}.parts-card{width:172px;max-height:calc(100% - 73px);padding:12px}.part-button{gap:5px;padding:6px 4px;font-size:8px}.part-symbol{width:26px;min-width:26px;height:26px;font-size:6px}.part-button small{font-size:6px}.part-status{display:none}.parts-card .card-description{font-size:8px}.assembly-mode .detail-panel{width:210px;max-height:200px;padding:12px;top:auto;bottom:65px}.assembly-mode .detail-panel .card-topline,.assembly-mode .detail-panel h2,.assembly-illustration,.assembly-help,.assembly-mode .panel-footnote,.assembly-mode .part-info{display:none}.assembly-mode .detail-panel h3{margin:4px 0 12px;font-size:15px}.assembly-mode .detail-panel>.eyebrow{display:none}.assembly-mode .primary-button,.assembly-mode .secondary-button{min-height:36px;padding:10px;font-size:9px}.assembly-mode .secondary-button{margin-top:6px}.toast{max-width:85%;padding:10px 13px;font-size:10px;bottom:69px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.player-label{pointer-events:none;z-index:3;color:#19383e;letter-spacing:.6px;white-space:nowrap;background:#d8ed91;border:1px solid #f3f9e3;border-radius:5px;padding:5px 8px;font-size:8px;font-weight:750;position:absolute;top:0;left:0;box-shadow:0 2px 8px #19383e20}.player-label:after{content:"";border:3px solid #0000;border-top-color:#d8ed91;margin-left:-3px;position:absolute;top:100%;left:50%}.camera-tools{z-index:5;background:#fbfcf8f2;border:1px solid #dce5d6;border-radius:9px;align-items:center;gap:4px;padding:5px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 18px #19383e12}.camera-tools button{white-space:nowrap;background:0 0;border-radius:5px;padding:8px 10px;font-size:10px}.camera-tools button:hover{background:#e8eee2}.camera-tools button[aria-pressed=true]{color:#d8ed91;background:#19383e}.camera-divider{background:#dce5d6;width:1px;height:18px;margin:0 3px}@media (max-width:760px){.camera-tools{gap:1px;bottom:16px;left:12px;transform:none}.camera-tools button{padding:7px;font-size:9px}.assembly-mode .overview-button{display:none}}.physical-port{pointer-events:auto;color:#264c3d;z-index:3;background:#f6faef;border:1px solid #dce8cc;border-radius:5px;min-width:28px;height:28px;padding:4px;font-size:10px;font-weight:700;position:absolute;top:0;left:0;box-shadow:0 3px 10px #16342c25}.physical-port:after{content:"";background:#5b8c70;width:1px;height:14px;position:absolute;top:100%;left:50%}.physical-port:hover,.physical-port.selected{background:#d8ed91;border-color:#90af67}.physical-port.reserved{color:#926b31;background:#f1e3c3;border-color:#d9ba80}.focus-tabs{flex-wrap:wrap;gap:4px;margin:0 0 15px;display:flex}.focus-tabs button{color:#68805e;background:#e9eee4;border-radius:5px;padding:7px 9px;font-size:8px}.focus-tabs button[aria-pressed=true]{color:#d8ed91;background:#19383e}@media (max-height:800px){.detail-mode .scene-caption{display:none}}.mission-option{text-align:left;width:100%;color:var(--ink);background:#f3f7ef;border:1px solid #dce7d7;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:8px 0;padding:14px 12px;display:flex}.mission-option:hover{background:#e7f0de;border-color:#9cb995}.mission-option b{font-size:12px;display:block}.mission-option small{color:#748b77;margin-top:4px;font-size:10px;line-height:1.5;display:block}.mission-option>span:last-child{white-space:nowrap;color:#66845d;font-size:10px}.panel-intro>.secondary-button{margin-top:8px}#missions-dialog{max-height:90vh;overflow:auto}#game{height:100dvh;min-height:0}.app-header{z-index:10;pointer-events:none;background:0 0;border:0;height:auto;padding:0;position:fixed;top:16px;left:50%;transform:translate(-50%)}.brand,.header-course,.app-footer{display:none}.header-actions{pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbfcf8ed;border:1px solid #fffa;border-radius:10px;gap:3px;padding:4px;box-shadow:0 5px 22px #19383e20}.header-actions .prototype-badge{padding:8px}.header-actions .plain-button{font-size:11px}.header-actions .icon-button{width:30px;height:30px}@media (max-width:760px){#game{height:100dvh}.app-header{top:auto;bottom:12px;left:50%;transform:translate(-50%)}.header-actions{gap:1px}.header-actions .prototype-badge{font-size:9px}.header-actions .plain-button span{display:none}.header-actions .plain-button{padding:7px}.camera-tools{bottom:58px}.overview-button,.context-action{bottom:60px}}.hotspot{transform-origin:bottom;transition:scale .2s,background .2s,box-shadow .2s,border-color .2s;animation:5.2s ease-in-out infinite marker-wiggle}.hotspot:nth-child(2){animation-delay:.7s}.hotspot:nth-child(3){animation-delay:1.4s}.hotspot:nth-child(4){animation-delay:2.1s}.hotspot:hover,.hotspot:focus-visible{scale:1.06;box-shadow:0 8px 24px #19383e42}.hotspot:active{scale:.96}.hotspot.active{animation:5.2s ease-in-out infinite marker-wiggle,3.6s ease-in-out infinite marker-pulse}.hotspot:hover .hotspot-arrow,.hotspot:focus-visible .hotspot-arrow{animation:.7s ease-in-out infinite alternate marker-arrow}.physical-port,.port-hotspot,.primary-button,.secondary-button,.part-button,.inventory-item,.mission-option{transition:scale .18s,background .18s,box-shadow .18s,border-color .18s}.physical-port:hover,.port-hotspot:hover,.primary-button:hover:not(:disabled),.secondary-button:hover:not(:disabled),.part-button:hover:not(:disabled),.inventory-item:hover:not(:disabled),.mission-option:hover{scale:1.025}.physical-port:active,.port-hotspot:active,.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled),.part-button:active:not(:disabled),.inventory-item:active:not(:disabled),.mission-option:active{scale:.98}.detail-panel:not([hidden]),dialog[open]{animation:.24s ease-out panel-appear}@keyframes marker-pulse{0%,70%,to{box-shadow:0 5px 18px #19383e30}78%{box-shadow:0 5px 22px #19383e45,0 0 0 7px #b9de814d}88%{box-shadow:0 5px 18px #19383e30,0 0 0 2px #b9de8120}}@keyframes marker-wiggle{0%,70%,84%,to{translate:0;rotate:0deg}72%{translate:-2px -2px;rotate:-3deg}75%{translate:2px -3px;rotate:3deg}78%{translate:-1px -2px;rotate:-2deg}81%{translate:1px -1px;rotate:1deg}}@keyframes marker-arrow{to{transform:translate(2px,-2px)}}@keyframes panel-appear{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0}}@media (prefers-reduced-motion:reduce){.hotspot,.hotspot.active,.hotspot.active .hotspot-number,.hotspot:hover .hotspot-arrow,.detail-panel,dialog{transition:none!important;animation:none!important}}
