:root{--radius:.5rem;--radius-pill:9999px;--radius-sm:.25rem;--background:oklch(97.5% .005 90);--foreground:oklch(18% .02 250);--card:oklch(99% .002 90);--card-foreground:oklch(18% .02 250);--popover:oklch(99% .002 90);--popover-foreground:oklch(18% .02 250);--primary:oklch(35% .15 250);--primary-foreground:oklch(98% 0 0);--secondary:oklch(95.5% .01 250);--secondary-foreground:oklch(25% .02 250);--muted:oklch(94% .008 250);--muted-foreground:oklch(45% .03 250);--accent:oklch(93% .015 250);--accent-foreground:oklch(20% .02 250);--destructive:oklch(55% .22 25);--destructive-foreground:oklch(98% 0 0);--border:oklch(88% .01 250);--input:oklch(90% .01 250);--ring:oklch(65% .01 250);--ring-color:oklch(52% .2 250/.15);--focus-ring:0 0 0 2px var(--background), 0 0 0 4px var(--active);--active:oklch(52% .2 250);--active-foreground:oklch(100% 0 0);--success:oklch(55% .16 155);--success-foreground:oklch(98% 0 0);--warning:oklch(70% .16 70);--warning-foreground:oklch(20% 0 0);--overlay-bg:oklch(15% .04 250);--border-light:oklch(92% .008 250);--border-muted:oklch(94% .005 250);--sidebar-active-bg:oklch(93% .025 250);--sidebar-background:oklch(97% .005 250);--sidebar-foreground:oklch(18% .02 250);--sidebar-border:oklch(88% .01 250);--sidebar-accent:oklch(93% .015 250);--sidebar-accent-foreground:oklch(20% .02 250);--font-xs:.6875rem;--font-sm:.75rem;--font-base:.8125rem;--font-lg:.875rem;--font-mono:"IBM Plex Mono", "JetBrains Mono", "Menlo", monospace;--space-0:2px;--space-1:4px;--space-2:6px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:24px;--shadow-xs:0 1px 2px oklch(0% 0 0/.04);--shadow-sm:0 2px 4px oklch(0% 0 0/.06);--shadow-md:0 4px 12px oklch(0% 0 0/.08);--shadow-lg:0 8px 24px oklch(0% 0 0/.12);--shadow-xl:0 16px 48px oklch(0% 0 0/.16);--z-sidebar:50;--z-header:100;--z-footer:100;--z-modal-backdrop:900;--z-modal:1000;--z-toast:2000;--ease-out:cubic-bezier(.16, 1, .3, 1);--transition-fast:.1s var(--ease-out);--transition-base:.2s var(--ease-out);--transition-slow:.3s var(--ease-out);--toolbar-h:36px;--toolbar-btn-h:28px;--toolbar-btn-min-w:28px;--toolbar-font:var(--font-sm);--toolbar-gap:6px;--toolbar-padding:4px 8px;--sidebar-w:44px;--footer-btn-h:32px;--footer-btn-w:48px;--modal-w:480px;--modal-max-h:80dvh;--modal-radius:12px;--modal-padding:16px;--modal-gap:8px;--segmented-h:26px;--segmented-font:var(--font-xs);--footer-row-total-h:calc(var(--footer-btn-h) * 2 + var(--space-0) * 2)}@media (width>=768px) and (width<=799px),(width>=768px) and (orientation:portrait){:root{--toolbar-h:38px;--toolbar-btn-h:32px;--toolbar-btn-min-w:32px;--toolbar-font:var(--font-sm);--sidebar-w:40px;--footer-btn-h:36px;--footer-btn-w:56px;--modal-w:92vw;--modal-max-h:85dvh;--segmented-h:30px;--segmented-font:var(--font-sm)}}@media (width>=800px) and (width<=1279px) and (orientation:landscape){:root{--toolbar-h:36px;--toolbar-btn-h:30px;--toolbar-btn-min-w:30px;--sidebar-w:40px;--footer-btn-h:34px;--footer-btn-w:52px;--modal-w:520px;--modal-max-h:82dvh;--segmented-h:28px;--segmented-font:var(--font-xs)}}@media (width>=1280px) and (orientation:landscape){:root{--toolbar-h:36px;--toolbar-btn-h:28px;--toolbar-btn-min-w:28px;--sidebar-w:44px;--footer-btn-h:30px;--footer-btn-w:44px;--modal-w:480px;--modal-max-h:80dvh;--segmented-h:26px;--segmented-font:var(--font-xs);--footer-row-total-h:var(--footer-btn-h)}}@media (width<=767px){:root{--toolbar-h:34px;--toolbar-btn-h:26px;--toolbar-btn-min-w:26px;--toolbar-font:var(--font-xs);--sidebar-w:32px;--footer-btn-h:30px;--footer-btn-w:40px;--modal-w:96vw;--modal-max-h:90dvh;--segmented-h:24px;--segmented-font:.625rem}}@media (height<=900px) and (width>=800px) and (orientation:landscape){:root{--toolbar-h:32px;--toolbar-btn-h:26px;--footer-btn-h:28px}}*{box-sizing:border-box}body{background:var(--background);color:var(--foreground);font-family:Hiragino Kaku Gothic ProN,Noto Sans JP,Segoe UI,system-ui,sans-serif;font-size:var(--font-base);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;width:100vw;height:100dvh;margin:0;line-height:1.4;position:fixed;overflow:hidden}#app{grid-template-rows:minmax(var(--toolbar-h), auto) 1fr minmax(var(--footer-row-total-h), auto);grid-template-columns:auto 1fr auto;grid-template-areas:"header header header""sidebar canvas rightbar""footer footer footer";width:100%;height:100%;display:grid}h2{font-size:var(--font-lg);color:var(--foreground);margin:0;font-weight:600}.hidden{display:none!important}#top-controls{padding:var(--toolbar-padding);padding-top:max(4px, env(safe-area-inset-top));padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right));background:var(--card);border-bottom:2px solid var(--border);z-index:var(--z-header);min-height:var(--toolbar-h);max-height:var(--toolbar-h);place-content:flex-start flex-end;align-items:center;gap:var(--space-1) var(--toolbar-gap);flex-wrap:wrap;grid-area:header;display:flex;overflow:hidden}#top-controls:not(:has(#temporary-controls.hidden)){max-height:calc(var(--toolbar-h) * 2 + var(--space-1))}.header-right-controls{align-items:center;gap:var(--toolbar-gap);z-index:101;flex-wrap:nowrap;flex-shrink:0;order:1;margin-left:auto;display:flex}.header-subgroup{align-items:center;gap:var(--space-2);padding-right:var(--space-3);display:flex;position:relative}.header-subgroup:after{content:"";background:var(--border);width:1px;height:50%;position:absolute;top:25%;right:0}.header-subgroup:last-child:after{display:none}#top-controls button{min-height:var(--toolbar-btn-h);min-width:var(--toolbar-btn-min-w);padding:var(--space-0) var(--space-2);font-size:var(--toolbar-font);border:1.5px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--foreground);cursor:pointer;touch-action:manipulation;transition:background var(--transition-fast), border-color var(--transition-fast), transform 80ms;box-shadow:none;letter-spacing:.02em;font-weight:500}#top-controls button:hover{background:var(--accent);border-color:var(--active);box-shadow:0 0 0 1px oklch(52% .2 250/.08)}#top-controls button:active{background:var(--secondary);transform:translateY(.5px)}#top-controls .control-group label{font-size:var(--toolbar-font);white-space:nowrap}#top-controls .control-group input[type=checkbox],#top-controls .control-group input[type=radio]{width:15px;height:15px}#temporary-controls{align-items:center;gap:var(--space-1);padding:var(--space-0) var(--space-1);min-height:var(--toolbar-h);flex-wrap:nowrap;flex:100%;order:2;display:flex;overflow:hidden}#temporary-controls .control-group{gap:var(--space-1)}#temporary-controls .control-group label{font-size:var(--toolbar-font);white-space:nowrap}#crack-mode-group,#roof-mode-group,#stair-width-group,#hatch-param-group{align-items:center;gap:var(--space-1);display:flex}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.temp-control:not(.hidden){animation:slideInFromLeft var(--transition-base)}.segmented-control{height:var(--segmented-h);background:var(--muted);border:1.5px solid var(--border);border-radius:var(--radius);touch-action:manipulation;flex-shrink:0;align-items:center;gap:0;padding:2px;display:inline-flex}.segment{cursor:pointer;align-items:center;margin:0;padding:0;display:flex}.segment input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.segment-label{height:calc(var(--segmented-h) - 4px);border-radius:calc(var(--radius) - 2px);font-size:var(--segmented-font);color:var(--muted-foreground);transition:all var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:0 8px;font-weight:400;line-height:1;display:flex}.segment input:checked+.segment-label{background:var(--active);color:var(--active-foreground);box-shadow:none;font-weight:700}.segment-label:hover{color:var(--foreground)}#main-content{display:contents}#left-sidebar{width:var(--sidebar-w);background:var(--sidebar-background);border-right:2px solid var(--border);padding:var(--space-1) 0;gap:var(--space-0);z-index:var(--z-sidebar);flex-direction:column;grid-area:sidebar;display:flex;overflow:hidden}#right-sidebar{width:var(--sidebar-w);background:var(--sidebar-background);border-left:2px solid var(--border);padding:var(--space-1) 0;gap:var(--space-0);z-index:var(--z-sidebar);flex-direction:column;grid-area:rightbar;display:flex;overflow:hidden}.sidebar-btn{aspect-ratio:1;width:100%;color:var(--sidebar-foreground);font-size:var(--font-xs);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-left-color var(--transition-fast);touch-action:manipulation;min-height:unset;min-width:unset;background:0 0;border:none;border-left:3px solid #0000;border-radius:0;justify-content:center;align-items:center;padding:0;font-weight:500;display:flex;position:relative}.sidebar-btn svg{width:18px;height:18px}.sidebar-btn:hover{background:var(--sidebar-accent)}.sidebar-btn:active{transform:scale(.92)}.sidebar-btn[aria-label]:before{content:attr(aria-label);background:var(--primary);color:var(--primary-foreground);font-size:var(--font-xs);border-radius:var(--radius-sm);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);z-index:calc(var(--z-sidebar) + 1);padding:4px 8px;position:absolute;top:50%;left:calc(100% + 8px);transform:translateY(-50%)}.sidebar-btn[aria-label]:hover:before{opacity:1}.sidebar-btn.active-tool{background:var(--sidebar-active-bg);color:var(--active);border-left:4px solid var(--active);font-weight:700;box-shadow:inset 0 0 0 1px oklch(52% .2 250/.25)}.sidebar-divider{height:1px;margin:var(--space-2) var(--space-2);background:var(--border);flex-shrink:0}#right-sidebar .sidebar-btn[aria-label]:before{left:auto;right:calc(100% + 8px)}#right-sidebar .sidebar-btn{transition:background var(--transition-fast), color var(--transition-fast), border-right-color var(--transition-fast);border-left:none;border-right:3px solid #0000}#right-sidebar .sidebar-btn.active-tool{border-left:none;border-right:4px solid var(--active)}#canvas-container{background-color:var(--card);touch-action:none;-webkit-user-select:none;user-select:none;grid-area:canvas;min-width:0;min-height:0;position:relative;overflow:hidden}#canvas-container>canvas{touch-action:none;-webkit-user-select:none;user-select:none}#footer-controls{background:var(--card);border-top:2px solid var(--border);padding:var(--space-0) var(--space-2);padding-bottom:max(var(--space-0), env(safe-area-inset-bottom));padding-left:max(var(--space-2), env(safe-area-inset-left));padding-right:max(var(--space-2), env(safe-area-inset-right));z-index:var(--z-footer);flex-direction:column;grid-area:footer;gap:0;display:flex}.footer-row{align-items:center;gap:var(--space-1);min-height:var(--footer-btn-h);display:flex}.footer-row-top{gap:0}.footer-action-btn{flex:0 0 var(--footer-btn-w);min-height:var(--footer-btn-h);color:var(--muted-foreground);font-size:var(--font-sm);cursor:pointer;border:none;border-bottom:3px solid #0000;border-right:1px solid var(--border);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);padding:var(--space-0) var(--space-1);touch-action:manipulation;min-width:unset;letter-spacing:.03em;background:0 0;border-radius:0;font-weight:600}.footer-action-btn:last-child{border-right:none}.footer-action-btn:hover{color:var(--foreground);background:var(--accent);border-bottom-color:var(--border)}.footer-action-btn:active{color:var(--active);border-bottom-color:var(--active);background:oklch(52% .2 250/.06);font-weight:700;transform:scale(.97)}.footer-action-btn.active-tab{color:var(--active);background:oklch(52% .2 250/.1);border-bottom:3px solid oklch(48% .25 250);font-weight:700}#footer-controls button:not(.footer-action-btn){min-height:var(--toolbar-btn-h);min-width:var(--toolbar-btn-min-w);padding:var(--space-0) var(--space-2);font-size:var(--toolbar-font);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--foreground);cursor:pointer;touch-action:manipulation;transition:background var(--transition-fast);font-weight:500}#footer-controls button:hover{background:var(--accent)}.footer-row-bottom{gap:var(--space-2);touch-action:pan-x;scrollbar-width:thin;width:100%;min-width:0;max-width:100vw;overflow:auto hidden}.footer-row-bottom>*{flex:none}.footer-row-bottom button,.footer-row-bottom select,.footer-row-bottom span,.footer-row-bottom .status-item,.footer-row-bottom .segment-label{white-space:nowrap}.status-item{padding:var(--space-0) var(--space-2);font-size:var(--toolbar-font);background:var(--muted);border-radius:var(--radius);min-height:var(--toolbar-btn-h);align-items:center;font-weight:500;display:flex}#coordinates-display{font-family:var(--font-mono);font-size:var(--font-xs);color:var(--active);padding:var(--space-0) var(--space-3);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);letter-spacing:.05em;background:oklch(52% .2 250/.05);border:1px solid oklch(52% .2 250/.15);flex:none}#footer-tool-display-container{align-items:center;gap:var(--space-2);display:flex}.floor-controls{gap:var(--space-1)}.floor-controls select{min-height:var(--toolbar-btn-h);padding:var(--space-0) var(--space-1);font-size:var(--toolbar-font);border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}.control-group{align-items:center;gap:var(--space-1);display:flex}button{padding:var(--space-0) var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--foreground);cursor:pointer;font-size:var(--font-sm);transition:all var(--transition-fast);touch-action:manipulation;min-width:28px;min-height:28px;box-shadow:none;font-family:inherit;font-weight:500}button:hover{background:var(--accent);border-color:var(--border-light)}button:active{background:var(--muted);transform:scale(.96)}button.active-tool:not(.sidebar-btn):not(.footer-action-btn){background:var(--active);border-color:var(--active);color:var(--active-foreground);box-shadow:0 0 0 1px var(--active), var(--shadow-sm);font-weight:700}.action-btn{padding:var(--space-2) var(--space-4);font-size:var(--font-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--foreground);cursor:pointer;transition:all var(--transition-fast);min-height:34px;font-weight:500}.action-btn:hover{background:var(--accent);border-color:var(--border-light);box-shadow:var(--shadow-sm)}.btn-success{background:var(--success);border-color:var(--success);color:var(--success-foreground)}.btn-success:hover{opacity:.9}.btn-muted{background:var(--muted);border-color:var(--border);color:var(--muted-foreground)}.btn-muted-light{border-color:var(--border);color:var(--muted-foreground);background:0 0}.btn-primary{background:var(--active);border-color:var(--active);color:var(--active-foreground)}.btn-primary:active{background:var(--primary)}.btn-destructive{background:var(--destructive);border-color:var(--destructive);color:var(--destructive-foreground)}.btn-destructive:active{opacity:.85}#finish-drawing-btn,#finish-selection-btn{background:var(--active);border-color:var(--active);color:var(--active-foreground);padding:var(--space-0) var(--space-3);font-weight:500;font-size:var(--toolbar-font);min-height:var(--toolbar-btn-h);border-radius:var(--radius);cursor:pointer;transition:opacity var(--transition-fast);justify-content:center;align-items:center;display:flex}#finish-drawing-closed-btn{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground);padding:var(--space-0) var(--space-3);font-weight:500;font-size:var(--toolbar-font);min-height:var(--toolbar-btn-h);border-radius:var(--radius);cursor:pointer;transition:opacity var(--transition-fast);justify-content:center;align-items:center;display:flex}#finish-drawing-btn:hover,#finish-drawing-closed-btn:hover,#finish-selection-btn:hover{opacity:.85;transform:none}.finish-btn-hidden{visibility:hidden!important;opacity:0!important;pointer-events:none!important}.toggle-label{align-items:center;gap:var(--space-1);font-size:var(--toolbar-font);white-space:nowrap;cursor:pointer;display:inline-flex}.custom-checkbox{appearance:none;border:2px solid var(--border);background:var(--card);cursor:pointer;width:16px;height:16px;transition:all var(--transition-fast);border-radius:3px;flex-shrink:0;position:relative}.custom-checkbox:checked{background:var(--active);border-color:var(--active)}.custom-checkbox:checked:after{content:"";border:solid var(--active-foreground);border-width:0 2.5px 2.5px 0;width:5px;height:9px;position:absolute;top:0;left:3px;transform:rotate(45deg)}input[type=text],input[type=number]{padding:var(--space-0) var(--space-2);border:1px solid var(--input);border-radius:var(--radius);background:var(--card);color:var(--foreground);font-size:var(--font-sm);min-height:var(--toolbar-btn-h);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-family:inherit}input[type=number]{font-family:var(--font-mono);font-feature-settings:"tnum" 1}input[type=text]:focus,input[type=number]:focus{border-color:var(--active);box-shadow:0 0 0 2px var(--ring-color);outline:none}.input-w-sm{width:52px}.input-w-md{width:80px}.input-w-full{width:100%}select{padding:var(--space-0) var(--space-2);border:1px solid var(--input);border-radius:var(--radius);background:var(--card);color:var(--foreground);font-size:var(--font-sm);min-height:var(--toolbar-btn-h);cursor:pointer;font-family:inherit}.number-stepper{border:1.5px solid var(--input);border-radius:var(--radius);background:var(--card);height:var(--toolbar-btn-h);align-items:center;display:inline-flex;overflow:hidden}.stepper-btn{background:var(--secondary);width:24px;height:100%;color:var(--active);font-family:var(--font-mono);font-size:var(--font-sm);cursor:pointer;min-height:unset;min-width:unset;transition:background var(--transition-fast), color var(--transition-fast);border:none;border-radius:0;justify-content:center;align-items:center;padding:0;font-weight:700;display:flex}.stepper-btn:hover{background:var(--active);color:var(--active-foreground);border-color:#0000}.number-stepper input{text-align:center;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);width:42px;min-height:100%;padding:0 var(--space-0);font-family:var(--font-mono);font-size:var(--font-xs);font-feature-settings:"tnum" 1;border-radius:0}.number-stepper input.eave-mm-input,.number-stepper input.fixture-mm-input{width:60px}.fixture-header-dimensions{align-items:center;gap:var(--space-1);display:inline-flex}.number-stepper input.fixture-mm-input[aria-invalid=true]{color:var(--destructive)}.number-stepper input:focus{box-shadow:none;outline:none}.numpad-row{align-items:center;gap:var(--space-2);margin-top:var(--space-2);display:flex}.numpad-btn{min-width:36px;min-height:36px;font-size:var(--font-lg);font-weight:600}.numpad-btn-lg{min-width:44px;min-height:44px}.numpad-input-display{text-align:center;font-family:var(--font-mono);font-size:var(--font-lg);font-feature-settings:"tnum" 1;min-width:60px;min-height:36px;padding:var(--space-1) var(--space-2);border:1px solid var(--input);border-radius:var(--radius);background:var(--muted);font-weight:600}.slope-value-input{background:var(--card);width:88px}.slope-direction .segment-label{min-width:56px;font-size:var(--font-lg);text-align:center}.slope-value-note{margin:var(--space-2) 0 0;color:var(--muted-foreground);font-size:var(--font-xs)}.sidebar-toggle-btn,#toggle-sidebar-btn{background:var(--secondary);border:1px solid var(--border);color:var(--foreground);font-size:var(--toolbar-font);padding:var(--space-0) var(--space-2);min-height:var(--toolbar-btn-h);border-radius:var(--radius);justify-content:center;align-items:center;gap:var(--space-1);min-width:60px;transition:background var(--transition-fast);margin-left:auto;font-weight:600;display:flex}.sidebar-color-icon{background-color:red;border:1.5px solid oklch(0% 0 0/.2);border-radius:3px;flex-shrink:0;width:16px;height:16px}#sidebar-btn-layer-text{font-size:var(--toolbar-font);white-space:nowrap;margin-right:2px;font-weight:600}#sidebar-btn-linetype-text{font-size:var(--toolbar-font);white-space:nowrap;font-weight:600}.tool-hint{bottom:var(--space-3);right:var(--space-3);padding:var(--space-1) var(--space-3);color:oklch(92% .01 250);font-size:var(--font-xs);font-family:var(--font-mono);border-radius:var(--radius);pointer-events:none;opacity:0;transition:opacity var(--transition-fast);z-index:10;white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(4px);background:oklch(15% .04 250/.82);border:1px solid oklch(52% .2 250/.15);font-weight:500;position:absolute}.tool-hint.visible{opacity:1}input[type=text].input-invalid,input[type=number].input-invalid{border-color:var(--destructive);box-shadow:0 0 0 2px oklch(55% .22 25/.18)}.modal{z-index:var(--z-modal);-webkit-backdrop-filter:blur(6px);background:oklch(15% .04 250/.5);justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal.show{display:flex}.modal-content{background:var(--card);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-xl), 0 0 0 4px oklch(52% .2 250/.05);width:var(--modal-w);max-height:var(--modal-max-h);animation:modal-in var(--transition-slow) var(--ease-out);flex-direction:column;display:flex;overflow:hidden}.modal-content-sm{width:min(360px,85vw)}@keyframes modal-in{0%{opacity:0;transform:scale(.98)translateY(4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.modal-body .tool-btn,.modal-body .sub-tool-btn{animation:fadeSlideUp .15s var(--ease-out) both}.modal-body :first-child{animation-delay:0s}.modal-body :nth-child(2){animation-delay:20ms}.modal-body :nth-child(3){animation-delay:40ms}.modal-body :nth-child(4){animation-delay:60ms}.modal-body :nth-child(5){animation-delay:80ms}.modal-body :nth-child(6){animation-delay:.1s}.modal-body :nth-child(7){animation-delay:.12s}.modal-body :nth-child(8){animation-delay:.14s}.modal-body :nth-child(9){animation-delay:.16s}.modal-body :nth-child(10){animation-delay:.18s}.modal-body :nth-child(11){animation-delay:.2s}.modal-body :nth-child(12){animation-delay:.22s}.modal-header{padding:var(--space-3) var(--modal-padding);border-bottom:2px solid var(--border);background:var(--secondary);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:var(--font-lg);color:var(--primary);letter-spacing:.04em;border:none;margin:0;padding:0;font-weight:700}.modal-close{width:28px;height:28px;color:var(--muted-foreground);border-radius:var(--radius);cursor:pointer;transition:all var(--transition-fast);min-height:unset;min-width:unset;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.modal-close:hover{background:var(--muted);color:var(--foreground)}.modal-close svg{pointer-events:none}.modal-body{padding:var(--modal-padding);overscroll-behavior:contain;touch-action:pan-y;min-height:0;overflow-y:auto}.modal-body label{font-size:var(--font-sm);align-items:center;gap:var(--space-1);display:inline-flex}.modal-body input[type=text],.modal-body input[type=number]{font-size:var(--font-sm);min-height:32px;padding:var(--space-1) var(--space-2)}.modal-separator{border:none;border-top:1px solid var(--border);margin:var(--space-3) 0}#draw-tool-container,#window-tool-container,#equipment-tool-container,#survey-tool-container,#basic-tool-container{gap:var(--modal-gap);grid-template-columns:repeat(3,1fr);display:grid}#single-wall-container{gap:var(--modal-gap);grid-template-columns:repeat(3,1fr);margin-bottom:0;display:grid}.modal-body .tool-btn,.modal-body .sub-tool-btn{min-height:42px;padding:var(--space-2) var(--space-3);border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--foreground);font-size:var(--font-sm);cursor:pointer;transition:all .15s var(--ease-out);text-align:center;letter-spacing:.03em;touch-action:manipulation;justify-content:center;align-items:center;font-weight:600;display:flex}.modal-body .tool-btn:hover,.modal-body .sub-tool-btn:hover{border-color:var(--active);background:oklch(52% .2 250/.05);transform:translateY(-1px);box-shadow:0 0 0 1px oklch(52% .2 250/.1)}.modal-body .tool-btn.active-tool{background:var(--active);border-color:var(--active);color:var(--active-foreground);box-shadow:0 0 0 2px oklch(52% .2 250/.2), var(--shadow-sm);border-left:3px solid oklch(35% .2 250)}.modal-body .tool-btn:active,.modal-body .sub-tool-btn:active{transform:scale(.96)}.modal-body .tool-btn.tool-variant-edit:not(.active-tool){background:var(--success);border-color:var(--success);color:var(--success-foreground)}.modal-body .tool-btn.tool-variant-edit:not(.active-tool):hover{background:var(--success);border-color:var(--success)}.modal-body .tool-btn.tool-variant-elevation:not(.active-tool){background:var(--warning);border-color:var(--warning);color:var(--warning-foreground)}.modal-body .tool-btn.tool-variant-elevation:not(.active-tool):hover{background:var(--warning);border-color:var(--warning)}.icon-btn{justify-content:center;align-items:center;gap:var(--space-1);display:flex}.icon-btn>div{flex-shrink:0}#command-modal .modal-content,#window-modal .modal-content{width:min(var(--modal-w), 90vw)}#window-modal .modal-content{flex-direction:column;width:min(620px,94vw);display:flex}#window-modal .modal-header{padding:var(--space-1) var(--space-3)}#window-modal .modal-body{min-height:0;padding:var(--space-3);overscroll-behavior:contain;overflow-y:auto}#window-modal .modal-separator{margin:var(--space-1) 0}#window-modal #single-wall-container,#window-modal #window-tool-container{gap:var(--space-1)}#window-modal .modal-body .tool-btn,#window-modal .modal-body .sub-tool-btn{min-height:32px;padding:var(--space-0) var(--space-2)}.fixture-height-panel{border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-2) var(--space-3) var(--space-3);background:var(--secondary);margin:0}.fixture-height-panel legend{padding:0 var(--space-1);color:var(--primary);font-size:var(--font-sm);font-weight:700}.fixture-preset-row{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);grid-template-columns:auto minmax(0,1fr);display:grid}.fixture-preset-select{width:100%;min-width:0}.fixture-dimension-grid{align-items:center;gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr)) auto;display:grid}.fixture-dimension-grid>label{justify-content:space-between;align-items:center;gap:var(--space-2);min-width:0;display:flex}.fixture-number-field{align-items:center;gap:var(--space-1);color:var(--muted-foreground);font-size:var(--font-xs);display:inline-flex}.fixture-number-field input[type=number]{text-align:right;width:88px}.fixture-preset-summary{min-height:1.25em;margin-top:var(--space-2);color:var(--muted-foreground);font-family:var(--font-mono);font-size:var(--font-xs)}.fixture-dimension-grid>.action-btn{white-space:nowrap}#window-modal .fixture-height-panel{padding:var(--space-0) var(--space-2) var(--space-1)}#window-modal .fixture-preset-row{gap:var(--space-1);margin-bottom:var(--space-1)}#window-modal .fixture-dimension-grid{gap:var(--space-1)}#window-modal .fixture-preset-select,#window-modal .fixture-number-field input[type=number],#window-modal .fixture-dimension-grid>.action-btn{min-height:28px}#window-modal .fixture-dimension-grid>.action-btn{padding:var(--space-0) var(--space-2)}#part-edit-modal .fixture-preset-row{margin-bottom:var(--space-3)}#part-edit-modal .fixture-preset-summary{margin-bottom:0}#room-modal .modal-content{flex-direction:column;width:min(520px,90vw);display:flex}#room-modal .modal-header{padding:var(--space-1) var(--space-3)}#room-modal .modal-body{min-height:0;padding:var(--space-3);overscroll-behavior:contain;overflow-y:auto}#kentsuke-input-modal .modal-content{width:min(300px,85vw)}#kentsuke-input-modal .modal-body{text-align:center}#kentsuke-input-modal .modal-body input[type=text]{font-size:var(--font-lg);text-align:center;font-weight:600}#selection-action-modal .modal-body{gap:var(--modal-gap);grid-template-columns:repeat(3,1fr);display:grid}#selection-action-modal .modal-content{width:min(420px,90vw)}#selection-action-modal .selection-floor-change{align-items:center;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border);grid-column:1/-1;grid-template-columns:auto minmax(72px,1fr) auto;display:grid}#selection-action-modal .selection-floor-change select{min-height:32px;padding:var(--space-1) var(--space-2);font-size:var(--font-sm)}#layer-linetype-modal .modal-body{overflow-y:auto}#layers-list-modal{gap:var(--space-1);margin-bottom:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}.layer-item{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;min-height:28px;transition:all var(--transition-fast), transform .1s;border-left:3px solid #0000;display:flex}.layer-item:hover{background:var(--accent);border-color:var(--active);border-left-color:var(--active);transform:translate(2px)}.layer-item.active-layer{background:var(--active);border-color:var(--active);border-left-color:var(--active);color:var(--active-foreground);font-weight:600}.layer-item.active-layer .layer-lock-toggle,.layer-item.active-layer .layer-visibility-toggle{opacity:1;color:var(--active-foreground)}.layer-item.layer-locked{border-style:dashed}.layer-item.layer-locked .layer-name,.layer-item.layer-locked .layer-color-box{opacity:.5}.layer-item.layer-locked .layer-lock-toggle{opacity:1;color:var(--warning)}.layer-item.active-layer.layer-locked .layer-lock-toggle{color:var(--active-foreground)}.layer-item label{cursor:pointer;align-items:center;gap:var(--space-1);font-size:var(--font-sm);flex-grow:1;display:flex}.layer-color-box{border:1px solid var(--border);border-radius:3px;flex-shrink:0;width:14px;height:14px;display:inline-block}.layer-name{font-size:var(--font-sm);font-weight:500}.layer-item input[type=radio]{cursor:pointer;width:14px;height:14px;margin:0}.layer-lock-toggle,.layer-visibility-toggle{cursor:pointer;padding:0 var(--space-0);opacity:.6;transition:opacity var(--transition-fast);align-items:center;display:flex}.layer-lock-toggle:hover,.layer-visibility-toggle:hover,.layer-lock-toggle:focus-visible,.layer-visibility-toggle:focus-visible{opacity:1}.layer-lock-toggle svg,.layer-visibility-toggle svg{width:14px;height:14px}.line-type-section{gap:var(--space-1);margin-bottom:var(--space-3);flex-direction:column;display:flex}.line-type-item{padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);cursor:pointer;min-height:28px;transition:all var(--transition-fast);align-items:center;display:flex}.line-type-item:hover{background:var(--accent);border-color:var(--active)}.line-type-item label{cursor:pointer;align-items:center;gap:var(--space-3);font-size:var(--font-sm);flex-grow:1;display:flex}.line-type-item input[type=radio]{cursor:pointer;width:16px;height:16px;margin:0}.line-preview{background-color:var(--foreground);width:40px;height:2px;display:inline-block}.line-continuous{background-color:var(--foreground)}.line-dashed{background:repeating-linear-gradient(to right, var(--foreground) 0px, var(--foreground) 8px, transparent 8px, transparent 12px)}.line-dotted{background:repeating-linear-gradient(to right, var(--foreground) 0px, var(--foreground) 2px, transparent 2px, transparent 6px)}.line-dashdot{background:repeating-linear-gradient(to right, var(--foreground) 0px, var(--foreground) 8px, transparent 8px, transparent 12px, var(--foreground) 12px, var(--foreground) 14px, transparent 14px, transparent 18px)}.line-dashdotdot{background:repeating-linear-gradient(to right, var(--foreground) 0px, var(--foreground) 8px, transparent 8px, transparent 12px, var(--foreground) 12px, var(--foreground) 14px, transparent 14px, transparent 18px, var(--foreground) 18px, var(--foreground) 20px, transparent 20px, transparent 24px)}.line-thick{height:4px}.line-center{border-top:2px dashed var(--foreground);background:0 0;height:0}.room-grid-section{gap:var(--modal-gap);margin-bottom:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.room-grid-section:last-child{margin-bottom:0}.room-grid-section-mt{margin-bottom:0;margin-top:var(--space-4)}.room-preset-btn{min-height:38px;padding:var(--space-2) var(--space-3);font-size:var(--font-sm);font-weight:500}#room-modal .room-grid-section{gap:var(--space-1);margin-bottom:var(--space-2)}#room-modal .room-grid-section-mt{margin-top:var(--space-2);margin-bottom:0}#room-modal .room-preset-btn{min-height:32px;padding:var(--space-0) var(--space-2)}.form-section{margin-bottom:var(--space-3)}.form-section-sm{margin-bottom:var(--space-2)}.form-divider{padding-top:var(--space-2);border-top:1px solid var(--border);margin-top:var(--space-2);align-items:center;gap:var(--space-2);display:flex}.form-actions-center{margin-top:var(--space-3);text-align:center}#finish-table-modal .modal-content{width:min(320px,90vw)}#finish-table-inputs{flex-direction:column;gap:6px;display:flex}#finish-table-inputs>div{align-items:center;gap:8px;display:flex}#finish-table-inputs label{font-weight:600;font-size:var(--font-sm);color:var(--foreground);letter-spacing:.08em;flex:0 0 3.5em}#finish-table-inputs select{padding:var(--space-1) var(--space-2);font-size:var(--font-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--foreground);transition:border-color var(--transition-fast);flex:1;min-height:30px}#finish-table-inputs select:focus{border-color:var(--active);box-shadow:0 0 0 2px var(--ring-color);outline:none}#finish-table-modal .form-actions-center{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border-muted)}#finish-table-modal .action-btn{background:var(--primary);width:100%;color:var(--primary-foreground);border-color:var(--primary);letter-spacing:.06em;justify-content:center;font-weight:600}#finish-table-modal .action-btn:hover{background:var(--active);border-color:var(--active)}.trash-note{margin:0 0 var(--space-2);font-size:var(--font-sm);color:var(--muted-foreground)}.trash-list{gap:var(--space-1);flex-direction:column;max-height:60vh;display:flex;overflow-y:auto}.trash-item{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--card);display:flex}.trash-item-info{flex:auto;min-width:0}.trash-item-title{color:var(--foreground);font-weight:600}.trash-item-detail{font-size:var(--font-sm);color:var(--muted-foreground);overflow-wrap:anywhere}.trash-item .action-btn{flex:none;min-width:64px;min-height:44px}.trash-empty{margin:var(--space-2) 0;text-align:center;color:var(--muted-foreground)}.app-busy-overlay{z-index:calc(var(--z-modal) + 10);touch-action:none;background:oklch(15% .04 250/.35);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.app-busy-overlay[hidden]{display:none}.app-busy-box{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--card);color:var(--foreground);font-weight:600}#confirm-modal-message{white-space:pre-line}.grid-2col{gap:var(--modal-gap);grid-template-columns:repeat(2,1fr);display:grid}.grid-3col{gap:var(--modal-gap);grid-template-columns:repeat(3,1fr);display:grid}.grid-full{grid-column:1/-1}.fieldset-default{border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);margin:var(--space-2) 0}.fieldset-default legend{font-size:var(--font-sm);color:var(--muted-foreground);padding:0 var(--space-1);font-weight:500}#image-preview-container{background:var(--muted);border-radius:var(--radius);margin-bottom:var(--space-3);position:relative;overflow:hidden}#image-preview-canvas{width:100%;max-height:50vh;display:block}#preview-overlay-message{color:#fff;font-size:var(--font-lg);background:oklch(0% 0 0/.5);justify-content:center;align-items:center;font-weight:500;display:flex;position:absolute;inset:0}.preview-actions{align-items:center;gap:var(--space-2);justify-content:center;display:flex}.preview-grayscale-label{gap:var(--space-1)}.damage-type-btn{min-height:40px;font-weight:500}.toast-stack{align-items:center;gap:var(--space-2);z-index:var(--z-toast);pointer-events:none;flex-direction:column-reverse;max-width:min(92vw,640px);display:flex;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.toast-notification{background:var(--primary);color:var(--primary-foreground);padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-sm);letter-spacing:.03em;box-shadow:var(--shadow-lg), 0 0 0 1px oklch(35% .15 250/.3);border-left:3px solid var(--active);opacity:0;transition:opacity var(--transition-base), transform var(--transition-base);pointer-events:none;overflow-wrap:anywhere;text-align:center;max-width:100%;font-weight:500;transform:translateY(16px)}.toast-visible{opacity:1;transform:translateY(0)}.zoom-controls{gap:var(--space-1)}#zoom-slider{width:100px;height:var(--toolbar-btn-h);accent-color:var(--active)}.ml-sm{margin-left:var(--space-1)}.ml-md{margin-left:var(--space-3)}.mr-sm{margin-right:var(--space-1)}.mr-md{margin-right:var(--space-3)}.mt-sm{margin-top:var(--space-2)}.mt-md{margin-top:var(--space-3)}.mb-sm{margin-bottom:var(--space-2)}.flex-1{flex:1}.flex-row-gap{gap:var(--space-2);display:flex}.scale-controls label{font-size:var(--toolbar-font);white-space:nowrap}.scale-controls input[type=radio]{width:14px;height:14px}.sub-tool-btn{font-weight:500}.undo-redo-controls{gap:var(--space-1)}@media (width>=1280px) and (orientation:landscape){#footer-controls{align-items:center;gap:var(--space-1);flex-direction:row}.footer-row{min-height:unset}.footer-row-top{gap:0}.footer-action-btn{border-bottom:none}.footer-row-bottom{margin-left:auto}}@media (width>=768px) and (width<=799px),(width>=768px) and (orientation:portrait){.modal-content{width:var(--modal-w);max-height:var(--modal-max-h)}.modal-body,#layer-linetype-modal .modal-body{overflow-y:auto}.tool-hint{font-size:var(--font-sm);padding:var(--space-2) var(--space-4)}}@media (width<=767px){.header-right-controls{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-shrink:1;min-width:0;overflow-x:auto}.header-right-controls::-webkit-scrollbar{display:none}#temporary-controls{scrollbar-width:none;-webkit-overflow-scrolling:touch;overflow-x:auto}#temporary-controls::-webkit-scrollbar{display:none}#fixture-header-preset{flex-shrink:0;width:8em}#fixture-preset-group{order:1}.number-stepper input.fixture-mm-input{width:48px}#coordinates-display{padding-inline:var(--space-1)}.sidebar-btn{font-size:.75rem}.segment-label{padding:0 5px}.modal-body .tool-btn,.modal-body .sub-tool-btn{min-height:34px;font-size:var(--font-xs);padding:var(--space-1) var(--space-2)}}@media (height<=700px){.modal-body .tool-btn,.modal-body .sub-tool-btn{min-height:34px}.room-preset-btn{min-height:30px}}@keyframes ripple-expand{0%{opacity:.3;transform:translate(-50%,-50%)scale(0)}to{opacity:0;transform:translate(-50%,-50%)scale(2.5)}}.sidebar-btn,.footer-action-btn,.tool-btn,.sub-tool-btn,.action-btn{position:relative;overflow:hidden}.sidebar-btn:after,.footer-action-btn:after,.tool-btn:after,.sub-tool-btn:after,.action-btn:after{content:"";aspect-ratio:1;pointer-events:none;background:oklch(52% .2 250/.15);border-radius:50%;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(0)}.sidebar-btn:active:after,.footer-action-btn:active:after,.tool-btn:active:after,.sub-tool-btn:active:after,.action-btn:active:after{animation:ripple-expand .4s var(--ease-out) forwards}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}button:focus-visible,input:focus-visible,select:focus-visible,.layer-item:focus-visible,.layer-visibility-toggle:focus-visible,.layer-lock-toggle:focus-visible{box-shadow:var(--focus-ring);outline:none}.layer-visibility-toggle:focus-visible,.layer-lock-toggle:focus-visible{border-radius:3px}.touch-tooltip{z-index:var(--z-toast);padding:var(--space-1) var(--space-3);background:var(--primary);color:var(--primary-foreground);font-size:var(--font-xs);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--transition-fast);font-weight:500;position:fixed}.touch-tooltip.visible{opacity:1}@media (pointer:coarse){:root{--toolbar-btn-h:40px;--footer-btn-h:40px;--toolbar-h:48px;--segmented-h:44px}.modal-body .tool-btn,.modal-body .sub-tool-btn,.modal-body .room-preset-btn{min-height:44px;font-size:.875rem}.toggle-label{min-height:40px}.custom-checkbox,#top-controls .control-group .toggle-label input[type=checkbox]{width:24px;height:24px}.segment-label{min-width:36px;padding:0 10px}.sidebar-btn{min-width:40px;min-height:40px}}
