:root{color:#22302d;font-synthesis:none;--ink:#22302d;--muted:#6f7c78;--line:#dde4e1;--surface:#fff;--accent:#147d72;--accent-soft:#e7f3f0;--shadow:0 20px 55px #20342f1a;background:#f4f6f4;font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:fixed;overflow:hidden}.app-shell{min-height:100vh;padding:0 28px 28px}.topbar{grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;height:70px;display:grid}.brand{color:var(--ink);align-items:center;gap:10px;font-size:18px;font-weight:760;text-decoration:none;display:inline-flex}.brand-mark{color:#fff;background:var(--ink);border-radius:12px;place-items:center;width:34px;height:34px;font-size:15px;display:grid}.project-title{color:var(--muted);font-size:14px}.save-dot{background:#56a67c;border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block}.save-dot.loading{background:#d39a37;animation:1s infinite alternate save-pulse}.save-dot.error{background:#cc5148}@keyframes save-pulse{to{opacity:.35}}.top-actions{justify-content:flex-end;gap:6px;display:flex}.top-actions button,.category-list button{color:#56635f;background:0 0;border:0;border-radius:10px;padding:9px 13px}.top-actions button:hover,.category-list button:hover{color:var(--ink);background:#e9eeeb}.top-actions .export-button{color:#fff;background:var(--ink)}.export-menu-wrap{position:relative}.export-menu{z-index:20;border:1px solid var(--line);background:#fff;border-radius:12px;gap:3px;width:180px;padding:6px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 14px 35px #22302d29}.top-actions .export-menu button{color:var(--ink);text-align:left;padding:9px 10px;font-size:12px;display:block}.view-switch{background:#e9eeeb;border-radius:12px;gap:2px;padding:3px;display:flex}.top-actions .view-switch button{border-radius:9px;padding:6px 11px;font-size:13px}.top-actions .view-switch button.active{color:var(--ink);background:#fff;box-shadow:0 2px 9px #22302d17}.intro{justify-content:space-between;align-items:end;gap:30px;max-width:1450px;margin:16px auto 22px;display:flex}.eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:750}.intro h1{letter-spacing:-.04em;margin:7px 0 0;font-size:clamp(26px,4vw,42px)}.intro p{max-width:480px;color:var(--muted);margin:0;line-height:1.7}.editor-card{background:var(--surface);max-width:1450px;min-height:760px;box-shadow:var(--shadow);border:1px solid #22302d14;border-radius:24px;grid-template-rows:minmax(0,1fr) 182px;grid-template-columns:92px minmax(0,1fr) 280px;margin:auto;display:grid;overflow:hidden}.tool-rail{border-right:1px solid var(--line);background:#fbfcfb;grid-row:1/3;padding:18px 12px}.tool{width:100%;color:var(--muted);background:0 0;border:0;border-radius:13px;place-items:center;gap:5px;margin-bottom:7px;padding:10px 4px;font-size:12px;display:grid}.tool span{color:#68756f;background:#eef2f0;border-radius:9px;place-items:center;width:28px;height:28px;font-weight:760;display:grid}.tool.active{color:var(--accent);background:var(--accent-soft)}.tool.active span{color:#fff;background:var(--accent)}.canvas-placeholder{background:#f7f9f7;min-height:520px;position:relative;overflow:hidden}.canvas-workspace{touch-action:none;position:absolute;inset:0}.canvas-onboarding{text-align:center;pointer-events:none;background:radial-gradient(circle,#f8faf8f5,#f8faf866 55%,#0000 75%);place-content:center;justify-items:center;padding:32px;display:grid;position:absolute;inset:0}.canvas-onboarding>*{pointer-events:auto}.empty-icon{width:68px;height:68px;color:var(--accent);background:var(--accent-soft);border-radius:22px;place-items:center;margin-bottom:16px;font-size:34px;display:grid}.canvas-onboarding h2{margin:0;font-size:24px}.canvas-onboarding p{max-width:430px;color:var(--muted);margin:10px 0 20px;line-height:1.65}.primary-button{color:#fff;background:var(--accent);border:0;border-radius:12px;padding:11px 18px;box-shadow:0 8px 18px #147d722e}.text-button{color:var(--accent);background:0 0;border:0;margin-top:8px;padding:8px 12px}.canvas-hud{color:var(--muted);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #22302d1a;border-radius:11px;align-items:center;gap:7px;padding:7px 8px 7px 11px;font-size:11px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 5px 20px #22302d14}.canvas-hud span:first-child{color:var(--ink);font-weight:760}.canvas-hud button{color:var(--accent);background:var(--accent-soft);border:0;border-radius:6px;padding:4px 7px;font-size:11px}.renovation-toolbar{z-index:3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border:1px solid #22302d1a;border-radius:11px;align-items:center;gap:3px;padding:4px;display:flex;position:absolute;top:13px;left:13px;box-shadow:0 7px 22px #22302d17}.renovation-toolbar button,.three-renovation-switch button{color:var(--muted);background:0 0;border:0;border-radius:7px;padding:7px 10px;font-size:11px}.renovation-toolbar button.active,.three-renovation-switch button.active{color:#fff;background:var(--ink)}.renovation-legend{color:var(--muted);white-space:nowrap;align-items:center;gap:4px;margin:0 5px;font-size:9px;display:flex}.renovation-legend i{background:#263632;border-radius:2px;width:10px;height:3px}.renovation-legend i.demolish{background:#d95b50}.renovation-legend i.added{background:#239070}.engineering-legend{z-index:3;max-width:255px;color:var(--muted);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #22302d17;border-radius:10px;flex-wrap:wrap;justify-content:flex-end;gap:5px 8px;padding:7px 9px;font-size:8px;display:flex;position:absolute;top:13px;right:13px;box-shadow:0 7px 22px #22302d12}.engineering-legend span{align-items:center;gap:3px;display:flex}.engineering-legend i{border-radius:50%;width:7px;height:7px}.property-panel{border-left:1px solid var(--line);padding:22px 20px}.panel-heading{justify-content:space-between;align-items:start;gap:10px;display:flex}.panel-heading h2{margin:5px 0 0;font-size:20px}.status-pill{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:6px 9px;font-size:11px;font-weight:740}.panel-section{margin-top:26px}.panel-section h3{color:var(--muted);margin:0 0 10px;font-size:12px;font-weight:680}.fake-field{border:1px solid var(--line);color:#485550;background:#fff;border-radius:10px;padding:11px 12px;font-size:13px}.file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.layer-row{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;border-bottom:1px solid #edf1ef;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;padding:10px 2px;font-size:13px;display:grid}.visibility{color:#c4ceca;font-size:9px}.visibility.on{color:var(--accent)}.layer-state{color:#9aa6a1;font-size:11px}.layer-control{border-bottom:1px solid #edf1ef;grid-template-columns:20px minmax(70px,1fr) 55px 25px;align-items:center;gap:5px;padding:8px 0;font-size:11px;display:grid}.layer-control input{width:55px;accent-color:var(--accent)}.layer-icon,.layer-lock{color:#c1cbc7;background:0 0;border:0;padding:3px;font-size:10px}.layer-icon.on{color:var(--accent)}.layer-lock{font-size:12px}.layer-lock.locked{color:#a15d43}.property-form{gap:12px;display:grid}.property-form label,.calibration-card label{color:var(--muted);gap:6px;font-size:12px;display:grid}.property-form input:not([type=range]),.property-form select,.calibration-card input{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:9px;outline:none;padding:10px 11px}.property-form input:focus,.property-form select:focus,.calibration-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.property-form input[type=range]{width:100%;accent-color:var(--accent)}.field-help{color:var(--muted);margin:0;font-size:12px;line-height:1.55}.danger-button{color:#a34c41;background:#fff8f6;border:1px solid #efd4cf;border-radius:9px;padding:9px 11px}.segmented{background:#edf2ef;border-radius:10px;grid-template-columns:1fr 1fr;padding:3px;display:grid}.segmented button{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:8px}.segmented button.selected{color:var(--accent);background:#fff;box-shadow:0 2px 8px #22302d14}.calibration-card{background:#f2f9f7;border:1px solid #cfe5df;border-radius:14px;gap:12px;margin-top:18px;padding:14px;display:grid}.calibration-card strong{font-size:13px}.inline-actions{gap:7px;display:flex}.inline-actions button{color:#fff;background:var(--accent);border:0;border-radius:8px;flex:1;padding:8px;font-size:12px}.inline-actions button.quiet{color:var(--muted);background:#fff}.calibration-status{color:var(--accent);background:var(--accent-soft);border-radius:9px;padding:9px 10px;font-size:12px}.recognition-button{color:#fff;background:var(--accent);border:0;border-radius:9px;padding:10px 12px}.recognition-result{color:var(--accent);background:var(--accent-soft);border-radius:9px;padding:9px 10px;font-size:11px}.catalog-bar{border-top:1px solid var(--line);background:#fbfcfb;grid-column:2/4;align-items:center;gap:20px;padding:16px 20px;display:flex}.catalog-title{white-space:nowrap;font-weight:760}.category-list{gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.category-list button{border:1px solid var(--line);white-space:nowrap;background:#fff;align-items:center;gap:7px;display:flex}.category-list small{color:#98a49f;font-size:9px}.furniture-catalog{align-items:stretch;gap:16px;padding:13px 16px}.catalog-controls{flex:0 0 212px;grid-template-columns:1fr 1fr;align-content:start;gap:8px;width:212px;display:grid}.catalog-controls strong{align-self:center;font-size:14px}.catalog-controls input{border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;width:100%;min-width:0;padding:7px 9px;font-size:11px}.catalog-controls input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.catalog-categories{grid-column:1/3;grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.catalog-categories button{color:var(--muted);background:0 0;border:0;border-radius:8px;justify-items:center;gap:2px;padding:5px 2px;font-size:9px;display:grid}.catalog-categories button span{font-size:14px}.catalog-categories button.active{color:var(--accent);background:var(--accent-soft)}.furniture-list{scroll-snap-type:x proximity;gap:9px;min-width:0;padding-bottom:5px;display:flex;overflow-x:auto}.furniture-card{scroll-snap-align:start;flex:0 0 220px}.furniture-card>button{border:1px solid var(--line);width:100%;height:100%;color:var(--ink);text-align:left;background:#fff;border-radius:13px;grid-template-columns:62px 1fr 25px;align-items:center;gap:10px;padding:10px;display:grid}.furniture-card>button:hover{background:#f7fbfa;border-color:#9fc8bf;transform:translateY(-1px)}.furniture-preview{background:color-mix(in srgb, var(--item-color) 28%, white);border-radius:13px;place-items:center;width:62px;height:62px;display:grid}.furniture-preview i{color:var(--item-color);filter:brightness(.68);font-size:27px;font-style:normal}.furniture-copy{gap:3px;min-width:0;display:grid}.furniture-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.furniture-copy small{color:var(--muted);font-size:10px}.furniture-copy em{color:#8d9893;white-space:nowrap;font-size:8px;font-style:normal}.add-furniture{color:#fff;background:var(--accent);border-radius:8px;place-items:center;width:24px;height:24px;font-size:16px;display:grid}.catalog-empty{min-width:240px;color:var(--muted);place-items:center;font-size:12px;display:grid}.furniture-spec{background:#f2f5f3;border-radius:10px;gap:5px;padding:11px;display:grid}.furniture-spec span{color:var(--accent);font-size:11px}.furniture-spec strong{font-size:11px}.collision-warning{color:#a44239;background:#fff5f3;border:1px solid #efcbc6;border-radius:10px;padding:10px;font-size:11px;line-height:1.5}.rotation-actions{grid-template-columns:1fr 1fr;gap:7px;display:grid}.rotation-actions button{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:8px;padding:8px 4px;font-size:11px}.rotation-actions button:hover{color:var(--accent);border-color:#acd0c8}.wall-risk{border-radius:10px;gap:3px;padding:10px;font-size:11px;display:grid}.wall-risk strong{font-size:12px}.wall-risk.blocked{color:#9f3f36;background:#fff0ed}.wall-risk.review{color:#89601e;background:#fff7e7}.wall-risk.verified{color:#277060;background:#ebf7f3}.renovation-actions{background:#eef2f0;border-radius:10px;grid-template-columns:repeat(3,1fr);gap:5px;padding:3px;display:grid}.renovation-actions button{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:8px 3px;font-size:11px}.renovation-actions button.active{color:#fff}.renovation-actions button.active.keep{background:#45534f}.renovation-actions button.active.demolish{background:#d95b50}.renovation-actions button.active.added{background:#239070}.safety-message{color:#79571f;background:#fff8e9;border-left:3px solid #d89834;border-radius:7px;padding:10px;font-size:11px;line-height:1.55}.engineering-picker h3{margin-bottom:0}.system-grid{grid-template-columns:repeat(3,1fr);gap:5px;display:grid}.system-grid button{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:8px;align-items:center;gap:5px;padding:7px 5px;font-size:10px;display:flex}.system-grid button i,.engineering-badge i{background:var(--system-color);border-radius:50%;width:8px;height:8px}.system-grid button.active{color:var(--system-color);border-color:var(--system-color);background:color-mix(in srgb, var(--system-color) 8%, white)}.engineering-badge{color:var(--system-color);background:color-mix(in srgb, var(--system-color) 10%, white);border-radius:9px;align-items:center;gap:7px;padding:9px 10px;font-size:12px;font-weight:720;display:flex}.rule-summary{color:#2d7464;background:#edf8f4;border-radius:10px;align-items:baseline;gap:7px;padding:10px;display:flex}.rule-summary.has-issues{color:#9a621f;background:#fff6e6}.rule-summary strong{font-size:19px}.rule-summary span{font-size:10px}.rule-issue{border-radius:7px;margin-top:6px;padding:7px 8px;font-size:9px;line-height:1.45}.rule-issue.error{color:#a33d35;background:#fff0ed}.rule-issue.warning{color:#8b611f;background:#fff7e8}.three-workspace{max-width:1450px;height:min(84vh,920px);min-height:800px;box-shadow:var(--shadow);background:#fff;border:1px solid #22302d14;border-radius:24px;grid-template-rows:minmax(0,1fr) 182px;grid-template-columns:minmax(0,1fr) 292px;margin:auto;display:grid;overflow:hidden}.three-canvas{background:#eef2ef;min-height:560px;position:relative;overflow:hidden}.three-sidebar{border-left:1px solid var(--line);padding:22px 20px;overflow-y:auto}.three-workspace>.furniture-catalog{grid-column:1/3}.workspace-loading{max-width:1450px;min-height:690px;color:var(--muted);box-shadow:var(--shadow);background:#fff;border-radius:24px;place-items:center;margin:auto;display:grid}.error-state{max-width:720px;min-height:420px;box-shadow:var(--shadow);text-align:center;background:#fff;border-radius:24px;place-content:center;justify-items:center;margin:50px auto;padding:36px;display:grid}.error-state>span{color:#a44239;background:#fff0ed;border-radius:18px;place-items:center;width:54px;height:54px;font-size:28px;font-weight:760;display:grid}.error-state h2{margin:18px 0 7px}.error-state p{max-width:500px;color:var(--muted);margin:0 0 20px;line-height:1.7}.error-state button{color:#fff;background:var(--accent);border:0;border-radius:10px;padding:10px 17px}.three-empty{text-align:center;pointer-events:none;place-content:center;justify-items:center;padding:30px;display:grid;position:absolute;inset:0}.three-empty span{width:62px;height:62px;color:var(--accent);background:#ffffffd1;border-radius:20px;place-items:center;font-size:34px;display:grid;box-shadow:0 12px 35px #22302d1f}.three-empty h2{margin:15px 0 5px;font-size:21px}.three-empty p{color:var(--muted);margin:0}.camera-presets{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe0;border:1px solid #22302d14;border-radius:12px;gap:3px;padding:4px;display:flex;position:absolute;top:16px;left:16px;box-shadow:0 8px 25px #22302d1a}.camera-presets button{color:var(--muted);background:0 0;border:0;border-radius:8px;padding:7px 12px;font-size:12px}.camera-presets button.active{color:#fff;background:var(--ink)}.three-help{color:var(--muted);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffd1;border-radius:9px;padding:7px 10px;font-size:11px;position:absolute;bottom:16px;left:17px}.three-renovation-switch{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe0;border:1px solid #22302d14;border-radius:12px;gap:3px;padding:4px;display:flex;position:absolute;top:16px;right:16px;box-shadow:0 8px 25px #22302d1a}.scene-stat-grid{grid-template-columns:1fr 1fr;gap:8px;margin-top:20px;display:grid}.scene-stat-grid div{background:#f3f6f4;border-radius:12px;gap:2px;padding:12px;display:grid}.scene-stat-grid strong{color:var(--ink);font-size:20px}.scene-stat-grid span{color:var(--muted);font-size:11px}.scene-stat-grid .stat-warning{background:#fff1ee}.scene-stat-grid .stat-warning strong,.scene-stat-grid .stat-warning span{color:#b3483d}.material-presets{gap:7px;display:grid}.material-presets button{border:1px solid var(--line);color:var(--ink);text-align:left;background:#fff;border-radius:11px;align-items:center;gap:10px;padding:9px;font-size:12px;display:flex}.material-presets button:hover{background:#f7fbfa;border-color:#aaccc4}.material-swatch{border:1px solid #22302d1a;border-radius:8px;width:38px;height:28px;display:flex;overflow:hidden}.material-swatch i{flex:1}.scene-controls{gap:11px;display:grid}.scene-controls h3{margin-bottom:0}.scene-controls label{color:var(--muted);grid-template-columns:1fr 70px;align-items:center;gap:10px;font-size:12px;display:grid}.scene-controls input[type=color]{border:1px solid var(--line);background:#fff;border-radius:8px;width:70px;height:34px;padding:3px}.scene-controls input[type=range]{width:70px;accent-color:var(--accent)}.scene-note{color:#32665f;background:var(--accent-soft);border-radius:13px;margin-top:24px;padding:14px}.scene-note strong{font-size:12px}.scene-note p{margin:5px 0 0;font-size:11px;line-height:1.55}@media (width<=900px){.app-shell{padding:env(safe-area-inset-top) 12px calc(12px + env(safe-area-inset-bottom))}.topbar{grid-template-columns:1fr auto}.project-title,.top-actions button:not(.export-button){display:none}.top-actions .view-switch{display:flex}.top-actions .view-switch button,.top-actions .export-menu button{display:block}.intro{flex-direction:column;align-items:start;gap:10px;padding:0 5px}.editor-card{border-radius:20px;grid-template-rows:minmax(470px,1fr) auto 78px;grid-template-columns:1fr;min-height:950px}.canvas-placeholder{grid-row:1;min-height:470px}.tool-rail{border-top:1px solid var(--line);border-right:0;grid-row:3;gap:6px;padding:8px;display:flex;overflow-x:auto}.tool{min-width:64px;margin:0}.property-panel{border-top:1px solid var(--line);border-left:0;grid-row:2;max-height:230px;padding:15px 18px;overflow-y:auto}.property-panel .panel-section:not(.property-form){display:none}.catalog-bar{grid-area:4/1;padding:12px}.catalog-title{display:none}.furniture-catalog{grid-template-columns:1fr;gap:8px;min-height:225px;padding:11px;display:grid}.catalog-controls{grid-template-columns:100px 1fr;width:100%;display:grid}.catalog-categories{grid-template-columns:repeat(7,minmax(48px,1fr));overflow-x:auto}.furniture-list{min-height:105px}.furniture-card{flex-basis:210px}.three-workspace{border-radius:20px;grid-template-rows:520px auto 225px;grid-template-columns:1fr;height:auto;min-height:1020px}.three-canvas{min-height:520px}.three-sidebar{border-top:1px solid var(--line);border-left:0;padding:16px 18px}.three-workspace>.furniture-catalog{grid-area:3/1}.three-sidebar .panel-section{margin-top:16px}.three-help,.renovation-legend{display:none}.engineering-legend{max-width:calc(100% - 26px);top:58px;left:13px;right:auto}.three-renovation-switch{top:66px;left:16px;right:auto}button{min-height:42px}.tool{min-height:62px}}@media (width<=560px){.topbar{gap:8px;height:auto;min-height:64px}.brand{font-size:15px}.brand-mark{width:31px;height:31px}.top-actions{gap:3px}.top-actions button{padding-inline:9px}.intro{margin-top:10px}.intro h1{font-size:28px}.intro p{font-size:13px}.renovation-toolbar{max-width:calc(100% - 26px);overflow-x:auto}.renovation-toolbar button{white-space:nowrap}}
