:root{--bg:#f4f2ee;--surface:#fff;--surface-2:#ece8e1;--text:#1d1f22;--muted:#62666d;--line:#d9d4cb;--accent:#2d6cdf;--live:#1f8a4c;--key:#b36b00;--capture:#7a4cc2;--overlay:#121418b8;--overlay-text:#f1f3f5;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Apple SD Gothic Neo,Noto Sans KR,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#0f1216;--surface:#171b21;--surface-2:#1f242c;--text:#e8ebef;--muted:#9aa3ae;--line:#2b313a;--accent:#6b9cff;--live:#45c47c;--key:#f0a63a;--capture:#b28cf0}}:root[data-theme=dark]{--bg:#0f1216;--surface:#171b21;--surface-2:#1f242c;--text:#e8ebef;--muted:#9aa3ae;--line:#2b313a;--accent:#6b9cff;--live:#45c47c;--key:#f0a63a;--capture:#b28cf0}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;margin:0}a{color:var(--accent)}button,select,input{font:inherit}.hub{max-width:1080px;margin:0 auto;padding:40px 16px 64px}.hub h1{letter-spacing:-.02em;margin:0 0 6px;font-size:2rem}.hub .lead{color:var(--muted);max-width:720px;margin:0 0 28px;line-height:1.6}.hub h2{margin:40px 0 14px;font-size:1.1rem}.cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.card{background:var(--surface);border:1px solid var(--line);color:inherit;border-radius:14px;flex-direction:column;gap:10px;padding:18px;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.card:hover{border-color:var(--accent);transform:translateY(-1px)}.card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.card h3{margin:0;font-size:1.05rem}.card .path{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.card p{color:var(--muted);margin:0;font-size:.92rem;line-height:1.5}.card dl{grid-template-columns:auto 1fr;gap:4px 10px;margin:4px 0 0;font-size:.85rem;line-height:1.45;display:grid}.card dt{color:var(--muted)}.card dd{margin:0}.chip{white-space:nowrap;border:1px solid;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-block}.chip-live{color:var(--live)}.chip-key{color:var(--key)}.chip-capture{color:var(--capture)}.notbuilt{gap:8px;margin:0;padding:0;list-style:none;display:grid}.notbuilt li{background:var(--surface-2);border-radius:10px;padding:12px 14px;font-size:.9rem;line-height:1.5}.notbuilt strong{margin-right:8px}.hub footer{color:var(--muted);margin-top:40px;font-size:.8rem}.viewer{color:var(--overlay-text);background:#0c0f13;position:fixed;inset:0;overflow:hidden}.viewer>.stage{position:absolute;inset:0}.stage canvas{outline:none}.topbar{pointer-events:none;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex;position:absolute;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.topbar .back,.topbar .icon{background:var(--overlay);width:36px;height:36px;color:var(--overlay-text);cursor:pointer;border:none;border-radius:10px;place-items:center;font-weight:700;text-decoration:none;display:grid}.topbar .title{background:var(--overlay);border-radius:10px;align-items:center;gap:8px;min-width:0;padding:7px 12px;display:flex}.topbar .title strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.viewer .chip-live{color:#6fe29d}.viewer .chip-key{color:#ffc163}.viewer .chip-capture{color:#cdb1ff}.topbar .tools{align-items:center;gap:8px;margin-left:auto;display:flex}.topbar select{background:var(--overlay);height:36px;color:var(--overlay-text);border:none;border-radius:10px;max-width:46vw;padding:0 10px}.segmented{background:var(--overlay);border-radius:10px;padding:3px;display:flex}.segmented button{color:var(--overlay-text);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:6px 12px}.segmented button.on{color:#111;background:#ffffffeb;font-weight:600}.info{background:#121418db;border-radius:12px;width:min(380px,100vw - 24px);max-height:calc(100% - 140px);padding:14px 16px;font-size:.88rem;line-height:1.5;position:absolute;top:58px;right:12px;overflow:auto}.info .tagline{margin:0 0 10px;font-weight:600}.info dl{grid-template-columns:auto 1fr;gap:4px 10px;margin:0;display:grid}.info dt{color:#9aa3ae}.info dd{margin:0}.info .extra{border-top:1px solid #ffffff24;margin-top:12px;padding-top:12px}.info .extra p{margin:0 0 8px}.info label{align-items:center;gap:8px;margin:6px 0;display:flex}.notice form,.info form{text-align:left;margin-top:8px}.notice input[type=password],.info input[type=password],.info input[type=text]{width:100%;color:inherit;background:#0000004d;border:1px solid #fff3;border-radius:8px;padding:8px 10px}.notice button,.info button{color:#111;cursor:pointer;background:#f1f3f5;border:none;border-radius:8px;margin-top:8px;padding:8px 12px;font-weight:600}.notice{text-align:center;background:#121418db;border-radius:12px;max-width:min(520px,100vw - 32px);padding:16px 18px;line-height:1.6;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.notice p{margin:0 0 8px}.notice p:last-child{margin-bottom:0}.bottombar{color:#f1f3f5d9;text-shadow:0 1px 2px #000c;pointer-events:none;flex-wrap:wrap;align-items:flex-end;gap:4px 14px;padding:8px 12px;font-size:.72rem;display:flex;position:absolute;bottom:0;left:0;right:0}.bottombar a{color:inherit;pointer-events:auto}.bottombar .attribution{text-align:right;margin-left:auto}.bottombar .attribution img{vertical-align:middle;height:16px}.touchpad{display:none}@media (pointer:coarse){.bottombar .help{display:none}.touchpad{display:block}.joystick{touch-action:none;background:#12141873;border:2px solid #ffffff59;border-radius:50%;width:120px;height:120px;position:absolute;bottom:44px;left:20px}.knob{pointer-events:none;background:#ffffffd9;border-radius:50%;width:48px;height:48px;position:absolute;top:36px;left:36px}.touchpad .buttons{flex-direction:column;gap:10px;display:flex;position:absolute;bottom:52px;right:20px}.touchpad .buttons button{color:#fff;touch-action:none;background:#1214188c;border:2px solid #ffffff59;border-radius:50%;width:64px;height:64px;font-weight:700}}@media (width<=640px){.topbar .title{order:3;width:100%}.topbar .tools{gap:6px;margin-left:auto}.topbar select{max-width:36vw}.segmented button{padding:6px 9px}}.viewer .cesium-viewer-bottom{bottom:30px}.viewer .maplibregl-ctrl-bottom-right,.viewer .maplibregl-ctrl-bottom-left{bottom:24px}.legend{gap:4px;margin-top:8px;display:grid}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:3px;width:12px;height:12px;display:inline-block}.bar{border-radius:5px;height:10px;margin:6px 0 4px;display:flex;overflow:hidden}.bar i{height:100%;display:block}.floating{background:#121418db;border-radius:12px;width:min(440px,100vw - 24px);padding:12px 14px;font-size:.86rem;line-height:1.5;position:absolute;bottom:36px;left:12px}.floating p{margin:0 0 8px}.floating .row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.floating button,.floating .file{color:#111;cursor:pointer;background:#f1f3f5;border:none;border-radius:8px;padding:7px 12px;font-weight:600}.floating .file input{display:none}.floating label.slider{grid-template-columns:64px 1fr 52px;align-items:center;gap:8px;margin-top:6px;display:grid}.floating input[type=range]{width:100%}.dropping .stage{outline-offset:-12px;outline:3px dashed #6b9cff}@media (pointer:coarse){.floating{top:104px;bottom:auto}}
