:root{color-scheme:dark;--bg: #16191d;--panel: #1e2328;--ink: #e6e9ec;--dim: #8a939c;--accent: #f2b705;--err: #ff6a6a;--mono: ui-monospace, "Cascadia Mono", "Consolas", "Menlo", monospace}*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);font:14px/1.4 system-ui,sans-serif}body{display:grid;grid-template-columns:380px 1fr}#side{min-width:0;display:grid;grid-template-rows:auto 1fr auto;min-height:0;background:var(--panel);border-right:1px solid #000}#bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px}#samples{display:flex;gap:4px;flex:1 0 100%;flex-wrap:wrap}#samples button{background:transparent;color:var(--dim);border:1px solid #333a42;border-radius:6px;padding:3px 8px;font:13px system-ui,sans-serif;cursor:pointer}#samples button[aria-current=true]{color:var(--ink);border-color:var(--accent)}#run{background:var(--accent);color:#111;border:0;border-radius:6px;width:40px;height:30px;font-size:14px;cursor:pointer}#run:active{transform:translateY(1px)}#mute{background:transparent;color:var(--dim);border:1px solid #333a42;border-radius:6px;width:34px;height:30px;font-size:14px;cursor:pointer}#mute[aria-pressed=true]{opacity:.6}#source{width:100%;height:100%;min-height:0;resize:none;border:0;outline:0;padding:10px 12px;background:#15181c;color:var(--ink);font:13px/1.45 var(--mono);tab-size:2}#status{min-height:28px;padding:6px 12px;font:12px/1.3 var(--mono);color:var(--err);white-space:pre-wrap;overflow-wrap:anywhere;max-height:min(15dvh,160px);overflow:auto}#status:empty{padding:0;min-height:0;visibility:hidden}#stage{position:relative;min-width:0;min-height:0}#view{width:100%;height:100%;display:block;outline:0;touch-action:none}#hud{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#flight-overlay{position:absolute;inset:0;display:grid;grid-template-rows:fit-content(45%) minmax(0,1fr) auto;gap:6px;padding:12px;pointer-events:none}#map-slot{display:grid;min-height:0;container-type:size}#flight-readouts{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,max-content) auto;align-content:start;align-items:start;gap:6px}#vals,#out{margin:0;padding:10px 12px;font:13px/1.4 var(--mono);color:#1d2328;background:#ffffff8c;border-radius:8px;pointer-events:none;backdrop-filter:blur(4px)}#vals{grid-area:1 / 1;justify-self:start}#out{grid-area:1 / 2;justify-self:end;white-space:pre-wrap}#vals,#out{min-height:0;max-height:100%;max-width:100%;overflow:hidden}#vals:empty,#out:empty{display:none}#keys{display:flex;align-content:end;align-items:end;gap:6px;flex-wrap:wrap;min-height:var(--dial-height, 0px);padding-right:calc(var(--dial-width, 0px) + 6px)}#keys .cap{pointer-events:auto;display:grid;place-items:center;min-width:44px;height:44px;padding:0 8px;border-radius:8px;background:#fff9;color:#1d2328;font:600 15px/1 var(--mono);box-shadow:0 2px #00000040;transition:transform 60ms,background 60ms;cursor:pointer;user-select:none;touch-action:none}#keys .cap[data-down=true]{background:var(--accent);transform:translateY(2px);box-shadow:none}#keys .cap small{font-size:9px;font-weight:500;color:#4a535c;letter-spacing:.02em}@media(max-width:800px){body{grid-template-columns:1fr;grid-template-rows:1fr 40vh}#side{order:2;border-right:0;border-top:1px solid #000}}#builder[hidden]{display:none}#builder{padding:8px 12px;border-bottom:1px solid #39424c;max-height:calc(100dvh - 220px);overflow:auto}#builder label{display:grid;gap:4px;color:var(--dim);font-size:12px;min-width:0}#builder select,#builder input{width:100%;background:#15181c;color:var(--ink);border:1px solid #46515c;border-radius:4px;padding:5px}#parts{font-family:var(--mono)}.edit-row{display:flex;align-items:end;gap:8px;margin:6px 0}.edit-row label{flex:1}#builder button,#build,#open-model{background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:4px;padding:5px 8px;cursor:pointer;white-space:nowrap}#build[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}button:disabled{opacity:.4;cursor:default!important}.edges{display:grid;grid-template-columns:repeat(3,auto);gap:3px}.edges button:first-child{grid-column:2}.edges button:nth-child(2){grid-row:2;grid-column:1}.edges button:nth-child(3){grid-row:2;grid-column:3}.edges button:last-child{grid-row:3;grid-column:2}.building #vals,.building #out,.building #keys,.building #hud{display:none}@media(max-width:800px){.building{grid-template-rows:45vh 55vh}#builder{max-height:36vh}}.building #side{grid-template-rows:auto minmax(0,auto) minmax(58px,1fr) auto}.building #builder{min-height:0}@media(max-width:800px){#builder{padding:4px 12px}#builder .edit-row{margin:3px 0}#parts{height:60px}.edges{grid-template-columns:repeat(4,auto);gap:6px}.edges button:nth-child(n){grid-row:auto;grid-column:auto;padding:5px;min-width:44px;min-height:44px}}#angle-control-row[hidden],#power-row[hidden],#multi-status[hidden]{display:none}#multi-status{align-items:center}#multi-select[aria-pressed=true]{background:#3fa9ff;color:#fff}@media(max-width:800px){.building{grid-template-rows:40vh 60vh}#builder{max-height:43vh}}#editor-toolbar{flex-wrap:wrap}#parts option:checked{background:#59636e;color:var(--ink)}#share-dialog,#filename-dialog,#water-log-dialog{width:min(520px,calc(100vw - 32px));padding:20px;border:1px solid #59636e;border-radius:8px;background:var(--panel);color:var(--ink)}#share-dialog::backdrop,#filename-dialog::backdrop,#water-log-dialog::backdrop{background:#0009}#share-dialog h2,#filename-dialog h2,#water-log-dialog h2{margin-top:0;font-size:18px}#share-url,#filename-input{width:100%;min-height:44px;background:#15181c;color:var(--ink);border:1px solid #59636e;padding:8px}#share-status{overflow-wrap:anywhere}.share-actions{display:flex;justify-content:space-between;gap:12px}.share-actions button{min-height:44px;padding:8px 12px;background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:4px;cursor:pointer}#builder #option-field[hidden]{display:none}#appearance summary{cursor:pointer;padding:8px 0}#builder #part-color{height:44px;min-width:64px;padding:3px}#color-note{flex:1;font-size:12px;overflow-wrap:anywhere;color:var(--dim)}#reset-color{min-height:44px}#view:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}#help{flex-shrink:0;width:28px;height:30px;border:1px solid #59636e;border-radius:5px;color:var(--ink);background:#303840;cursor:pointer}#help-dialog{width:min(620px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:20px;background:var(--panel);color:var(--ink);border:1px solid #59636e;border-radius:8px}#help-dialog::backdrop{background:#0009}#help-dialog h2{margin-top:0;font-size:20px}#help-dialog ol{padding-left:22px}#help-dialog li{margin:10px 0}#filename-preview{overflow-wrap:anywhere;color:var(--dim)}#filename-dialog{max-height:calc(100dvh - 32px);overflow:auto}#draft-recovery{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px;margin-bottom:8px;border:1px solid #59636e;border-radius:6px}#draft-recovery[hidden]{display:none}#draft-description{flex:1 1 170px;min-width:0;font-size:12px}#draft-filename,#draft-saved{display:block;overflow-wrap:anywhere}#draft-saved{color:var(--dim)}#builder #restore-draft{min-height:44px}.angle-heading{display:flex;align-items:center;justify-content:space-between;gap:4px}#builder #angle-settings{min-width:44px;min-height:28px;padding:0 4px;font:inherit;line-height:1.2}#source-edit-help{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}#source-edit-help[hidden]{display:none}#source-edit-help button{min-height:44px}#status:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}#part-search-dialog,#part-name-dialog,#control-key-dialog,#move-branch-dialog{width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:20px;border:1px solid #59636e;border-radius:8px;background:var(--panel);color:var(--ink)}#part-search-dialog::backdrop,#part-name-dialog::backdrop,#control-key-dialog::backdrop,#move-branch-dialog::backdrop{background:#0009}#part-search-dialog label,#part-name-dialog label,#control-key-dialog label,#move-branch-dialog label{display:grid;gap:4px;margin:10px 0}#part-search-dialog input,#part-search-dialog select,#part-name-dialog input,#control-key-dialog select,#move-branch-dialog select{min-height:44px;background:var(--bg);color:var(--ink)}#control-key-status{color:var(--err)}#control-key-usage{white-space:pre-wrap;overflow-wrap:anywhere}#name-part,#move-branch{min-height:44px;margin:6px 0}#part-name-status,#move-branch-status{color:var(--err)}.parts-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}#builder #find-part{min-width:44px;min-height:28px;padding:0 6px;font-size:12px}#part-search-results{width:100%;min-width:0}#part-search-dialog input{min-width:0;width:100%}#part-search-detail{overflow-wrap:anywhere}.edges button{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.2}.edge-count{font-size:10px;line-height:1.2;color:var(--dim)}#script-error[hidden]{display:none}#script-error{color:#ff8a80;display:flex;gap:8px;align-items:center;padding:2px 8px}#api-list{width:100%}#api-desc{margin:4px 0;min-height:1.2em;font-size:12px;opacity:.85}.edge-count{font-size:11px;color:#b4bcc4}#viewmode{background:transparent;color:var(--ink);border:1px solid #333a42;border-radius:6px;min-width:34px;height:30px;font-size:14px;cursor:pointer}#builder summary{cursor:pointer;min-height:24px;padding:6px 0}#source-hint{padding:2px 12px;font-size:11px;color:var(--dim);background:#15181c}@media(max-width:800px){#source-hint{display:none}}.share-run{display:flex;align-items:center;gap:8px;margin:10px 0 0;min-height:32px}.share-run[hidden]{display:none}#debug-toggle{background:transparent;color:var(--ink);border:1px solid #333a42;border-radius:6px;min-width:34px;height:30px;font-size:14px;cursor:pointer}#debug-toggle[aria-pressed=true]{background:#303840;border-color:var(--accent)}#debug{position:absolute;left:0;right:0;bottom:0;height:min(42%,340px);min-height:200px;display:flex;flex-direction:column;background:#16191df2;color:var(--ink);border-top:1px solid #39424c;font-size:12px;z-index:2}#debug[hidden]{display:none}.debug-bar{display:flex;align-items:center;gap:6px;padding:6px 8px}.debug-bar button,.bp-add button,#debug-break button{min-width:32px;min-height:28px;background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:4px;cursor:pointer}#debug-timeline{flex:1;min-width:80px}#debug-frame{font:12px var(--mono);color:var(--dim);white-space:nowrap}.debug-cols{flex:1;min-height:0;display:grid;grid-template-columns:minmax(180px,1fr) 2fr minmax(180px,1fr);gap:8px;padding:0 8px 8px}.debug-col{min-height:0;overflow:auto;display:flex;flex-direction:column}.debug-col h3{margin:2px 0 4px;font-size:12px;color:var(--dim);font-weight:600}#debug-legend span{margin-left:8px;font-weight:400}#debug-graph{flex:1;width:100%;min-height:80px;background:#15181c;border-radius:4px}#debug-watch-empty{color:var(--dim);margin:4px 0}#debug-watch-empty[hidden]{display:none}.watch-row{display:grid;grid-template-columns:auto auto 1fr auto;gap:6px;align-items:center;font:12px var(--mono);padding:1px 2px;border-radius:3px;cursor:pointer}.watch-row.changed{animation:watch-flash .6s}@keyframes watch-flash{0%{background:#4a5560}to{background:transparent}}.watch-kind{color:var(--dim);font-size:10px}.watch-value{text-align:right;overflow-wrap:anywhere}.bp-add{display:flex;gap:4px}.bp-add input{width:5em;min-height:28px;background:var(--bg);color:var(--ink);border:1px solid #59636e;border-radius:4px}.bp{margin:4px 4px 0 0;min-height:26px;background:#3a2a2a;color:#ffb4ab;border:1px solid #8c4a44;border-radius:12px;cursor:pointer}#debug-break{margin-top:6px;padding:6px;border:1px solid #ff8a80;border-radius:4px}#debug-break[hidden]{display:none}.break-head{color:#ffb4ab;margin-bottom:4px}.break-locals{font:12px var(--mono)}.debugging #flight-overlay{bottom:max(200px,min(42%,340px))}.building #debug{display:none}@media(max-width:800px){.debug-cols{grid-template-columns:1fr 1fr}.debug-cols .debug-col:nth-child(2){display:none}#debug-replay{display:none}}.building #debug-toggle{display:none}#build-cost{margin:6px 0 2px;padding:4px 8px;border-radius:4px;background:#23302a;color:#c8e6c9;font-size:12px}#build-cost.over{background:#3a2424;color:#ffb4ab}#build-cost[hidden]{display:none}#challenge-open{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:3px 8px;font:13px system-ui,sans-serif;white-space:nowrap;cursor:pointer}.building #challenge-open{display:none}#challenge-banner{grid-area:2 / 1 / auto / -1;justify-self:center;pointer-events:auto;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 12px;background:#101418b8;color:#fff;border-radius:8px;font:13px/1.3 system-ui,sans-serif;z-index:1;max-width:100%;width:max-content}#challenge-banner[hidden]{display:none}#challenge-banner.over{background:#781e1ecc}#challenge-banner button{flex:none;white-space:nowrap;min-height:28px;background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:4px;cursor:pointer}.building #challenge-banner{display:none}#challenge-dialog,#challenge-result{width:min(520px,calc(100vw - 32px));padding:20px;border:1px solid #59636e;border-radius:8px;background:var(--panel);color:var(--ink)}#terrain-map{align-self:end;justify-self:end;max-height:100%;overflow:auto;pointer-events:auto;z-index:2;color:#fff;background:#20272eef;border-radius:6px}#terrain-map[hidden],.building #terrain-map,.debugging #terrain-map{display:none}#terrain-map[open]{width:min(200px,49vw)}#terrain-map summary{padding:8px 12px;cursor:pointer;font-size:13px}#terrain-map svg{display:block;margin-inline:auto;width:min(180px,38vw);height:clamp(32px,calc(100cqh - 104px),155px)}#terrain-map .contour-key[hidden],#terrain-map .map-sounding[hidden],#terrain-map .map-survey[hidden]{display:none}#terrain-map .contour-key{padding-top:0}#terrain-map .contour-key:before{display:inline-block;width:14px;border-top:1px solid #e3e4ae;margin-right:4px;vertical-align:middle;content:""}#terrain-map .contour-key.shoals:before{border-color:#6cc5be;border-width:5px}#terrain-map small{display:block;padding:3px 8px 7px;font-size:11px}@container (max-height: 215px){#terrain-map[open]{width:min(288px,82vw)}#terrain-map .map-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;padding:0 4px 5px}#terrain-map svg{width:100%;height:clamp(32px,calc(100cqh - 42px),145px)}}#challenge-dialog[open]{display:flex;flex-direction:column;gap:12px;max-height:calc(100dvh - 32px)}#challenge-dialog .course-jumps{display:flex;gap:6px}#challenge-dialog .course-jumps button{flex:1;min-height:36px;background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:4px;cursor:pointer}@media(pointer:coarse){#challenge-dialog .course-jumps button{min-height:44px}}#challenge-dialog h2{margin:0}#challenge-dialog .course-options{overflow-y:auto;overscroll-behavior:contain}#challenge-dialog .course-options>p:first-child{margin-top:0}#challenge-dialog .share-actions{gap:6px}#challenge-dialog .share-actions button{padding-inline:6px;white-space:nowrap}#challenge-dialog .share-actions form{margin-left:auto}#challenge-list{display:grid;gap:8px;margin:12px 0}#challenge-list button{text-align:left;padding:10px 12px;min-height:44px;background:#303840;color:var(--ink);border:1px solid #59636e;border-radius:6px;cursor:pointer}#challenge-list button[aria-current=true]{border-color:var(--accent)}#challenge-list small{display:block;color:var(--dim);margin-top:2px}.challenge-costs{color:var(--dim);font-size:12px}#challenge-result-body dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0}#challenge-result-body dt{color:var(--dim)}#source-wrap{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0;height:100%;overflow:hidden;background:#15181c}#source-gutter{overflow:hidden;min-height:0;padding:10px 6px 60px 8px;min-width:2.6em;font:13px/1.45 var(--mono);color:#56606a;text-align:right;user-select:none;cursor:pointer;border-right:1px solid #262c33}#source-gutter div{padding:0 2px;border-radius:3px}#source-gutter div:hover{color:var(--ink)}#source-gutter div.bp{background:#8c2f2f;color:#fff}#source-gutter div.err{color:#ff8a80;text-decoration:underline wavy #ff5252}.source-layer{position:relative;min-width:0;min-height:0;overflow:hidden}#source-highlight{position:absolute;left:0;top:0;margin:0;padding:10px 12px;font:13px/1.45 var(--mono);tab-size:2;white-space:pre;color:var(--ink);pointer-events:none}.source-layer #source{position:relative;background:transparent;color:transparent;caret-color:var(--ink)}.source-layer #source::selection{background:#78a0dc59;color:transparent}.hl-comment{color:#6a9955}.hl-string{color:#ce9178}.hl-number{color:#b5cea8}.hl-keyword{color:#569cd6}.hl-api{color:#dcdcaa}.hl-lib{color:#4ec9b0}.hl-type{color:#4fc1ff}.hl-attr{color:#9cdcfe}#completion{position:absolute;z-index:3;min-width:200px;max-width:320px;background:#1f252b;border:1px solid #4a5560;border-radius:6px;box-shadow:0 6px 18px #00000073;font:12px/1.4 var(--mono);padding:3px 0}#completion[hidden]{display:none}.completion-row{display:flex;gap:8px;padding:2px 8px;cursor:pointer;white-space:nowrap}.completion-row[aria-selected=true]{background:#2f4a63}.completion-kind{color:var(--dim);font:10px/1.9 system-ui,sans-serif;min-width:3.5em}.completion-label{color:var(--ink)}.completion-detail{border-top:1px solid #39424c;margin-top:3px;padding:4px 8px 2px;color:#c8d0d8;font:11px/1.4 system-ui,sans-serif;white-space:normal}.bp-add{flex-wrap:wrap}.bp-add #debug-bp-cond{flex:1;min-width:8em}.bp-add #debug-bp-after{width:5em}.debug-console{margin-top:auto;padding-top:6px}#debug-console-log{max-height:7em;overflow:auto;font:12px/1.4 var(--mono)}#debug-console-log .console-in{color:var(--dim)}#debug-console-log .console-out{color:#c8e6c9}#debug-console-log .console-err{color:#ff8a80}#debug-console{width:100%;min-height:28px;margin-top:2px;background:var(--bg);color:var(--ink);border:1px solid #59636e;border-radius:4px;font:12px var(--mono)}#lua-apply{position:absolute;top:6px;right:8px;z-index:2;min-height:28px;padding:3px 10px;background:var(--accent);color:#111;border:0;border-radius:4px;font:600 12px system-ui,sans-serif;cursor:pointer;box-shadow:0 2px 6px #0006}#lua-apply[hidden]{display:none}#source-hint.error{color:#ff8a80}#challenge-list h3{margin:8px 0 0;font-size:13px;color:var(--dim);font-weight:600}#source-gutter div.cur{background:#b38f00;color:#111}.break-controls{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}#water-log-dialog{max-height:calc(100dvh - 32px);overflow:auto}#water-log-dialog table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}#water-log-dialog th,#water-log-dialog td{text-align:right;padding:5px 8px;border-bottom:1px solid #39434b}#water-log-dialog th:first-child,#water-log-dialog td:first-child{text-align:left}#water-log-dialog form{margin-top:12px;text-align:right}#water-log-dialog td small{display:block;color:var(--dim)}#water-log-dialog form{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}#lua-narrow,#lua-reference{display:none}body.lua-wide{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.lua-wide #bar>:not(#lua-narrow,#lua-reference,#run){display:none}.lua-wide #lua-narrow,.lua-wide #lua-reference{display:inline-block;min-height:36px;padding-inline:10px;color:var(--ink);background:#303840;border:1px solid #59636e;border-radius:5px;cursor:pointer}.lua-wide #side{grid-template-rows:auto auto minmax(0,1fr) auto auto auto}.lua-wide #builder{grid-row:2;padding:0;max-height:32dvh}.lua-wide #source-wrap{grid-row:3}.lua-wide #builder>:not(#script-tools),.lua-wide #script-tools>summary,.lua-wide #script-tools>.edit-row:first-of-type,.lua-wide:not(.lua-reference-open) #builder{display:none}.lua-wide.lua-reference-open #builder{padding:4px 12px}@media(max-width:800px){body.lua-wide{height:100dvh;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.lua-wide #stage{display:none}.lua-wide #lua-narrow,.lua-wide #lua-reference,.lua-wide #run{min-height:44px}}
