:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#d5e2eb;background:#081421;font-synthesis:none;--panel:#0d1d2c;--border:rgba(182,211,229,.12);--muted:#718ca0;--teal:#6ddbc3;--amber:#ead09f}*{box-sizing:border-box}html,body{height:100%;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--teal);outline-offset:3px}#app{min-height:100vh;display:flex;flex-direction:column}.topbar{height:69px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 26px;background:#081521;border-bottom:1px solid var(--border);flex:none}.brand{display:flex;gap:13px;align-items:center}.brand-icon{width:43px;height:43px;display:grid;place-items:center;color:#071b25;background:var(--teal);font-weight:900;letter-spacing:-2px;font-size:13px;clip-path:polygon(50% 0,100% 26%,100% 75%,50% 100%,0 75%,0 26%)}.brand-icon span{opacity:.3}.brand-text{display:flex;flex-direction:column;gap:2px}.brand-text strong{font-weight:850;font-size:16px;letter-spacing:.12em;color:#ecf6fa}.brand-text em{font-style:normal;color:var(--teal);font-weight:500}.brand-text small{font-size:8px;letter-spacing:.2em;color:#7e97aa}.top-center{display:flex;align-items:center;gap:8px;color:#819aab;font-size:9px;letter-spacing:.17em}.signal,.live-chip>span{width:6px;height:6px;background:#6ee6bc;display:inline-block;border-radius:50%;box-shadow:0 0 12px #4cce8b}.top-actions{display:flex;gap:7px}.small-button{border:1px solid #2d4556;background:#132535;color:#dae9f1;border-radius:6px;padding:9px 12px;font-size:10px;font-weight:700;letter-spacing:.1em}.help-btn{font-size:15px;padding:6px 12px}.workspace{flex:1;display:grid;grid-template-columns:minmax(235px,270px) minmax(300px,1fr) minmax(248px,285px);min-height:610px;height:calc(100vh - 103px)}.sidebar{background:var(--panel);padding:25px 22px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#344d61 transparent}.left{border-right:1px solid var(--border)}.right{border-left:1px solid var(--border)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.eyebrow{color:var(--teal);font-size:9px;font-weight:800;letter-spacing:.16em}.pill{background:#183d40;border:1px solid #2c5a58;color:#8ce1d1;font-size:8px;border-radius:20px;padding:4px 7px;letter-spacing:.08em}.sidebar h2{font-size:19px;font-weight:650;line-height:1.3;color:#f4f9fc;margin:14px 0 26px;letter-spacing:-.045em}.field{margin-bottom:23px}.field>label,.range-label label{color:#b0c3d1;font-size:11px;font-weight:600}.field select{display:block;width:100%;margin-top:10px;background:#152b3d;border:1px solid #355068;color:#edf6fc;border-radius:6px;padding:12px 10px;font-size:11px;min-width:0}.range-label{display:flex;justify-content:space-between;gap:5px;align-items:center}.range-label output{color:#91ead6;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.field input[type=range]{width:100%;accent-color:#72dcc5;margin:16px 0 6px;height:3px;cursor:pointer}.minmax{display:flex;justify-content:space-between;font-size:8px;letter-spacing:.08em;color:#627e93}.separator{height:1px;background:var(--border);margin:25px 0}.camera-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:15px 0 21px}.camera{border:1px solid #2a4355;background:#142738;border-radius:7px;color:#829db0;padding:12px 1px 9px;font-size:10px}.camera.active{background:#1a3c43;border-color:#4c9a8b;color:#c2ffef}.cam-symbol{font-size:20px;display:block;margin-bottom:6px}.toggle-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;color:#b4c7d3;font-size:11px;gap:8px}.toggle-row input{appearance:none;width:30px;height:17px;background:#31465b;border-radius:12px;border:1px solid #4c6472;position:relative;flex:none;cursor:pointer;transition:background .18s}.toggle-row input:after{content:"";position:absolute;left:2px;top:2px;width:11px;height:11px;background:#90a9ba;border-radius:50%;transition:transform .18s}.toggle-row input:checked{background:#235e59;border-color:#6cd7b7}.toggle-row input:checked:after{background:#9dfce6;transform:translateX(12px)}.reset-button{width:100%;background:transparent;border:1px solid #3b6570;color:#a8f1df;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.12em;padding:13px 9px;margin-top:20px}.reset-button span:first-child{font-size:16px;margin-right:5px}.aside-note{font-size:10px;color:#7791a4;line-height:1.8;margin:18px 0}.viewport-wrap{position:relative;min-width:0;overflow:hidden;background:linear-gradient(#7592a3,#d8dfe0)}#scene{width:100%;height:100%;display:block;outline:none;touch-action:none;cursor:grab}#scene:active{cursor:grabbing}.viewport-top-left{position:absolute;top:24px;left:28px;pointer-events:none;text-shadow:0 1px 6px rgba(10,22,28,.28)}.location{font-size:9px;font-weight:750;letter-spacing:.2em;color:#fff}.location span{color:#b8fff1;margin:0 4px}.scene-title{color:#fff;font-size:clamp(23px,3vw,43px);letter-spacing:-.065em;font-weight:750;margin-top:13px;line-height:1}.scene-title span{color:#96ead4}.scene-subtitle{color:#e1f0ed;margin-top:8px;font-size:12px}.viewport-top-right{position:absolute;right:20px;top:24px;display:flex;flex-direction:column;align-items:flex-end;gap:15px;pointer-events:none}.north-marker{color:#fff;display:flex;flex-direction:column;align-items:center;text-shadow:0 1px 8px #143146;line-height:1}.north-marker span{font-size:11px;font-weight:800}.north-marker i{font-size:26px;font-style:normal}.live-chip{color:#d8faed;background:rgba(6,26,35,.51);border:1px solid rgba(222,245,245,.25);padding:10px 11px;border-radius:4px;display:flex;align-items:center;gap:9px;font-weight:700;font-size:9px;letter-spacing:.08em;backdrop-filter:blur(10px)}.viewport-bottom{position:absolute;bottom:22px;left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}.hint{background:rgba(8,29,39,.64);border:1px solid rgba(221,238,244,.19);border-radius:5px;padding:11px 13px;font-size:8px;font-weight:650;letter-spacing:.1em;color:#e9f5f5;backdrop-filter:blur(5px)}.dot{margin:0 7px;color:#91d9c8}.mouse-icon{font-size:13px;color:#8af0dc}.viewport-tools{display:flex;gap:5px;pointer-events:auto}.viewport-tools button{width:34px;height:34px;background:#132d3eac;color:#f0f7f5;border:1px solid #b0ccd577;border-radius:5px;font-size:19px;backdrop-filter:blur(7px)}.hotspot-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.hotspot{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:27px;height:27px;border-radius:50%;border:1px solid #d5fff2;background:#093a49dd;color:#e8fff5;font-size:10px;font-weight:800;box-shadow:0 0 0 5px #0a324044,0 3px 10px #041c24a1;transition:background .2s,scale .2s}.hotspot:hover,.hotspot:focus-visible{background:#288c87;scale:1.12}.hotspot.selected{background:#5bd5b7;color:#09252f}.metric-large{background:linear-gradient(135deg,#122d3c,#102435);border:1px solid #2a4657;border-radius:8px;padding:18px 17px 12px}.metric-large>span,.mini-metric>span:first-child{font-size:9px;letter-spacing:.13em;color:#8fa9bb;font-weight:700}.metric-large>strong{display:block;font-size:44px;color:#eef9ff;line-height:1.6;letter-spacing:-.07em;font-weight:600;font-variant-numeric:tabular-nums}.metric-large strong span{color:#83d8cf;font-size:20px;font-weight:500;margin-left:4px}.metric-bottom{border-top:1px solid #2c475a;padding-top:9px;display:flex;justify-content:space-between;gap:8px;font-size:8px;letter-spacing:.09em;color:#7290a5}.metric-bottom span:last-child{color:#c3dacd}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}.mini-metric{background:#122a3b;border:1px solid #274254;padding:15px 12px 12px;border-radius:7px;min-height:106px}.mini-metric>span:first-child{font-size:8px;display:block}.mini-metric strong{color:#f0f8f9;font-weight:600;font-size:25px;letter-spacing:-.05em;display:block;margin-top:10px;white-space:nowrap}.mini-metric strong small{font-size:11px;font-weight:400;color:#9bb9c1}.small-value{display:block!important;font-size:8px;color:#76b9ac;margin-top:8px;letter-spacing:.06em;white-space:nowrap}.wind-card{margin-top:20px}.wind-card-head{display:flex;justify-content:space-between;font-size:9px;font-weight:750;letter-spacing:.08em;color:#b6cad4}.wind-card-head span:last-child{color:#81e8c8}.wind-track{height:5px;background:#25394b;margin:12px 0 10px;border-radius:6px;overflow:hidden}.wind-track>span{display:block;width:27%;height:100%;background:linear-gradient(90deg,#318f9d,#9aefcb);border-radius:6px;transition:width .2s}.wind-card small{color:#6d899c;font-size:9px;line-height:1.6}.live-dot{color:#72dfbd;text-shadow:0 0 12px #42c791;font-size:10px}.note-index{color:#7597aa;font-size:9px;letter-spacing:.12em}.right .separator{margin-top:27px}.right #noteTitle{margin:16px 0 13px;font-size:20px}.note-body{font-size:11px;color:#9ab5c5;line-height:1.9;min-height:105px}.note-actions{display:flex;gap:8px}.note-actions button{border:1px solid #3d5d6b;color:#b6e9dc;background:#162e3e;border-radius:5px;width:39px;height:32px;font-size:16px}.heritage-foot{margin-top:22px;padding-top:20px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:7px;font-size:8px;letter-spacing:.13em;color:#627f91}.footer{height:34px;flex:none;background:#08131f;border-top:1px solid #192e3e;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 25px;color:#5d7b8d;font-size:8px;font-weight:750;letter-spacing:.11em}.footer b{color:#58bca9;font-weight:500}.loading{position:absolute;inset:0;background:rgba(10,23,34,.8);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:#9af2dd;font-weight:750;font-size:10px;letter-spacing:.18em;z-index:3}.loading[hidden],.scene-error[hidden]{display:none}.loading-spinner{width:40px;height:40px;border:2px solid #1f4d5a;border-top-color:#81e3d0;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scene-error{position:absolute;inset:20%;background:#121e2de8;border:1px solid #e29e88;color:#fff;padding:22px;border-radius:9px;text-align:center;z-index:4}.note-actions button:hover,.reset-button:hover,.small-button:hover,.viewport-tools button:hover{background:#24505b}dialog{border:1px solid #406271;background:#0f2433;color:#d4e9ef;max-width:460px;max-height:90vh;border-radius:12px;padding:27px;box-shadow:0 25px 120px #0009}dialog::backdrop{background:#04121bba;backdrop-filter:blur(5px)}dialog p{font-size:13px;line-height:1.8;color:#a7c0ce}.modal-head{display:flex;justify-content:space-between;align-items:start}.modal-head h2{margin:9px 0}.modal-head button{background:transparent;color:#dff;border:0;font-size:18px}.help-disclaimer{border-top:1px solid #345061;padding-top:15px;font-size:11px!important;color:#7e9db0!important}kbd{font-family:monospace;background:#31495c;padding:2px 5px;border-radius:3px}@media(max-width:1140px){.workspace{grid-template-columns:226px minmax(320px,1fr) 244px}.sidebar{padding:22px 14px}.top-center{display:none}.hint{font-size:7px}}@media(max-width:900px){.workspace{display:grid;grid-template-columns:minmax(0,1fr);height:auto;min-height:0}.viewport-wrap{height:min(70vh,690px);min-height:410px;grid-row:1}.sidebar{overflow:visible;border:0}.sidebar.left{grid-row:2}.sidebar.right{grid-row:3}.sidebar .field{max-width:850px}.camera-grid{max-width:480px}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.note-body{min-height:0}.footer{flex-wrap:wrap;justify-content:center;min-height:38px;height:auto;padding:12px;gap:9px 22px}}@media(max-width:590px){.topbar{padding:0 14px;height:61px}.brand-text strong{font-size:13px}.brand-text small{font-size:7px}.top-actions .small-button{padding:7px}.viewport-wrap{height:57vh;min-height:360px}.viewport-top-left{top:17px;left:15px}.viewport-top-right{right:13px;top:16px}.scene-title{font-size:28px}.location{font-size:7px;letter-spacing:.07em}.scene-subtitle{font-size:10px}.live-chip{font-size:7px}.viewport-bottom{bottom:10px;left:10px;right:10px}.hint{font-size:0;padding:8px 9px}.hint .mouse-icon{font-size:14px}.viewport-tools button{width:31px;height:31px}.sidebar{padding:23px 19px}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.footer{font-size:7px}.footer span:nth-child(2){display:none}}
