:root{--bg: #11161a;--panel: #1a2227;--panel-strong: #20292f;--input-bg: #151c20;--text: #f4f1e8;--muted: #9ba7aa;--border: rgba(244, 241, 232, .14);--primary: #f2b544;--primary-ink: #14181b;--secondary: #273139;--accent: #48a49a;--accent-dark: #2f6f68;--warn: #d9a441;--warn-soft: rgba(217, 164, 65, .18);--warn-text: #ffd991;--warning-border: rgba(217, 164, 65, .42);--warning-bg: rgba(217, 164, 65, .13);--warning-text: #ffe0a2;--warning-muted: #d7c5a1;--danger: #d34a38;--danger-soft: rgba(211, 74, 56, .15);--danger-border: rgba(211, 74, 56, .38);--danger-text: #ffb7ad;--danger-text-strong: #ffc9c1;--success-soft: rgba(72, 164, 154, .18);--success-text: #b8fff4;--shadow: rgba(0, 0, 0, .38);color:var(--text);background:var(--bg);font-family:Microsoft YaHei,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.app-shell{position:relative;min-height:100vh;display:flex;justify-content:center;padding:16px;color:var(--text);background:linear-gradient(135deg,rgba(244,241,232,.035) 25%,transparent 25%) 0 0 / 24px 24px,radial-gradient(circle at top left,rgba(72,164,154,.14),transparent 34%),var(--bg)}.app-theme-toggle{width:64px;min-width:64px;height:48px;border:1px solid var(--border);border-radius:8px;padding:0;background:color-mix(in srgb,var(--panel-strong) 90%,transparent);color:var(--text);font-size:13px;font-weight:900}.app-privacy-strip{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:8px 14px 0;color:var(--muted);font-size:12px}.privacy-link{color:var(--accent);font-size:13px;font-weight:800;text-decoration:underline;text-underline-offset:3px}.login-privacy-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;padding:12px 16px calc(env(safe-area-inset-bottom,0px) + 16px);color:var(--muted);font-size:12px;text-align:center}.login-privacy-footer a{color:var(--accent);font-weight:800}.app-shell.dark-theme{--strip-scrollbar-thumb: #59666d;--strip-scrollbar-track: #182126}.app-shell.light-theme{--bg: #e7dfd0;--panel: #f4efe3;--panel-strong: #fffaf0;--input-bg: #eee5d6;--text: #1f2528;--muted: #667278;--border: rgba(31, 37, 40, .16);--primary: #d79b26;--primary-ink: #15191b;--secondary: #e8ddca;--accent: #2e8178;--accent-dark: #266b64;--warn: #b98021;--warn-soft: rgba(185, 128, 33, .15);--warn-text: #8b5c13;--warning-border: rgba(185, 128, 33, .38);--warning-bg: rgba(185, 128, 33, .13);--warning-text: #845711;--warning-muted: #765f38;--danger: #b93e30;--danger-soft: rgba(185, 62, 48, .12);--danger-border: rgba(185, 62, 48, .42);--danger-text: #a7362b;--danger-text-strong: #862a22;--success-soft: rgba(46, 129, 120, .15);--success-text: #216b64;--shadow: rgba(56, 42, 20, .18);--strip-scrollbar-thumb: #b19255;--strip-scrollbar-track: #ded1b8;background:linear-gradient(135deg,rgba(31,37,40,.045) 25%,transparent 25%) 0 0 / 24px 24px,radial-gradient(circle at top left,rgba(46,129,120,.12),transparent 34%),var(--bg)}.phone-frame{width:min(100%,430px);min-height:calc(100vh - 32px);overflow:hidden;border:1px solid var(--border);border-radius:8px;background:var(--bg);box-shadow:0 20px 56px var(--shadow)}.top-bar{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--panel) 94%,transparent)}.top-bar h1,.top-bar h2,.top-bar p{margin:0}.top-bar h1{color:var(--text);font-size:21px;line-height:1.2}.label{display:block;color:var(--muted);font-size:12px;font-weight:700}.top-actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px}.api-icon-button,.sync-icon-button,.ble-icon-button{position:relative;flex:0 0 auto;width:48px;height:48px;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--panel-strong) 54%,transparent)}.api-icon-button span:not(.status-dot){font-size:13px;font-weight:950;letter-spacing:0}.api-icon-button.connected,.sync-icon-button.connected,.ble-icon-button.connected{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:var(--success-soft);color:var(--success-text)}.sync-icon-button.scanning,.ble-icon-button.scanning{border-color:color-mix(in srgb,var(--primary) 55%,var(--border));background:var(--warn-soft);color:var(--warn-text)}.ble-icon-button:not(button){cursor:default}.api-icon-button:focus-visible,.api-icon-button:hover,.sync-icon-button:focus-visible,.sync-icon-button:hover,.ble-icon-button:focus-visible,.ble-icon-button:hover{border-color:var(--primary);color:var(--primary);outline:0}.status-dot{position:absolute;right:5px;bottom:5px;width:10px;height:10px;border:2px solid var(--panel);border-radius:999px;box-shadow:0 0 0 1px #382a1429}.status-dot.ok{background:#2d9b72}.status-dot.bad{background:#cf3e34}.status-dot.pending{background:#e0a11a}.status-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;display:grid;place-items:center;border:2px solid var(--panel);border-radius:999px;background:var(--primary);color:var(--primary-ink);font-size:10px;font-weight:900;line-height:1}.sync-icon{width:25px;height:25px;display:block;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.bluetooth-icon{width:25px;height:25px;display:block;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.1}.calibration-toggle{flex:0 0 auto;min-width:50px;min-height:34px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-size:12px;font-weight:900}.calibration-toggle.active{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.ai-point-strip{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin:10px 12px 0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--panel) 82%,transparent)}.ai-point-strip div{min-width:0}.ai-point-strip strong,.ai-point-strip span{display:block}.ai-point-strip strong{color:var(--text);font-size:13px}.ai-point-strip span{margin-top:2px;overflow:hidden;color:var(--muted);font-size:12px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ai-point-strip.done{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--success-soft)}.ai-point-strip.error{border-color:var(--danger-border);background:var(--danger-soft)}.ai-point-strip.running{border-color:color-mix(in srgb,var(--primary) 48%,var(--border));background:var(--warn-soft)}.ai-point-strip button{min-height:36px;padding:0 12px;border:1px solid var(--primary);border-radius:8px;background:var(--primary);color:var(--primary-ink);font-size:13px;font-weight:900}.ai-point-strip button:disabled{cursor:wait;opacity:.72}.capture-button{width:calc(100% - 28px);min-height:118px;display:flex;align-items:center;justify-content:center;gap:16px;margin:16px 14px 12px;border:0;border-radius:8px;background:var(--primary);color:var(--primary-ink);box-shadow:0 18px 34px #f2b54438}.capture-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:50%;background:#14181b29;font-size:20px;font-weight:900}.capture-button strong{font-size:25px}.camera-capture-view{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;width:min(100%,560px);min-height:100dvh;margin:0 auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#050709;color:#fff}.camera-capture-header{min-height:58px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:max(10px,env(safe-area-inset-top)) 14px 10px;background:#050709f5}.camera-capture-header button,.camera-capture-header span{color:#ffffffd1;font-size:14px}.camera-capture-header button{justify-self:start;min-height:40px;padding:0 10px;border:0;background:transparent}.camera-capture-header strong{font-size:17px}.camera-capture-header span{justify-self:end}.camera-preview-stage{position:relative;min-height:0;overflow:hidden;background:#11161a}.camera-preview-stage video{width:100%;height:100%;display:block;object-fit:cover}.camera-nine-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.camera-nine-grid span{position:absolute;background:#ffffff8f;box-shadow:0 0 1px #0000008c}.camera-nine-grid .vertical{top:0;bottom:0;width:1px}.camera-nine-grid .horizontal{left:0;right:0;height:1px}.camera-nine-grid .vertical.first{left:33.333%}.camera-nine-grid .vertical.second{left:66.666%}.camera-nine-grid .horizontal.first{top:33.333%}.camera-nine-grid .horizontal.second{top:66.666%}.camera-status{position:absolute;inset:50% auto auto 50%;width:min(82%,360px);margin:0;padding:12px 14px;border-radius:10px;background:#050709c2;color:#ffffffeb;text-align:center;transform:translate(-50%,-50%)}.camera-status.error{color:#ffd7cf}.camera-capture-footer{padding:12px 16px max(18px,env(safe-area-inset-bottom));background:#050709fa}.camera-capture-footer p{margin:0 0 12px;color:#ffffffad;font-size:13px;text-align:center}.camera-capture-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:12px}.camera-capture-actions button{min-height:52px;border-radius:12px;font-size:16px;font-weight:800}.camera-fallback-button{border:1px solid rgba(255,255,255,.24);background:#ffffff14;color:#fff}.camera-shutter-button{border:1px solid #ffffff;background:var(--primary);color:var(--primary-ink);box-shadow:inset 0 0 0 4px #050709,inset 0 0 0 6px #fff}.camera-shutter-button:disabled{cursor:wait;opacity:.52}.project-create-button{min-height:96px}.album-button{width:calc(100% - 28px);min-height:46px;margin:-2px 14px 12px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);font-size:15px;font-weight:900}.project-export-button{width:calc(100% - 28px);min-height:46px;margin:0 14px 12px;border:0;border-radius:8px;background:var(--primary);color:var(--primary-ink);font-size:15px;font-weight:900}.project-export-button:disabled{cursor:wait;opacity:.5}.project-export-message,.photo-message{margin:-2px 16px 12px;color:var(--muted);font-size:12px;line-height:1.5}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 14px}.stat-card{min-height:70px;display:grid;align-content:center;gap:3px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.stat-card strong{color:var(--primary);font-size:24px}.stat-card span{color:var(--muted);font-size:12px}.sync-panel,.project-sync-card{display:grid;gap:12px;margin:12px 14px 0;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.sync-panel.online,.project-sync-card.synced{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--success-soft) 45%,var(--panel))}.project-sync-card.pending{border-color:#f59e0b6b;background:#f59e0b14}.sync-panel.offline,.project-sync-card.failed{border-color:var(--danger-border);background:color-mix(in srgb,var(--danger-soft) 42%,var(--panel))}.sync-panel.checking,.project-sync-card.syncing{border-color:var(--warning-border);background:color-mix(in srgb,var(--warn-soft) 42%,var(--panel))}.sync-panel-head,.project-sync-card{align-items:center}.sync-panel-head{display:flex;justify-content:space-between;gap:12px}.sync-panel-head strong,.project-sync-card strong{display:block;margin-top:3px;color:var(--text);font-size:16px}.sync-queue-pill{min-width:74px;padding:5px 8px;border-radius:999px;background:var(--secondary);color:var(--muted);font-size:12px;font-weight:800;text-align:center}.sync-queue-pill.warning{background:var(--warn-soft);color:var(--warn-text)}.sync-field{display:grid;gap:6px}.sync-field span{color:var(--muted);font-size:12px;font-weight:800}.sync-field input{min-width:0;height:40px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);padding:0 10px;outline:0}.sync-field input:focus{border-color:var(--accent)}.sync-fixed-url{min-width:0;min-height:40px;display:flex;align-items:center;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);padding:8px 10px;font-size:13px;line-height:1.35}.sync-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sync-actions button,.project-sync-card button{min-height:40px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-size:13px;font-weight:900}.sync-actions button:last-child,.project-sync-card button{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.sync-actions button:disabled,.project-sync-card button:disabled{opacity:.6}.sync-message,.project-sync-card p,.project-sync-card small{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.sync-queue-list{display:grid;gap:8px}.sync-queue-title,.sync-queue-item,.sync-queue-item-actions{display:flex;align-items:center}.sync-queue-title{justify-content:space-between;gap:8px;color:var(--muted);font-size:12px;font-weight:900}.sync-queue-title button,.sync-queue-item-actions button{min-height:30px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);padding:0 9px;font-size:12px;font-weight:900}.sync-queue-title button{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.sync-queue-item{justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--input-bg) 70%,transparent);padding:9px}.sync-queue-item strong,.sync-queue-item span{display:block}.sync-queue-item strong{max-width:160px;overflow:hidden;color:var(--text);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.sync-queue-item span{max-width:188px;margin-top:2px;color:var(--warning-muted);font-size:11px;line-height:1.45}.sync-queue-item-actions{flex-shrink:0;gap:6px}.sync-queue-title button:disabled,.sync-queue-item-actions button:disabled{opacity:.6}.project-sync-card{grid-template-columns:minmax(0,1fr) auto}.project-sync-card small{display:block;margin-top:5px;color:var(--warning-muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 14px 10px}.section-heading h2{margin:0;color:var(--text);font-size:18px}.section-heading span{color:var(--muted);font-size:12px;font-weight:700}.test-heading{padding-top:16px}.tone-controls{display:inline-flex;align-items:center;gap:8px}.tone-button{width:24px;height:24px;border:1px solid var(--border);border-radius:50%;padding:0;box-shadow:inset 0 0 0 3px var(--bg)}.tone-button.dark{background:#59666d}.tone-button.light{background:#d6c6a1}.tone-button.active{border-color:var(--primary);box-shadow:0 0 0 2px #f2b54438,inset 0 0 0 3px var(--bg)}.test-image-strip{display:grid;grid-auto-flow:column;grid-auto-columns:132px;gap:10px;overflow-x:auto;padding:0 14px 8px;scrollbar-width:thin;scrollbar-color:var(--strip-scrollbar-thumb) var(--strip-scrollbar-track)}.test-image-strip::-webkit-scrollbar{height:10px}.test-image-strip::-webkit-scrollbar-track{border-radius:999px;background:var(--strip-scrollbar-track)}.test-image-strip::-webkit-scrollbar-thumb{border:2px solid var(--strip-scrollbar-track);border-radius:999px;background:var(--strip-scrollbar-thumb)}.test-image-strip::-webkit-scrollbar-corner{background:transparent}.test-image-card{min-width:0;display:grid;gap:8px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);text-align:left}.test-image-card img{width:100%;aspect-ratio:1 / 1;display:block;border-radius:6px;object-fit:cover;background:var(--secondary)}.test-image-card span{min-height:32px;display:flex;align-items:center;color:var(--text);font-size:12px;font-weight:800;line-height:1.35}.space-list{display:grid;gap:10px;padding:0 14px 20px}.project-card{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.project-title-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.project-title-row input{min-width:0;height:38px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);padding:0 10px;font-size:16px;font-weight:900;outline:0}.project-title-row input:focus,.measure-title input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.project-main{min-width:0;display:grid;grid-template-columns:92px 1fr;gap:12px;align-items:center;border:0;background:transparent;padding:0;text-align:left}.project-main img,.project-empty-thumb{width:92px;height:74px;border-radius:8px;background:var(--secondary)}.project-main img{object-fit:cover}.project-empty-thumb{display:grid;place-items:center;color:var(--muted);font-size:13px;font-weight:900}.project-main strong{display:block;color:var(--text);font-size:17px}.project-main p{margin:8px 0 0;color:var(--muted);font-size:12px}.project-actions{display:grid;grid-template-columns:1fr auto;gap:8px}.secondary-button{min-height:42px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-size:13px;font-weight:800}.project-delete-confirm{margin-top:2px}.empty-state{padding:20px;border:1px dashed var(--border);border-radius:8px;background:var(--panel)}.storage-loading{margin:16px 14px}.storage-loading button{min-height:44px;border:1px solid var(--primary);border-radius:8px;background:var(--primary);color:var(--primary-ink);font-weight:900}.storage-global-notice{position:fixed;z-index:120;left:50%;bottom:max(18px,env(safe-area-inset-bottom));width:min(calc(100% - 32px),560px);margin:0;box-shadow:0 12px 32px var(--shadow);transform:translate(-50%)}.camera-permission-notice{position:fixed;z-index:120;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));left:max(18px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 16px;border:1px solid #f0c36a;border-radius:10px;background:#fff8e8;color:#554319;box-shadow:0 12px 32px #372d142e}.camera-permission-notice span{flex:1}.camera-permission-notice button{min-height:40px;border:1px solid #d6b15f;border-radius:8px;padding:0 14px;background:#fff;color:#6e5212;font-weight:700}.empty-state strong{color:var(--text)}.empty-state p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.6}.space-card{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:stretch;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.space-main{min-width:0;display:flex;gap:12px;text-align:left}.space-preview-button{flex:0 0 auto;align-self:stretch;border:0;background:transparent;padding:0}.space-preview-button img{display:block;width:92px;height:74px;border-radius:8px;object-fit:cover;background:var(--secondary)}.space-main>div{min-width:0;flex:1}.space-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.space-name-button{min-width:0;overflow:hidden;border:0;background:transparent;padding:2px 0;color:var(--text);font-size:16px;font-weight:800;text-align:left;text-overflow:ellipsis;white-space:nowrap}.space-name-input{min-width:0;width:100%;height:30px;border:1px solid var(--primary);border-radius:5px;background:var(--surface);padding:3px 7px;color:var(--text);font:inherit;font-size:16px;font-weight:800}.space-open-summary{display:block;width:100%;border:0;background:transparent;padding:0;text-align:left}.progress-pill{flex:0 0 auto;padding:4px 8px;border-radius:999px;background:var(--warn-soft);color:var(--warn-text);font-size:12px;font-weight:800}.progress-pill.done{background:var(--success-soft);color:var(--success-text)}.progress-track{height:8px;overflow:hidden;margin-top:12px;border-radius:999px;background:var(--secondary)}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.space-progress-copy{display:block;margin:10px 0 0;color:var(--muted);font-size:12px}.icon-button{min-width:48px;border:1px solid var(--danger-border);border-radius:8px;background:var(--danger-soft);color:var(--danger-text);font-size:12px;font-weight:800}.measure-frame{display:flex;flex-direction:column;background:var(--bg)}.back-button{min-width:48px;min-height:38px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);font-weight:800}.measure-title{min-width:0;flex:1;display:grid;gap:4px;text-align:center}.measure-title input{width:100%;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);font-size:18px;font-weight:900;text-align:center;outline:0}.measure-title span{color:var(--muted);font-size:12px}.warning-strip{display:grid;gap:6px;margin:10px 12px 0;padding:10px;border:1px solid var(--warning-border);border-radius:8px;background:var(--warning-bg)}.warning-strip strong{color:var(--warning-text);font-size:13px}.warning-strip p,.warning-strip small{margin:0;color:var(--warning-muted);font-size:12px;line-height:1.5}.warning-strip button{min-height:34px;border:1px solid var(--warning-border);border-radius:8px;background:var(--panel);color:var(--warning-text);font-weight:800}.browser-check-card,.pwa-install-card{display:grid;gap:10px;margin:0 14px 10px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.browser-check-card{grid-template-columns:minmax(0,1fr) auto;align-items:center}.browser-check-card.ready{border-color:color-mix(in srgb,var(--accent) 48%,var(--border));background:color-mix(in srgb,var(--accent) 10%,var(--panel))}.browser-check-card.warning{border-color:var(--warning-border);background:var(--warning-bg)}.browser-check-card.blocked{border-color:var(--danger-border);background:var(--danger-soft)}.browser-check-card strong,.pwa-install-card strong{display:block;margin-top:3px;color:var(--text);font-size:15px}.browser-check-card p,.pwa-install-card p,.pwa-install-card small{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.55}.browser-check-card>span{max-width:82px;padding:6px 8px;border-radius:8px;background:var(--secondary);color:var(--text);font-size:12px;font-weight:800;text-align:center;overflow-wrap:anywhere}.browser-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.browser-action-grid button{width:100%;min-width:0;padding:0 8px;white-space:normal}.pwa-install-card{grid-template-columns:minmax(0,1fr) auto;align-items:center}.pwa-install-card button{min-height:38px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-weight:800}.pwa-install-card small{grid-column:1 / -1;color:var(--warning-muted)}.connect-frame{display:flex;flex-direction:column;background:var(--bg)}.connect-hero{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;margin:16px 14px 12px;padding:18px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.connect-hero.connected{border-color:color-mix(in srgb,var(--accent) 50%,var(--border));background:color-mix(in srgb,var(--accent) 10%,var(--panel))}.connect-icon-large{width:66px;height:66px;display:grid;place-items:center;border-radius:50%;background:var(--primary);color:var(--primary-ink)}.connect-icon-large .bluetooth-icon{width:34px;height:34px;stroke-width:1.9}.connect-hero strong,.connect-hero p{margin:0}.connect-hero strong{display:block;margin-top:3px;color:var(--text);font-size:24px}.connect-hero p{margin-top:6px;color:var(--muted);font-size:13px;line-height:1.5}.connect-dock{margin-top:12px}.connect-readout strong{font-size:48px}.connect-readout{gap:4px;text-align:center}.connect-readout small{color:var(--muted);font-size:12px}.connect-steps{display:grid;gap:7px;margin:0 12px 16px;padding:13px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.connect-steps strong{color:var(--text)}.connect-steps p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.connect-steps details{border-top:1px solid var(--border);padding-top:9px}.connect-steps summary{cursor:pointer;color:var(--text);font-size:13px;font-weight:800}.diagnostic-list{display:grid;gap:6px;margin:10px 0 0}.diagnostic-list div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px}.diagnostic-list dt,.diagnostic-list dd{margin:0;font-size:12px}.diagnostic-list dt{color:var(--muted)}.diagnostic-list dd{overflow-wrap:anywhere;color:var(--text)}.annotation-frame{display:flex;flex-direction:column;background:#050505;color:#f7f7f7}.annotation-top-bar{min-height:86px;display:grid;grid-template-columns:54px 1fr auto;gap:12px;align-items:center;padding:18px 18px 10px}.annotation-top-bar strong{font-size:28px;font-weight:900;letter-spacing:0}.annotation-actions{display:flex;gap:8px;align-items:center}.annotation-icon-button,.annotation-save-button,.annotation-text-button{min-width:44px;min-height:44px;border:0;background:transparent;color:#f7f7f7}.annotation-zoom-actions{display:inline-grid;grid-template-columns:repeat(2,34px);gap:6px;align-items:center}.annotation-zoom-button{width:34px;height:34px;display:grid;place-items:center;border:2px solid rgba(255,255,255,.7);border-radius:8px;background:#161616;color:#fff;font-size:23px;font-weight:900;line-height:1}.annotation-zoom-button:disabled{border-color:#ffffff3d;color:#ffffff57}.annotation-icon-button,.annotation-save-button{position:relative;display:grid;place-items:center}.annotation-icon-button.back span{width:24px;height:24px;border-left:4px solid currentColor;border-bottom:4px solid currentColor;transform:rotate(45deg)}.annotation-save-button span{width:28px;height:28px;border:3px solid currentColor;border-radius:6px;box-shadow:inset 0 8px #ffffff38}.annotation-text-button{padding:0 8px;font-weight:800}.annotation-text-button:disabled,.annotation-tool-button:disabled{opacity:.36}.annotation-stage{position:relative;flex:1;min-height:0;margin:0 16px;overflow:hidden;background:#111;background-position:center;background-repeat:no-repeat;background-size:contain;cursor:crosshair;touch-action:none;overscroll-behavior:none}.annotation-image-layer{position:absolute;z-index:2;overflow:visible;transform-origin:0 0;will-change:transform}.annotation-stage img{width:100%;height:100%;display:block;object-fit:fill;filter:brightness(.96);opacity:1;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.annotation-stage .dimension-overlay{pointer-events:none}.annotation-stage .dimension-line-group{color:#ff7e2f}.annotation-stage .dimension-line-group:not(.draft) .dimension-main-line{stroke-width:3.8}.annotation-stage .dimension-line-group.draft .dimension-main-line{stroke-width:4.2}.annotation-stage .dimension-rect-shape{fill:transparent;stroke:currentColor;stroke-width:3.8;vector-effect:non-scaling-stroke}.annotation-stage .extension-line,.annotation-stage .dimension-handle,.annotation-stage .dimension-label{display:none}.annotation-point-number{position:absolute;z-index:4;left:0;top:0;width:30px;height:30px;display:grid;place-items:center;border:2px solid rgba(255,255,255,.78);border-radius:50%;background:#141414bd;color:#fff;font-size:14px;font-weight:900;transform:translate(-50%,-50%);pointer-events:none}.annotation-point-number.active{background:#f2b544;color:#1f2528}.annotation-point-number.done{background:#4fc3a1;color:#09231d}.annotation-ai-issue-point{position:absolute;z-index:5;left:0;top:0;width:30px;height:30px;display:grid;place-items:center;border:2px solid #ffffff;border-radius:50%;background:#dc2626;color:#fff;font-size:13px;font-weight:900;box-shadow:0 0 0 7px #dc26263d,0 8px 22px #00000059;transform:translate(-50%,-50%);pointer-events:none}.annotation-tool-panel{display:grid;gap:0;padding:22px 42px 28px;background:#050505}.annotation-slider{position:relative;height:20px;margin:0 28px}.annotation-slider span{position:absolute;top:8px;left:0;right:0;height:5px;border-radius:999px;background:#303030}.annotation-slider strong{position:absolute;left:48%;top:0;width:22px;height:22px;border-radius:50%;background:#f7f7f7;transform:translate(-50%)}.annotation-tool-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.annotation-tool-button{aspect-ratio:1;min-width:0;border:2px solid transparent;border-radius:8px;background:#202020;color:#fff;display:grid;place-items:center}.annotation-tool-button.active{border-color:#fff;background:#060606}.tool-line,.tool-arrow,.tool-curve,.tool-rect,.tool-eraser{position:relative;width:38px;height:38px;display:block}.tool-line:before{content:"";position:absolute;left:4px;right:4px;top:18px;height:4px;border-radius:999px;background:currentColor}.tool-arrow:before{content:"";position:absolute;left:4px;right:8px;top:18px;height:4px;border-radius:999px;background:currentColor}.tool-arrow:after{content:"";position:absolute;right:2px;top:12px;width:14px;height:14px;border-right:4px solid currentColor;border-top:4px solid currentColor;transform:rotate(45deg)}.tool-curve:before{content:"";position:absolute;top:11px;right:3px;bottom:8px;left:3px;border-bottom:4px solid currentColor;border-radius:50%;transform:rotate(3deg)}.tool-rect:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:4px solid currentColor;border-radius:3px}.tool-eraser:before{content:"";position:absolute;width:24px;height:15px;left:7px;top:10px;border:4px solid currentColor;border-radius:5px;transform:rotate(-42deg)}.tool-eraser:after{content:"";position:absolute;left:8px;right:7px;bottom:6px;height:3px;border-radius:999px;background:currentColor}.calibration-hint{margin:10px 12px 0;padding:9px 10px;border:1px solid var(--warning-border);border-radius:8px;background:var(--warning-bg);color:var(--warning-text);font-size:12px;font-weight:800;line-height:1.45}.calibration-hint.line-hint{border-color:#ff7e2f80;background:#ff7e2f21;color:var(--text)}.photo-stage{position:relative;min-height:0;overflow:hidden;margin:12px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg)}.photo-stage.editing{border-color:#f2b5449e;box-shadow:inset 0 0 0 1px #f2b54447,0 0 0 3px #f2b54414;touch-action:none}.photo-stage.line-editing{border-color:#ff7e2fbd;box-shadow:inset 0 0 0 1px #ff7e2f5c,0 0 0 3px #ff7e2f1a;cursor:crosshair;touch-action:none}.photo-stage img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;object-fit:fill;filter:brightness(.88)}.measurement-side-panel{min-width:0}.photo-grid{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(rgba(255,255,255,.11) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.11) 1px,transparent 1px);background-size:36px 36px;pointer-events:none}.dimension-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;width:100%;height:100%;overflow:visible;pointer-events:none}.dimension-overlay.editing{pointer-events:auto}.dimension-overlay marker path{fill:#f4f1e8f0}.dimension-line-group{color:#f4f1e8f0}.dimension-line-group.active{color:var(--primary)}.dimension-line-group.draft{color:#ff7e2f}.dimension-main-line{stroke:currentColor;stroke-width:.42;vector-effect:non-scaling-stroke}.dimension-rect-shape{fill:transparent;stroke:currentColor;stroke-width:.5;vector-effect:non-scaling-stroke}.dimension-line-group.draft .dimension-main-line{stroke-width:.62}.extension-line{stroke:currentColor;stroke-dasharray:3 3;stroke-width:.34;opacity:.75;vector-effect:non-scaling-stroke}.dimension-handle{fill:var(--bg);stroke:currentColor;stroke-width:.32;vector-effect:non-scaling-stroke}.dimension-drag-handle{pointer-events:all;cursor:grab;fill:var(--primary);stroke:#14181be6;stroke-width:.5;vector-effect:non-scaling-stroke}.dimension-drag-handle.label{fill:#fff;stroke:var(--primary)}.dimension-label{fill:currentColor;font-size:3.4px;font-weight:900;letter-spacing:0;paint-order:stroke}.dimension-label.halo{fill:none;stroke:#0f1519e0;stroke-linejoin:round;stroke-width:1.5}.legend{position:absolute;z-index:3;left:10px;top:10px;display:flex;gap:4px;padding:4px;border-radius:999px;background:color-mix(in srgb,var(--panel-strong) 78%,transparent);color:var(--text);font-size:11px;font-weight:800}.legend span{padding:5px 8px;border-radius:999px}.legend .current{background:var(--primary);color:var(--primary-ink)}.measure-dot{position:absolute;z-index:4;width:64px;height:56px;display:block;padding:0;border:0;background:transparent;transform:translate(-50%,-50%)}.measure-dot:before{content:"";position:absolute;left:50%;top:50%;z-index:1;width:6px;height:6px;border:1px solid rgba(255,255,255,.86);border-radius:50%;background:#11161aeb;transform:translate(-50%,-50%)}.measure-dot:after{content:"";position:absolute;left:50%;top:50%;z-index:0;width:18px;height:1px;background:#ffffffa3;transform:rotate(-42deg);transform-origin:0 50%}.measure-dot[data-icon-side=left]:after{transform:rotate(222deg)}.photo-stage.editing .measure-dot{cursor:grab;touch-action:none}.photo-stage.line-editing .measure-dot{pointer-events:none}.photo-stage.editing .measure-dot span{outline:2px dashed rgba(242,181,68,.7);outline-offset:3px}.measure-dot span{position:absolute;left:48px;top:12px;z-index:2;width:28px;height:28px;display:grid;place-items:center;border:2px solid rgba(255,255,255,.72);border-radius:50%;background:color-mix(in srgb,var(--muted) 48%,var(--panel));color:var(--text);font-size:13px;font-weight:900;opacity:.66;box-shadow:0 6px 16px #00000047;transform:translate(-50%,-50%)}.measure-dot[data-icon-side=left] span{left:16px}.measure-dot.active span{width:32px;height:32px;border-color:#fff;background:var(--primary);color:var(--primary-ink);opacity:.96;box-shadow:0 0 0 4px #f2b5442e,0 8px 18px #0000005c}.measure-dot.done span{background:var(--accent)}.measure-dot.needs_remeasure span{background:var(--warn);color:var(--primary-ink)}.measure-dot strong{position:absolute;left:50%;top:34px;z-index:2;display:block;white-space:nowrap;padding:4px 7px;border-radius:6px;background:color-mix(in srgb,var(--panel-strong) 86%,transparent);color:var(--text);font-size:11px;transform:translate(-50%)}.ai-issue-dot{position:absolute;z-index:5;width:30px;height:30px;display:grid;place-items:center;border:2px solid #ffffff;border-radius:50%;background:#dc2626;color:#fff;font-size:12px;font-weight:900;box-shadow:0 0 0 7px #dc262638,0 8px 22px #00000059;transform:translate(-50%,-50%)}.photo-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:-2px 12px 10px}.photo-quick-actions button{min-height:40px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-size:13px;font-weight:800}.photo-quick-actions .ai-action{border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.photo-quick-actions .export-annotation-action{grid-column:1 / -1;border-color:color-mix(in srgb,var(--primary) 68%,var(--border));background:color-mix(in srgb,var(--primary) 13%,var(--secondary));color:var(--text)}.photo-quick-actions button:disabled{background:color-mix(in srgb,var(--secondary) 72%,var(--bg));color:color-mix(in srgb,var(--muted) 70%,var(--bg))}.photo-quick-actions small{grid-column:1 / -1;color:var(--muted);font-size:12px;line-height:1.45}.ai-inspection-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:start;margin:0 12px 10px;padding:11px;border:1px solid rgba(220,38,38,.32);border-radius:8px;background:#dc262614;color:var(--text)}.ai-inspection-card.retake{border-color:var(--danger-border);background:var(--danger-soft)}.ai-inspection-card div{min-width:0;display:grid;gap:4px}.ai-inspection-card span,.ai-inspection-card small{color:var(--muted);font-size:12px;line-height:1.4}.ai-inspection-card strong{color:var(--text);font-size:16px}.ai-inspection-card button{min-height:34px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-weight:800}.ai-inspection-card.retake button{min-width:64px;border-color:var(--danger-border);background:var(--panel);color:var(--danger-text)}.meter-dock{display:grid;gap:10px;margin:0 12px 14px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.meter-status-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.current-task{display:grid;gap:9px}.meter-status-row>div:first-child,.current-task>div{min-width:0;display:grid;gap:3px}.meter-status-row strong,.current-task strong{color:var(--text)}.meter-status-row small{color:var(--muted);font-size:12px;line-height:1.4}.meter-actions{display:flex;gap:6px}.meter-actions button,.current-task button,.sheet-actions button,.api-key-actions button,.delete-confirm button{min-height:40px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-size:13px;font-weight:800}.meter-actions button{min-width:48px}.meter-actions button:disabled,.current-task button:disabled,.sheet-actions button:disabled,.api-key-actions button:disabled{background:color-mix(in srgb,var(--secondary) 72%,var(--bg));color:color-mix(in srgb,var(--muted) 70%,var(--bg))}.error-text{margin:0;padding:9px;border:1px solid var(--danger-border);border-radius:8px;background:var(--danger-soft);color:var(--danger-text);font-size:12px;line-height:1.5}.readout-box{display:grid;gap:4px;padding:13px;border-radius:8px;background:var(--input-bg);color:var(--text)}.readout-box span,.readout-box small{color:var(--muted)}.readout-box strong{color:var(--text);font-size:40px;line-height:1}.readout-box em{font-size:15px;font-style:normal}.current-task button{min-width:0;border-color:var(--primary);background:var(--primary);color:var(--primary-ink)}.current-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}.current-actions button{min-width:0;padding:0 10px}.current-actions button.secondary-action{border-color:var(--border);background:var(--secondary);color:var(--text)}.current-actions button:only-child{grid-column:1 / -1}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:flex-end;justify-content:center;background:#0e182373}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:11;display:flex;align-items:center;justify-content:center;padding:18px;background:#0e18236b}.point-sheet{width:min(100%,430px);display:grid;gap:12px;padding:16px;border:1px solid var(--border);border-radius:8px 8px 0 0;background:var(--panel-strong)}.api-key-panel{width:min(100%,390px);display:grid;gap:14px;padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--panel-strong);box-shadow:0 18px 48px var(--shadow)}.sheet-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-header h2,.sheet-header p{margin:0}.sheet-header h2{color:var(--text);font-size:20px}.sheet-header p{margin-top:4px;color:var(--muted)}.sheet-header button{min-height:36px;border:1px solid var(--border);border-radius:8px;background:var(--secondary);color:var(--text);font-weight:800}.api-status-card{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;padding:12px;border:1px solid var(--danger-border);border-radius:8px;background:var(--danger-soft)}.api-status-card.ready{border-color:color-mix(in srgb,var(--accent) 44%,var(--border));background:var(--success-soft)}.api-status-card .status-dot{position:static;margin-top:4px;border-color:var(--panel-strong)}.api-status-card strong{color:var(--text)}.api-status-card p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.api-key-field{display:grid;gap:8px;color:var(--muted);font-size:13px;font-weight:800}.api-key-field input{width:100%;min-height:46px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);font-size:15px;font-weight:800;outline:0}.api-key-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.api-key-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.point-meta{display:grid;grid-template-columns:1fr auto;gap:8px 12px;padding:12px;border-radius:8px;background:var(--input-bg)}.point-meta span{color:var(--muted);font-size:12px}.point-meta strong{color:var(--text);font-size:13px;text-align:right}.field-label{display:grid;gap:6px;color:var(--muted);font-size:13px;font-weight:800}.field-label input,.field-label textarea{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);outline:0}.field-label input{min-height:46px;padding:0 12px;font-size:18px;font-weight:900}.field-label textarea{min-height:72px;resize:vertical;padding:10px 12px}.sheet-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sheet-actions .danger{border-color:var(--danger-border);background:var(--danger-soft);color:var(--danger-text)}.api-key-actions button:last-child{border-color:var(--primary);background:var(--primary);color:#241909}.api-key-actions button:first-child{border-color:var(--danger-border);background:var(--danger-soft);color:var(--danger-text)}.delete-confirm{display:grid;gap:8px;padding:12px;border:1px solid var(--danger-border);border-radius:8px;background:var(--danger-soft)}.delete-confirm strong{color:var(--danger-text)}.delete-confirm p{margin:0;color:var(--danger-text-strong);font-size:13px}.delete-confirm div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.delete-confirm button:last-child{border-color:var(--danger);background:var(--danger);color:#fff}@media(max-width:460px){.app-shell{padding:0}.phone-frame{min-height:100vh;border:0;border-radius:0}}@media(min-width:700px){.app-shell{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.phone-frame{width:min(100%,1100px);min-height:calc(100dvh - 32px);border-radius:14px}.top-bar{min-height:72px;padding:14px 20px}.space-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:0 20px 24px}.space-list>.empty-state{grid-column:1 / -1}.stats-grid,.section-heading{padding-inline:20px}.photo-stage{margin:16px 20px}}@media(min-width:900px)and (orientation:landscape){.measure-frame{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.7fr);grid-template-rows:auto auto minmax(0,1fr);align-content:start}.measure-frame>.top-bar,.measure-frame>.calibration-hint{grid-column:1 / -1}.measure-frame>.photo-stage{grid-column:1;grid-row:3;align-self:start}.measurement-side-panel{grid-column:2;grid-row:3;max-height:calc(100dvh - 112px);overflow-y:auto;padding:16px 8px 16px 0}.measurement-side-panel .photo-quick-actions,.measurement-side-panel .ai-inspection-card,.measurement-side-panel .meter-dock{margin-top:0;margin-inline:0}}.app-shell{min-height:100dvh;padding:0;justify-content:stretch}.phone-frame{width:100%;min-height:100dvh;border:0;border-radius:0;box-shadow:none}.top-bar{padding-top:calc(env(safe-area-inset-top,0px) + 10px);padding-right:max(14px,env(safe-area-inset-right));padding-left:max(14px,env(safe-area-inset-left))}.sizesnap-editor{--sizesnap-tool-active-bg: #dff5ec;--sizesnap-tool-active-border: #70c8a5;--sizesnap-tool-active-ink: #0b7f58;width:100%;height:100dvh;min-height:620px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,sans-serif}.sizesnap-editor button{-webkit-tap-highlight-color:transparent}.sizesnap-topbar{min-height:72px;display:grid;grid-template-columns:54px minmax(0,1fr) 54px;align-items:end;gap:8px;padding:calc(env(safe-area-inset-top,0px) + 10px) max(10px,env(safe-area-inset-right)) 7px max(10px,env(safe-area-inset-left));border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--panel) 97%,transparent)}.sizesnap-back,.sizesnap-save{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:var(--text)}.sizesnap-save{justify-self:end;background:var(--primary);color:var(--primary-ink)}.sizesnap-back svg,.sizesnap-save svg{width:23px;height:23px}.sizesnap-toolbar{min-width:0;display:flex;justify-content:center;align-items:center;gap:2px;overflow-x:auto;scrollbar-width:none}.sizesnap-toolbar::-webkit-scrollbar{display:none}.sizesnap-toolbar button{min-width:54px;height:51px;display:grid;place-items:center;align-content:center;gap:2px;flex:0 0 auto;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted)}.sizesnap-toolbar button svg{width:19px;height:19px;stroke-width:1.8}.sizesnap-toolbar button span{font-size:10px;line-height:1}.sizesnap-toolbar button.active{border-color:var(--sizesnap-tool-active-border);background:var(--sizesnap-tool-active-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--sizesnap-tool-active-border) 28%,transparent);color:var(--sizesnap-tool-active-ink);font-weight:750}.sizesnap-toolbar button:disabled{opacity:.28}.sizesnap-workspace{position:relative;container-type:size;min-height:0;overflow:hidden;background:var(--surface)}.sizesnap-stage{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.sizesnap-stage.mode-hand{cursor:grab}.sizesnap-stage:not(.mode-hand){cursor:crosshair}.sizesnap-image-layer{position:absolute;left:50%;top:50%;z-index:2;transform-origin:center;box-shadow:0 2px 10px #232a2e29;will-change:transform;width:min(calc(100% - 190px),calc((100cqh - 20px) * var(--photo-aspect)));aspect-ratio:var(--photo-aspect)}.sizesnap-workspace.has-meter-dock .sizesnap-image-layer{left:calc(50% - 105px);width:min(calc(100% - 300px),calc((100cqh - 20px) * var(--photo-aspect)))}.sizesnap-image-layer>img{width:100%;height:100%;display:block;object-fit:contain;-webkit-user-drag:none}.sizesnap-overlay,.sizesnap-guides{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.sizesnap-overlay{z-index:4;overflow:visible}.sizesnap-line{color:#e90035}.sizesnap-line .visible-line,.sizesnap-line.rect rect{fill:none;stroke:currentColor;stroke-width:2.2;vector-effect:non-scaling-stroke}.sizesnap-line .hit-line{stroke:transparent;stroke-width:18;vector-effect:non-scaling-stroke;pointer-events:stroke}.sizesnap-line.rect rect{pointer-events:all}.sizesnap-line.selected .visible-line,.sizesnap-line.selected rect{stroke-width:3}.sizesnap-line.draft{opacity:.7}.sizesnap-dimension-label-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.sizesnap-dimension-label-anchor{position:absolute;width:0;height:0;transform-origin:0 0;pointer-events:none}.sizesnap-dimension-label-cluster{position:absolute;display:inline-block;pointer-events:none}.sizesnap-dimension-label{--dimension-label-gap: .333333em;position:relative;min-width:0;border:0;border-radius:4px;padding:2px .25em;background:transparent;box-shadow:none;color:#fff;font:800 14px/1.15 -apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,sans-serif;-webkit-text-stroke:.35px rgba(0,0,0,.86);text-shadow:-1px -1px 1px rgba(0,0,0,.78),1px -1px 1px rgba(0,0,0,.78),-1px 1px 1px rgba(0,0,0,.78),1px 1px 1px rgba(0,0,0,.78);white-space:nowrap;pointer-events:auto;touch-action:none}.sizesnap-dimension-label-cluster.parallel.default{transform:translate(-50%,calc(-100% - var(--dimension-label-gap)))}.sizesnap-dimension-label-cluster.vertical.left.default{transform:translate(calc(-100% - var(--dimension-label-gap)),-50%)}.sizesnap-dimension-label-cluster.vertical.right.default{transform:translate(var(--dimension-label-gap),-50%)}.sizesnap-dimension-label-cluster.custom{transform:translate(-50%,-50%)}.sizesnap-dimension-label.selected{outline:2px solid var(--sizesnap-tool-active-border);outline-offset:2px;background:transparent;box-shadow:none}.sizesnap-point-badge{position:absolute;left:calc(100% - 7px);top:50%;width:40px;height:40px;display:grid;place-items:center;border:0;padding:0;background:transparent;transform:translateY(-50%);pointer-events:auto;touch-action:manipulation}.sizesnap-point-badge:focus{outline:none}.sizesnap-point-badge:focus-visible .sizesnap-point-badge-visual{outline:2px solid var(--primary);outline-offset:2px}.sizesnap-point-badge-visual{width:16px;height:16px;display:flex;align-items:center;justify-content:center;border:1px solid #fff;border-radius:50%;background:#777f84;box-shadow:0 1px 2px #14181b52;color:#fff;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,sans-serif;font-size:10px;font-weight:800;font-variant-numeric:tabular-nums;line-height:16px;text-align:center;transform-origin:center}.sizesnap-point-badge.active .sizesnap-point-badge-visual{background:var(--primary);color:var(--primary-ink)}.sizesnap-point-badge.needs_remeasure .sizesnap-point-badge-visual{background:#ef7e34}.sizesnap-point-badge.done .sizesnap-point-badge-visual{background:#4da76f}.app-recovery{min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:12px;padding:32px;background:#f5efe2;color:#252c30;text-align:center}.app-recovery strong{font-size:22px}.app-recovery span{color:#697378}.app-recovery button{min-height:44px;border:0;border-radius:8px;padding:0 20px;background:var(--primary);color:var(--primary-ink);font-weight:750}.sizesnap-ai-notice{position:absolute;z-index:14;top:10px;left:max(12px,env(safe-area-inset-left));max-width:min(440px,calc(100% - 260px));padding:8px 12px;border:1px solid color-mix(in srgb,var(--primary) 55%,var(--border));border-radius:8px;background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:var(--shadow);color:var(--text);font-size:12px}.sizesnap-meter-dock{position:absolute;z-index:11;top:12px;right:max(12px,env(safe-area-inset-right));width:230px;display:grid;gap:10px;padding:13px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--panel) 97%,transparent);box-shadow:var(--shadow)}.sizesnap-meter-dock header{display:grid;grid-template-columns:9px minmax(0,1fr);gap:8px;align-items:start}.sizesnap-meter-dock header div{min-width:0;display:grid;gap:2px}.sizesnap-meter-dock header strong{font-size:13px}.sizesnap-meter-dock header small,.sizesnap-current-point span{color:var(--muted);font-size:10px}.sizesnap-meter-state-dot{width:9px;height:9px;margin-top:3px;border-radius:50%;background:#8d9498}.sizesnap-meter-dock.connected .sizesnap-meter-state-dot{background:#32a86b;box-shadow:0 0 0 3px #32a86b24}.sizesnap-live-reading{min-height:58px;display:flex;align-items:baseline;justify-content:center;gap:5px;border-radius:9px;background:var(--surface);color:var(--text)}.sizesnap-live-reading strong{font-size:32px;line-height:1;font-variant-numeric:tabular-nums}.sizesnap-live-reading span{color:var(--muted);font-size:12px;font-weight:700}.sizesnap-current-point{display:grid;gap:2px}.sizesnap-current-point strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.sizesnap-meter-primary,.sizesnap-meter-secondary,.sizesnap-meter-sequence{min-height:34px;border-radius:7px;font-size:12px;font-weight:700}.sizesnap-meter-actions{display:grid;gap:6px}.sizesnap-meter-sequence{border:1px solid color-mix(in srgb,var(--primary) 65%,var(--border));background:color-mix(in srgb,var(--primary-soft) 78%,var(--panel));color:var(--text)}.sizesnap-meter-primary{border:0;background:var(--primary);color:var(--primary-ink)}.sizesnap-meter-secondary{border:1px solid var(--border);background:var(--panel);color:var(--text)}.sizesnap-meter-primary:disabled{opacity:.48}.sizesnap-number-pad{position:absolute;z-index:15;left:max(12px,env(safe-area-inset-left));bottom:12px;width:270px;display:grid;gap:9px;padding:12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--panel) 98%,transparent);box-shadow:var(--shadow)}.sizesnap-number-pad header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.sizesnap-number-pad header div{min-width:0;display:grid;gap:2px}.sizesnap-number-pad header strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.sizesnap-number-pad header span{color:var(--muted);font-size:10px}.sizesnap-number-pad header button{width:30px;height:30px;display:grid;place-items:center;flex:0 0 auto;border:0;border-radius:50%;background:var(--secondary);color:var(--text)}.sizesnap-number-pad header svg{width:16px;height:16px}.sizesnap-number-pad output{min-height:50px;display:flex;align-items:baseline;justify-content:flex-end;gap:6px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}.sizesnap-number-pad output strong{font-size:28px;font-variant-numeric:tabular-nums}.sizesnap-number-pad output span{color:var(--muted);font-size:12px}.sizesnap-number-keys{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.sizesnap-number-keys button{min-height:42px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:18px;font-weight:800}.sizesnap-number-save{min-height:42px;display:flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:8px;background:var(--primary);color:var(--primary-ink);font-weight:900}.sizesnap-number-save:disabled{opacity:.45}.sizesnap-number-save svg{width:17px;height:17px}.sizesnap-workspace.has-meter-dock .sizesnap-quickbar{top:auto;bottom:12px;transform:none}.sizesnap-overlay-shape,.sizesnap-freehand{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:visiblePainted}.sizesnap-overlay-shape.text{fill:currentColor;stroke:#fff;stroke-width:.5px;paint-order:stroke fill;font-weight:700}.sizesnap-overlay-shape.image{stroke:none}.sizesnap-overlay-shape.selected:not(.image){filter:drop-shadow(0 0 2px rgb(255 255 255 / 95%))}.sizesnap-selection-box{fill:none;stroke:#18ad72;stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none}.sizesnap-overlay-shape.draft,.sizesnap-freehand.draft{color:#e90035;stroke-width:3px;opacity:.7}.sizesnap-line .sizesnap-handle-hit{fill:transparent;stroke:transparent;pointer-events:all}.sizesnap-line .sizesnap-handle-visual{fill:transparent;stroke:#fff;stroke-width:.55;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1px rgba(32,36,40,.88));pointer-events:none}circle.sizesnap-handle{fill:#e9003529;stroke:#e90035;stroke-width:.55;vector-effect:non-scaling-stroke;pointer-events:all}.sizesnap-guides{z-index:3;pointer-events:none}.sizesnap-guides i{position:absolute;display:block;border-color:#e90035cc;border-style:dashed;border-width:0}.sizesnap-guides .horizontal{left:-100vw;right:-100vw;border-top-width:1px}.sizesnap-guides .vertical{top:-100vh;bottom:-100vh;border-left-width:1px}.sizesnap-magnifier{position:absolute;z-index:12;left:max(18px,env(safe-area-inset-left));top:18px;width:176px;height:142px;border:2px solid #e90035;border-radius:8px;background-color:#fff;background-repeat:no-repeat;background-size:480%;box-shadow:0 10px 28px #1a1f2247;pointer-events:none}.sizesnap-magnifier:before,.sizesnap-magnifier:after{content:"";position:absolute;background:#e90035}.sizesnap-magnifier:before{left:50%;top:0;bottom:0;width:1px}.sizesnap-magnifier:after{left:0;right:0;top:50%;height:1px}.sizesnap-magnifier span{position:absolute;left:50%;top:50%;width:24px;height:24px;border:2px solid #e90035;border-radius:50%;transform:translate(-50%,-50%)}.sizesnap-quickbar{position:absolute;z-index:10;right:max(12px,env(safe-area-inset-right));top:50%;display:grid;gap:3px;padding:5px;border:1px solid #d9dddf;border-radius:10px;background:#fffffff0;box-shadow:0 8px 20px #1f272b24;transform:translateY(-50%)}.sizesnap-quickbar button{width:42px;height:42px;display:grid;place-items:center;border:1px solid transparent;border-radius:7px;background:transparent;color:#4c565c}.sizesnap-quickbar button.active{border-color:var(--sizesnap-tool-active-border);background:var(--sizesnap-tool-active-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--sizesnap-tool-active-border) 28%,transparent);color:var(--sizesnap-tool-active-ink)}.sizesnap-quickbar button:disabled{opacity:.28}.sizesnap-quickbar svg{width:21px;height:21px}.sizesnap-layers{position:absolute;z-index:14;inset:0 auto 0 0;width:min(340px,46vw);overflow-y:auto;padding:14px;border-right:1px solid #d8dcde;background:#fffffff7;box-shadow:10px 0 30px #21282c24}.sizesnap-layers header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.sizesnap-layers header span,.sizesnap-layers p{color:#7b858a;font-size:12px}.sizesnap-layer-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;border-bottom:1px solid #edf0f1;background:transparent;color:#2e363a}.sizesnap-layer-row.active{background:#e8f7f1}.sizesnap-layer-row.dragging{box-shadow:inset 3px 0 0 var(--primary)}.sizesnap-layer-select{min-width:0;display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px;align-items:center;padding:12px;border:0;background:transparent;color:inherit;text-align:left}.sizesnap-layer-drag-handle{width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;color:#778187;cursor:grab;touch-action:none}.sizesnap-layer-drag-handle:active{cursor:grabbing;color:var(--primary)}.sizesnap-layer-drag-handle svg{width:20px;height:20px}.sizesnap-layer-select span{color:#768085;font-size:12px}.sizesnap-layer-select strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sizesnap-layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.sizesnap-layer-actions button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d9dddf;border-radius:7px;background:#fff;color:#4c565c}.sizesnap-layer-actions svg{width:17px;height:17px}.sizesnap-popover{position:absolute;z-index:15;top:12px;left:max(12px,env(safe-area-inset-left));width:min(360px,calc(100vw - 92px));padding:16px;border:1px solid #d8dcde;border-radius:12px;background:#fffffffa;box-shadow:0 14px 38px #21282c2e}.sizesnap-popover>header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.sizesnap-popover>header strong{font-size:16px}.sizesnap-popover>header span{color:#7b858a;font-size:11px}.sizesnap-stickers>div{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sizesnap-stickers button{min-height:76px;display:grid;place-items:center;align-content:center;gap:7px;border:1px solid #e0e4e6;border-radius:9px;background:#f8f9f9;color:#414b50}.sizesnap-stickers button:active{border-color:#e90035;background:#fff3f6;color:#e90035}.sizesnap-stickers button:disabled{opacity:.58}.sizesnap-stickers svg{width:28px;height:28px}.sizesnap-stickers span{font-size:12px}.sizesnap-toggle{min-height:60px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border-top:1px solid #edf0f1}.sizesnap-toggle>span{display:grid;gap:3px}.sizesnap-toggle strong{font-size:13px}.sizesnap-toggle small{color:#7b858a;font-size:10px;line-height:1.35}.sizesnap-toggle input{width:44px;height:26px;accent-color:#18ad72}.sizesnap-settings-history{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:12px;border-top:1px solid #edf0f1}.sizesnap-settings-history button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d9dddf;border-radius:7px;background:#fff;color:#4c565c}.sizesnap-settings-history button:disabled{opacity:.32}.sizesnap-settings-history svg{width:17px;height:17px}.sizesnap-inspector{position:relative;min-height:0;display:grid;grid-template-columns:minmax(130px,.45fr) minmax(350px,1.25fr) minmax(320px,1.15fr);gap:12px;align-items:center;padding:8px max(38px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));border-top:1px solid var(--border);background:var(--panel)}.sizesnap-inspector.empty{display:none}.sizesnap-inspector.graphic{grid-template-columns:minmax(130px,.45fr) minmax(0,2.25fr)}.sizesnap-inspector-close{position:absolute;top:6px;right:max(6px,env(safe-area-inset-right));z-index:2;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--muted)}.sizesnap-inspector-close svg{width:16px;height:16px}.sizesnap-text-editor{display:grid;gap:4px;color:#687278;font-size:11px}.sizesnap-text-editor input{height:40px;border:1px solid #ccd2d5;border-radius:6px;padding:0 12px;font-size:15px}.sizesnap-style-editor{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0;padding-bottom:2px}.sizesnap-style-editor label{display:grid;gap:4px;color:#687278;font-size:11px;min-width:96px}.sizesnap-color-palette,.sizesnap-line-presets{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:0 0 auto}.sizesnap-color-palette>button{width:28px;height:28px;padding:0;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #c6cdd1}.sizesnap-color-palette>button.active{box-shadow:0 0 0 3px #20282c}.sizesnap-color-palette label{min-width:auto}.sizesnap-color-palette label span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.sizesnap-line-presets{padding-left:8px;border-left:1px solid #dfe3e5}.sizesnap-line-presets>span{color:#687278;font-size:11px;white-space:nowrap}.sizesnap-line-presets button{height:30px;padding:0 8px;border:1px solid #ccd2d5;border-radius:6px;background:#fff;color:#2f383d;white-space:nowrap}.sizesnap-line-presets button.active{border-color:#2f383d;background:#eef1f2}.sizesnap-style-editor input[type=color]{width:48px;height:40px;border:1px solid #ccd2d5;border-radius:6px;padding:3px;background:#fff}.sizesnap-color-palette>.sizesnap-custom-color-button{background-image:linear-gradient(135deg,transparent 42%,rgb(255 255 255 / 88%) 43% 52%,transparent 53%)}.sizesnap-style-editor>.sizesnap-color-palette>.sizesnap-native-color-input{position:fixed;left:-10000px;top:0;width:1px;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.sizesnap-inspector-title{display:grid;gap:2px}.sizesnap-inspector-title strong{font-size:14px}.sizesnap-inspector-title span,.sizesnap-empty-inspector{color:#7a8489;font-size:12px}.sizesnap-value-editor{display:grid;grid-template-columns:auto minmax(150px,1fr) auto;gap:8px;align-items:end}.sizesnap-unit-tabs{display:flex;gap:3px}.sizesnap-unit-tabs button{min-width:42px;height:34px;border:1px solid #d9dddf;background:#f7f8f8;color:#606a6f}.sizesnap-unit-tabs button.active{border-color:#18ad72;background:#e5f7f0;color:#0b8f5e}.sizesnap-value-editor label{display:grid;gap:4px;color:#687278;font-size:11px}.sizesnap-value-editor input{min-width:0;height:34px;border:1px solid #ccd2d5;border-radius:6px;padding:0 12px;background:#fff;color:#22282c;font-size:16px}.sizesnap-value-save{height:34px;display:inline-flex;align-items:center;gap:6px;border:0;border-radius:6px;padding:0 18px;background:#20b679;color:#fff;font-weight:700}.sizesnap-value-save svg{width:17px;height:17px}@media(orientation:portrait){.sizesnap-image-layer>img{max-width:none;max-height:none}.sizesnap-image-layer{width:min(calc(100% - 110px),calc((100cqh - 20px) * var(--photo-aspect)))}.sizesnap-workspace.has-meter-dock .sizesnap-image-layer{left:50%;top:calc(50% - 65px);width:min(calc(100% - 110px),calc((100cqh - 150px) * var(--photo-aspect)))}.sizesnap-meter-dock{inset:auto max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left));width:auto;grid-template-columns:minmax(130px,1fr) 110px minmax(250px,1.8fr);align-items:center;gap:8px;padding:10px}.sizesnap-meter-dock header,.sizesnap-current-point{align-self:center}.sizesnap-live-reading{min-height:52px}.sizesnap-live-reading strong{font-size:28px}.sizesnap-meter-actions{grid-column:3;grid-template-columns:repeat(3,minmax(0,1fr))}.sizesnap-meter-dock>.sizesnap-meter-secondary{grid-column:3}.sizesnap-number-pad{bottom:96px}.sizesnap-workspace.has-meter-dock .sizesnap-quickbar{top:50%;bottom:auto;transform:translateY(-50%)}.sizesnap-topbar{grid-template-columns:46px minmax(0,1fr) 46px}.sizesnap-toolbar{justify-content:flex-start;gap:0;overflow-x:hidden}.sizesnap-toolbar button{min-width:44px;width:44px}.sizesnap-toolbar button svg{width:18px;height:18px}.sizesnap-layers{inset:auto 0 0;width:100%;max-height:42%;border-top:1px solid #d8dcde;border-right:0;box-shadow:0 -10px 30px #21282c24}.sizesnap-popover{inset:auto 10px 10px;width:auto;max-height:48%;overflow-y:auto}.sizesnap-inspector{grid-template-columns:minmax(120px,.35fr) minmax(0,1.65fr);max-height:220px;gap:6px;align-items:start;overflow-y:auto;padding:8px max(38px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.sizesnap-inspector.graphic{grid-template-columns:minmax(120px,.35fr) minmax(0,1.65fr)}.sizesnap-value-editor{grid-template-columns:auto minmax(120px,1fr) auto;gap:6px}.sizesnap-unit-tabs{grid-column:auto}.sizesnap-style-editor{grid-column:1 / -1}}@media(orientation:portrait)and (max-width:600px){.sizesnap-inspector,.sizesnap-inspector.graphic{grid-template-columns:1fr;max-height:238px}.sizesnap-value-editor{grid-template-columns:1fr auto}.sizesnap-unit-tabs{grid-column:1 / -1}}
