:root{--bg-app:#111418;--bg-viewport:#161a20;--bg-panel:#1c2128;--bg-dock:#0b0d10;--bg-button:#10141a;--border-panel:#2a313b;--grid-line:#788ca01a;--grid-line-major:#788ca02e;--text:#d7e0e8;--text-dim:#6b7684;--accent:#45e0a8;--accent-hot:gold;--shadow:#00000080}body.night-mode{--bg-app:#05070c;--bg-viewport:#0a0f1a;--bg-panel:#0d1220;--bg-dock:#030408;--bg-button:#090d16;--border-panel:#1d2536;--grid-line:#5a78c814;--grid-line-major:#5a78c829;--text:#c9d6f0;--text-dim:#56658a;--accent:#6fd3ff}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;width:100vw;height:100vh;margin:0;padding:0;overflow:hidden}body{background:var(--bg-app);color:var(--text);touch-action:manipulation;-webkit-user-select:none;user-select:none;flex-direction:column;font-family:SFMono-Regular,Cascadia Mono,Consolas,Liberation Mono,Menlo,monospace;transition:background-color 1.2s,color 1.2s;display:flex;position:relative}#viewport{background:#000;flex:auto;position:relative;overflow:hidden}#gl-canvas{width:100%;height:100%;display:block}#viewport:after{content:"";z-index:2;pointer-events:none;background:repeating-linear-gradient(0deg,#ffffff04 0 1px,#0000 1px 3px);position:absolute;inset:0}#dashboard{width:100%;height:fit-content;padding:12px 14px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg-panel);border-top:1px solid var(--grid-line-major);z-index:100;flex-direction:column;gap:10px;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color 1.2s;display:flex;position:absolute;bottom:0;left:0}#dashboard.collapsed{transform:translateY(120%)}#inspect-drawer{background:var(--bg-panel);border:1px solid var(--border-panel);border-bottom:2px solid var(--accent);max-height:min(70vh,540px);box-shadow:0 -8px 30px var(--shadow);opacity:0;visibility:hidden;pointer-events:none;border-radius:4px 4px 0 0;flex-direction:column;gap:8px;margin-bottom:10px;padding:clamp(8px,2vw,14px);transition:opacity .25s,transform .25s,visibility 0s linear .25s;display:flex;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;transform:translateY(14px)}#inspect-drawer.open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .25s,transform .25s;transform:translateY(0)}.drawer-header{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.drawer-coords{letter-spacing:2px;color:var(--accent);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700}.drawer-structure{letter-spacing:2px;color:var(--text-dim);font-size:11px}.drawer-connect{letter-spacing:1px;font-size:10px}.drawer-connect.yes{color:#3ddc84}.drawer-connect.no{color:#ff5470}#drawer-close{margin-left:auto;padding:4px 8px;font-size:10px;line-height:1}.drawer-error{letter-spacing:1px;color:#ff5470;min-height:12px;font-size:10px}.drawer-error.ok{color:var(--accent)}.drawer-section{flex-direction:column;gap:6px;display:flex}.drawer-actions{flex-wrap:wrap;gap:8px;display:flex}.drawer-btn{letter-spacing:.5px;white-space:normal;overflow-wrap:anywhere;text-align:left;flex:auto;min-width:0;padding:clamp(6px,1.8vw,10px) clamp(6px,2vw,12px);font-size:clamp(.7rem,2.5vw,.9rem);line-height:1.3}.drawer-btn.armed{border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px #45e0a840}.build-tabs{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.build-tabs .build-tab{letter-spacing:1px;opacity:.55;white-space:normal;overflow-wrap:anywhere;flex:auto;min-width:0;padding:clamp(3px,1.2vw,6px) clamp(4px,1.2vw,8px);font-size:clamp(.56rem,2.2vw,.75rem);transition:opacity .15s}.build-tab:hover{opacity:.85}.build-tab.active{opacity:1;border-color:var(--accent-hot);color:var(--accent-hot);box-shadow:0 0 8px #ffd70040}#drawer-route{flex-direction:column;gap:6px;display:flex}.route-banner{letter-spacing:2px;color:var(--accent-hot);font-size:11px;font-weight:700;animation:1.1s ease-in-out infinite route-blink}@keyframes route-blink{50%{opacity:.25}}.route-summary{letter-spacing:1px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:10px}.confirm-btn{color:var(--accent);border-color:var(--accent);box-shadow:0 0 8px #45e0a840}#drawer-asset{flex-direction:column;gap:6px;display:flex}.asset-status{letter-spacing:1.5px;font-size:10px;font-weight:700}.asset-status.online{color:var(--accent)}body.night-mode .asset-status.online{color:var(--accent-hot)}.asset-status.offline{color:var(--text-dim)}.asset-status.warn{color:#f0a35e}.asset-condition{letter-spacing:1px;font-variant-numeric:tabular-nums;font-size:10px}.asset-condition.warn{color:#e5484d}.asset-diagnostics{letter-spacing:1px;color:#6fd3ff;font-size:10px;line-height:1.6}.asset-diagnostics .diag-ok{color:#3ddc84}.asset-diagnostics .diag-warn{color:#f0a35e}.asset-diagnostics .diag-bad{color:#e5484d}.drawer-btn:disabled{opacity:.35;cursor:default;pointer-events:none}.license-row{border:1px solid var(--border-panel);background:#ffffff05;border-radius:6px;margin-bottom:8px;padding:8px 10px}.license-top{align-items:center;gap:8px;margin-bottom:4px;display:flex}.license-badge{letter-spacing:1px;border:1px solid;border-radius:3px;padding:2px 6px;font-size:9px}.license-badge.ok{color:var(--accent);border-color:var(--accent)}.license-badge.off{color:#ff7b5a;border-color:#ff7b5a}.license-title{letter-spacing:1px;font-size:11px}.license-sub{letter-spacing:.5px;color:var(--text-dim);margin-bottom:6px;font-size:9px;line-height:1.5}.license-buy{flex:none;width:100%}.license-locked{opacity:.5;flex:none;width:100%}#marketing-row{padding-top:2px}#btn-marketing{width:100%;padding:8px;font-size:11px}.asset-metrics{letter-spacing:1px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:10px}.asset-calendar{gap:4px;padding-bottom:2px;display:flex;overflow-x:auto}.cal-chip{letter-spacing:.5px;border:1px solid var(--border-panel);border-radius:4px;flex-direction:column;flex:none;padding:5px 6px;font-size:9px;display:flex}.cal-chip.cal-open{color:var(--text-dim)}.cal-chip.cal-booked{color:var(--accent);border-color:var(--accent)}body.night-mode .cal-chip.cal-booked{color:var(--accent-hot);border-color:var(--accent-hot)}.cal-chip.cal-canceled{color:#e5484d;background:#e5484d0f;border-style:dashed;border-color:#e5484d99}body.night-mode .cal-chip.cal-canceled{color:#ff8589;border-color:#ff858999}.cal-head{font-weight:700}.cal-why{letter-spacing:.3px;white-space:normal;color:#b4636a;max-width:118px;margin-top:2px;font-size:8px;line-height:1.3}body.night-mode .cal-why{color:#c98a8e}.asset-cancel{letter-spacing:.5px;color:#ff6b6e;background:#e5484d1f;border:1px solid #e5484d8c;border-left:3px solid #e5484d;border-radius:4px;padding:6px 8px;font-size:10px;line-height:1.5;display:none}.asset-cancel.show{animation:1.2s ease-in-out infinite cancel-pulse;display:block}@keyframes cancel-pulse{0%,to{background:#e5484d1f}50%{background:#e5484d4d}}.dismantle-btn{color:#f0a35e;border-color:#f0a35e73}.confirm-dismantle{color:#e5484d;border-color:#e5484d;box-shadow:0 0 8px #e5484d40}.dash-header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.dash-title{letter-spacing:2px;color:var(--accent);font-size:13px;font-weight:700}#status-line{letter-spacing:1px;color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}#ui-balance-wrap{align-items:baseline;gap:10px;display:flex}.ui-label{letter-spacing:3px;color:var(--text-dim);font-size:10px}#ui-balance{letter-spacing:1px;color:var(--accent);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;transition:color .8s}body.night-mode #ui-balance{color:var(--accent-hot)}#ui-timber-wrap{align-items:baseline;gap:10px;display:flex}#ui-timber{letter-spacing:1px;color:var(--accent);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}body.night-mode #ui-timber{color:var(--accent-hot)}#btn-sell-timber{letter-spacing:1px;padding:4px 8px;font-size:10px}#time-controls{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:auto;display:flex}#ui-time-slider{flex:90px;min-width:70px;max-width:220px}#placement-controls{background:var(--bg-panel);border:1px solid var(--accent);box-shadow:0 4px 24px var(--shadow);z-index:120;border-radius:999px;gap:10px;padding:6px 10px;display:flex;position:absolute;bottom:100%;left:50%;transform:translate(-50%,-14px)}#placement-controls[hidden]{display:none}#btn-rotate,#btn-confirm{border:1px solid var(--accent);width:44px;height:44px;color:var(--accent);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:1.3rem;font-weight:700;line-height:1;transition:background-color .15s,transform .1s;display:flex}#btn-rotate:active,#btn-confirm:active{transform:scale(.9)}#btn-confirm{background:var(--accent);color:var(--bg-app)}#ui-clock{letter-spacing:2px;color:var(--accent);font-variant-numeric:tabular-nums;min-width:74px;font-size:20px;font-weight:700}#ui-date{letter-spacing:1px;color:var(--text-dim);font-variant-numeric:tabular-nums;font-size:11px}.btn-icon{padding:10px 12px;font-size:14px;line-height:1}#ui-time-slider{appearance:none;background:var(--border-panel);cursor:pointer;border-radius:2px;outline:none;flex:1;height:4px}#ui-time-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);border:2px solid var(--bg-panel);cursor:pointer;border-radius:50%;width:18px;height:18px}#ui-time-slider::-moz-range-thumb{background:var(--accent);border:2px solid var(--bg-panel);cursor:pointer;border-radius:50%;width:18px;height:18px}#ui-speed{letter-spacing:1px;color:var(--text-dim);text-align:right;font-variant-numeric:tabular-nums;min-width:36px;font-size:11px}.btn{white-space:normal;overflow-wrap:anywhere;letter-spacing:2px;text-transform:uppercase;color:var(--text);background:var(--bg-button);border:1px solid var(--border-panel);cursor:pointer;border-radius:3px;padding:clamp(8px,2.2vw,14px) clamp(6px,1.6vw,10px);font-family:inherit;font-size:clamp(.7rem,2.5vw,.9rem);transition:color .2s,border-color .2s,background-color .2s,transform .1s}.btn:active{transform:scale(.97)}.btn.active{color:var(--accent);border-color:var(--accent);box-shadow:0 0 8px #45e0a840}#toggle-dashboard{bottom:calc(20px + env(safe-area-inset-bottom,0px));background-color:var(--bg-dock);width:48px;height:48px;color:var(--text-dim);border:1px solid var(--border-panel);cursor:pointer;z-index:200;border-radius:50%;justify-content:center;align-items:center;font-size:20px;line-height:1;transition:transform .1s,background-color .2s;display:flex;position:absolute;right:20px;box-shadow:0 4px 12px #00000080}#toggle-dashboard:active{background-color:var(--bg-button);transform:scale(.9)}#btn-phone{top:calc(16px + env(safe-area-inset-top,0px));background-color:var(--bg-dock);border:1px solid var(--border-panel);cursor:pointer;z-index:200;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:20px;line-height:1;transition:transform .1s,background-color .2s;display:flex;position:absolute;right:16px;box-shadow:0 4px 12px #00000080}#btn-phone:active{background-color:var(--bg-button);transform:scale(.9)}#phone-badge{color:#fff;pointer-events:none;background:#e5484d;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:700;line-height:1;display:flex;position:absolute;top:-4px;right:-4px}#phone-badge[hidden]{display:none}#phone-ui{top:calc(76px + env(safe-area-inset-top,0px));-webkit-backdrop-filter:blur(10px);border:1px solid var(--border-panel);z-index:210;background:#0d1118d1;border-radius:18px;flex-direction:column;width:min(300px,100vw - 32px);max-height:min(450px,70vh);display:flex;position:absolute;right:16px;overflow:hidden;box-shadow:0 12px 40px #0000008c}#phone-ui[hidden]{display:none}#btn-debug{top:calc(16px + env(safe-area-inset-top,0px));background-color:var(--bg-dock);border:1px solid var(--border-panel);cursor:pointer;z-index:200;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:18px;line-height:1;transition:transform .1s,background-color .2s;display:flex;position:absolute;left:16px;box-shadow:0 4px 12px #00000080}#btn-debug:active{background-color:var(--bg-button);transform:scale(.9)}#debug-panel{top:calc(68px + env(safe-area-inset-top,0px));-webkit-backdrop-filter:blur(10px);border:1px solid var(--border-panel);z-index:210;background:#0d1118db;border-radius:16px;flex-direction:column;width:min(270px,100vw - 32px);display:flex;position:absolute;left:16px;overflow:hidden;box-shadow:0 12px 40px #0000008c}#debug-panel[hidden]{display:none}.debug-header{border-bottom:1px solid var(--border-panel);justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.debug-title{letter-spacing:.08em;color:var(--text-dim);font-size:11px;font-weight:700}.debug-body{flex-direction:column;gap:12px;padding:12px;display:flex}.debug-row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;font-size:12px;display:flex}.debug-row input{accent-color:#4f8cff;flex:none;width:16px;height:16px;margin-top:1px}.debug-row em{color:var(--text-dim);margin-top:2px;font-size:10px;font-style:normal;line-height:1.3;display:block}.phone-header{border-bottom:1px solid var(--border-panel);flex:none;align-items:center;gap:8px;padding:10px 12px;display:flex}.phone-avatar{font-size:18px}.phone-title{letter-spacing:2px;color:var(--text);flex:1;font-size:12px;font-weight:700}.phone-messages{flex-direction:column;flex:auto;gap:8px;padding:12px;display:flex;overflow-y:auto}.phone-messages:empty:after{content:"NO MESSAGES YET — THE MANAGER TEXTS WHEN THINGS HAPPEN";color:var(--text-dim);text-align:center;letter-spacing:1px;padding:24px 8px;font-size:11px}.phone-msg{border:1px solid var(--border-panel);max-width:92%;color:var(--text);background:#ffffff12;border-radius:14px 14px 14px 4px;align-self:flex-start;padding:8px 10px 6px;font-size:13px;line-height:1.4;animation:.25s phone-msg-in}.phone-msg-meta{color:var(--text-dim);justify-content:space-between;align-items:center;gap:8px;margin-top:5px;font-size:10px;display:flex}.phone-msg-del{border:1px solid var(--border-panel);width:20px;height:20px;color:var(--text-dim);cursor:pointer;touch-action:manipulation;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:10px;line-height:1;transition:color .15s,border-color .15s;display:flex}.phone-msg-del:hover{color:#e5484d;border-color:#e5484d}@keyframes phone-msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}body.night-mode .btn.active{color:var(--accent-hot);border-color:var(--accent-hot);box-shadow:0 0 10px #ffd7004d}
