:root{--bg:#121212;--panel-bg:#161616db;--text:#e8e8e8;--text-muted:#a0a0a0;--accent:#60a5fa;--accent-dim:#60a5fa24;--border:#ffffff1a;--danger:#ff5e5e;--sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:15px/145% var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:before,:after{box-sizing:border-box}html,body,#root{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%;min-height:100%;margin:0;overflow:hidden}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}.viewer-layout{background:var(--bg);width:100%;height:100dvh;position:fixed;inset:0}.viewer-layout canvas{touch-action:none;-webkit-touch-callout:none;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.ui-layer{z-index:10;pointer-events:none;padding:max(.75rem, var(--safe-top)) max(.75rem, var(--safe-right)) max(.75rem, var(--safe-bottom)) max(.75rem, var(--safe-left));position:absolute;inset:0}.panel{background:var(--panel-bg);border:1px solid var(--border);-webkit-backdrop-filter:blur(12px);pointer-events:auto;border-radius:12px}.viewer-layout>:not(canvas),.viewer-layout>:not(canvas) *{touch-action:manipulation}input,textarea{-webkit-user-select:text;user-select:text}.ui-left{top:max(.75rem, var(--safe-top));left:max(.75rem, var(--safe-left));z-index:11;flex-direction:column;gap:.5rem;max-width:260px;display:flex;position:absolute}.ui-right{top:max(.75rem, var(--safe-top));right:max(.75rem, var(--safe-right));z-index:11;position:absolute}.ui-bottom-left{bottom:max(.75rem, var(--safe-bottom));left:max(.75rem, var(--safe-left));z-index:11;position:absolute}.ui-bottom-right{bottom:max(.75rem, var(--safe-bottom));right:max(.75rem, var(--safe-right));z-index:11;position:absolute}.project-block{padding:.75rem 1rem}.project-title{letter-spacing:-.01em;margin:0 0 .1rem;font-size:1rem;font-weight:600}.project-subtitle{color:var(--text-muted);margin:0 0 .35rem;font-size:.8rem}.project-status{text-transform:uppercase;letter-spacing:.05em;color:#4ade80;background:#4ade801f;border-radius:999px;padding:.15rem .45rem;font-size:.65rem;font-weight:600;display:inline-block}.version-list{flex-direction:column;display:flex;overflow:hidden}.version-buttons{border-top:1px solid var(--border);flex-direction:column;display:flex}.version-button{border:none;border-bottom:1px solid var(--border);min-height:44px;color:var(--text);text-align:left;background:0 0;flex-direction:column;align-items:flex-start;gap:.1rem;padding:.55rem 1rem;transition:background .15s;display:flex}.version-button:last-child{border-bottom:none}.version-button:hover,.version-button:focus-visible{background:#ffffff0f;outline:none}.version-button.active{background:var(--accent-dim);box-shadow:inset 3px 0 0 var(--accent)}.version-name{font-size:.9rem;font-weight:600}.version-description{color:var(--text-muted);font-size:.75rem}.toolbar{gap:.25rem;padding:.35rem;display:flex}.tool-button{width:2.75rem;min-width:44px;height:2.75rem;min-height:44px;color:var(--text);border-radius:10px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.tool-button:hover,.tool-button:focus-visible{color:var(--accent);background:#ffffff14;outline:none}.tool-button.active{background:var(--accent-dim);color:var(--accent)}.tool-button svg{width:1.15rem;height:1.15rem}.controls-panel{flex-direction:column;gap:.75rem;max-width:260px;padding:.75rem 1rem;display:flex}.mode-toggle{gap:.35rem;display:flex}.mode-button{min-height:40px;color:var(--text-muted);background:#ffffff0a;border:1px solid #0000;border-radius:8px;flex:1;padding:.35rem .6rem;font-size:.8rem;font-weight:600}.mode-button.active{color:var(--text);background:var(--accent-dim);border-color:#60a5fa59}.mode-button:hover:not(.active),.mode-button:focus-visible:not(.active){color:var(--text);background:#ffffff14;outline:none}.light-control{flex-direction:column;gap:.4rem;display:flex}.light-header{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:.8rem;display:flex}.light-header-right{align-items:center;gap:.5rem;display:flex}.light-value{font-variant-numeric:tabular-nums;color:var(--text);font-weight:500}.light-reset{min-height:28px;color:var(--text-muted);border-radius:6px;padding:.2rem .45rem;font-size:.75rem}.light-reset:hover,.light-reset:focus-visible{color:var(--text);background:#ffffff14;outline:none}input[type=range].light-slider{appearance:none;cursor:pointer;background:0 0;width:100%;height:28px}input[type=range].light-slider::-webkit-slider-runnable-track{background:#ffffff26;border-radius:2px;height:4px}input[type=range].light-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);border-radius:50%;width:20px;height:20px;margin-top:-8px;box-shadow:0 0 0 4px #60a5fa33}input[type=range].light-slider::-moz-range-track{background:#ffffff26;border-radius:2px;height:4px}input[type=range].light-slider::-moz-range-thumb{background:var(--accent);border:none;border-radius:50%;width:20px;height:20px;box-shadow:0 0 0 4px #60a5fa33}.light-disabled{opacity:.5;pointer-events:none}.light-disabled-hint{color:var(--text-muted);font-size:.7rem}.hint,.readout{color:var(--text-muted);padding:.55rem .75rem;font-size:.75rem}.readout{flex-direction:column;gap:.2rem;min-width:170px;display:flex}.readout-row{gap:.35rem;display:flex}.readout-label{color:var(--text-muted);min-width:3.2rem}.readout-value{color:var(--text);font-weight:500}.readout-coords{font-variant-numeric:tabular-nums;letter-spacing:.02em}.hint-mobile{display:none}.hint-desktop{display:inline}.loading-overlay{z-index:20;pointer-events:auto;background:#121212cc;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.loading-content{background:var(--panel-bg);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:.75rem;padding:1.5rem;display:flex}.loading-spinner{border:2px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:1.5rem;height:1.5rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--text-muted);font-size:.9rem}.loading-bar-track{background:#ffffff1a;border-radius:2px;width:180px;height:4px;overflow:hidden}.loading-bar-fill{background:var(--accent);height:100%;transition:width .2s}.error-banner{z-index:30;color:#ffb3b3;cursor:pointer;pointer-events:auto;text-align:center;background:#ff5e5e1f;border:1px solid #ff5e5e59;border-radius:8px;max-width:80vw;padding:.75rem 1rem;font-size:.85rem;position:absolute;top:1rem;left:50%;transform:translate(-50%)}.modal-overlay{z-index:40;pointer-events:auto;background:#00000080;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal{width:min(420px,100vw - 2rem);padding:1.25rem}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.modal-header h2{margin:0;font-size:1.1rem;font-weight:600}.modal-close{width:2.75rem;min-width:44px;height:2.75rem;min-height:44px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex}.modal-close:hover,.modal-close:focus-visible{color:var(--text);background:#ffffff14;outline:none}.help-list{color:var(--text-muted);flex-direction:column;gap:.65rem;margin:0;padding:0;font-size:.85rem;list-style:none;display:flex}.help-list strong{color:var(--text);font-weight:500}@media (width<=768px){.ui-left{gap:.35rem;max-width:200px}.project-block{padding:.6rem .85rem}.project-title{font-size:.95rem}.project-subtitle{display:none}.project-status{font-size:.6rem}.version-list{width:auto}.version-buttons{scrollbar-width:none;border-top:none;flex-direction:row;gap:.35rem;padding:.35rem;overflow-x:auto}.version-buttons::-webkit-scrollbar{display:none}.version-button{white-space:nowrap;background:#ffffff0a;border-bottom:none;border-radius:8px;flex-direction:row;align-items:center;min-height:44px;padding:.55rem .85rem}.version-button.active{box-shadow:none;background:var(--accent-dim)}.controls-panel{left:50%;bottom:max(.75rem, var(--safe-bottom));flex-direction:row;align-items:center;gap:.75rem;width:auto;max-width:calc(100vw - 2rem);padding:.5rem .75rem;position:fixed;transform:translate(-50%)}.mode-toggle{flex-direction:row}.mode-button{min-height:44px;padding:.45rem .7rem}.light-control{width:150px}.ui-bottom-left{bottom:calc(max(.75rem, var(--safe-bottom)) + 3.75rem);text-align:center;width:max-content;left:50%;transform:translate(-50%)}.hint-desktop{display:none}.hint-mobile{display:inline}.ui-bottom-right{top:calc(max(.75rem, var(--safe-top)) + 3.5rem);right:max(.75rem, var(--safe-right));bottom:auto;left:auto}.readout{min-width:140px}}@media (width<=480px){.ui-left{gap:.25rem;max-width:160px}.project-title{font-size:.85rem}.project-status{font-size:.55rem}.version-button{padding:.45rem .65rem}.toolbar{gap:.15rem;padding:.25rem}.tool-button{width:2.5rem;height:2.5rem}.tool-label{font-size:.5rem}.controls-panel{gap:.5rem;padding:.45rem .6rem}.composer-modal{max-width:calc(100vw - 2rem)}}@media (width>=769px) and (width<=1024px){.ui-left{max-width:240px}.controls-panel{max-width:240px;padding:.65rem .85rem}}@media (width>=1025px){.ui-left{gap:.75rem;max-width:280px}.project-block{padding:1rem 1.25rem}.project-title{font-size:1.15rem}.controls-panel{max-width:280px;padding:.85rem 1.1rem}.hint,.readout{font-size:.8rem}}.tool-button{flex-direction:column;gap:.15rem}.tool-label{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);font-size:.55rem;font-weight:600;line-height:1}.tool-button.active .tool-label{color:var(--accent)}.mode-description{color:var(--text-muted);margin:0;font-size:.7rem;line-height:1.35}.annotation-miss{bottom:calc(max(.75rem, var(--safe-bottom)) + 3rem);z-index:25;background:var(--panel-bg);border:1px solid var(--border);color:var(--text-muted);pointer-events:none;border-radius:999px;padding:.45rem .85rem;font-size:.8rem;position:absolute;left:50%;transform:translate(-50%)}.composer-modal{max-width:360px}.composer-form{flex-direction:column;gap:.85rem;display:flex}.composer-field{flex-direction:column;gap:.25rem;display:flex}.composer-label{color:var(--text-muted);font-size:.75rem;font-weight:500}.composer-input,.composer-textarea{border:1px solid var(--border);width:100%;color:var(--text);resize:none;background:#ffffff0a;border-radius:8px;padding:.55rem .7rem;font-size:.85rem}.composer-input:focus,.composer-textarea:focus{background:#ffffff0f;border-color:#60a5fa80;outline:none}.composer-counter{color:var(--text-muted);align-self:flex-end;font-size:.7rem}.composer-counter.over-limit{color:var(--danger)}.composer-actions{justify-content:flex-end;gap:.5rem;margin-top:.25rem;display:flex}.composer-status,.composer-error{margin:0;font-size:.8rem}.composer-status{color:var(--text-muted)}.composer-error{color:#ffb3b3}.composer-button{min-height:36px;color:var(--text);cursor:pointer;background:#ffffff14;border:1px solid #0000;border-radius:8px;padding:.45rem .9rem;font-size:.8rem;font-weight:600}.composer-button.primary{background:var(--accent);color:#0f172a}.composer-button.primary:disabled{opacity:.5;cursor:not-allowed}.composer-button.danger{color:#ffb3b3;background:#ff5e5e26}.composer-button:hover:not(:disabled),.composer-button:focus-visible{background:#ffffff1f;outline:none}.composer-button.primary:hover:not(:disabled){background:#7ab8ff}.composer-button.danger:hover{background:#ff5e5e40}.notes-overlay{z-index:35;pointer-events:none;padding:max(.75rem, var(--safe-top)) max(.75rem, var(--safe-right)) max(.75rem, var(--safe-bottom)) max(.75rem, var(--safe-left));justify-content:flex-end;display:flex;position:absolute;inset:0}.notes-drawer{pointer-events:auto;flex-direction:column;width:320px;max-width:calc(100vw - 1.5rem);max-height:100%;display:flex;overflow:hidden}.notes-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.notes-header h2{margin:0;font-size:1rem;font-weight:600}.notes-live-status{color:var(--text-muted);margin-top:.15rem;font-size:.7rem;display:block}.notes-live-status[data-status=connected]{color:#86efac}.notes-live-status[data-status=connecting]{color:#fde047}.notes-live-status[data-status=unavailable]{color:#ffb3b3}.notes-header-actions{align-items:center;gap:.25rem;display:flex}.notes-refresh{width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1.1rem;line-height:1;transition:background .15s,color .15s;display:inline-flex}.notes-refresh:hover:not(:disabled),.notes-refresh:focus-visible{color:var(--text);background:#ffffff0f;outline:none}.notes-refresh:disabled{opacity:.5;cursor:not-allowed}.notes-error{flex-direction:column;align-items:center;gap:.75rem;display:flex}.notes-error p{color:#ffb3b3}.notes-action-error{color:#ffb3b3;width:100%;margin:0;font-size:.8rem}.notes-list{flex:1;margin:0;padding:.25rem;list-style:none;overflow-y:auto}.notes-item{margin:0}.notes-button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;gap:.25rem;padding:.6rem .75rem;transition:background .15s;display:flex}.notes-button:hover,.notes-button:focus-visible{background:#ffffff0f;outline:none}.notes-row{color:var(--text-muted);align-items:baseline;gap:.4rem;font-size:.75rem;display:flex}.notes-number{color:var(--accent);font-weight:700}.notes-author{color:var(--text);font-weight:500}.notes-date{margin-left:auto;font-size:.7rem}.notes-preview,.notes-text{color:var(--text);word-break:break-word;font-size:.8rem;line-height:1.4}.notes-preview{color:var(--text-muted)}.notes-empty{color:var(--text-muted);text-align:center;padding:1rem;font-size:.8rem}.notes-detail{flex-direction:column;flex:1;gap:.6rem;padding:.75rem 1rem;display:flex;overflow-y:auto}.notes-detail-meta{color:var(--text-muted);flex-wrap:wrap;align-items:baseline;gap:.4rem;font-size:.75rem;display:flex}.notes-actions{flex-wrap:wrap;gap:.5rem;margin-top:.25rem;display:flex}.notes-confirm-text{width:100%;color:var(--text-muted);margin-bottom:-.25rem;font-size:.75rem}@media (width<=768px){.notes-overlay{justify-content:center;align-items:flex-end;padding:0}.notes-drawer{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0;width:100%;max-width:none;max-height:60vh}.annotation-miss{bottom:calc(max(.75rem, var(--safe-bottom)) + 4rem)}}.mobile-only{display:none}.notes-icon-container{justify-content:center;align-items:center;display:flex;position:relative}.notes-badge{background:var(--accent);color:#0f172a;border-radius:999px;justify-content:center;align-items:center;min-width:1rem;height:1rem;padding:0 .2rem;font-size:.6rem;font-weight:700;line-height:1;display:flex;position:absolute;top:-.3rem;right:-.55rem}@media (width<=767px){.mobile-only{display:flex}.desktop-only,.mobile-hidden,.tool-label{display:none}.ui-right{z-index:11;inset:auto 0 0}.toolbar{width:100%;padding:.35rem .5rem;padding-bottom:max(.35rem, var(--safe-bottom));border-bottom:none;border-left:none;border-right:none;border-radius:0;justify-content:space-around;display:flex}.tool-button{flex:1 1 0;width:auto;height:2.75rem;position:relative}.tool-button.active{background:var(--accent-dim);color:var(--accent);box-shadow:inset 0 0 0 2px #60a5fa66}.tool-button:active{background:#ffffff1f}.tool-button.active:active{background:var(--accent-dim)}.controls-panel{bottom:calc(max(.75rem, var(--safe-bottom)) + 3.75rem);z-index:12;flex-direction:column;align-items:stretch;gap:.5rem;max-width:calc(100vw - 1.5rem);padding:.5rem .6rem;overflow:hidden}.mode-toggle{gap:.35rem}.mode-button{white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;justify-content:center;align-items:center;min-width:0;min-height:44px;padding:.35rem .5rem;font-size:.75rem;display:flex;overflow:hidden}.mode-button .mobile-only,.light-header .mobile-only{display:inline}.mode-description,.light-disabled-hint{display:none}.light-control{width:100%;min-width:0}.light-header{gap:.35rem;min-width:0;font-size:.75rem}.light-header label{white-space:nowrap}.light-header-right{gap:.35rem;min-width:0}.light-value{white-space:nowrap}.light-reset{white-space:nowrap;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:.25rem .5rem;font-size:.7rem;display:flex}.ui-bottom-left{bottom:calc(max(.75rem, var(--safe-bottom)) + 12.5rem);white-space:normal;text-align:center;width:auto;max-width:calc(100vw - 2rem);overflow:hidden}.notes-overlay{padding:0 0 calc(3.5rem + var(--safe-bottom)) 0}.notes-drawer{max-height:calc(60vh - 3.5rem - var(--safe-bottom));border-bottom:1px solid var(--border);border-bottom-right-radius:12px;border-bottom-left-radius:12px}.annotation-miss{bottom:calc(max(.75rem, var(--safe-bottom)) + 4.5rem)}}
