
    :root{--ink:#142727;--muted:#697a76;--line:#d8e3dd;--paper:#f3f6f1;--card:#fbfcf9;--teal:#1d716c;--deep:#102a2c;--coral:#df765b;--green:#43916e}
    *{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}button{font:inherit}button:focus-visible,canvas:focus-visible{outline:3px solid rgba(29,113,108,.35);outline-offset:3px}
    header{height:70px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 26px;border-bottom:1px solid var(--line);background:rgba(249,251,247,.96)}
    .brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;letter-spacing:-.04em}.mark{display:grid;place-items:center;width:31px;height:31px;border-radius:55% 45% 53% 47%;color:#fff;background:var(--teal);font-family:Georgia,serif}.local{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:12px}.dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #deece2}.add{justify-self:end;border:0;border-radius:99px;padding:10px 16px;color:#fff;background:var(--teal);font-size:12px;font-weight:800;cursor:pointer}
    .grid{display:grid;grid-template-columns:230px minmax(460px,1fr);grid-template-rows:minmax(650px,calc(100vh - 70px)) auto;min-height:650px}.side,.engine{min-width:0;background:#f8faf6}.side{grid-row:1/3;position:sticky;top:70px;height:calc(100vh - 70px);align-self:start;display:flex;flex-direction:column;padding:24px 16px 18px;border-right:1px solid var(--line)}
    .cap{display:flex;align-items:center;justify-content:space-between;margin:0 7px 15px}.cap p,.profile>p,.engine-head p,.activity-head p{margin:0;color:#70817d;font-size:9px;font-weight:900;letter-spacing:.17em}.cap span{display:grid;place-items:center;width:22px;height:22px;border-radius:7px;color:var(--teal);background:#e3efea;font-size:10px;font-weight:800}.files{display:flex;flex-direction:column;gap:7px;min-height:94px}.empty-copy{margin:5px 8px;color:#899592;font-size:12px;line-height:1.55}
    .file{position:relative;width:100%;display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;align-items:center;border:1px solid transparent;border-radius:12px;padding:9px;background:transparent;color:inherit;text-align:left;cursor:pointer;overflow:hidden}.file:hover{background:#eef4ef}.file.active{border-color:#d7e3dd;background:#fff;box-shadow:0 8px 24px rgba(39,76,64,.06)}.file-no{display:grid;place-items:center;width:34px;height:38px;border-radius:8px;color:#fff;background:#718987;font-family:Consolas,monospace;font-size:10px}.file.ready .file-no{background:var(--teal)}.file.error .file-no{background:var(--coral)}.file-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.file-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.file-copy small{color:#82908d;font-size:9px;text-transform:capitalize}.file-progress{position:absolute;left:0;bottom:0;height:2px;background:var(--teal)}
    .profile{margin-top:20px;padding:16px 14px 10px;border-top:1px solid var(--line)}.profile dl{margin:12px 0 0}.profile div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #e8eeea;font-size:10px}.profile dt{color:#82908d}.profile dd{margin:0;font-weight:800;text-align:right}.fixture{margin:20px 5px 0;padding:17px;border:1px solid #d9e4de;border-radius:15px;background:radial-gradient(circle at 100% 0,#e0efe7,transparent 48%),#fff}.fixture span{color:#6f817d;font-size:8px;font-weight:900;letter-spacing:.16em}.fixture strong{display:block;margin:10px 0 7px;font-family:Georgia,serif;font-size:19px}.fixture p{margin:0;color:var(--muted);font-size:10px;line-height:1.55}.privacy{margin-top:auto;padding:14px 9px 0;border-top:1px solid var(--line);color:#71817e;font-size:9px;line-height:1.55}.privacy strong{color:var(--teal)}
    .map-col{grid-column:2;grid-row:1;min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding:24px 26px 14px;background:radial-gradient(circle at 18% 0,#e7f0e9 0,transparent 28%),var(--paper)}.map-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;min-height:60px;padding:0 3px 15px}.eyebrow{margin:0 0 6px;color:var(--teal);font-size:9px;font-weight:900;letter-spacing:.17em}.map-head h1{max-width:min(58vw,580px);margin:0;overflow:hidden;font-family:Georgia,serif;font-size:clamp(21px,2.2vw,31px);font-weight:500;letter-spacing:-.035em;text-overflow:ellipsis;white-space:nowrap}.map-actions{display:flex;align-items:center;gap:8px}.layers,.view-switch{display:none;padding:3px;border:1px solid #d7e3dd;border-radius:99px;background:#eaf0ec}.layers.show,.view-switch.show{display:flex}.layers button,.view-switch button{border:0;border-radius:99px;padding:7px 12px;color:#71817e;background:transparent;font-size:10px;font-weight:800;cursor:pointer}.layers button.active,.view-switch button.active{color:var(--ink);background:#fff;box-shadow:0 2px 8px rgba(31,65,57,.08)}
    .stage{min-height:430px;position:relative;overflow:hidden;border:1px solid #d2ded8;border-radius:20px;background-color:#f8faf7;background-image:linear-gradient(#e8eeea 1px,transparent 1px),linear-gradient(90deg,#e8eeea 1px,transparent 1px);background-size:34px 34px;box-shadow:0 14px 42px rgba(39,75,64,.08)}.drop{width:calc(100% - 76px);height:calc(100% - 76px);min-height:340px;position:absolute;inset:38px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1.5px dashed #91aaa4;border-radius:20px;color:inherit;background:rgba(255,255,255,.78);cursor:pointer}.drop:hover{border-color:var(--teal);background:#fff}.drop-icon{display:grid;place-items:center;width:72px;height:72px;margin-bottom:22px;border:1px solid #bfd0ca;border-radius:50%;color:var(--teal);background:#edf4ef;box-shadow:0 0 0 10px rgba(230,239,233,.75);font-size:28px}.drop strong{margin-bottom:7px;font-family:Georgia,serif;font-size:clamp(20px,2vw,27px);font-weight:500}.drop p{margin:0;color:var(--muted);font-size:12px}.drop em{margin-top:23px;color:#8a9894;font-size:9px;font-style:normal;letter-spacing:.08em}
    .process,.error-box{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;padding:38px;text-align:center;background:#f7faf6}.process.show,.error-box.show{display:flex}.sonar{position:relative;width:86px;height:86px;margin-bottom:22px;border:1px solid #aac0b9;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 15px,#d6e6df 16px 17px);overflow:hidden}.sonar:before{content:"";position:absolute;inset:50% 50% 0 0;transform-origin:bottom right;background:conic-gradient(from 90deg,rgba(29,113,108,.55),transparent 55deg);animation:sonar 1.7s linear infinite}@keyframes sonar{to{transform:rotate(360deg)}}.process>p{margin:0 0 5px;color:var(--teal);font-size:9px;font-weight:900;letter-spacing:.18em}.process>strong{font-family:Georgia,serif;font-size:35px;font-weight:500}.track{width:min(270px,72%);height:4px;margin-top:17px;overflow:hidden;border-radius:99px;background:#dce7e1}.track i{display:block;height:100%;border-radius:inherit;background:var(--teal)}.process small{margin-top:12px;color:var(--muted);font-size:10px}.error-box b{font-family:Georgia,serif;font-size:24px}.error-box p{max-width:420px;color:var(--muted);font-size:12px;line-height:1.6}
    .canvas-wrap{display:none;position:absolute;inset:0;overflow:hidden;background:#d5ddcf}.canvas-wrap.show{display:block}.canvas-wrap.three-d{background:radial-gradient(circle at 50% 35%,#dce8df,#b9cbc3 72%,#9cafaa)}.canvas-wrap:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.14) 1px,transparent 1px);background-size:42px 42px}.canvas-wrap.three-d:before{background-image:radial-gradient(circle at 50% 42%,rgba(255,255,255,.26),transparent 58%)}.map{width:100%;height:100%;position:absolute;inset:0;touch-action:none;cursor:crosshair}.map:active{cursor:grabbing}.canvas-wrap.three-d .map{cursor:grab}.canvas-wrap.three-d.pan-active .map{cursor:move}.controls{z-index:4;position:absolute;top:16px;left:16px;display:flex;align-items:center;overflow:hidden;border:1px solid rgba(9,43,51,.13);border-radius:10px;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.1)}.controls button{width:34px;height:34px;border:0;background:transparent;font-size:18px;cursor:pointer}.controls span{min-width:42px;color:#61726e;font:10px Consolas,monospace;text-align:center}.controls .fit{width:auto;padding:0 10px;border-left:1px solid var(--line);font-size:9px;font-weight:800}.controls .pan-mode{display:none;width:auto;padding:0 10px;border-left:1px solid var(--line);color:#61726e;font-size:9px;font-weight:800}.canvas-wrap.three-d .controls .pan-mode{display:block}.controls .pan-mode.active{color:#fff;background:var(--teal)}.native{z-index:4;position:absolute;top:17px;left:252px;display:flex;align-items:center;gap:7px;padding:7px 9px;border-radius:8px;color:#536761;background:rgba(250,252,249,.86);font-size:9px}.native i{width:6px;height:6px;border-radius:50%;background:#9ca9a6}.native.ready i{background:var(--coral);box-shadow:0 0 0 3px rgba(226,120,94,.16)}.refinement,.terrain-control{z-index:4;position:absolute;top:59px;left:16px;width:190px;padding:9px 11px 8px;border:1px solid rgba(9,43,51,.13);border-radius:11px;background:rgba(250,252,249,.94);box-shadow:0 5px 18px rgba(21,59,57,.1)}.refinement label,.terrain-control label{display:flex;justify-content:space-between;gap:12px;color:#667772;font-size:8px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.refinement output,.terrain-control output{color:var(--teal)}.refinement input,.terrain-control input{width:100%;height:14px;margin:6px 0 2px;accent-color:var(--coral);cursor:pointer}.refinement-scale{display:flex;justify-content:space-between;color:#899692;font:7px Consolas,monospace}.terrain-control{display:none;top:129px}.terrain-control.show{display:block}.readout{display:none;z-index:4;position:absolute;right:16px;top:16px;min-width:145px;grid-template-columns:1fr auto;gap:4px 9px;padding:10px 12px;border:1px solid rgba(9,43,51,.12);border-radius:10px;background:rgba(250,252,249,.94);box-shadow:0 5px 18px rgba(21,59,57,.1)}.readout.show{display:grid}.readout strong{font-family:Georgia,serif;font-size:13px;font-weight:500}.readout span{color:var(--coral);font-size:9px;font-weight:800}.readout small{grid-column:1/-1;color:#83918e;font:8px Consolas,monospace}.legend{z-index:4;position:absolute;left:18px;bottom:16px;display:grid;grid-template-columns:auto 120px auto;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;background:rgba(250,252,249,.88);color:#4f625d;font-size:8px}.legend i{height:7px;border-radius:99px;background:linear-gradient(90deg,#d8f1dc 0%,#aee4db 10%,#7cccd3 22%,#479dc5 38%,#277cb4 54%,#255b8c 69%,#1d486b 80%,#183a4d 91%,#123436 100%)}.legend i.quality{background:linear-gradient(90deg,#fff1a6,#fbc15c,#ef7846,#b5322b)}.drag-cover{display:none;z-index:12;position:absolute;inset:12px;flex-direction:column;align-items:center;justify-content:center;border:2px dashed #fff;border-radius:15px;color:#fff;background:rgba(18,85,82,.9)}.drag-cover.show{display:flex}.drag-cover span{font-size:37px}.drag-cover strong{margin-top:12px;font-family:Georgia,serif;font-size:25px}.map-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 4px 0;color:#7a8885;font-size:9px}.map-foot p{margin:0}
    .engine{grid-column:2;grid-row:2;display:grid;grid-template-columns:minmax(300px,1fr) minmax(330px,.9fr);gap:28px;padding:28px 26px 32px;border-top:1px solid var(--line);background:linear-gradient(180deg,#f8faf6,#f4f7f2)}.engine-panel,.activity-panel{min-width:0}.activity-panel{display:flex;min-height:0;flex-direction:column}.engine-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.engine-head h2{margin:5px 0 0;font-family:Georgia,serif;font-size:20px;font-weight:500}.pill{flex:0 0 auto;padding:6px 8px;border-radius:99px;color:#467163;background:#e0eee6;font-size:7px;font-weight:900;letter-spacing:.08em}.intro{margin:13px 0 15px;color:var(--muted);font-size:10px;line-height:1.5}.tabs{display:flex;gap:4px;margin-bottom:7px}.tabs button{flex:1;border:1px solid #d9e3de;border-radius:7px;padding:7px 5px;color:#768580;background:#edf2ee;font-size:8px;font-weight:800;cursor:pointer}.tabs button.active{border-color:#17383a;color:#fff;background:#17383a}.code-card{overflow:hidden;border:1px solid #1c3a3b;border-radius:12px;color:#cfe4dd;background:#102829;box-shadow:0 12px 26px rgba(14,41,44,.13)}.code-title{display:flex;align-items:center;justify-content:space-between;padding:9px 11px;border-bottom:1px solid #244446;color:#97b9ae;font-size:8px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.code-title button{border:0;color:#a6c6bc;background:transparent;font-size:8px;cursor:pointer}.code-card pre{height:260px;margin:0;padding:13px;overflow:auto;white-space:pre-wrap}.code-card code{color:#d0e5de;font:8.5px/1.65 Consolas,monospace}.activity-head{display:flex;align-items:center;justify-content:space-between;margin:2px 2px 9px}.activity-head span{color:var(--green);font-size:7px;font-weight:900;letter-spacing:.09em}.logs{flex:1;min-height:300px;max-height:360px;overflow:auto;border-top:1px solid var(--line)}.empty-log{height:100%;min-height:260px;display:flex;align-items:center;justify-content:center;color:#8a9794;text-align:center;font-size:9px;line-height:1.5}.log{display:grid;grid-template-columns:52px 50px 1fr;gap:6px;padding:8px 3px;border-bottom:1px solid #e7ede9;font:8px Consolas,monospace}.log time{color:#899692}.log b{color:var(--teal)}.log p{margin:0;color:#586a65;line-height:1.4}.log.error b,.log.error p{color:var(--coral)}
    .readout{width:max-content;min-width:270px;max-width:min(620px,calc(100% - 32px))}.readout-line{grid-column:1/-1;display:flex;align-items:baseline;gap:12px;white-space:nowrap}.readout-line>span{color:var(--coral);font-size:9px;font-weight:800}.gps-readout{display:none;align-items:baseline;gap:12px;color:var(--teal);font:500 13px/1.15 Georgia,serif}.gps-readout.show{display:flex}.gps-readout span{color:inherit;font:inherit}
    .map3d{visibility:hidden;pointer-events:none}.canvas-wrap.three-d .map3d{visibility:visible}.orbit-control{z-index:5;position:absolute;right:16px;bottom:16px;display:none;grid-template-columns:repeat(3,30px);gap:3px;padding:8px;border:1px solid rgba(9,43,51,.13);border-radius:12px;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.12)}.canvas-wrap.show .orbit-control{display:grid}.orbit-title{grid-column:1/-1;margin-bottom:2px;color:#657772;font-size:7px;font-weight:900;letter-spacing:.12em;text-align:center}.orbit-control button{width:30px;height:28px;border:0;border-radius:6px;color:#315e5b;background:#e6efea;font-size:14px;font-weight:800;cursor:pointer}.orbit-control button:hover{background:#d7e7df}.orbit-control .orbit-up{grid-column:2}.orbit-control .orbit-left{grid-column:1;grid-row:3}.orbit-control .orbit-home{grid-column:2;grid-row:3;color:#fff;background:var(--teal);font-size:10px}.orbit-control .orbit-right{grid-column:3;grid-row:3}.orbit-control .orbit-down{grid-column:2;grid-row:4}
    .controls .fullscreen{width:38px;border-left:1px solid var(--line);font-size:17px;font-weight:400}.controls .fullscreen.active{color:#fff;background:var(--teal)}.canvas-wrap.three-d.pan-mode .map{cursor:move}.nav-help{z-index:6;position:absolute;right:138px;bottom:16px;display:none;color:#49605b;font-size:9px}.canvas-wrap.three-d .nav-help{display:block}.nav-help summary{width:max-content;margin-left:auto;padding:8px 11px;border:1px solid rgba(9,43,51,.13);border-radius:9px;list-style:none;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.1);font-weight:900;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.nav-help summary::-webkit-details-marker{display:none}.nav-help summary:before{content:'?';display:inline-grid;place-items:center;width:15px;height:15px;margin-right:6px;border-radius:50%;color:#fff;background:var(--teal);font-size:9px}.nav-help[open]{width:250px;padding:11px 12px 12px;border:1px solid rgba(9,43,51,.13);border-radius:11px;background:rgba(250,252,249,.96);box-shadow:0 8px 24px rgba(21,59,57,.15)}.nav-help[open] summary{margin:-3px 0 8px auto;padding:3px;border:0;box-shadow:none;background:transparent}.nav-help dl{display:grid;grid-template-columns:58px 1fr;gap:5px 9px;margin:0;line-height:1.35}.nav-help dt{color:var(--teal);font-weight:900}.nav-help dd{margin:0;color:#61736e}#stage:fullscreen{width:100vw;height:100vh;min-height:100vh;border:0;border-radius:0}#stage:fullscreen .canvas-wrap{inset:0}#stage:fullscreen .controls{top:20px;left:20px}#stage:fullscreen .native{top:21px;left:256px}#stage:fullscreen .refinement{top:63px;left:20px}#stage:fullscreen .terrain-control{top:133px;left:20px}#stage:fullscreen .legend{left:20px;bottom:20px}#stage:fullscreen .orbit-control{right:20px;bottom:20px}#stage:fullscreen .nav-help{right:142px;bottom:20px}
    .controls .fullscreen{width:38px;border-left:1px solid var(--line);font-size:17px;font-weight:400}.controls .fullscreen.active{color:#fff;background:var(--teal)}.canvas-wrap.three-d.pan-mode .map{cursor:move}.nav-help{z-index:6;position:absolute;right:138px;bottom:16px;display:none;color:#49605b;font-size:9px}.canvas-wrap.three-d .nav-help{display:block}.nav-help summary{width:max-content;margin-left:auto;padding:8px 11px;border:1px solid rgba(9,43,51,.13);border-radius:9px;list-style:none;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.1);font-weight:900;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.nav-help summary::-webkit-details-marker{display:none}.nav-help summary:before{content:'?';display:inline-grid;place-items:center;width:15px;height:15px;margin-right:6px;border-radius:50%;color:#fff;background:var(--teal);font-size:9px}.nav-help[open]{width:250px;padding:11px 12px 12px;border:1px solid rgba(9,43,51,.13);border-radius:11px;background:rgba(250,252,249,.96);box-shadow:0 8px 24px rgba(21,59,57,.15)}.nav-help[open] summary{margin:-3px 0 8px auto;padding:3px;border:0;box-shadow:none;background:transparent}.nav-help dl{display:grid;grid-template-columns:58px 1fr;gap:5px 9px;margin:0;line-height:1.35}.nav-help dt{color:var(--teal);font-weight:900}.nav-help dd{margin:0;color:#61736e}.map-tools{z-index:7;position:absolute;right:16px;top:58px;display:none;color:#536761;font-size:9px}.canvas-wrap.show .map-tools{display:block}.map-tools summary{width:max-content;margin-left:auto;padding:8px 11px;border:1px solid rgba(9,43,51,.13);border-radius:9px;list-style:none;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.1);font-weight:900;letter-spacing:.07em;text-transform:uppercase;cursor:pointer}.map-tools summary::-webkit-details-marker{display:none}.map-tools[open]{width:224px;max-height:calc(100% - 82px);overflow:auto;padding:11px 12px 12px;border:1px solid rgba(9,43,51,.13);border-radius:12px;background:rgba(250,252,249,.97);box-shadow:0 9px 28px rgba(21,59,57,.16)}.map-tools[open] summary{margin:-3px 0 9px auto;padding:3px;border:0;box-shadow:none;background:transparent}.tool-toggle{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid #e5ece8;color:#536761;font-size:9px;font-weight:800}.tool-toggle input{width:15px;height:15px;margin:0;accent-color:var(--teal)}.tool-slider{display:block;padding:6px 0;border-top:1px solid #e5ece8}.tool-slider>span{display:flex;justify-content:space-between;gap:8px;color:#667772;font-size:8px;font-weight:800;letter-spacing:.04em}.tool-slider output{color:var(--teal);font:8px Consolas,monospace}.tool-slider input{width:100%;height:14px;margin:5px 0 0;accent-color:var(--coral);cursor:pointer}.map-tools .flight-tool{display:none}.canvas-wrap.three-d .map-tools .flight-tool{display:block}#stage:fullscreen{width:100vw;height:100vh;min-height:100vh;border:0;border-radius:0}#stage:fullscreen .canvas-wrap{inset:0}#stage:fullscreen .controls{top:20px;left:20px}#stage:fullscreen .native{top:21px;left:256px}#stage:fullscreen .refinement{top:63px;left:20px}#stage:fullscreen .terrain-control{top:133px;left:20px}#stage:fullscreen .legend{left:20px;bottom:20px}#stage:fullscreen .orbit-control{right:20px;bottom:20px}#stage:fullscreen .nav-help{right:142px;bottom:20px}#stage:fullscreen .map-tools{right:20px;top:62px}
    .compass{z-index:6;position:absolute;left:50%;bottom:14px;display:none;width:68px;height:68px;transform:translateX(-50%);border:1px solid rgba(29,113,108,.2);border-radius:50%;background:rgba(250,252,249,.88);box-shadow:0 5px 18px rgba(21,59,57,.12);pointer-events:none}.canvas-wrap.show .compass{display:block}.compass-rose{position:absolute;inset:7px;border:1px solid rgba(29,113,108,.25);border-radius:50%;transition:transform .12s ease-out}.compass-rose:before,.compass-rose:after{content:"";position:absolute;background:rgba(29,113,108,.2)}.compass-rose:before{left:50%;top:7px;bottom:7px;width:1px}.compass-rose:after{top:50%;left:7px;right:7px;height:1px}.compass-rose span{position:absolute;color:#1d716c;font:500 10px/1 Georgia,serif}.compass-rose .north{left:50%;top:3px;transform:translateX(-50%);font-size:13px}.compass-rose .east{right:4px;top:50%;transform:translateY(-50%)}.compass-rose .south{left:50%;bottom:3px;transform:translateX(-50%)}.compass-rose .west{left:4px;top:50%;transform:translateY(-50%)}.compass-needle{position:absolute;left:50%;top:15px;width:0;height:0;transform:translateX(-50%);border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:18px solid #1d716c;filter:drop-shadow(0 1px 1px rgba(8,47,50,.24))}#stage:fullscreen .compass{bottom:20px}
    .map,.canvas-wrap.three-d .map,.canvas-wrap.three-d.pan-mode .map{cursor:default}.map.interacting{cursor:grabbing!important}.canvas-wrap.mark-mode .map{cursor:crosshair}.map-tools .orbit-tool{display:none}.canvas-wrap.three-d .map-tools .orbit-tool{display:flex}
    .view-cube-scene{grid-column:1/-1;grid-row:2;width:72px;height:72px;margin:2px auto 5px;display:grid;place-items:center;perspective:260px}.view-cube{position:relative;width:42px;height:42px;transform-style:preserve-3d;transition:transform .18s ease-out}.orbit-control .cube-face{position:absolute;inset:0;width:42px;height:42px;padding:0;border:1px solid rgba(29,113,108,.35);border-radius:4px;color:#1d716c;background:rgba(237,246,241,.92);font:700 7px/1 Georgia,serif;backface-visibility:visible}.orbit-control .cube-face:hover{background:#d6ebe2}.cube-front{transform:translateZ(21px)}.cube-back{transform:rotateY(180deg) translateZ(21px)}.cube-right{transform:rotateY(90deg) translateZ(21px)}.cube-left{transform:rotateY(-90deg) translateZ(21px)}.cube-top{transform:rotateX(90deg) translateZ(21px)}.cube-bottom{transform:rotateX(-90deg) translateZ(21px)}.orbit-control .cube-default{grid-column:1/-1;grid-row:3;width:100%;height:22px;margin-bottom:3px;color:#1d716c;background:#edf4ef;font:700 8px Georgia,serif}.orbit-control{width:114px}.orbit-control .orbit-title{grid-row:1}.orbit-control .orbit-up{grid-column:2;grid-row:4}.orbit-control .orbit-left{grid-column:1;grid-row:5}.orbit-control .orbit-home{grid-column:2;grid-row:5}.orbit-control .orbit-right{grid-column:3;grid-row:5}.orbit-control .orbit-down{grid-column:2;grid-row:6}.canvas-wrap:not(.three-d) .view-cube-scene,.canvas-wrap:not(.three-d) .cube-default{display:none}
    .marks-panel{z-index:7;position:absolute;right:16px;top:101px;display:none;color:#536761;font-size:9px}.canvas-wrap.show .marks-panel{display:block}.marks-panel summary{width:max-content;margin-left:auto;padding:8px 11px;border:1px solid rgba(9,43,51,.13);border-radius:9px;list-style:none;background:rgba(250,252,249,.92);box-shadow:0 5px 18px rgba(21,59,57,.1);font-weight:900;letter-spacing:.07em;text-transform:uppercase;cursor:pointer}.marks-panel summary::-webkit-details-marker{display:none}.marks-panel[open]{width:246px;max-height:calc(100% - 130px);overflow:auto;padding:11px 12px 12px;border:1px solid rgba(9,43,51,.13);border-radius:12px;background:rgba(250,252,249,.97);box-shadow:0 9px 28px rgba(21,59,57,.16)}.marks-panel[open] summary{margin:-3px 0 9px auto;padding:3px;border:0;box-shadow:none;background:transparent}.mark-place{width:100%;margin:7px 0;padding:8px;border:0;border-radius:8px;color:#fff;background:var(--teal);font:800 9px Georgia,serif;cursor:pointer}.mark-place.active{background:var(--coral)}.mark-layer-empty{padding:10px 4px;color:#899692;font:8px/1.45 Consolas,monospace}.mark-row{display:grid;grid-template-columns:25px minmax(0,1fr) 25px;gap:6px;align-items:center;padding:7px 0;border-top:1px solid #e5ece8}.mark-row button{height:24px;border:0;border-radius:6px;color:#1d716c;background:#e8f1ec;cursor:pointer}.mark-row .mark-remove{color:#a44c3c;background:#f6e8e3}.mark-copy{min-width:0}.mark-copy strong{display:block;color:#284c49;font:500 10px Georgia,serif}.mark-copy small{display:block;margin-top:3px;overflow:hidden;color:#71817e;font:7.5px/1.35 Consolas,monospace;text-overflow:ellipsis;white-space:nowrap}#stage:fullscreen .marks-panel{right:20px;top:105px}
    .land-credit{z-index:5;position:absolute;left:18px;bottom:48px;display:none;padding:4px 7px;border-radius:6px;color:#66766f;background:rgba(250,252,249,.78);font:7px/1.2 Consolas,monospace;pointer-events:none}.canvas-wrap.show .land-credit{display:block}.land-credit strong{margin-right:4px;color:#526d61;letter-spacing:.08em}#stage:fullscreen .land-credit{left:20px;bottom:52px}
    @media(max-width:1180px){.grid{grid-template-columns:205px minmax(420px,1fr)}.engine{padding-inline:20px;gap:20px}.native{display:none}}@media(max-width:960px){.grid{grid-template-columns:190px minmax(0,1fr);grid-template-rows:minmax(660px,calc(100vh - 70px)) auto}.side{grid-row:1;position:static;height:auto}.engine{grid-column:1/-1;grid-row:2}.map-col{grid-column:2;grid-row:1;min-height:660px}}@media(max-width:680px){header{grid-template-columns:1fr auto;padding-inline:16px}.local{display:none}.grid{display:block}.side{height:auto;border-right:0;border-bottom:1px solid var(--line)}.profile,.fixture,.privacy{display:none}.map-col{min-height:650px;padding:18px 14px 12px}.stage{min-height:510px}.map-head{align-items:flex-start;flex-direction:column}.map-head h1{max-width:100%;font-size:19px}.map-actions{width:100%;justify-content:space-between}.layers button,.view-switch button{padding:6px 9px;font-size:9px}.drop{width:calc(100% - 34px);height:calc(100% - 34px);inset:17px;padding-inline:18px;text-align:center}.map-foot{display:block;line-height:1.7}.readout{top:auto;bottom:52px;right:10px;max-width:calc(100% - 20px);overflow:hidden}.readout-line,.gps-readout{gap:6px}.legend{left:10px;bottom:10px;grid-template-columns:auto 70px auto}.orbit-control{right:10px;bottom:112px}.nav-help{right:10px;bottom:250px}.nav-help[open]{width:min(250px,calc(100vw - 40px))}.engine{display:block;padding:24px 16px}.activity-panel{margin-top:24px}.logs{max-height:320px}.code-card pre{height:230px}}
    .canvas-wrap.tools-expanded .marks-panel,.canvas-wrap.marks-expanded .map-tools{display:none}.land-credit[hidden]{display:none!important}.land-credit{pointer-events:auto;cursor:help}
    @media(max-width:680px){.map-tools{right:10px;top:58px}.map-tools[open]{width:min(224px,calc(100vw - 20px));max-height:390px}.compass{bottom:10px;transform:translateX(-50%) scale(.88)}}
    @media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
  /* The chart takes the full width. Only a compact survey layer strip remains. */
#chart-loading:not([hidden])~.process>*{visibility:hidden}
.chart-loading{position:absolute;z-index:8;left:50%;top:45%;transform:translate(-50%,-50%);width:min(330px,calc(100% - 44px));padding:17px 19px 14px;border:1px solid #c8dbd3;border-radius:14px;background:rgba(248,252,248,.97);box-shadow:0 10px 38px #143f3826;color:#1d716c;pointer-events:none}.chart-loading[hidden]{display:none}.chart-loading-heading{display:flex;align-items:center;gap:11px}.chart-loading strong{font:500 17px/1.25 Georgia,serif}.chart-loading-spinner{flex:none;width:20px;height:20px;border:2px solid #ccdfd8;border-top-color:#1d716c;border-radius:50%;animation:chart-loading-spin .85s linear infinite}.chart-loading p{margin:10px 0 8px;color:#61786d;font:11px/1.5 Arial,sans-serif}.chart-loading-time{display:block;text-align:right;color:#517a70;font:10px/1.4 Consolas,monospace;font-variant-numeric:tabular-nums}.chart-loading-progress{height:3px;overflow:hidden;margin-top:10px;border-radius:3px;background:#dce8e1}.chart-loading-progress>i{display:block;height:100%;width:0;background:#408f7a;transition:width .15s}.chart-loading-progress.indeterminate>i{animation:chart-loading-progress 1.2s ease-in-out infinite}.chart-loading.is-ready .chart-loading-spinner,.chart-loading.is-error .chart-loading-spinner{animation:none;border-color:#80b6a4;background:#e0f0e7}.chart-loading.is-ready .chart-loading-spinner:after{content:'✓';display:block;text-align:center;font:14px/17px Arial,sans-serif}.chart-loading.is-error .chart-loading-spinner{border-color:#c78a63;background:#faf0df}.chart-loading.is-error .chart-loading-spinner:after{content:'!';display:block;text-align:center;color:#9d6645;font:bold 13px/17px Arial,sans-serif}@keyframes chart-loading-spin{to{transform:rotate(360deg)}}@keyframes chart-loading-progress{from{transform:translateX(-110%)}to{transform:translateX(310%)}}@media(prefers-reduced-motion:reduce){.chart-loading-spinner,.chart-loading-progress.indeterminate>i{animation:none}.chart-loading-progress>i{transition:none}}
header{height:76px;grid-template-columns:1fr auto;padding:0 30px;background:#f7f9f4}
.brand{gap:12px;font-family:Georgia,serif;font-size:25px}.brand small{display:block;margin-top:3px;color:#71837c;font:9px Arial,sans-serif;letter-spacing:.18em;text-transform:uppercase}.brand .mark{font-family:Georgia,serif}
.grid{display:block;min-height:0}.survey-bar{display:flex;align-items:center;gap:16px;padding:12px 28px;border-bottom:1px solid var(--line);background:#edf2eb}
.survey-bar .cap{margin:0;gap:9px;flex:none}.survey-bar .cap p{font-size:9px}.files{flex:1;min-width:0;min-height:0;display:flex;flex-direction:row;gap:9px;overflow-x:auto;padding:3px 0;scrollbar-width:thin}
.survey-empty{padding:11px 0;color:#7b8a84;font-size:11px}.survey-file{display:flex;align-items:center;flex:none;width:280px;gap:6px;padding:6px 8px;background:#f9fbf7;border:1px solid #d9e2d6;border-radius:10px}.survey-file.active{background:#fff;border-color:#4a8a78;box-shadow:0 0 0 1px #4a8a781c}.survey-file button{border:0;background:transparent;cursor:pointer;color:#54766a}.survey-eye{display:grid;place-items:center;width:24px}.survey-eye input{accent-color:#347d6b;cursor:pointer}.survey-select{flex:1;min-width:0;padding:3px;text-align:left}.survey-select strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#244137;font-size:11px}.survey-select small{display:block;margin-top:5px;color:#7a8e82;font-size:9px}.survey-locate,.survey-remove{font-size:18px;padding:3px}.survey-remove{color:#91a095!important}
.map-col{display:block;min-height:0;padding:22px 28px 0}.map-head{min-height:48px;margin-bottom:16px}.map-head h1{font-size:23px;max-width:min(48vw,700px)}.map-head .eyebrow{font-size:9px}.stage{height:max(600px,calc(100vh - 260px));min-height:600px}.drop em{display:none}.map-notice{margin:10px 0 0;border-radius:8px;background:#f5e8d4;padding:10px 14px;color:#745f36;font-size:11px;line-height:1.5}.map-notice[hidden]{display:none}
.survey-details{margin:28px;padding:30px;background:#fbfcf8;border:1px solid #d9e3d6;border-radius:18px}.details-empty{padding:4px 0 10px}.survey-details h2{font:400 29px/1.2 Georgia,serif;margin:10px 0;color:#254539}.survey-details h3{font:500 19px Georgia,serif;color:#284b3f;margin:0 0 12px}.survey-details p{font-size:12px;line-height:1.7;color:#677c70}.details-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.details-filename{font-size:10px!important;margin:0;overflow-wrap:anywhere}.details-badge{flex:none;padding:8px 11px;border:1px solid #d6e3d5;border-radius:20px;font-size:10px;color:#60846e}.survey-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:28px 0;padding:24px 0;border-block:1px solid #dce5d7}.survey-stats span{display:block;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#7e8d7b}.survey-stats strong{display:block;margin-top:10px;font:400 28px Georgia,serif;color:#277967}.survey-stats strong small{font-size:14px}.survey-stats .stat-date{font-size:17px;line-height:1.5}
.details-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:44px;margin:6px 0 28px}.details-story h3:not(:first-child){margin-top:23px}.source-note{font-size:10px!important;color:#8a9588!important}.source-link{display:inline-block;margin-top:4px;font-size:11px;color:#2c7b68;text-underline-offset:4px}.survey-ship{margin:0;border-radius:12px;overflow:hidden;align-self:start;background:#e8efe5}.survey-ship img{display:block;width:100%;height:220px;object-fit:cover}.survey-ship figcaption{display:flex;flex-direction:column;gap:6px;padding:14px 16px;color:#6b8070;font-size:10px;line-height:1.6}.survey-ship figcaption strong{color:#315b46;font-family:Georgia,serif;font-size:17px}.survey-ship figcaption a{color:#6b8070;font-size:9px}.ship-unavailable{align-self:start;padding:26px;background:#f0f4ed;border-radius:12px}.ship-unavailable>span{font-size:9px;text-transform:uppercase;color:#81937d}.ship-unavailable h3{margin-top:12px}.metadata-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding-top:24px;border-top:1px solid #dce5d7}.metadata-grid dl{margin:0}.metadata-grid dl div{display:grid;grid-template-columns:140px minmax(0,1fr);gap:15px;padding:10px 0;border-bottom:1px solid #e7ece1;font-size:11px;line-height:1.6}.metadata-grid dt{color:#849080}.metadata-grid dd{margin:0;color:#375a47;overflow-wrap:anywhere}.survey-constraints{margin-top:22px!important;padding-top:15px;border-top:1px solid #dce5d7;font-size:10px!important}
@media(max-width:900px){header{padding-inline:18px}.survey-bar{padding-inline:16px}.map-col{padding:18px 16px 0}.survey-details{margin:22px 16px;padding:22px}.details-columns{gap:24px;grid-template-columns:1fr 1fr}.metadata-grid{gap:24px}.metadata-grid dl div{grid-template-columns:110px 1fr}.survey-stats{gap:16px}.survey-stats strong{font-size:23px}}
@media(max-width:680px){header{height:70px}.brand{font-size:22px}.survey-bar{gap:9px}.survey-bar .cap p{display:none}.survey-file{width:245px}.map-head h1{max-width:100%;font-size:20px}.map-head{gap:12px}.stage{height:650px;min-height:650px}.details-heading{display:block}.details-badge{display:inline-block;margin-top:14px}.survey-stats{grid-template-columns:1fr 1fr;gap:24px}.details-columns,.metadata-grid{grid-template-columns:1fr}.survey-details h2{font-size:25px}.survey-ship img{height:auto;max-height:280px}.metadata-grid dl div{grid-template-columns:115px 1fr}}


/* Hide the empty drop prompt until automatic startup has selected the survey. */
html[data-bagscope-starting] #drop{display:none!important}
@media(max-width:540px){header{height:auto;min-height:76px;padding-block:10px;gap:12px}header>.add{font-size:10px;padding:7px 10px}}

/* Compact, non-blocking status in the screen corner, including fullscreen. */
.chart-loading{position:fixed;z-index:20;left:max(12px,env(safe-area-inset-left));right:auto;top:auto;bottom:max(12px,env(safe-area-inset-bottom));transform:none;width:min(224px,calc(100vw - 24px));padding:10px 12px 8px;border-radius:10px;box-shadow:0 4px 18px #143f3820}
.chart-loading-heading{gap:7px}
.chart-loading strong{font-size:13px;line-height:1.25}
.chart-loading-spinner{width:14px;height:14px;border-width:1.5px}
.chart-loading p{margin:6px 0 4px;font-size:10px;line-height:1.35}
.chart-loading-time{font-size:9px;line-height:1.3}
.chart-loading-progress{height:2px;margin-top:6px}
.chart-loading.is-ready .chart-loading-spinner:after,.chart-loading.is-error .chart-loading-spinner:after{font-size:10px;line-height:11px}

/* The owner selected map-style touch: drag the chart; scroll outside it.
   No body scroll lock. Mouse and wheel handlers remain unchanged. */
#map{touch-action:none}
.mobile-primary,.mobile-info,.mobile-secondary,.mobile-touch-help{display:none}

@media (max-width:680px), (max-width:960px) and (max-height:500px) and (pointer:coarse){
  :root{--mobile-safe-top:env(safe-area-inset-top,0px);--mobile-safe-bottom:env(safe-area-inset-bottom,0px);--mobile-safe-left:env(safe-area-inset-left,0px);--mobile-safe-right:env(safe-area-inset-right,0px)}
  body{padding-bottom:var(--mobile-safe-bottom)}
  header{height:auto;min-height:68px;padding:10px max(12px,var(--mobile-safe-right)) 10px max(12px,var(--mobile-safe-left));padding-top:max(10px,var(--mobile-safe-top));gap:8px}
  header .add{min-height:44px;font-size:11px;padding:8px 12px}
  .brand{font-size:21px;gap:8px}.brand small{font-size:8px}
  .survey-bar{padding:6px max(8px,var(--mobile-safe-right)) 6px max(8px,var(--mobile-safe-left));gap:6px}
  .survey-bar .cap p{display:none}.survey-file{width:min(300px,calc(100vw - 48px));padding:3px;gap:2px}
  .survey-file button,.survey-eye{min-width:44px;min-height:44px}.survey-eye{width:44px}.survey-eye input{width:22px;height:22px}
  .survey-select strong{font-size:11px}.survey-select small{margin-top:3px}
  .map-col{min-height:0;padding:12px max(8px,var(--mobile-safe-right)) 0 max(8px,var(--mobile-safe-left))}
  .map-head{flex-direction:row;align-items:center;gap:8px;margin:0;padding:0 2px 10px;min-height:54px}
  .map-head>div:first-child{min-width:0;flex:1}.map-head h1{font-size:17px;max-width:100%}.map-head .eyebrow{font-size:8px}
  .map-actions{width:auto;flex:none}.view-switch button{min-width:44px;min-height:44px;font-size:12px;padding:6px 10px}
  #stage{height:auto;min-height:150px;border-radius:14px;overflow:hidden}
  #stage.mobile-layout .canvas-wrap{position:relative;inset:auto;width:100%;height:clamp(280px,52svh,540px);min-height:0;border-block:1px solid var(--line)}
  #stage.mobile-layout .process.show{display:none}
  #stage.mobile-layout.mobile-ready .mobile-primary{display:block;padding:6px;background:var(--paper)}
  #stage .mobile-primary .controls{position:static;inset:auto;display:flex;width:max-content;max-width:100%;margin:auto;box-shadow:none}
  #stage .mobile-primary .controls button{min-width:44px;height:44px;font-size:20px}
  #stage .mobile-primary .controls span{min-width:38px;font-size:11px}
  #stage .mobile-primary .controls .fit,#stage .mobile-primary .controls .pan-mode{font-size:12px;padding:0 8px}
  #stage.mobile-three-d .mobile-primary .pan-mode{display:none}
  .mobile-hint{margin:5px 0 1px;color:#61776e;text-align:center;font-size:10px;line-height:1.4}
  #stage.mobile-layout .mobile-info{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:4px 8px;padding:6px;background:var(--paper)}
  #stage:not(.mobile-ready) .mobile-info>*:not(.chart-loading){display:none}
  #stage .mobile-info .compass{display:block;position:relative;inset:auto;transform:none;width:48px;height:48px;box-shadow:none}
  #stage .mobile-info .compass-rose{inset:3px}.mobile-info .compass-rose .north{font-size:11px}.mobile-info .compass-needle{top:13px;border-bottom-width:13px}
  #stage .mobile-info .legend{position:static;inset:auto;grid-template-columns:auto minmax(25px,1fr) auto;padding:6px 0;gap:5px;font-size:9px;background:none}
  #stage .mobile-info .readout{position:static;inset:auto;grid-column:1/-1;width:100%;max-width:none;box-shadow:none;padding:8px}
  .mobile-info .readout-line,.mobile-info .gps-readout{flex-wrap:wrap;gap:6px}
  #stage .mobile-info .chart-loading{position:static;inset:auto;grid-column:1/-1;transform:none;width:100%;margin:0;padding:6px 8px;box-shadow:none;border-radius:8px}
  #stage .mobile-info .chart-loading p{margin:3px 0;font-size:10px}.mobile-info .chart-loading-time{display:inline-block}
  #stage.mobile-layout.mobile-ready .mobile-secondary{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:6px;padding:0 6px max(6px,var(--mobile-safe-bottom));background:var(--paper)}
  #stage .mobile-secondary .map-tools,#stage .mobile-secondary .marks-panel{display:block;position:static;inset:auto;width:auto;max-height:none;font-size:12px}
  #stage .mobile-secondary>details[open]{grid-column:1/-1;padding:10px;border-radius:10px;overflow:visible}
  #stage .mobile-secondary summary{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;margin:0;font-size:11px;padding:8px;box-shadow:none}
  #stage .mobile-secondary .layers{display:flex;width:max-content;max-width:100%;margin:8px auto}
  #stage .mobile-secondary .layers button{min-height:44px;min-width:44px;font-size:12px;padding:6px 10px}
  #stage .mobile-secondary .refinement,#stage .mobile-secondary .terrain-control{position:static;inset:auto;width:100%;margin:8px 0;box-shadow:none;padding:10px}
  #stage .mobile-secondary .refinement label,#stage .mobile-secondary .terrain-control label{font-size:11px}
  #stage .mobile-secondary .refinement-scale{font-size:10px}
  #stage .mobile-secondary input[type=range]{height:44px;margin:3px 0}
  #stage .mobile-secondary .tool-toggle{min-height:44px;font-size:12px;gap:12px}
  #stage .mobile-secondary input[type=checkbox]{width:24px;height:24px;flex:none}
  #stage .mobile-secondary .tool-slider>span,#stage .mobile-secondary .tool-slider output{font-size:11px}
  #stage.mobile-three-d .mobile-secondary .flight-tool{display:block}
  #stage:not(.mobile-three-d) .mobile-secondary .orbit-tool{display:none}
  #stage .mobile-secondary .orbit-control{display:grid;position:static;inset:auto;width:max-content;margin:12px auto;grid-template-columns:repeat(3,44px);gap:5px;box-shadow:none}
  #stage .mobile-secondary .orbit-control button{width:44px;height:44px}
  #stage .mobile-secondary .orbit-title{font-size:10px}
  #stage .mobile-secondary .cube-default{width:100%;font-size:12px}
  #stage:not(.mobile-three-d) .view-cube-scene,#stage:not(.mobile-three-d) .cube-default{display:none}
  #stage .mobile-secondary .nav-help{display:none;position:static;inset:auto;width:100%;margin-top:10px;font-size:12px}
  #stage.mobile-three-d .mobile-secondary .nav-help{display:block}
  .mobile-touch-help{display:block;font-size:12px;line-height:1.5;color:#61776e}
  #stage .mobile-secondary .nav-help dl{grid-template-columns:60px 1fr;font-size:12px}
  #stage .mobile-secondary .land-credit{position:static;inset:auto;display:block;width:max-content;max-width:100%;margin-top:10px;font-size:10px}
  #stage .mobile-secondary .mark-place{min-height:44px;font-size:12px}
  #stage .mobile-secondary .mark-row{grid-template-columns:44px minmax(0,1fr) 44px}
  #stage .mobile-secondary .mark-row button{height:44px;font-size:18px}
  #stage .mobile-secondary .mark-copy strong{font-size:12px}.mobile-secondary .mark-copy small{white-space:normal;font-size:10px}
  #stage.mobile-layout .native{display:none}
  #stage.mobile-layout:fullscreen{height:100dvh;min-height:0;overflow-y:auto;padding:max(4px,var(--mobile-safe-top)) max(4px,var(--mobile-safe-right)) max(4px,var(--mobile-safe-bottom)) max(4px,var(--mobile-safe-left))}
  #stage.mobile-layout:fullscreen .canvas-wrap{height:max(180px,calc(100svh - 220px - var(--mobile-safe-top) - var(--mobile-safe-bottom)))}
  .survey-details{margin:16px max(8px,var(--mobile-safe-right)) 16px max(8px,var(--mobile-safe-left))}
}
@media (max-width:960px) and (max-height:500px) and (pointer:coarse){
  #stage.mobile-layout .canvas-wrap{height:72svh;min-height:200px}
}

/* Full-window fallback for browsers that cannot fullscreen an HTML chart.
   Safari's browser bars remain under Safari's control. No lock outside this mode. */
html.chart-page-locked{overflow:hidden;overscroll-behavior:none}
body.chart-page-locked{position:fixed;top:var(--chart-page-y);left:var(--chart-page-x);width:100%;overflow:hidden}
#stage.chart-expanded{position:fixed;z-index:1000;inset:auto;top:var(--chart-viewport-top,0px);left:var(--chart-viewport-left,0px);width:var(--chart-viewport-width,100vw);height:var(--chart-viewport-height,100dvh);min-height:0;max-width:none;margin:0;border-radius:0;overscroll-behavior:contain}
#stage.chart-expanded:not(.mobile-layout){padding:0}
@media (max-width:680px), (max-width:960px) and (max-height:500px) and (pointer:coarse){
  #stage.mobile-layout.chart-fullscreen{display:flex;flex-direction:column;height:var(--chart-viewport-height,100dvh);min-height:0;overflow-x:hidden;overflow-y:auto;border-radius:0;padding:max(4px,var(--mobile-safe-top)) max(4px,var(--mobile-safe-right)) max(4px,var(--mobile-safe-bottom)) max(4px,var(--mobile-safe-left))}
  #stage.mobile-layout.chart-fullscreen .mobile-primary{position:sticky;top:0;z-index:30;flex:none}
  #stage.mobile-layout.chart-fullscreen .canvas-wrap{height:auto;min-height:120px;flex:1 0 120px}
  #stage.mobile-layout.chart-fullscreen .mobile-info,#stage.mobile-layout.chart-fullscreen .mobile-secondary{flex:none}
  #stage.mobile-layout.chart-fullscreen .mobile-secondary{padding-bottom:6px}
}
