:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f4f5;--surface:#fff;--canvas:#ececee;--ink:#18181b;--muted:#71717a;--line:#e4e4e7;--accent:#0f766e;--accent-hover:#0d9488;--accent-soft:#f0fdfa;--warn:#b45309;--warn-bg:#fffbeb;--error:#b91c1c;--shadow:0 1px 2px #18181b0d, 0 8px 24px #18181b0f;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--toolbar-h:52px;--status-h:32px;--panel-w:268px}*{box-sizing:border-box}html,body,#root{background:var(--bg);max-width:100%;height:100%;color:var(--ink);font-family:var(--font);margin:0;font-size:14px;line-height:1.45;overflow:hidden}button,input{font-family:inherit}.app{flex-direction:column;min-width:0;max-width:100%;height:100%;min-height:0;display:flex;overflow:hidden}.toolbar{z-index:5;height:var(--toolbar-h);background:var(--surface);border-bottom:1px solid var(--line);-webkit-user-select:none;user-select:none;align-items:center;gap:10px;min-width:0;padding:0 12px;display:flex;position:relative;overflow:visible;box-shadow:0 1px #18181b05}.toolbar-start{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.toolbar-end{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.brand{letter-spacing:-.02em;white-space:nowrap;flex:auto;align-items:center;gap:8px;min-width:0;font-weight:600;display:flex;overflow:hidden}.brand-mark{background:var(--accent);width:10px;height:10px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:3px;flex-shrink:0}.plan-name-btn{font:inherit;letter-spacing:-.02em;color:var(--ink);cursor:text;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:8px;flex:0 auto;min-width:0;max-width:240px;padding:4px 6px;font-weight:600;overflow:hidden}.plan-name-btn:hover{background:#f4f4f5}.plan-name-input{font:inherit;letter-spacing:-.02em;color:var(--ink);border:1px solid var(--accent);background:var(--surface);border-radius:8px;width:180px;height:32px;padding:0 6px;font-weight:600}.plan-chevron{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.plan-chevron:hover,.plan-chevron[aria-expanded=true]{color:var(--ink);background:#f4f4f5}.plan-saved{color:var(--muted);flex-shrink:0;margin-left:2px;font-size:12px;font-weight:500}.plan-save-failed{color:var(--warn);background:var(--warn-bg);border-radius:999px;flex-shrink:0;margin-left:2px;padding:2px 6px;font-size:12px;font-weight:600}.plan-menu{z-index:40;background:var(--surface);border:1px solid var(--line);width:300px;max-height:min(420px,100vh - 80px);box-shadow:var(--shadow);border-radius:12px;padding:6px;position:fixed;overflow:auto}.plan-row{border-radius:8px;align-items:center;gap:4px;display:flex}.plan-row.current{background:var(--accent-soft)}.plan-row-open{cursor:pointer;text-align:left;min-width:0;color:inherit;background:0 0;border:0;border-radius:8px;flex-direction:column;flex:1;align-items:flex-start;gap:1px;padding:6px 8px;display:flex}.plan-row-open:hover{background:#ffffffb3}.plan-row-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.plan-row-time{color:var(--muted);font-size:12px}.plan-row-actions{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;flex-shrink:0;margin-right:4px}.plan-row-actions:hover,.plan-row-actions[aria-expanded=true]{color:var(--ink);background:#fff}.plan-row-menu{background:var(--bg);border-radius:8px;flex-direction:column;margin:0 4px 6px 8px;padding:4px;display:flex}.plan-row-menu button{text-align:left;cursor:pointer;font:inherit;color:var(--ink);background:0 0;border:0;border-radius:6px;padding:6px 8px}.plan-row-menu button:hover:not(:disabled){background:#fff}.plan-row-menu button:disabled{color:var(--muted);cursor:not-allowed}.plan-new-row{border:0;border-top:1px solid var(--line);text-align:left;width:100%;font:inherit;cursor:pointer;color:var(--accent);background:0 0;border-radius:0 0 8px 8px;margin-top:4px;padding:8px;font-weight:600}.plan-new-row:hover{background:var(--accent-soft)}.plan-delete-toast{bottom:56px}.toolbar-group{border-right:1px solid var(--line);flex-shrink:0;align-items:center;gap:4px;padding-right:10px;display:flex}.toolbar-spacer{flex:1;min-width:0}.more-wrap{position:relative}.more-menu{z-index:30;background:var(--surface);border:1px solid var(--line);min-width:180px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;align-items:stretch;gap:8px;padding:8px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.more-menu .segmented{align-self:flex-start}.more-item{text-align:left;cursor:pointer;font:inherit;color:var(--ink);background:0 0;border:0;border-radius:8px;padding:6px 8px}.more-item:hover:not(:disabled){background:#f4f4f5}.tool-btn{height:34px;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;display:inline-flex}.tool-btn:hover:not(:disabled){background:#f4f4f5}.tool-btn.active{background:var(--accent-soft);color:var(--accent);border-color:#99f6e4}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.segmented{background:#f4f4f5;border-radius:9px;flex-shrink:0;padding:3px;display:flex}.shell{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.main-column{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.tool-rail{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:0 0 64px;align-items:stretch;gap:2px;width:64px;min-height:0;padding:8px 4px;display:flex;overflow:hidden auto}.rail-btn{width:100%;min-height:48px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 2px;display:flex}.rail-btn:hover:not(:disabled){background:#f4f4f5}.rail-btn.active{background:var(--accent-soft);color:var(--accent);border-color:#99f6e4}.rail-btn:disabled{opacity:.4;cursor:not-allowed}.tool-rail.compact .rail-btn{min-height:36px}.tool-rail.compact .rail-label{display:none}.rail-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;font-weight:600;line-height:1.1;overflow:hidden}.rail-divider{background:var(--line);flex-shrink:0;height:1px;margin:4px 8px}.segmented button{height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:12px;font-weight:600}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #18181b14}.workspace{flex:1;min-width:0;min-height:0;display:flex;position:relative}.workspace.drawer-open .canvas-wrap{margin-right:300px}.canvas-wrap{background:var(--canvas);flex:1;min-width:0;position:relative}.canvas-wrap.drag-over{outline:2px dashed var(--accent);outline-offset:-10px}.canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.canvas.grab{cursor:grab}.canvas.grabbing{cursor:grabbing}.canvas.crosshair{cursor:crosshair}.canvas.default{cursor:default}.canvas.move{cursor:move}.canvas.not-allowed{cursor:not-allowed}.snap-hint{z-index:4;pointer-events:none;color:#fff;white-space:nowrap;background:#18181be6;border-radius:6px;padding:3px 7px;font-size:11px;font-weight:600;position:absolute;transform:translate(14px,18px)}.empty-state{width:min(420px,100% - 48px);height:220px;color:var(--muted);cursor:pointer;box-shadow:var(--shadow);background:#ffffffb8;border:1.5px dashed #d4d4d8;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:10px;margin:auto;display:flex;position:absolute;inset:0}.empty-state strong{color:var(--ink);font-size:15px;font-weight:600}.empty-state span{font-size:13px}.empty-state:hover{border-color:var(--accent);color:var(--accent)}.uncalibrated-hint{background:var(--warn-bg);color:var(--warn);box-shadow:var(--shadow);pointer-events:none;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;position:absolute;top:14px;left:50%;transform:translate(-50%)}.status-toast{z-index:5;background:var(--ink);color:#fff;box-shadow:var(--shadow);white-space:nowrap;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.status-toast button{color:#99f6e4;font:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-weight:700}.status-toast button:hover{text-decoration:underline}.scale-check{z-index:5;background:var(--ink);color:#fff;width:max-content;max-width:calc(100% - 32px);box-shadow:var(--shadow);white-space:nowrap;pointer-events:auto;border-radius:999px;align-items:center;gap:8px;margin:0;padding:6px 12px;font-size:13px;font-weight:600;line-height:1.3;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.scale-check button{color:#99f6e4;font:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-weight:700}.scale-check button:hover{text-decoration:underline}.scale-check input{width:7.5rem;color:var(--ink);font:inherit;background:#fff;border:0;border-radius:999px;margin:0;padding:2px 8px;font-weight:600}.scale-check .error{color:#fecaca;font-size:12px}.panel{width:var(--panel-w);background:var(--surface);border-left:1px solid var(--line);flex-shrink:0;min-height:0;padding:18px 16px 24px;overflow:auto}.panel.drawer{z-index:6;border-left:1px solid var(--line);width:300px;box-shadow:var(--shadow);transition:transform .16s;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.panel.drawer.open{transform:translate(0)}.drawer-close{z-index:1;width:28px;height:28px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;font-size:16px;line-height:1;position:absolute;top:8px;right:8px}.drawer-close:hover{background:#f4f4f5}.panel-locked input:disabled,.panel-locked button:disabled,.panel-locked input[type=range]:disabled{color:var(--muted);background:var(--bg);cursor:not-allowed}.panel-locked input[type=range]:disabled{accent-color:var(--muted)}.panel-locked .field-value{color:var(--muted)}.panel h2{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px;font-size:11px;font-weight:650}.panel h2:first-child{margin-top:0}.panel .muted{color:var(--muted);margin:0;font-size:13px}.panel .error{color:var(--error);margin:0 0 12px;font-size:13px}.panel .status-message{color:var(--warn);margin:0 0 12px;font-size:13px}.meta{grid-template-columns:64px 1fr;gap:6px 10px;margin:0;display:grid}.meta dt{color:var(--muted);font-size:12px}.meta dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.readout{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:10px 0 0;font-size:20px;font-weight:600}.readout .hint{color:var(--warn);font-size:12px;font-weight:500}.callout{background:var(--warn-bg);color:var(--warn);border-radius:10px;margin-top:14px;padding:10px 12px;font-size:12.5px}.statusbar{height:var(--status-h);background:var(--surface);border-top:1px solid var(--line);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:nowrap;align-items:center;gap:10px;padding:0 14px;font-size:12px;display:flex}.statusbar .sep{background:var(--line);width:1px;height:12px}.statusbar .grow{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.credit-status{white-space:nowrap;color:var(--muted);flex-shrink:0;align-items:center;gap:8px;font-size:12px;display:flex}.credit-status .credit-icons{align-items:center;gap:8px;display:flex}.credit-status .credit-name{color:var(--muted);white-space:nowrap;font-size:12px;text-decoration:none}.credit-status .credit-icon{color:var(--muted);line-height:0;text-decoration:none;display:inline-flex}.credit-status .credit-name:hover,.credit-status .credit-icon:hover{color:var(--accent)}.credit-extra:empty{display:none}.credit-menu{flex-direction:column;gap:4px;margin-top:4px;display:flex}.more-divider{background:var(--line);border:0;height:1px;margin:4px 8px}.credit-menu .credit-name{color:var(--muted);text-align:left;align-items:center;text-decoration:none;display:flex}.credit-menu .credit-icons{align-items:center;display:flex}.credit-menu .credit-icon{width:44px;height:44px;color:var(--muted);justify-content:center;align-items:center;line-height:0;text-decoration:none;display:inline-flex}.credit-menu .credit-name:hover,.credit-menu .credit-icon:hover{color:var(--accent)}@media (width<=1023px){.statusbar{gap:6px;padding:0 8px}.credit-status,.credit-status .credit-icons{gap:4px}}.statusbar .muted{color:var(--muted)}.scale-dot{vertical-align:1px;background:#16a34a;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.text-link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.cal-dialog{z-index:3;background:var(--surface);width:240px;box-shadow:var(--shadow);border:1px solid var(--line);border-radius:12px;padding:14px;position:absolute;transform:translate(-50%,18px)}.cal-dialog label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:11px;font-weight:650;display:block}.cal-dialog input{border:1px solid var(--line);border-radius:8px;width:100%;height:34px;padding:0 10px;font-size:14px}.cal-dialog input:focus{border-color:var(--accent);outline:2px solid #99f6e4}.cal-dialog .parsed{margin:8px 0 0;font-size:13px;font-weight:600}.cal-dialog .parsed .dot{color:var(--muted);margin:0 6px;font-weight:400}.cal-dialog .muted,.cal-dialog .error{margin:8px 0 0;font-size:12px}.cal-dialog .error{color:var(--error)}.cal-dialog .muted{color:var(--muted)}.cal-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.cal-actions button,.ghost,.primary{cursor:pointer;border-radius:8px;height:30px;padding:0 12px;font-size:13px;font-weight:600}.ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.primary{border:1px solid var(--accent);background:var(--accent);color:#fff}.primary:disabled{opacity:.45;cursor:not-allowed}.primary:not(:disabled):hover{background:var(--accent-hover)}.toolbar-field,.field{flex-direction:column;gap:4px;margin-top:10px;display:flex}.toolbar-field{color:var(--muted);flex-direction:row;flex-shrink:0;align-items:center;gap:6px;margin-top:0;font-size:12px;font-weight:600}.field span,.toolbar-field span{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:650}.field input,.toolbar-field input,.length-entry input,.room-label-editor,.opening-distance-editor{border:1px solid var(--line);height:34px;font:inherit;color:var(--ink);background:var(--surface);border-radius:8px;padding:0 10px;font-size:13px}.toolbar-field input{width:88px;height:30px;font-size:12px}.field input:focus,.toolbar-field input:focus,.length-entry input:focus,.room-label-editor:focus,.opening-distance-editor:focus{border-color:var(--accent);outline:2px solid #99f6e4}.field input[aria-invalid=true],.toolbar-field input[aria-invalid=true],.length-entry input[aria-invalid=true]{border-color:var(--error)}.field-value{font-variant-numeric:tabular-nums;margin:0;font-size:14px;font-weight:600}.image-view{flex-direction:row;align-items:flex-end;gap:8px;display:flex}.image-view .field{flex:1;min-width:0}.image-view .opacity-label{letter-spacing:normal;text-transform:none}.image-view .ghost{white-space:nowrap;flex-shrink:0}.image-view input[type=range]{width:100%;height:16px;accent-color:var(--accent);background:0 0;border:none;border-radius:0;margin:0;padding:0}.rotation-row{flex-wrap:wrap;align-items:flex-end;gap:6px;max-width:100%;margin-top:10px;display:flex}.rotation-row .field{flex:1 0 6.5rem;width:6.5rem;min-width:0;max-width:8rem;margin-top:0}.rotation-row .field span{letter-spacing:normal;text-transform:none}.rotation-row .field input{font-variant-numeric:tabular-nums;width:100%;min-width:0}.rotation-row .ghost{flex:none}.rotation-row .rotation-step{width:30px;padding:0}.length-entry{z-index:4;background:var(--surface);border:1px solid var(--line);width:148px;box-shadow:var(--shadow);pointer-events:none;border-radius:10px;padding:8px;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.length-entry input{pointer-events:auto;width:100%}.length-entry .parsed,.length-entry .error{margin:6px 0 0;font-size:12px;font-weight:600}.length-entry .error{color:var(--error);font-weight:500}.room-label-editor{z-index:4;text-align:center;width:160px;box-shadow:var(--shadow);font-weight:650;position:absolute;transform:translate(-50%,-50%)}.opening-distance-editor{z-index:4;text-align:center;width:8.5rem;box-shadow:var(--shadow);font-weight:650;position:absolute;transform:translate(-50%,-50%)}.preset-grid{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;display:grid}.preset{border:1px solid var(--line);background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px;font-size:12px;font-weight:600;display:flex}.preset small{color:var(--muted);font-weight:500}.preset.on,.preset:hover{background:var(--accent-soft);border-color:#99f6e4}.help-backdrop{z-index:20;background:#18181b47;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.help-card{background:var(--surface);border:1px solid var(--line);width:min(720px,100%);max-height:min(80vh,640px);box-shadow:var(--shadow);border-radius:14px;padding:18px 18px 8px;overflow:auto}.help-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.help-head h2{letter-spacing:-.02em;text-transform:none;color:var(--ink);margin:0;font-size:16px}.help-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 28px;margin-top:8px;display:grid}.help-card h3{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:12px 0 6px;font-size:11px}.help-card dl{margin:0}.help-card dl div{grid-template-columns:minmax(0,9.5em) minmax(0,1fr);align-items:baseline;gap:8px;padding:4px 0;display:grid}.help-card dt{color:var(--ink);font-size:12px;font-weight:650}.help-card dd{color:var(--muted);margin:0;font-size:12px}@media (width<=1023px){.help-columns{grid-template-columns:1fr}}.segmented button:disabled{opacity:.4;cursor:not-allowed}.orbit-view{position:absolute;inset:0}.orbit-stage{position:absolute;inset:0;overflow:hidden}.orbit-stage canvas{touch-action:none;display:block}.orbit-reset{z-index:2;border:1px solid var(--line);background:var(--surface);height:32px;color:var(--ink);font:600 13px/1 var(--font);cursor:pointer;box-shadow:var(--shadow);border-radius:8px;padding:0 12px;position:absolute;top:12px;right:12px}.orbit-reset:hover{background:#f4f4f5}.app.phone .canvas-wrap:has(.orbit-view) .phone-view{top:8px;right:8px}.app.phone .orbit-reset{z-index:5;box-sizing:border-box;min-width:44px;min-height:44px}.orbit-fallback{color:var(--muted);place-items:center;font-size:14px;display:grid;position:absolute;inset:0}.import-error-toast{white-space:normal;text-align:center;max-width:min(28rem,100vw - 88px);line-height:1.35}button.plan-save-failed{cursor:pointer;border:0;font-family:inherit}.plan-save-help{z-index:50;background:var(--surface);width:min(260px,100vw - 24px);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);white-space:normal;border-radius:10px;padding:10px 12px;font-size:13px;font-weight:500;line-height:1.4;position:fixed}.plan-save-help p{margin:0 0 8px}.plan-save-help button{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:8px;padding:6px 10px;font-weight:600}.app.phone{max-width:100%;overflow:hidden}.toolbar-phone{justify-content:space-between}.toolbar-phone .more-wrap{flex-shrink:0;margin-left:auto}.app.phone .shell,.app.phone .main-column,.app.phone .workspace,.app.phone .canvas-wrap,.app.phone .toolbar,.app.phone .statusbar{min-width:0;max-width:100%}.phone-dock{background:var(--surface);border-top:1px solid var(--line);z-index:7;flex:none;min-width:0;position:relative}.phone-history{z-index:8;gap:8px;display:flex;position:absolute;bottom:8px;left:8px}.phone-history[hidden]{display:none}.phone-history.above-sheet,.workspace.phone-sheet-half>.phone-history{bottom:calc(50% + 8px)}.phone-history button{border:1px solid var(--line);background:var(--surface);width:44px;min-width:44px;height:44px;min-height:44px;color:var(--ink);box-shadow:var(--shadow);cursor:pointer;border-radius:22px;justify-content:center;align-items:center;padding:0;display:inline-flex}.phone-history button:disabled{opacity:.4;cursor:not-allowed}.phone-tabs{min-width:0;display:flex}.phone-tab{min-width:0;min-height:44px;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:2px;padding:6px 2px;font-size:11px;font-weight:600;display:flex}.phone-tab.active{color:var(--accent);background:var(--accent-soft)}.phone-tab:disabled{opacity:.4;cursor:not-allowed}.phone-tab-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.phone-more-menu{z-index:8;background:var(--surface);border:1px solid var(--line);min-width:200px;max-width:calc(100vw - 16px);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;align-items:stretch;gap:4px;padding:8px;display:flex;position:absolute;bottom:calc(100% + 40px);right:8px}.phone-more-menu .more-item{text-align:left;align-items:center;gap:8px;min-width:44px;min-height:44px;padding:0 12px;display:flex}.phone-more-menu button[role=switch]{min-width:44px;min-height:44px}.snap-switch-state{color:var(--muted);margin-left:auto;font-size:13px;font-weight:600}.phone-more-menu button[aria-checked=true] .snap-switch-state{color:var(--accent)}.snap-switch-track{background:#d4d4d8;border-radius:999px;flex:0 0 44px;width:44px;height:26px;margin-left:8px;position:relative}.snap-switch-track:after{content:"";background:#fff;border-radius:999px;width:20px;height:20px;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #18181b2e}.snap-switch-track[data-on=true]{background:var(--accent)}.snap-switch-track[data-on=true]:after{left:21px}.phone-view{z-index:4;box-shadow:var(--shadow);background:#f4f4f5;border-radius:12px;gap:4px;padding:3px;display:flex;position:absolute;top:8px;right:8px}.phone-view button{min-width:44px;min-height:44px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:13px;font-weight:700}.phone-view button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #18181b14}.calibrate-mode{z-index:3;pointer-events:none;flex-direction:column;align-items:center;gap:6px;max-width:calc(100% - 24px);display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.calibrate-mode-switch{box-shadow:var(--shadow);pointer-events:auto;background:#f4f4f5;border-radius:12px;padding:3px;display:flex}.calibrate-mode button{height:28px;color:var(--muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:9px;padding:0 12px;font-size:13px;font-weight:700}.calibrate-mode button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #18181b14}.calibrate-mode .error{background:var(--surface);color:var(--error);text-align:center;box-shadow:var(--shadow);pointer-events:auto;border-radius:8px;margin:0;padding:4px 10px;font-size:12px;font-weight:600;line-height:1.3}.calibrate-area-help{max-width:360px;color:var(--muted);text-align:center;pointer-events:none;margin:0;font-size:13px;font-weight:500;line-height:1.35}.app.phone .calibrate-mode{pointer-events:none;align-items:flex-start;width:max-content;max-width:calc(100% - 128px);top:8px;left:8px;right:auto;transform:none}.app.phone .calibrate-mode-switch{pointer-events:auto;width:auto}.app.phone .calibrate-mode button{flex:none;height:44px;min-height:44px;padding:0 12px}.app.phone .calibrate-area-help{text-align:left;max-width:220px}.app.phone .canvas-wrap:has(.tool-banner) .calibrate-mode{top:68px}.app:not(.phone) .canvas-wrap:has(.calibrate-mode) .uncalibrated-hint{top:56px}.canvas-wrap:has(.scale-check) .calibrate-mode{top:56px}.app.phone .canvas-wrap:has(.scale-check) .calibrate-mode{top:122px}.panel.sheet{z-index:6;border-left:0;border-top:1px solid var(--line);width:auto;max-width:100%;height:50%;box-shadow:var(--shadow);visibility:hidden;pointer-events:none;padding-top:44px;transition:transform .16s,height .16s;position:absolute;bottom:0;left:0;right:0;transform:translateY(110%)}.panel.sheet.open{visibility:visible;pointer-events:auto;transform:translateY(0)}.panel.sheet.sheet-half{height:50%}.panel.sheet.sheet-full{height:100%}.sheet-handle{cursor:grab;touch-action:none;background:0 0;border:0;justify-content:center;align-items:center;min-width:44px;height:44px;min-height:44px;padding:0;display:flex;position:absolute;top:0;left:0;right:0}.sheet-handle:before{content:"";background:#d4d4d8;border-radius:999px;width:36px;height:4px}.panel.sheet button,.panel.sheet input,.panel.sheet .text-link{min-width:44px;min-height:44px}.panel.sheet .drawer-close{width:44px;height:44px;top:0}.app.phone .more-menu .more-item,.app.phone .more-menu .segmented button,.app.phone .toolbar-phone .phone-tap{min-width:44px;min-height:44px}.app.phone .plan-name-btn{align-items:center;min-width:44px;min-height:44px;display:inline-flex}.app.phone .plan-chevron{width:44px;min-width:44px;height:44px;min-height:44px}.panel.sheet .plan-scale-line{flex-flow:row;grid-column:1/-1;align-items:center;gap:12px;display:flex}.panel.sheet .plan-scale-line dd{white-space:nowrap;flex-flow:row;align-items:center;gap:4px;margin:0;display:flex;overflow:visible}.panel.sheet .plan-scale-line .text-link{white-space:nowrap;flex:none;align-items:center;width:auto;display:inline-flex}.touch-magnifier{z-index:9;pointer-events:none;width:100px;height:100px;box-shadow:var(--shadow);background:var(--canvas);border:2px solid #0f766e;border-radius:50%;position:absolute;overflow:hidden}.touch-magnifier svg{width:100%;height:100%;display:block}.touch-magnifier *{pointer-events:none}.touch-crosshair{stroke:#0f766e}.canvas-wrap{touch-action:none}.tool-banner{z-index:5;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);pointer-events:none;border-radius:999px;align-items:center;gap:8px;padding:6px 8px 6px 12px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.tool-banner button{pointer-events:auto;background:var(--accent);color:#fff;min-width:44px;min-height:44px;font:inherit;border:0;border-radius:999px;padding:0 16px;font-weight:700}.app.phone .tool-banner{z-index:5;justify-content:space-between;width:auto;max-width:none;top:8px;left:8px;right:8px;transform:none}.long-press-menu{z-index:10;background:var(--surface);border:1px solid var(--line);min-width:160px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:4px;padding:6px;display:flex;position:absolute}.long-press-menu button{text-align:left;min-width:44px;min-height:44px;font:inherit;background:0 0;border:0;border-radius:8px;padding:0 12px;font-weight:600}.long-press-menu button:hover{background:#f4f4f5}.cal-dialog.entry-card{z-index:8;box-sizing:border-box;margin:0;position:fixed;transform:none}.cal-dialog.entry-card-anchored{width:240px}.entry-card-phone .cal-actions button{min-width:44px;min-height:44px}.entry-card.keyboard-open .entry-hint{display:none}.phone-more-menu{max-height:calc(100dvh - 140px);overflow-y:auto}.scale-check.scale-check-phone{white-space:normal;z-index:3;pointer-events:auto;border-radius:999px;flex-wrap:wrap;width:auto;max-width:none;top:66px;left:8px;right:8px;transform:none}.scale-check.scale-check-phone button{flex:none;min-width:44px;min-height:44px;padding:0 12px}
