*{margin:0;padding:0;box-sizing:border-box}:root{--primary:#2b6fee;--primary-hover:#1d4fd8;--accent-soft:#e9f0ff;--accent-soft-2:#d7e4ff;--accent-glow:rgba(43, 111, 238, 0.28);--danger:#dc2626;--danger-soft:#fef2f2;--success:#15803d;--bg:#ffffff;--surface:#f7f9fc;--surface-2:#f1f4f9;--border:#e3e8ef;--border-strong:#cfd7e2;--text:#0b1220;--text-2:#1f2937;--text-secondary:#5b6b7f;--text-muted:#8493a5;--hover:rgba(11, 18, 32, 0.05);--shadow-sm:0 1px 2px rgba(11, 18, 32, 0.05),0 1px 1px rgba(11, 18, 32, 0.03);--shadow-md:0 1px 2px rgba(11, 18, 32, 0.05),0 10px 30px -12px rgba(11, 18, 32, 0.16);--shadow-lg:0 2px 4px rgba(11, 18, 32, 0.04),0 30px 60px -24px rgba(11, 18, 32, 0.28);--shadow-primary:inset 0 1px 0 rgba(255, 255, 255, 0.18),0 1px 2px rgba(29, 79, 216, 0.3),0 8px 20px -8px rgba(43, 111, 238, 0.6);--ring:0 0 0 4px var(--accent-glow);--radius-sm:8px;--radius:10px;--radius-lg:14px;--radius-xl:18px;--font-sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--ease-out:cubic-bezier(0.2, 0.7, 0.2, 1);--dur:200ms}body,html{height:100%;overflow:hidden;font-family:var(--font-sans);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none;touch-action:manipulation}html{touch-action:manipulation}#app{height:100%;display:flex;flex-direction:column;position:relative}.landing-overlay{--l-bg:#f7f9fc;--l-surface:#ffffff;--l-ink:#0b1220;--l-ink-2:#1f2937;--l-muted:#5b6b7f;--l-muted-2:#8493a5;--l-line:#e3e8ef;--l-line-strong:#cfd7e2;--l-accent:#2b6fee;--l-accent-ink:#1d4fd8;--l-accent-soft:#e9f0ff;--l-ease:cubic-bezier(0.2, 0.7, 0.2, 1);position:absolute;inset:0;z-index:1000;display:flex;overflow-y:auto;background:var(--l-bg);color:var(--l-ink);font-family:Geist,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;transition:opacity .35s,visibility .35s}.landing-overlay::after,.landing-overlay::before{content:'';position:absolute;inset:0;pointer-events:none}.landing-overlay::before{background-image:linear-gradient(to right,rgba(11,18,32,.045) 1px,transparent 1px),linear-gradient(to bottom,rgba(11,18,32,.045) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(900px 620px at 50% 45%,#000 20%,transparent 100%);mask-image:radial-gradient(900px 620px at 50% 45%,#000 20%,transparent 100%)}.landing-overlay::after{background:radial-gradient(640px 420px at 62% 0,rgba(43,111,238,.12),transparent 70%),radial-gradient(420px 360px at 12% 100%,rgba(21,128,61,.05),transparent 70%)}.landing-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.landing-content{position:relative;z-index:1;margin:auto;padding:2rem 1rem;max-width:520px;width:100%}.landing-card{text-align:center;background:var(--l-surface);border:1px solid var(--l-line);border-radius:22px;padding:2.25rem 2rem 1.75rem;box-shadow:0 1px 2px rgba(11,18,32,.05),0 30px 60px -24px rgba(11,18,32,.28);animation:landing-in .5s var(--l-ease) both}@keyframes landing-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}.landing-head{margin-bottom:1.5rem}.landing-icon-wrap{display:inline-grid;place-items:center;width:56px;height:56px;border-radius:16px;background:var(--l-accent-soft);color:var(--l-accent-ink);margin-bottom:1rem}.landing-icon-wrap i{font-size:1.3rem}.landing-title{font-size:1.4rem;font-weight:650;letter-spacing:-.025em;line-height:1.2;color:var(--l-ink);margin-bottom:.45rem}.landing-subtitle{font-size:.92rem;color:var(--l-muted);line-height:1.6;max-width:38ch;margin:0 auto}.landing-upload-section{position:relative;background:var(--l-bg);border:1.5px dashed var(--l-line-strong);border-radius:16px;padding:1.6rem 1.25rem 1.35rem;text-align:center;cursor:pointer;transition:border-color .22s var(--l-ease),background-color .22s var(--l-ease),box-shadow .22s var(--l-ease),transform .3s var(--l-ease)}.landing-upload-section:hover{border-color:var(--l-accent);background:#eef3ff;box-shadow:0 0 0 4px rgba(43,111,238,.12),0 10px 30px -12px rgba(11,18,32,.16);transform:translateY(-1px)}.landing-upload-section.dragover{border-style:solid;border-color:var(--l-accent);background:#e6eeff;box-shadow:0 0 0 4px rgba(43,111,238,.2),0 14px 34px -12px rgba(43,111,238,.35);transform:translateY(-2px) scale(1.01)}.landing-upload-section.compact{padding:1.15rem 1rem 1rem}.upload-icon-wrap{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--l-surface);border:1px solid var(--l-line);box-shadow:0 1px 2px rgba(11,18,32,.05);color:var(--l-accent-ink);margin-bottom:.7rem;transition:transform .3s var(--l-ease),box-shadow .3s var(--l-ease)}.landing-upload-section:hover .upload-icon-wrap{transform:translateY(-3px);box-shadow:0 6px 14px -6px rgba(43,111,238,.4)}.upload-icon-wrap i{font-size:1.05rem}.upload-title{color:var(--l-ink);font-size:.98rem;font-weight:600;letter-spacing:-.01em;margin-bottom:.2rem}.upload-subtitle{color:var(--l-muted);font-size:.85rem}.browse-link{color:var(--l-accent-ink);font-weight:600;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(43,111,238,0.35);transition:text-decoration-color .15s}.landing-upload-section:hover .browse-link{text-decoration-color:var(--l-accent-ink)}.upload-meta{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35rem;margin-top:.9rem}.upload-badge{display:inline-block;padding:.2rem .5rem;font-family:"Geist Mono",ui-monospace,Menlo,monospace;font-size:.66rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--l-muted);background:var(--l-surface);border:1px solid var(--l-line);border-radius:6px}.upload-privacy{display:inline-flex;align-items:center;gap:.35rem;margin-top:1rem;font-size:.78rem;color:var(--l-muted-2)}.upload-privacy i{font-size:.65rem}.landing-sample{margin-top:1rem;font-size:.85rem;color:var(--l-muted)}.landing-sample a{display:inline-flex;align-items:center;gap:.35rem;margin-left:.3rem;font-weight:600;color:var(--l-accent-ink);text-decoration:none}.landing-sample a i{font-size:.7rem;transition:transform .2s var(--l-ease)}.landing-sample a:hover i{transform:translateX(2px)}.landing-sample+.upload-privacy{margin-top:.7rem}.landing-divider{display:flex;align-items:center;gap:.85rem;margin:1.1rem 0;color:var(--l-muted-2);font-family:"Geist Mono",ui-monospace,Menlo,monospace;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase}.landing-divider::after,.landing-divider::before{content:'';flex:1;height:1px;background:var(--l-line)}.landing-steps{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:1.3rem;padding:0;font-size:.85rem;color:var(--l-muted);animation:landing-in .5s var(--l-ease) .12s both}.landing-steps li{display:inline-flex;align-items:center;gap:.55rem}.landing-steps span{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--l-accent-soft);color:var(--l-accent-ink);font-family:"Geist Mono",ui-monospace,Menlo,monospace;font-size:.72rem}@media (prefers-reduced-motion:reduce){.landing-card,.landing-steps{animation:none}}.toolbar{display:flex;align-items:center;gap:.5rem;padding:.5rem .9rem;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0;position:relative;z-index:1000}.toolbar-row{display:contents}.toolbar-section{display:flex;align-items:center;gap:.35rem}.toolbar-tools{order:1;flex-shrink:0}.toolbar-right{order:3;flex-shrink:0;margin-left:auto;display:flex;align-items:center;gap:.35rem}.tool-btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;height:36px;padding:0 .9rem;border:1px solid transparent;border-radius:999px;background:0 0;color:var(--text-2);font-family:inherit;font-size:.82rem;font-weight:500;letter-spacing:-.005em;cursor:pointer;white-space:nowrap;line-height:1;transition:background-color var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}.tool-btn:hover{background:var(--hover);color:var(--text)}.tool-btn.active{background:var(--accent-soft);color:var(--primary-hover)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.tool-btn:disabled:hover{background:0 0;color:var(--text-2)}.btn-icon-action:focus-visible,.btn:focus-visible,.tool-btn:focus-visible,.unit-btn:focus-visible,.zoom-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.key-hint{display:none;align-items:center;justify-content:center;min-width:26px;height:21px;padding:0 7px;margin-left:3px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:6px;background:var(--bg);color:var(--text-secondary);font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.01em;line-height:1}.toolbar.actions-visible #canvasActions .key-hint,.toolbar.mode-active:not(.actions-visible) #moveBtn .key-hint{display:inline-flex}.tool-btn.active .key-hint{border-color:var(--accent-soft-2);background:rgba(255,255,255,.75);color:var(--primary-hover)}.tool-btn.canvas-action-done .key-hint{border-color:rgba(255,255,255,.4);background:rgba(255,255,255,.16);color:#fff}.tool-btn.canvas-action-done:disabled .key-hint{border-color:var(--border-strong);background:var(--bg);color:var(--text-muted)}@media (max-width:768px),(hover:none){.key-hint{display:none!important}}.settings-wrap>.tool-btn{width:36px;padding:0;border-color:var(--border);background:var(--bg);box-shadow:var(--shadow-sm);color:var(--text-secondary)}.settings-wrap>.tool-btn:hover{border-color:var(--border-strong);background:var(--bg);color:var(--text)}.tool-btn i{font-size:.85rem;width:1em;transform:translateY(.5px)}.tool-btn .btn-text{line-height:1}.tool-btn .btn-icon,.tool-btn .btn-text{pointer-events:none}.settings-wrap{position:relative}.settings-popup{display:none;position:absolute;top:calc(100% + 6px);right:0;background:var(--bg);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg),0 0 0 1px rgba(11,18,32,.03);min-width:292px;padding:.4rem 0;z-index:1500;animation:.15s ease-out modalSlideIn}.settings-popup.open{display:block}.settings-note{padding:.15rem .95rem .6rem;font-size:.72rem;line-height:1.5;color:var(--text-muted)}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:.5rem .95rem;font-size:.82rem;color:var(--text)}.settings-label{font-weight:500;color:var(--text-secondary);font-size:.8rem}.settings-action{display:inline-flex;align-items:center;gap:.4rem;min-height:30px;padding:.3rem .75rem;border:1px solid var(--border-strong);border-radius:999px;background:var(--bg);color:var(--text);font-size:.78rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease-out),background-color var(--dur) var(--ease-out);font-family:inherit}.settings-action:hover{background:var(--bg);border-color:var(--text)}.settings-reset-scale{padding:.3rem .45rem;margin-left:.25rem;color:var(--text-muted)}.settings-reset-scale:hover{background:var(--danger-soft);color:var(--danger);border-color:#fca5a5}.settings-action i{font-size:.72rem;color:var(--text-muted)}.settings-divider{height:1px;background:var(--border);margin:.25rem 0}.settings-row-btn{width:100%;border:none;background:0 0;cursor:pointer;gap:.6rem;justify-content:flex-start;font-family:inherit;transition:background .12s;border-radius:0}.settings-row-btn:hover{background:var(--surface)}.settings-row-btn i{width:18px;text-align:center;color:var(--text-muted);font-size:.78rem}.settings-danger,.settings-danger i{color:var(--danger)}.settings-danger:hover{background:var(--danger-soft)}.dont-warn-label{display:flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--text-secondary);margin-bottom:1.25rem;cursor:pointer;user-select:none}.dont-warn-label input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.tool-divider{width:1px;height:20px;background:var(--border);margin:0 .15rem;flex-shrink:0}.zoom-toggle{display:flex;align-items:center;height:36px;padding:0 2px;border:1px solid var(--border);border-radius:999px;background:var(--bg);box-shadow:var(--shadow-sm)}.zoom-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:999px;background:0 0;color:var(--text-secondary);cursor:pointer;transition:background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out);font-size:.72rem}.zoom-btn i{display:block;line-height:1;transform:translateY(.5px)}.zoom-btn+.zoom-btn{border-left:none}.zoom-btn:hover{background:var(--hover);color:var(--text)}.zoom-btn:active{background:var(--accent-soft);color:var(--primary-hover)}.zoom-level{font-family:var(--font-mono);font-size:.7rem;font-weight:500;min-width:44px;text-align:center;color:var(--text-secondary);padding:0 .2rem;font-variant-numeric:tabular-nums;line-height:30px}.dropdown{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;background-color:var(--bg);min-width:160px;width:100%;box-shadow:var(--shadow-lg);z-index:1;border-radius:var(--radius);padding:.5rem 0;top:100%;left:0;margin-top:.25rem;border:1px solid var(--border)}.dropdown-content button{color:var(--text);padding:.65rem 1rem;text-decoration:none;display:flex;align-items:center;gap:.75rem;width:100%;text-align:left;background:0 0;border:none;cursor:pointer;font-size:.8rem;transition:background .15s}.dropdown-content button i{width:18px;height:18px;color:var(--text-secondary);font-size:.85rem;text-align:center;line-height:18px}.dropdown-content button:hover{background-color:var(--surface)}.app-layout{flex:1;display:flex;flex-direction:row;min-height:0}.canvas-area{flex:1;position:relative;min-width:0}.canvas-container{position:relative;width:100%;height:100%;background:var(--surface);overflow:hidden}#canvas{touch-action:none;display:block;position:absolute;top:0;left:0;cursor:crosshair}#canvas.pan-mode{cursor:grab}#canvas.pan-mode:active{cursor:grabbing}.crop-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.3);pointer-events:none}.measurements-panel{width:320px;background:var(--bg);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:visible;transition:width .2s}.panel-resize-handle{position:absolute;top:50%;left:-5px;transform:translateY(-50%);width:5px;height:40px;cursor:col-resize;z-index:50;background:var(--border);border-radius:3px 0 0 3px;transition:background .15s;opacity:.5}.panel-resize-handle.active,.panel-resize-handle:hover{background:var(--primary);opacity:1}.measurements-panel{position:relative}.app-layout.panel-bottom .panel-resize-handle{width:40px;height:5px;left:auto;right:12px;top:-5px;transform:none;cursor:row-resize;border-radius:3px 3px 0 0}.measurements-panel.minimized .panel-resize-handle{display:none}.measurements-panel.resizing{transition:none!important}.measurements-panel.minimized{width:36px}.measurements-panel.minimized .panel-body,.panel-expand-tab{display:none}.measurements-panel.minimized .panel-expand-tab{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer;writing-mode:vertical-rl;text-orientation:mixed;font-size:.72rem;font-weight:600;color:var(--text-muted);gap:.5rem;padding:.75rem 0;letter-spacing:.04em}.panel-expand-tab:hover{color:var(--text-secondary);background:var(--surface)}.panel-expand-tab i{font-size:.6rem;writing-mode:horizontal-tb}.panel-handle{display:none}.panel-body{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.measurements-header{display:flex;align-items:center;padding:.65rem .65rem .65rem .95rem;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg)}.panel-title{font-size:.86rem;font-weight:600;color:var(--text);letter-spacing:-.01em}.measurements-actions{display:flex;align-items:center;gap:4px;width:100%}#addCategoryBtn{margin-left:auto}.btn-icon-action{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:999px;background:0 0;color:var(--text-secondary);cursor:pointer;transition:background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out);font-size:.74rem}.btn-icon-action:hover{background:var(--hover);color:var(--text)}.btn-icon-clear{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:6px;background:0 0;color:var(--text-muted);cursor:pointer;transition:.15s;font-size:.72rem}.btn-icon-clear:hover{background:var(--danger-soft);color:var(--danger)}.unit-toggle{display:flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);margin-right:.25rem}.unit-btn{padding:.28rem .65rem;border:none;border-radius:999px;background:0 0;color:var(--text-secondary);font-family:inherit;font-size:.72rem;font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.unit-btn+.unit-btn{border-left:none}.unit-btn.active{background:var(--bg);color:var(--text);box-shadow:0 1px 3px rgba(24,47,87,.08),0 0 0 1px rgba(11,18,32,.06)}.unit-btn:not(.active):hover{color:var(--text)}.btn-icon-action.btn-minimize{display:none}.panel-sections-container{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.panel-sections-container::-webkit-scrollbar{display:none}.measurements-list{padding:.5rem;display:flex;flex-direction:column;gap:.45rem;flex:1;min-height:0}.uncategorized-items .empty-state{font-size:.7rem;padding:.5rem;margin:0}.empty-state{text-align:center;color:var(--text-muted);font-size:.8rem;padding:1rem .5rem;line-height:1.5;width:100%}.totals-section{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;padding:0;display:flex}.total-row{display:flex;align-items:center;justify-content:space-between;padding:.6rem .95rem;flex:1 1 0;min-width:0}.total-row+.total-row{border-left:1px solid var(--border)}.totals-stacked{flex-direction:column}.totals-stacked .total-row+.total-row{border-left:none;border-top:1px solid var(--border)}.total-label{font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-right:.5rem}.total-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.86rem;font-weight:600;color:var(--primary-hover)}.category{width:100%;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--bg)}.category-header{display:flex;align-items:center;gap:.35rem;padding:.35rem .5rem .35rem .6rem;background:var(--surface);cursor:pointer;user-select:none;transition:background-color var(--dur) var(--ease-out)}.category-header:hover{background:var(--surface-2)}.category-chevron{font-size:.45rem;color:var(--text-muted);transition:transform .2s;flex-shrink:0}.category.collapsed .category-chevron{transform:rotate(-90deg)}.category.collapsed .category-items{display:none}.category-name{font-weight:600;color:var(--text);font-size:.78rem;cursor:text;padding:.1rem 1.3rem .1rem .3rem;margin:-.1rem -.3rem;border-radius:4px;transition:background .15s;position:relative;display:inline-block}.category-name::after{font-family:"Font Awesome 6 Free";content:'\f044';font-weight:400;position:absolute;right:.35rem;top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s;color:var(--text-secondary);font-size:.6rem}.category-header:hover .category-name::after{opacity:.5}.category-name:hover{background:var(--bg)}.category-name:hover::after{opacity:.7}.category-name.editing{background:var(--bg);border:1px solid var(--primary);outline:0;user-select:text;-webkit-user-select:text;padding-right:.35rem}.category-name.editing::after{display:none}.category-total{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.7rem;color:var(--text-secondary);font-weight:500;margin-left:auto}.delete-category-btn{opacity:.4;transition:opacity .15s;width:22px;height:22px;font-size:.6rem}.delete-category-btn:hover{opacity:1}.category-items{padding:0;min-height:1.5rem;transition:background .15s}.category-items.drag-over{background:var(--accent-soft);box-shadow:inset 0 0 0 2px var(--primary)}.category-items .empty-state{font-size:.7rem;padding:.5rem;margin:0}.measurement-item{display:flex;align-items:center;gap:.55rem;padding:.4rem .55rem .4rem .7rem;border-radius:0;cursor:pointer;transition:background-color var(--dur) var(--ease-out);border:none;border-bottom:1px solid var(--border);background:var(--bg);min-width:0;flex:0 0 100%;max-width:100%}.measurement-item:last-child{border-bottom:none}.measurement-item.dragging{opacity:.5}.measurement-item:hover{background:var(--surface)}.measurement-item.selected{background:var(--accent-soft)}.measurement-item .color-indicator{width:9px;height:9px;border-radius:50%;flex-shrink:0}.measurement-item .area-name{font-weight:500;color:var(--text);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;display:inline-block;position:relative;padding:.1rem 1.1rem .1rem .25rem;margin:-.1rem 0;border-radius:4px;transition:background .15s;flex:1;min-width:0}.measurement-item .area-name:hover{background:var(--surface)}.measurement-item .area-name::after{font-family:"Font Awesome 6 Free";content:'\f044';font-weight:400;position:absolute;right:.3rem;top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s;color:var(--text-secondary);font-size:.55rem;pointer-events:none}.measurement-item:hover .area-name::after{opacity:.5}.measurement-item .area-name:hover::after{opacity:1}.measurement-item .area-name.editing{background:var(--bg);border:1px solid var(--primary);outline:0;user-select:text;-webkit-user-select:text;padding-right:.25rem}.measurement-item .area-name.editing::after{display:none}.measurement-item .area-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.74rem;color:var(--text-secondary);font-weight:500;user-select:none;margin-left:auto;white-space:nowrap;flex-shrink:0}.measurement-item .delete-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:999px;background:0 0;color:var(--text-muted);cursor:pointer;font-size:.6rem;transition:background-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out);flex-shrink:0}.measurement-item .delete-btn:hover{background:var(--danger-soft);color:var(--danger)}.toolbar-actions{order:2;display:flex;align-items:center;gap:.35rem}.tool-btn.canvas-action-cancel{color:var(--text-secondary)}.tool-btn.canvas-action-cancel:hover{background:var(--danger-soft);color:var(--danger)}.tool-btn.canvas-action-undo{color:var(--text-secondary)}.tool-btn.canvas-action-undo:hover{background:var(--hover);color:var(--text)}.tool-btn.canvas-action-done{background:var(--primary);color:#fff;box-shadow:var(--shadow-primary)}.tool-btn.canvas-action-done:hover{background:var(--primary-hover);color:#fff}.tool-btn.canvas-action-done:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;background:var(--surface-2);color:var(--text-muted);border-color:var(--border)}.modal-backdrop{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;background:rgba(11,18,32,.38);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:.15s ease-out modalFadeIn}@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}@keyframes modalSlideIn{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{background:var(--bg);border-radius:var(--radius-xl);padding:1.6rem 1.6rem 1.4rem;width:90%;max-width:400px;box-shadow:var(--shadow-lg),0 0 0 1px rgba(11,18,32,.05);animation:modalSlideIn .2s var(--ease-out)}.modal-content h3{font-size:1rem;font-weight:600;margin-bottom:.45rem;color:var(--text);letter-spacing:-.015em}.modal-content p{font-size:.86rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.55}.modal-input{width:100%;padding:.65rem .9rem;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:.92rem;outline:0;color:var(--text);background:var(--bg);transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out);margin-bottom:1.25rem;font-family:inherit}.modal-input:focus{border-color:var(--primary);box-shadow:var(--ring)}.modal-select{padding:.65rem .9rem;border:1px solid var(--border-strong);border-radius:var(--radius);background-color:var(--bg);font-size:.92rem;cursor:pointer;font-family:inherit;color:var(--text);outline:0;transition:border-color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.modal-select:focus{border-color:var(--primary);box-shadow:var(--ring)}.scale-input-group{display:flex;gap:.5rem;margin-bottom:1.25rem}.scale-input-group .modal-input{flex:1;margin-bottom:0}.modal-buttons{display:flex;gap:.5rem;justify-content:flex-end}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:40px;padding:.55rem 1.15rem;border-radius:999px;border:1px solid transparent;font-size:.84rem;font-weight:600;letter-spacing:-.005em;line-height:1;cursor:pointer;font-family:inherit;transition:background-color var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.btn-secondary{background:var(--bg);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-primary)}.btn-primary:hover{background:var(--primary-hover)}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--text);color:#fff;padding:.7rem 1.2rem;border-radius:999px;font-size:.84rem;font-weight:500;display:flex;align-items:center;gap:.5rem;z-index:3000;box-shadow:var(--shadow-lg);opacity:0;transition:opacity .3s,transform .3s;pointer-events:none}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.toast i{color:var(--success)}.drop-overlay{position:fixed;inset:0;z-index:5000;background:rgba(43,111,238,.1);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.drop-content{background:var(--bg);border:2px dashed var(--primary);border-radius:22px;padding:3rem 4rem;text-align:center;color:var(--primary-hover);box-shadow:var(--shadow-lg)}.drop-content i{font-size:2.5rem;margin-bottom:.75rem;display:block}.drop-content p{font-size:1rem;font-weight:500}.panel-handle-pill{width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:0 auto .4rem}.panel-handle-row{display:flex;align-items:center;justify-content:center;gap:.5rem}.panel-handle-label{font-size:.8rem;font-weight:600;color:var(--text)}.panel-handle-count{font-family:var(--font-mono);font-size:.72rem;font-weight:500;color:var(--primary-hover)}.panel-pos-btn{display:inline-flex;align-items:center;justify-content:center}.panel-position-icon{display:block;width:18px;height:18px;flex-shrink:0}.btn-panel-position{display:flex}.app-layout.panel-bottom{flex-direction:column}.app-layout.panel-bottom .measurements-panel{width:100%;height:280px;max-height:50vh;border-left:none;border-top:1px solid var(--border);overflow:visible}.app-layout.panel-bottom .panel-body{flex-direction:column;overflow:hidden}.app-layout.panel-bottom .measurements-header{border-bottom:1px solid var(--border);flex-shrink:0}.app-layout.panel-bottom .measurements-list{padding:.25rem;gap:.25rem;flex-wrap:wrap;flex-direction:row}.app-layout.panel-bottom .category{width:100%}.app-layout.panel-bottom .category-items,.app-layout.panel-bottom .uncategorized-items{display:flex;flex-wrap:wrap;gap:2px;padding:2px}.app-layout.panel-bottom .measurement-item{flex:0 0 auto;max-width:none;padding:.2rem .55rem;gap:.35rem;border:none;border-radius:999px;background:var(--surface);border-bottom:none}.app-layout.panel-bottom .measurement-item:last-child{border-bottom:none}.app-layout.panel-bottom .measurement-item:hover{background:var(--surface-2)}.app-layout.panel-bottom .measurement-item .area-name{font-size:.65rem;padding:0;margin:0;flex:0 1 auto;max-width:80px}.app-layout.panel-bottom .measurement-item .area-name::after{display:none}.app-layout.panel-bottom .measurement-item .area-value{font-size:.6rem;margin-left:.15rem}.app-layout.panel-bottom .measurement-item .color-indicator{width:6px;height:6px}.app-layout.panel-bottom .measurement-item .delete-btn{width:14px;height:14px;font-size:.45rem}.app-layout.panel-bottom .category-header{padding:.2rem .4rem}.app-layout.panel-bottom .category-name{font-size:.65rem}.app-layout.panel-bottom .category-total{font-size:.58rem}.app-layout.panel-bottom .measurements-panel.minimized{width:100%;max-height:36px;height:36px}.app-layout.panel-bottom .measurements-panel.minimized .panel-expand-tab{writing-mode:horizontal-tb;flex-direction:row;height:100%;padding:0 .75rem}input,textarea{user-select:text;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text}@media (max-width:768px){.btn-text,.zoom-toggle{display:none}.btn-panel-position,.panel-resize-handle{display:none!important}.tool-btn{min-width:44px;padding:0 .8rem;height:44px}.tool-btn i{font-size:1.15rem}.tool-divider{display:block;height:24px;margin:0 .2rem}.toolbar{flex-wrap:wrap;padding:0;gap:0}.toolbar-row{display:flex;width:100%;align-items:center;gap:.4rem;padding:.35rem .6rem}.toolbar-tools{flex:1;justify-content:flex-start}.app-layout{flex-direction:column}.measurements-panel{width:100%!important;height:35vh;border-left:none;border-top:1px solid var(--border);max-height:45vh;min-height:0;transition:max-height .25s,height .25s;overflow:hidden}.panel-handle{display:none;padding:.45rem 1rem .3rem;cursor:pointer;-webkit-tap-highlight-color:transparent}.measurements-panel.collapsed .panel-handle{display:block}.measurements-panel.collapsed{max-height:48px}.measurements-panel.collapsed .panel-body{display:none}.panel-body{flex:1;min-height:0;overflow:hidden}.measurements-header{padding:.4rem .5rem}.btn-icon-action.btn-minimize{display:flex!important;margin-left:0}.measurements-list{max-height:none;flex:1;overflow-y:auto;padding:.2rem;gap:.15rem}.measurement-item{padding:.2rem .4rem;gap:.35rem}.measurement-item .area-name{font-size:.7rem}.measurement-item .area-value{font-size:.62rem}.measurement-item .color-indicator{width:7px;height:7px}.measurement-item .delete-btn{width:18px;height:18px;font-size:.55rem}.category-header{padding:.25rem .4rem}.category-name{font-size:.7rem}.category-total{font-size:.6rem}#panelPositionToggle{display:none!important}#panelPositionToggle+.settings-label,.settings-row:has(#panelPositionToggle){display:none!important}.landing-content{padding:1.25rem 1rem}.landing-card{padding:1.6rem 1.15rem 1.25rem;border-radius:18px}.landing-icon-wrap{width:48px;height:48px;border-radius:14px}.landing-title{font-size:1.2rem}.landing-subtitle{font-size:.85rem}.landing-upload-section{padding:1.25rem .9rem 1.1rem}.upload-title{font-size:.9rem}.upload-subtitle{font-size:.8rem}.dropdown{width:auto}}@media (max-width:480px){.toolbar-row{padding:.3rem .5rem;gap:.25rem}.measurements-panel{max-height:40vh}.measurements-panel.collapsed{max-height:44px}.panel-handle{padding:.35rem .85rem .25rem}.panel-handle-label{font-size:.75rem}.panel-handle-count{font-size:.68rem}.landing-content{padding:1rem}}@media (hover:none) and (pointer:coarse){*{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button,input,select,textarea{touch-action:manipulation}.tool-btn{min-height:44px}.zoom-btn{width:44px;height:44px}.zoom-level{line-height:44px}.dropdown-content button{padding:.875rem 1.25rem;font-size:.9rem;min-height:44px}.modal-buttons .btn{min-height:44px;padding:.875rem 1.5rem}input[type=number],input[type=text],select,textarea{font-size:16px}.tool-btn:active,.unit-btn:active,.zoom-btn:active,button:active{transform:scale(.97)}}@media (hover:none){#canvas,#canvas.pan-mode{cursor:default!important}.landing-upload-section{cursor:default}}.fix-bar{position:absolute;left:50%;bottom:1rem;transform:translateX(-50%);z-index:20;display:flex;flex-direction:column;gap:.7rem;width:min(420px,calc(100% - 2rem));padding:.85rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.fix-text{display:flex;flex-direction:column;gap:.15rem}.fix-title{font-size:.82rem;font-weight:600;color:var(--text)}.fix-hint{font-size:.75rem;line-height:1.45;color:var(--text-secondary)}.fix-actions{display:flex;justify-content:flex-end;gap:.5rem}.btn:disabled{opacity:.45;cursor:not-allowed}