*{box-sizing:border-box;margin:0;padding:0}:root{--font-sans:"Avenir Next", "Segoe UI Variable", "Nunito Sans", "Trebuchet MS", sans-serif;--color-page-top:#f6f3ed;--color-page-bottom:#e6dfd4;--color-page-highlight:#ffffffa6;--color-surface:#f8f6f1;--color-surface-soft:#efebe3;--color-surface-strong:#fdfbf7;--color-border:#d3cbbd;--color-border-strong:#c0b7a7;--color-text-primary:#2f2b27;--color-text-secondary:#655d53;--color-text-muted:#72685c;--color-accent:#2c6a98;--color-accent-soft:#d7e8f4;--color-accent-on:#f4fbff;--color-accent-ring:#2c6a982e;--color-accent-border:#6ea3c8;--color-danger:#a44040;--color-danger-soft:#fff5f3;--color-danger-soft-end:#fbe7e4;--color-danger-border:#d7a4a0;--color-danger-strong:#b85050;--color-danger-strong-end:#9a3a3a;--color-button-from:#fff;--color-button-to:#f5f1e9;--color-input-bg:#fff;--color-paper:#f5f0e6;--color-overlay:#1e191473;--color-cv-wrap:linear-gradient(140deg, #dbcfbf 0%, #ccbfae 48%, #c1b29e 100%);--button-inset-highlight:#ffffffb8;--shadow-panel:0 18px 40px #2c201026;--shadow-card:0 8px 18px #1f180e1a;--shadow-card-soft:0 2px 6px #2b21120f;--toolbar-bg:#26221cc7;--toolbar-border:#ffffff4d;--toolbar-shadow:0 8px 32px #00000047, inset 0 1px 0 #ffffff14;--toolbar-text:#f5f1ebcc;--toolbar-text-strong:#fff;--toolbar-text-soft:#f5f1eb8c;--toolbar-divider:#ffffff26;--toolbar-btn-hover:#ffffff1f;--toolbar-btn-active:#ffffff0f;--toolbar-btn-on:#2c6a98a6;--toolbar-btn-on-hover:#2c6a98cc;--toolbar-btn-snap-on:#2c6a9880;--toolbar-kbd-border:#f5f1eb52;--toolbar-kbd-bg:#f5f1eb1a;--tooltip-bg:#1e1a16eb;--tooltip-text:#f0ece5}body[data-theme=light]{--color-page-top:#f7f8fa;--color-page-bottom:#e7eaf0;--color-page-highlight:#ffffffd9;--color-surface:#fff;--color-surface-soft:#f1f3f6;--color-surface-strong:#fff;--color-border:#d8dbe2;--color-border-strong:#b6bac4;--color-text-primary:#1a1c20;--color-text-secondary:#545862;--color-text-muted:#6d717b;--color-accent:#185fa5;--color-accent-soft:#dbe9f6;--color-accent-on:#f5fbff;--color-accent-ring:#185fa52e;--color-accent-border:#6c9cc6;--color-danger:#b8323e;--color-danger-soft:#fdf1f3;--color-danger-soft-end:#f7dde1;--color-danger-border:#d2a3a8;--color-danger-strong:#c4404c;--color-danger-strong-end:#a32d3a;--color-button-from:#fff;--color-button-to:#eef0f4;--color-input-bg:#fff;--color-paper:#fff;--color-overlay:#1e243066;--color-cv-wrap:linear-gradient(140deg, #e2e4e9 0%, #d6d9e0 48%, #c8ccd4 100%);--button-inset-highlight:#fff6;--shadow-panel:0 18px 40px #141e321a;--shadow-card:0 8px 18px #141e3212;--shadow-card-soft:0 2px 6px #141e320d;--toolbar-bg:#242a36d1;--toolbar-border:#ffffff2e;--toolbar-shadow:0 10px 30px #0f162652, inset 0 1px 0 #ffffff0f;--toolbar-text:#e8edf5d1;--toolbar-text-strong:#fff;--toolbar-text-soft:#e8edf58c;--toolbar-divider:#ffffff1a;--toolbar-btn-hover:#ffffff1a;--toolbar-btn-active:#ffffff0d;--toolbar-btn-on:#5fa0e68c;--toolbar-btn-on-hover:#5fa0e6b8;--toolbar-btn-snap-on:#5fa0e66b;--toolbar-kbd-border:#e8edf547;--toolbar-kbd-bg:#e8edf51a;--tooltip-bg:#141c2aeb;--tooltip-text:#e8edf5}html,body{height:100%}body{min-height:100svh;font-family:var(--font-sans);color:var(--color-text-primary);background:radial-gradient(circle at 14% 8%, var(--color-page-highlight), transparent 34%), linear-gradient(165deg, var(--color-page-top) 0%, var(--color-page-bottom) 100%);padding:14px}button,select{font:inherit;color:inherit}#app{border:1px solid var(--color-border);background:var(--color-surface);height:calc(100svh - 28px);min-height:0;box-shadow:var(--shadow-panel);border-radius:18px;animation:.34s ease-out app-in;display:flex;position:relative;overflow:hidden}#app.branded{padding-top:68px}#brand-topbar{border-bottom:1px solid var(--color-border);background:var(--brand-topbar-color,var(--color-surface-strong));z-index:1;align-items:center;height:68px;padding:10px 20px;display:flex;position:absolute;top:0;left:0;right:0}#brand-topbar[hidden],#brand-fallback[hidden],#brand-back[hidden],#account-status[hidden]{display:none}#account-status{min-width:0;color:var(--brand-topbar-text,var(--color-text-secondary));align-items:center;gap:12px;margin-left:auto;font-size:13px;display:flex}.account-icon{border:1px solid var(--topbar-divider);width:32px;height:32px;color:var(--brand-topbar-text,var(--color-text-primary));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}a.account-icon:hover{background:color-mix(in srgb, currentColor 8%, transparent)}a.account-icon:focus-visible{outline:2px solid var(--brand-topbar-text,var(--color-accent));outline-offset:2px}.account-login{background:var(--color-accent);color:var(--color-accent-on);white-space:nowrap;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;padding:7px 14px 7px 10px;font-weight:600;text-decoration:none;display:inline-flex}.account-login:hover,.account-login:focus-visible{filter:brightness(1.08)}.account-login:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}#brand-home{min-width:0;max-height:100%;color:inherit;border-radius:6px;flex:0 auto;align-items:center;text-decoration:none;display:flex}#topbar-end{--topbar-divider:color-mix(in srgb, var(--brand-topbar-text,var(--color-text-secondary)) 22%, transparent);align-items:center;min-width:0;margin-left:auto;padding-left:24px;display:flex}#topbar-end>:not([hidden])~:not([hidden]){margin-left:16px;padding-left:16px;position:relative}#topbar-end>:not([hidden])~:not([hidden]):before{content:"";border-left:1px solid var(--topbar-divider);height:20px;margin-top:-10px;position:absolute;top:50%;left:0}#topbar-actions{flex-shrink:0;gap:8px;display:flex}.topbar-btn{border:1px solid var(--topbar-divider);height:32px;color:var(--brand-topbar-text,var(--color-text-primary));font:inherit;cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.topbar-btn:hover{background:color-mix(in srgb, currentColor 8%, transparent)}#brand-back{white-space:nowrap;color:var(--brand-topbar-text,var(--color-text-secondary));flex-shrink:0;font-size:13px;font-weight:600;text-decoration:none}#brand-back:hover{text-decoration:underline}.topbar-btn:focus-visible,#brand-back:focus-visible,#brand-home[href]:focus-visible{outline:2px solid var(--brand-topbar-text,var(--color-accent));outline-offset:3px}#brand-logo{object-fit:contain;max-width:min(100%,360px);max-height:46px;display:block}#brand-logo[hidden]{display:none}#brand-fallback{color:var(--brand-topbar-text,#2f2b27);font-size:18px;font-weight:650}#sidebar{background:linear-gradient(180deg, var(--color-surface-strong), var(--color-surface));border-right:1px solid var(--color-border);flex-direction:column;width:clamp(260px,24vw,320px);min-width:0;transition:width .28s cubic-bezier(.4,0,.2,1),border-color .28s;display:flex;overflow:hidden}#sidebar.collapsed{border-right-color:#0000;width:0}#sb-top{flex-shrink:0;padding:16px 14px 0}#sb-top>*{animation:.4s both panel-fade}#sb-top>:first-child{animation-delay:20ms}#sb-top>:nth-child(2){animation-delay:40ms}#sb-top>:nth-child(3){animation-delay:60ms}#sb-top>:nth-child(4){animation-delay:80ms}#sb-top>:nth-child(5){animation-delay:.1s}#sb-top>:nth-child(6){animation-delay:.12s}#sb-top>:nth-child(7){animation-delay:.14s}#sb-top>:nth-child(8){animation-delay:.16s}#sb-top>:nth-child(9){animation-delay:.18s}#sb-top h3{letter-spacing:.01em;color:var(--color-text-primary);margin-bottom:10px;font-size:22px;font-weight:630}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);padding:8px 2px 6px;font-size:11px;font-weight:640}.shape-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.shape-btn{border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-button-from), var(--color-button-to));box-shadow:inset 0 1px 0 var(--button-inset-highlight);color:var(--color-text-secondary);cursor:pointer;text-align:center;border-radius:10px;padding:7px 4px;font-size:11px;font-weight:550;line-height:1.3;transition:transform .13s,border-color .13s,background-color .13s,color .13s}.shape-btn:hover{border-color:var(--color-border-strong);background:var(--color-button-from);color:var(--color-text-primary);transform:translateY(-1px)}.shape-btn canvas{margin:0 auto 2px;display:block}.shape-btn.active{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.room-modal-overlay{z-index:1000;background:var(--color-overlay);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.room-modal-overlay[hidden]{display:none}.room-modal{background:var(--color-surface-strong);border:1px solid var(--color-border);box-shadow:var(--shadow-panel);border-radius:14px;flex-direction:column;gap:14px;width:340px;padding:20px;display:flex}.room-modal-title{color:var(--color-text-primary);font-size:15px;font-weight:700}.room-modal-canvas{background:var(--color-paper);border:1px solid var(--color-border);border-radius:8px;margin:0 auto;display:block}.room-modal-rotate-btn{align-self:center;padding:4px 12px;font-size:12px}.room-modal-fields{flex-direction:column;gap:2px;display:flex}.room-modal-fields .insp-field{margin-bottom:6px}.room-modal-actions{gap:8px;display:flex}.room-modal-actions .tb{flex:1}.tool-strip{gap:8px;margin-bottom:8px;display:flex}.tb{border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-button-from), var(--color-button-to));min-height:36px;box-shadow:inset 0 1px 0 var(--button-inset-highlight);color:var(--color-text-primary);cursor:pointer;text-align:center;white-space:nowrap;letter-spacing:.01em;border-radius:10px;flex:1;padding:0 10px;font-size:13px;font-weight:600;transition:transform .12s,border-color .12s,filter .12s}.tb:hover{border-color:var(--color-border-strong);filter:brightness(1.03);transform:translateY(-1px)}.tb:active{transform:translateY(0)}.tb.on{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-on);box-shadow:none}.tb.danger{color:var(--color-danger)}.tb.danger:hover{background:linear-gradient(180deg, var(--color-danger-soft), var(--color-danger-soft-end));border-color:var(--color-danger-border)}.tb.danger-solid{background:linear-gradient(180deg, var(--color-danger-strong), var(--color-danger-strong-end));border-color:var(--color-danger-strong-end);color:#fff;box-shadow:none}.tb.danger-solid:hover{background:linear-gradient(180deg, var(--color-danger-strong), var(--color-danger-strong-end));border-color:var(--color-danger-strong-end);filter:brightness(1.08)}.divider{background:linear-gradient(90deg, transparent, var(--color-border), transparent);height:1px;margin:8px 0}.dim-row{color:var(--color-text-secondary);align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.dim-row select{border:1px solid var(--color-border);background:var(--color-input-bg);color:var(--color-text-primary);cursor:pointer;border-radius:9px;outline:none;flex:1;padding:7px 8px}.dim-row select:focus-visible{border-color:var(--color-accent-border);box-shadow:0 0 0 3px var(--color-accent-ring)}#cat-scroll{flex:1;padding:0 10px 12px;overflow-y:auto}#cat-scroll::-webkit-scrollbar{width:10px}#cat-scroll::-webkit-scrollbar-thumb{background:var(--color-border-strong);background-clip:padding-box;border:2px solid #0000;border-radius:999px}.cat-label{text-transform:uppercase;letter-spacing:.09em;color:var(--color-text-muted);padding:10px 4px 5px;font-size:10px;font-weight:660}.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;display:grid}.fi{border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-button-from), var(--color-button-to));cursor:grab;box-shadow:var(--shadow-card-soft);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:10px 8px;transition:transform .13s,box-shadow .13s,border-color .13s;animation:.35s both panel-fade;display:flex}.fi:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-card);transform:translateY(-2px)}.fi-ic{object-fit:contain;flex-shrink:0;width:68px;height:68px;display:block}.fi-ic-fallback{border:1.5px solid var(--color-text-muted);background:color-mix(in srgb, var(--color-text-muted) 12%, transparent);border-radius:6px}.fi-name{color:var(--color-text-primary);text-align:center;font-size:12px;font-weight:640;line-height:1.2}.catalog-header-row{justify-content:space-between;align-items:center;padding-bottom:2px;display:flex}.catalog-header-row .section-label{padding:0}.cat-search-btn{border:1px solid var(--color-border);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s,border-color .12s;display:flex}.cat-search-btn:hover{background:var(--color-surface-soft);color:var(--color-text-primary);border-color:var(--color-border-strong)}.cat-search-btn.on{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent-border)}#cat-search-wrap{padding:6px 0 4px}#cat-search-wrap[hidden]{display:none}#cat-search,#load-plan-search{border:1px solid var(--color-border);background:var(--color-input-bg);width:100%;color:var(--color-text-primary);font:inherit;border-radius:9px;outline:none;padding:7px 10px;font-size:13px;transition:border-color .12s,box-shadow .12s}#cat-search:focus-visible,#load-plan-search:focus-visible{border-color:var(--color-accent-border);box-shadow:0 0 0 3px var(--color-accent-ring)}.cat-header{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;width:100%;padding:9px 4px 4px;transition:background-color .1s;display:flex}.cat-header:hover{background:var(--color-surface-soft)}.cat-label-text{text-transform:uppercase;letter-spacing:.09em;color:var(--color-text-muted);flex:1;font-size:11px;font-weight:660}.cat-chevron{width:14px;height:14px;color:var(--color-text-muted);flex-shrink:0;justify-content:center;align-items:center;transition:transform .2s;display:flex}.cat-chevron.open{transform:rotate(90deg)}.cat-content{max-height:3000px;padding-top:5px;padding-left:4px;padding-right:4px;transition:max-height .26s cubic-bezier(.4,0,.2,1);overflow:hidden}.cat-content.cat-collapsed{visibility:hidden;max-height:0}.subcat-header{padding:10px 4px 5px}.subcat-label-text{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);font-size:10.5px;font-weight:620}#cv-wrap{background:var(--color-cv-wrap);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}#cv-wrap:before{content:"";pointer-events:none;background:radial-gradient(circle at 18% 20%,#ffffff29,#0000 24%),repeating-linear-gradient(0deg,#4e40320f,#4e40320f 1px,#0000 1px 40px),repeating-linear-gradient(90deg,#4e40320e,#4e40320e 1px,#0000 1px 40px);position:absolute;inset:0}canvas#c{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;z-index:1;display:block;position:absolute;top:0;left:0}.panel-toggle{z-index:6;border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-surface-strong), var(--color-surface));width:18px;height:48px;color:var(--color-text-secondary);cursor:pointer;opacity:.7;justify-content:center;align-items:center;padding:0;transition:opacity .18s,background-color .18s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.panel-toggle:hover{opacity:1;background:var(--color-surface-strong)}.panel-toggle-left{border-left:none;border-radius:0 8px 8px 0;left:0}.panel-toggle-right{border-right:none;border-radius:8px 0 0 8px;right:0}.panel-toggle-left.is-collapsed svg,.panel-toggle-right.is-collapsed svg{transform:rotate(180deg)}#floating-toolbar{z-index:10;border:1px solid var(--toolbar-border);background:var(--toolbar-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:max-content;max-width:calc(100% - 48px);box-shadow:var(--toolbar-shadow);-webkit-user-select:none;user-select:none;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px;padding:4px 6px;animation:.32s ease-out toolbar-in;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.ft-group{align-items:center;gap:2px;display:flex}.ft-sep{background:var(--toolbar-divider);flex-shrink:0;width:1px;height:22px;margin:0 4px}.ft-btn[hidden],.topbar-btn[hidden]{display:none}.ft-btn{width:34px;height:34px;color:var(--toolbar-text);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s;display:flex;position:relative}.ft-btn:hover{background:var(--toolbar-btn-hover);color:var(--toolbar-text-strong)}.ft-btn:active{background:var(--toolbar-btn-active)}.ft-btn.on{background:var(--toolbar-btn-on);color:var(--toolbar-text-strong)}.ft-btn.on:hover{background:var(--toolbar-btn-on-hover)}.ft-snap.on{background:var(--toolbar-btn-snap-on);color:var(--toolbar-text-strong)}.insp-unit-select{border:1px solid var(--color-border);background:var(--color-input-bg);height:32px;color:var(--color-text-primary);cursor:pointer;border-radius:6px;outline:none;padding:0 8px;font-size:12px;font-weight:500;transition:border-color .12s,background-color .12s}.insp-unit-select:hover{border-color:var(--color-border-strong)}.insp-unit-select:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-ring)}.insp-unit-select option{background:var(--color-input-bg);color:var(--color-text-primary)}.ft-plan-label{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.01em;max-width:180px;color:var(--toolbar-text);-webkit-user-select:none;user-select:none;flex-shrink:0;padding:0 10px;font-size:12px;font-weight:600;overflow:hidden}.ft-plan-label.is-dirty:after{content:"*";color:#e6b478f2;margin-left:2px}.room-modal-wide{width:440px}.plan-list{flex-direction:column;gap:4px;display:flex}.plan-list[hidden]{display:none}.plan-list-scroll{max-height:50vh;padding-right:2px;overflow-y:auto}#save-plan-list{max-height:228px;padding-right:2px;overflow-y:auto}#load-plan-search:not([hidden])+#load-plan-list{height:50vh}#load-plan-search[hidden],.plan-row[hidden],.plan-list-empty[hidden]{display:none}.plan-row{border:1px solid var(--color-border);background:var(--color-input-bg);border-radius:9px;align-items:center;gap:8px;padding:8px 10px;transition:border-color .12s,background-color .12s;display:flex}.plan-row:hover{border-color:var(--color-border-strong);background:var(--color-surface-soft)}.plan-row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.plan-row-name{color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:640;overflow:hidden}.plan-row-time{color:var(--color-text-secondary);font-size:11px}.plan-row-shared{color:var(--color-accent);font-weight:600}.share-plan-modal{width:520px}.share-plan-link{border:1px solid var(--color-border);background:var(--color-input-bg);width:100%;color:var(--color-text-primary);text-overflow:ellipsis;border-radius:8px;padding:9px 10px;font-size:13px}.plan-login-callout{border:1px solid var(--color-accent);background:var(--color-accent-soft);color:var(--color-text-primary);border-radius:10px;flex-direction:column;gap:10px;padding:12px;font-size:13px;line-height:1.4;display:flex}.plan-login-callout[hidden]{display:none}.plan-login-callout strong{margin-bottom:2px;display:block}.plan-row-actions{flex-shrink:0;gap:6px;display:flex}.plan-row-btn{border:1px solid var(--color-border);background:var(--color-input-bg);color:var(--color-text-primary);font:inherit;cursor:pointer;border-radius:7px;padding:5px 10px;font-size:12px;font-weight:600;transition:background-color .12s,border-color .12s,color .12s}.plan-row-btn:hover{border-color:var(--color-border-strong);background:var(--color-surface-soft)}.plan-row-btn.danger{color:var(--color-danger)}.plan-row-btn.danger:hover{border-color:var(--color-danger-border);background:var(--color-danger-soft)}.plan-list-empty{text-align:center;color:var(--color-text-secondary);padding:20px 10px;font-size:13px}.plan-list-empty .plan-row-btn{margin:12px auto 0;display:block}.plan-list-empty.loading:before{content:"";border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:18px;height:18px;margin:0 auto 10px;animation:.8s linear infinite plan-list-spin;display:block}@keyframes plan-list-spin{to{transform:rotate(360deg)}}.plan-modal-hint{color:var(--color-text-secondary);font-size:12px}.plan-modal-hint[hidden]{display:none}.plan-modal-hint.error{color:var(--color-danger)}.plan-modal-message{color:var(--color-text-primary);font-size:13px;line-height:1.4}@media print{@page{size:letter landscape;margin:.5in}body{background:#fff;margin:0;padding:0}#app{height:auto;min-height:0;box-shadow:none;border:none;border-radius:0;animation:none;display:block;overflow:visible}#app.branded{padding-top:0}#brand-topbar,#sidebar,#inspector,#floating-toolbar,.panel-toggle,.info-popup,#ghost,.room-modal-overlay{display:none!important}#cv-wrap{background:#fff;width:auto;height:auto;position:static;overflow:visible}#cv-wrap:before{display:none}canvas#c{width:10in;height:7.5in;margin:0;display:block;position:static;inset:auto}}.ft-btn[data-tooltip]:hover:after{content:attr(data-tooltip);background:var(--tooltip-bg);color:var(--tooltip-text);font-family:var(--font-sans);white-space:nowrap;pointer-events:none;border-radius:7px;padding:5px 10px;font-size:11px;font-weight:560;animation:.14s tooltip-in;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}@keyframes toolbar-in{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes tooltip-in{0%{opacity:0;transform:translate(-50%)translateY(3px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.info-popup{z-index:11;border:1px solid var(--toolbar-border);background:var(--toolbar-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--toolbar-text-strong);pointer-events:none;border-radius:10px;flex-direction:column;gap:10px;max-width:420px;padding:12px 16px;font-size:12px;animation:.14s tooltip-in;display:flex;position:absolute;bottom:100px;left:50%;transform:translate(-50%)}.info-popup[hidden]{display:none}.info-popup-status{text-align:center}.info-popup-divider{background:var(--toolbar-divider);height:1px}.info-popup-shortcuts{flex-direction:column;gap:5px;display:flex}.info-popup-section-title{letter-spacing:.06em;text-transform:uppercase;color:var(--toolbar-text-soft);margin-bottom:2px;font-size:10px;font-weight:700}.info-popup-row{align-items:center;gap:10px;font-size:11.5px;display:flex}.info-popup-row>span:last-child{color:var(--toolbar-text)}.kbd-row{align-items:center;gap:3px;display:inline-flex}.info-popup kbd{border:1px solid var(--toolbar-kbd-border);background:var(--toolbar-kbd-bg);min-width:16px;font-family:var(--font-sans);text-align:center;color:var(--toolbar-text-strong);border-radius:4px;padding:1px 5px;font-size:10.5px;font-weight:600;line-height:1.4;display:inline-block}#inspector{background:linear-gradient(180deg, var(--color-surface-strong), var(--color-surface));border-left:1px solid var(--color-border);flex-direction:column;width:clamp(240px,22vw,300px);min-width:0;transition:width .28s cubic-bezier(.4,0,.2,1),border-color .28s;display:flex;overflow:hidden auto}#inspector.collapsed{border-left-color:#0000;width:0}.insp-top{flex-direction:column;gap:4px;padding:16px 14px;display:flex}.insp-top[hidden]{display:none}.insp-name{color:var(--color-text-primary);padding:4px 2px 6px;font-size:15px;font-weight:640}.insp-field{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.insp-field label{color:var(--color-text-secondary);font-size:12px;font-weight:600}.insp-input-row{align-items:center;gap:8px;display:flex}.insp-input-row input{border:1px solid var(--color-border);background:var(--color-input-bg);min-width:0;color:var(--color-text-primary);font:inherit;border-radius:9px;outline:none;flex:1;padding:8px 10px;font-size:13px;transition:border-color .12s,box-shadow .12s,background-color .2s}.insp-input-row input:focus-visible{border-color:var(--color-accent-border);box-shadow:0 0 0 3px var(--color-accent-ring)}.insp-input-row input.invalid{background:#fdecec;border-color:#c66060}.insp-unit{color:var(--color-text-secondary);min-width:42px;font-size:12px;font-weight:600}.insp-hint{color:var(--color-text-secondary);margin-top:2px;font-size:11px}.insp-color-row{align-items:center;gap:8px;display:flex}.insp-color-label{color:var(--color-text-secondary);flex:1;font-size:12px;font-weight:600}.insp-color-trigger{border:1px solid var(--color-border-strong);background:var(--color-input-bg);cursor:pointer;border-radius:50%;flex:0 0 34px;place-items:center;width:34px;height:34px;padding:3px;display:grid}.insp-color-trigger:hover{border-color:var(--color-accent-border)}.insp-color-trigger:focus-visible{box-shadow:0 0 0 3px var(--color-accent-ring);outline:none}.insp-color-trigger span{border-radius:50%;width:100%;height:100%;display:block}.insp-color-reset{flex:none;min-height:30px;padding:5px 10px}.insp-color-panel{border:1px solid var(--color-border);background:var(--color-surface-strong);border-radius:10px;margin-top:8px;padding:10px;box-shadow:0 8px 20px #1e24301f}.insp-color-panel[hidden]{display:none}.insp-color-presets{grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:10px;display:grid}.insp-color-preset{aspect-ratio:1;border:2px solid var(--color-surface-strong);cursor:pointer;min-width:0;box-shadow:0 0 0 1px var(--color-border);border-radius:50%;padding:0}.insp-color-preset:hover,.insp-color-preset:focus-visible,.insp-color-preset.selected{box-shadow:0 0 0 2px var(--color-accent);outline:none}.insp-color-panel>label{color:var(--color-text-secondary);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.insp-color-picker{border-top:1px solid var(--color-border);gap:10px;margin-bottom:12px;padding-top:10px;display:grid}.insp-color-sv,.insp-color-hue{cursor:crosshair;touch-action:none;border-radius:8px;position:relative;box-shadow:inset 0 0 0 1px #0000001f}.insp-color-sv{--picker-hue:0;background:linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, transparent), hsl(var(--picker-hue), 100%, 50%);height:120px}.insp-color-hue{cursor:pointer;background:linear-gradient(90deg,red 0%,#ff0 16.67%,#0f0 33.33%,#0ff 50%,#00f 66.67%,#f0f 83.33%,red 100%);border-radius:999px;height:12px}.insp-color-sv:focus-visible,.insp-color-hue:focus-visible{box-shadow:inset 0 0 0 1px #0000001f, 0 0 0 3px var(--color-accent-ring);outline:none}.insp-color-thumb{pointer-events:none;border:2px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #0000004d,0 1px 3px #00000059}.insp-color-hue .insp-color-thumb{width:16px;height:16px;top:50%}.insp-color-sv:focus-visible .insp-color-thumb,.insp-color-hue:focus-visible .insp-color-thumb{box-shadow:0 0 0 2px var(--color-accent), 0 1px 3px #00000059}.insp-color-hex-row{align-items:center;gap:6px;display:flex}.insp-color-preview{border-radius:8px;flex:0 0 30px;height:30px;box-shadow:inset 0 0 0 1px #00000026}.insp-color-hex-row input{border:1px solid var(--color-border);background:var(--color-input-bg);min-width:0;color:var(--color-text-primary);text-transform:uppercase;border-radius:8px;flex:1;padding:7px 8px;font:600 12px ui-monospace,SFMono-Regular,Consolas,monospace}.insp-color-hex-row input:focus-visible{border-color:var(--color-accent-border);box-shadow:0 0 0 3px var(--color-accent-ring);outline:none}.insp-color-hex-row input.invalid{border-color:var(--color-danger)}.insp-color-error{min-height:14px;color:var(--color-danger);margin-top:3px;font-size:10px}@media (pointer:coarse){.insp-color-trigger{flex-basis:44px;width:44px;height:44px;padding:5px}.insp-color-presets{grid-template-columns:repeat(4,1fr);gap:8px}.insp-color-preset{min-height:44px}.insp-color-sv{height:160px}.insp-color-hue{height:20px}.insp-color-hue .insp-color-thumb{width:24px;height:24px}}.insp-checkbox{color:var(--color-text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:9px;padding:4px 0;font-size:12.5px;display:flex}.insp-checkbox input[type=checkbox]{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface-strong);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin:0;transition:background-color .14s,border-color .14s;display:inline-flex}.insp-checkbox:hover input[type=checkbox]:not(:checked){border-color:var(--color-text-secondary);background:var(--color-input-bg)}.insp-checkbox input[type=checkbox]:checked{background:var(--color-accent);border-color:var(--color-accent)}.insp-checkbox input[type=checkbox]:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;transform:rotate(45deg)translateY(-1px)}.insp-checkbox input[type=checkbox]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.theme-toggle{border:1px solid var(--color-border);background:linear-gradient(180deg, var(--color-button-from), var(--color-button-to));width:100%;box-shadow:inset 0 1px 0 var(--button-inset-highlight);color:var(--color-text-primary);cursor:pointer;font:inherit;text-align:left;border-radius:9px;align-items:center;gap:9px;padding:7px 11px 7px 9px;transition:transform .13s,border-color .13s,filter .13s;display:flex}.theme-toggle:hover{border-color:var(--color-border-strong);filter:brightness(1.03);transform:translateY(-1px)}.theme-toggle:active{transform:translateY(0)}.theme-toggle:focus-visible{border-color:var(--color-accent-border);box-shadow:inset 0 1px 0 var(--button-inset-highlight), 0 0 0 3px var(--color-accent-ring);outline:none}.theme-toggle-icon{background:var(--color-accent-soft);width:22px;height:22px;color:var(--color-accent);border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.theme-toggle-icon svg{display:block}.theme-toggle .icon-sepia,.theme-toggle .icon-light{display:none}.theme-toggle[data-current=sepia] .icon-sepia,.theme-toggle[data-current=light] .icon-light{display:block}.theme-toggle-name{letter-spacing:.01em;flex:1;font-size:13px;font-weight:600}.theme-toggle-hint{color:var(--color-text-muted);flex-shrink:0;font-size:11px}.insp-room-stats{flex-direction:column;gap:6px;margin-bottom:4px;display:flex}.insp-stat{color:var(--color-text-primary);justify-content:space-between;align-items:center;font-size:13px;font-weight:550;display:flex}.insp-stat-label{color:var(--color-text-secondary);font-size:12px;font-weight:600}.insp-wall-list{flex-direction:column;gap:4px;display:flex}.insp-wall-item{color:var(--color-text-primary);justify-content:space-between;align-items:center;padding:4px 0;font-size:12px;display:flex}.insp-wall-item span:first-child{color:var(--color-text-secondary);font-weight:600}.insp-actions{gap:8px;display:flex}.insp-actions .tb{flex:1}#ghost{z-index:9999;pointer-events:none;border:2px dashed var(--color-accent);background:#2c6a9838;border-radius:5px;display:none;position:fixed}#mobile-nav,#mobile-more,#mobile-tools,.sheet-header{display:none}button:focus-visible,canvas#c:focus-visible{outline:3px solid var(--color-accent);outline-offset:-3px}button:disabled{opacity:.45;cursor:default}#canvas-actions{z-index:5;max-width:calc(100% - 24px);position:absolute;top:12px;left:50%;transform:translate(-50%)}#draw-actions,#geometry-actions{background:var(--color-surface);box-shadow:var(--shadow-card);text-align:center;border-radius:12px;padding:8px;font-size:12px}.canvas-action-row{gap:6px;display:flex}#draw-actions .canvas-action-row{margin-top:6px}#draw-actions,#geometry-actions[hidden]{display:none}.touch-help{line-height:1.5}.room-modal-overlay{padding:16px;overflow-y:auto}.room-modal{max-width:100%;max-height:calc(100dvh - 32px);overflow-y:auto}.room-modal>*{flex-shrink:0}@media screen and (width<=1000px),screen and (height<=600px) and (pointer:coarse){#draw-actions:not([hidden]){display:block}body{min-height:0;padding:0;overflow:hidden}#app{height:100dvh;min-height:0;box-shadow:none;border:none;border-radius:0;animation:none;overflow:clip}#app.branded{padding-top:calc(54px + env(safe-area-inset-top))}#brand-topbar{height:calc(54px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left))}#brand-logo{max-width:min(100%,260px);max-height:38px}#brand-back{display:none!important}#sidebar,#sidebar.collapsed,#inspector,#inspector.collapsed,#mobile-tools{overscroll-behavior:contain;width:100%;max-height:min(72%,620px);padding:0 max(8px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-panel);z-index:30;border-bottom:0;border-radius:20px 20px 0 0;flex-direction:column;transition:none;display:none;position:absolute;inset:auto 0 0;overflow-y:auto}#sidebar.sheet-open,#inspector.sheet-open,#mobile-tools.sheet-open{display:flex}.sheet-header{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--color-border);order:-2;justify-content:space-between;align-items:center;gap:12px;padding:12px 8px;display:flex;position:sticky;top:0}.sheet-header h2{font-size:18px}.sheet-header .tb{flex:none}#sidebar>*,#inspector>*,#mobile-tools>*{flex-shrink:0}#sb-top{padding-top:8px}#sb-top h3{display:none}#cat-scroll{flex:none;overflow:visible}#insp-furniture,#insp-room{order:-1}.cat-grid,.shape-grid{grid-template-columns:repeat(auto-fill,minmax(125px,1fr))}.fi{touch-action:pan-y;-webkit-touch-callout:none}#sheet-backdrop:not([hidden]){background:var(--color-overlay);z-index:20;position:absolute;inset:0}.panel-toggle{display:none}#mobile-nav{top:max(10px, env(safe-area-inset-top));left:max(10px, env(safe-area-inset-left));right:max(10px, env(safe-area-inset-right));z-index:6;pointer-events:none;justify-content:space-between;display:flex;position:absolute}#mobile-nav .tb{pointer-events:auto;box-shadow:var(--shadow-card);flex:none}#floating-toolbar{bottom:max(10px, env(safe-area-inset-bottom));gap:4px;max-width:calc(100% - 20px)}#floating-toolbar .ft-group{display:contents}#floating-toolbar .ft-sep{display:none}#floating-toolbar .ft-btn{flex-direction:column;gap:3px}#floating-toolbar .ft-btn[data-mobile-label]:after{content:attr(data-mobile-label);color:inherit;background:0 0;padding:0;font-size:10px;font-weight:500;animation:none;display:block;position:static;transform:none}#mobile-more{font-weight:700;display:flex}.ft-btn{width:48px;height:48px}.ft-btn[data-tooltip]:hover:after{display:none}#mobile-tools-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 8px;display:grid}#mobile-tools-grid:has(>[data-action=share]:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}#mobile-tools-grid #zoom-in-btn,#mobile-tools-grid #zoom-out-btn{display:none}#mobile-tools-grid .ft-btn{width:100%;height:auto;min-height:64px;color:var(--color-text-primary);background:var(--color-surface-soft);border:1px solid var(--color-border);flex-direction:column;gap:6px;padding:10px 4px}#mobile-tools-grid .ft-btn.on{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-soft)}#mobile-tools-grid .ft-btn:after{content:attr(data-tooltip);color:inherit;white-space:normal;background:0 0;padding:0;font-size:12px;animation:none;display:block;position:static;transform:none}#mobile-tools-grid .ft-btn[data-mobile-label]:after{content:attr(data-mobile-label)}#ft-plan-label{max-width:100%;color:var(--color-text-secondary);grid-column:1/-1;padding:4px}#canvas-actions{top:calc(max(10px, env(safe-area-inset-top)) + 54px);width:max-content}.tb,.cat-header,.cat-search-btn,.insp-checkbox,.theme-toggle,.plan-row-btn{min-height:44px}.cat-search-btn{width:44px}.insp-input-row input,#cat-search,.insp-unit-select{min-height:44px;font-size:16px}.info-popup{width:calc(100% - 24px);bottom:calc(max(10px, env(safe-area-inset-bottom)) + 70px);pointer-events:auto;max-height:calc(100% - 150px);overflow-y:auto}.info-popup-shortcuts>:not(.touch-help){display:none}.plan-row{flex-wrap:wrap}}.save-status-icon{place-items:center;width:16px;height:16px;display:none}.ft-btn .save-status-icon{width:18px;height:18px}[data-save-state]>svg{display:none}[data-save-state]>.save-status-icon{display:grid}[data-save-state=saving]{cursor:progress}.save-spinner{opacity:.8;border:2px solid;border-right-color:#0000;border-radius:50%;width:13px;height:13px;animation:.8s linear infinite plan-list-spin}.save-check{animation:.22s ease-out save-check-in}[data-save-state=saving] .save-check,[data-save-state=saved] .save-spinner{display:none}#floating-toolbar .ft-btn[data-save-state=saved]{color:#8fd6a4}@keyframes save-check-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.save-toast{z-index:40;border:1px solid var(--toolbar-border);background:var(--toolbar-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:calc(100% - 32px);box-shadow:var(--toolbar-shadow);color:var(--toolbar-text-strong);white-space:nowrap;text-overflow:ellipsis;opacity:0;pointer-events:none;border-radius:999px;padding:8px 14px;font-size:12.5px;font-weight:600;transition:opacity .18s,transform .18s;position:absolute;bottom:66px;left:50%;overflow:hidden;transform:translate(-50%,6px)}.save-toast:empty{display:none}.save-toast.show{opacity:1;animation:.18s ease-out save-toast-in;transform:translate(-50%)}@keyframes save-toast-in{0%{opacity:0;transform:translate(-50%,6px)}}.save-toast:before{content:"✓";color:#8fd6a4;margin-right:7px}@media screen and (width<=1000px),screen and (height<=600px) and (pointer:coarse){.save-toast{bottom:calc(max(10px, env(safe-area-inset-bottom)) + 70px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media print{#mobile-nav,#mobile-tools,#sheet-backdrop,#canvas-actions{display:none!important}}@keyframes app-in{0%{opacity:0;transform:translateY(8px)scale(.995)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes panel-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media screen and (width<=639px){.topbar-btn-label{display:none}.topbar-btn{justify-content:center;width:32px;padding:0}}@media screen and (width<=499px){#topbar-actions{display:none!important}#topbar-end>:not([hidden])~:not([hidden]){margin-left:0;padding-left:0}#topbar-end>:not([hidden])~:not([hidden]):before{content:none}}
