:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f9fafb;background:#111827;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh}button{min-height:44px;font:inherit;color:inherit;background:#1f2937;border:1px solid #374151;border-radius:10px}button[aria-pressed=true]{background:#2563eb;border-color:#60a5fa}button:disabled{opacity:.45}.app-shell{display:grid;grid-template-rows:auto minmax(260px,1fr) auto auto;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #374151}.topbar button{padding-inline:16px}.history-actions{display:flex;gap:6px}.project-panel{display:flex;align-items:center;gap:6px;padding:8px 10px;overflow-x:auto;border-bottom:1px solid #374151;background:#172033}.project-panel label{display:flex;min-width:150px;flex:1;align-items:center;gap:6px}.project-panel select{min-width:90px;min-height:44px;flex:1;color:inherit;background:#1f2937;border:1px solid #475569;border-radius:8px}.project-panel button{padding-inline:12px;white-space:nowrap}.project-panel [role=status],.project-panel [role=alert]{min-width:max-content;font-size:.75rem}.project-panel [role=alert]{color:#fca5a5}.viewport{min-height:0;background:radial-gradient(circle,#263449,#111827 68%)}.viewport-canvas-wrap,.viewport canvas{width:100%;height:100%}.viewport-canvas-wrap{position:relative;overflow:hidden;touch-action:none}.viewport canvas{display:block}.toolbar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;padding:10px;border-top:1px solid #374151}.toolbar button{padding:6px 2px;font-size:.75rem}.axis-controls{grid-template-columns:repeat(4,minmax(0,1fr))}.snap-controls,.context-actions{grid-template-columns:repeat(6,minmax(0,1fr))}.selection-controls{grid-template-columns:minmax(0,2fr) minmax(0,1fr);border-top-color:#263449}.selection-controls span{display:flex;align-items:center;justify-content:center;padding-inline:4px;color:#cbd5e1;font-size:.75rem;text-align:center}.camera-presets{border-top-color:#263449;background:#172033}.reference-panel{padding:10px;border-top:1px solid #374151;background:#111827}.reference-panel-heading,.reference-controls{display:flex;align-items:center;gap:10px}.reference-panel-heading{justify-content:space-between}.file-button{display:inline-flex;min-height:44px;align-items:center;padding-inline:14px;border:1px solid #374151;border-radius:10px;background:#1f2937;cursor:pointer}.file-button input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%)}.reference-controls{margin-top:8px;padding-bottom:2px;overflow-x:auto}.reference-controls label{display:inline-flex;min-height:44px;align-items:center;gap:6px;white-space:nowrap}.reference-controls input[type=number]{width:68px;min-height:40px;color:inherit;background:#1f2937;border:1px solid #374151;border-radius:8px}.reference-controls input[type=range]{width:96px}.reference-filename{max-width:140px;overflow:hidden;color:#cbd5e1;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.modeling-panel{padding:8px 10px;border-top:1px solid #374151;background:#172033}.object-panel{padding:8px 10px;border-top:1px solid #374151;background:#111827}.object-list{display:grid;gap:6px}.object-row{display:grid;grid-template-columns:minmax(88px,1fr) minmax(110px,2fr) 70px;gap:6px}.object-row input{min-width:0;color:inherit;background:#1f2937;border:1px solid #475569;border-radius:8px}.modeling-panel details+details{margin-top:6px}.modeling-panel summary{min-height:36px;padding:8px 2px;font-weight:700;cursor:pointer}.contour-editor{display:block;width:100%;max-height:32dvh;border:1px solid #475569;border-radius:10px;background:#0f172a;touch-action:none}.modeling-actions,.vertex-list{display:flex;gap:6px;margin-top:7px;overflow-x:auto}.modeling-actions button,.vertex-list button{min-width:48px;padding:6px 10px;white-space:nowrap}.modeling-actions label{display:flex;align-items:center;gap:4px;white-space:nowrap}.modeling-actions input,.modeling-actions select{width:72px;min-height:40px;color:inherit;background:#1f2937;border:1px solid #475569;border-radius:8px}.modeling-help{margin:7px 0 0;color:#cbd5e1;font-size:.78rem}.modeling-error{margin:7px 0 0;color:#fca5a5}.vertex-list button{min-width:44px}
