.light-ui{--bg: #f3f4f5;--panel: #ffffff;--panel-2: #fafafb;--panel-3: #eceef0;--line: #c9ced4;--line-soft: #e4e6e9;--text: #15181c;--text-dim: #4b525a;--text-faint: #80878f;--accent: #15181c;--accent-ink: #ffffff;--accent-hover: #2b3036;--blue: #235a91;--danger: #a8281e;--ok: #2f6b45;--hover-bg: #fafafb;--hover-line: #9aa1a9;--radius: 2px;color-scheme:light;color:var(--text)}.light-ui button.primary{font-weight:500}.light-ui input:not([type=checkbox]):not([type=color]):not([type=range]){background:#fff}.light-ui input:focus{border-color:var(--text);box-shadow:0 0 0 1px var(--text)}.light-ui .error-banner{background:#fbf1f0;border:1px solid #e3b9b4;border-left:3px solid var(--danger);border-radius:0;color:#7a1f17}.light-ui .account-trigger,.light-ui .avatar{border-radius:var(--radius)}.light-ui .avatar.initials{background:var(--text);color:#fff}.light-ui .account-popover{border-radius:var(--radius);box-shadow:0 18px 40px -16px #15181c47}.light-ui.ctx-menu,.light-ui .ctx-menu{background:var(--panel);border-radius:var(--radius);box-shadow:0 18px 40px -16px #15181c47}.light-ui .ctx-item{border-radius:0}.light-ui .ctx-title{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase}.auth-screen{height:100%;overflow:auto;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:40px 20px;background:var(--bg)}.auth-card{position:relative;width:min(880px,100%);display:grid;grid-template-columns:1fr 1fr;background:var(--panel);border:1px solid var(--line);box-shadow:0 30px 60px -44px #15181c66}.auth-card:before{content:"";position:absolute;inset:-12px;pointer-events:none;--m: #a3a9b0;background:linear-gradient(var(--m),var(--m)) left top / 9px 1px no-repeat,linear-gradient(var(--m),var(--m)) left top / 1px 9px no-repeat,linear-gradient(var(--m),var(--m)) right top / 9px 1px no-repeat,linear-gradient(var(--m),var(--m)) right top / 1px 9px no-repeat,linear-gradient(var(--m),var(--m)) left bottom / 9px 1px no-repeat,linear-gradient(var(--m),var(--m)) left bottom / 1px 9px no-repeat,linear-gradient(var(--m),var(--m)) right bottom / 9px 1px no-repeat,linear-gradient(var(--m),var(--m)) right bottom / 1px 9px no-repeat}.auth-card.auth-message{width:min(560px,100%);grid-template-columns:1fr}.auth-screen .brand{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:600;font-size:15px;letter-spacing:-.01em}.auth-screen .brand svg{flex:none}.auth-visual{display:flex;flex-direction:column;gap:18px;padding:28px;background:var(--panel-2);border-right:1px solid var(--line-soft)}.plan-sketch{width:100%;height:auto;margin:auto 0;font-family:IBM Plex Mono,monospace}.plan-sketch .room{fill:#f1f2f4}.plan-sketch .wall{stroke:#15181c;stroke-width:1}.plan-sketch .window rect{fill:#fff;stroke:#15181c;stroke-width:1}.plan-sketch .window line{stroke:#15181c;stroke-width:.8}.plan-sketch .door line{stroke:#15181c;stroke-width:2}.plan-sketch .door path{fill:none;stroke:#15181c;stroke-width:.8;stroke-dasharray:3 2.5}.plan-sketch .dim path{fill:none;stroke:var(--blue);stroke-width:.9}.plan-sketch .dim .ext{stroke-width:.6;stroke-opacity:.6}.plan-sketch .dim .tick{stroke-width:1.4}.plan-sketch .dim text{fill:var(--blue);font-size:10px;font-weight:500;text-anchor:middle}.plan-sketch .label text{fill:#15181c;font-family:IBM Plex Sans,sans-serif;font-size:9.5px;font-weight:500;text-anchor:middle}.plan-sketch .label .area{fill:#646c75;font-family:IBM Plex Mono,monospace;font-size:8.5px;font-weight:400}.auth-cartouche{display:grid;grid-template-columns:repeat(3,1fr);margin:0;border:1px solid var(--text);background:var(--panel)}.auth-cartouche>div{padding:7px 10px 8px;border-left:1px solid var(--line);min-width:0}.auth-cartouche>div.wide{grid-column:1 / -1;border-left:0;border-bottom:1px solid var(--line)}.auth-cartouche>div:nth-child(2){border-left:0}.auth-cartouche dt{font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.auth-cartouche dd{margin:2px 0 0;color:var(--text);font-size:12px;line-height:1.4}.auth-cartouche dd.num{font-family:IBM Plex Mono,monospace}.auth-form{display:flex;flex-direction:column;gap:14px;padding:32px 32px 24px;min-width:0}.auth-form h2{margin:6px 0 2px;font-size:22px;font-weight:500;letter-spacing:-.02em}.auth-form p{margin:0;line-height:1.55}.auth-form code,.auth-form pre{font-family:IBM Plex Mono,monospace;font-size:12px}.auth-form code{color:var(--blue)}.auth-form pre{margin:0;padding:10px 12px;background:var(--panel-2);border:1px solid var(--line);color:var(--text);white-space:pre-wrap}.auth-brand-compact{display:none!important}.auth-form .error-banner{margin:0}.auth-seg{display:flex;border-bottom:1px solid var(--line)}.auth-seg button,.auth-seg button:hover:not(:disabled){flex:1;justify-content:center;margin-bottom:-1px;padding:8px 10px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--text-faint)}.auth-seg button:hover:not(:disabled){color:var(--text)}.auth-seg button.active,.auth-seg button.active:hover:not(:disabled){color:var(--text);border-bottom-color:var(--text);font-weight:500}.google-btn{justify-content:center;gap:10px;padding:9px 12px;font-weight:500;font-size:13.5px;background:#fff;border-color:var(--line);color:var(--text)}.auth-divider{display:flex;align-items:center;gap:10px;color:var(--text-faint);font-size:11.5px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line-soft)}.auth-form form{display:flex;flex-direction:column;gap:12px}.auth-field{display:flex;flex-direction:column;gap:5px}.auth-field>span{display:flex;justify-content:space-between;gap:8px;color:var(--text-dim);font-size:12px}.auth-field em{font-style:normal;color:var(--text-faint)}.auth-field input{padding:9px 10px!important;font-size:14px;width:100%}.password-input{position:relative;display:flex}.password-input input{padding-right:34px!important}.password-input button.icon{position:absolute;right:5px;top:50%;transform:translateY(-50%);padding:4px}.auth-submit{justify-content:center;padding:10px 12px;font-size:13.5px}.auth-info{background:#f1f5f9;border:1px solid #c8d5e3;border-left:3px solid var(--blue);color:#1d3d60;padding:10px 12px;line-height:1.45}.auth-links{display:flex;justify-content:center;min-height:18px}.auth-links button.link{color:var(--text-dim);text-decoration:none;font-size:12px}.auth-links button.link:hover,.auth-links button.link:hover:not(:disabled){background:none;color:var(--text);text-decoration:underline}.auth-privacy{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:auto!important;padding-top:10px;border-top:1px solid var(--line-soft);color:var(--text-faint);font-size:11.5px}.auth-message .auth-form{gap:16px}.auth-message .auth-form>button{align-self:flex-start}@media(max-width:760px){.auth-card{grid-template-columns:1fr;width:min(420px,100%)}.auth-visual{display:none}.auth-brand-compact{display:flex!important}.auth-form{padding:24px 20px 20px}}.account-menu{position:relative}.account-trigger{gap:8px;padding:3px 8px 3px 3px;border-radius:999px;max-width:260px}.topbar .account-trigger{padding:3px}.account-trigger.open{background:var(--panel-3)}.account-name{overflow:hidden;text-overflow:ellipsis;color:var(--text-dim)}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;object-fit:cover}.avatar.initials{background:linear-gradient(135deg,var(--accent),#d98a2b);color:var(--accent-ink);font-weight:600;letter-spacing:.02em}.account-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:1200;width:280px;padding:14px;display:flex;flex-direction:column;gap:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 36px #0000008c}.account-id{display:flex;align-items:center;gap:10px;min-width:0}.account-id>div{display:flex;flex-direction:column;gap:2px;min-width:0}.account-id strong,.account-id span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-id strong{font-size:14px}.account-popover dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;padding:10px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);font-size:12px}.account-popover dt{color:var(--text-faint)}.account-popover dd{margin:0;color:var(--text-dim);text-align:right}.account-logout{justify-content:center}.account-admin{display:flex;align-items:center;justify-content:center;gap:6px;padding:5px 10px;border:1px solid var(--line);border-radius:var(--radius);color:var(--text);text-decoration:none}.account-admin:hover{background:var(--hover-bg, var(--panel-3));border-color:var(--hover-line, var(--line))}.home-top{display:flex;align-items:center;justify-content:space-between;gap:16px}.impersonation-shell{height:100%;display:flex;flex-direction:column}.impersonation-body{position:relative;flex:1;min-height:0}.impersonation-banner{flex:none;display:flex;align-items:center;gap:12px;min-height:34px;padding:4px 8px 4px 0;background:#15181c;color:#f3f4f5;border-bottom:2px solid #235a91;font-size:12.5px}.impersonation-tag{align-self:stretch;display:flex;align-items:center;padding:0 12px;background:#235a91;color:#fff;font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}.impersonation-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.impersonation-mail,.impersonation-by{color:#a3a9b0}button.impersonation-leave{flex:none;padding:4px 10px;background:#fff;border:1px solid #fff;border-radius:2px;color:#15181c;font-weight:500}button.impersonation-leave:hover:not(:disabled){background:#e4e6e9;border-color:#e4e6e9}@media(max-width:760px){.impersonation-by{display:none}}.ctx-menu{position:fixed;z-index:1100;min-width:230px;max-width:320px;padding:5px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-pop);font-size:12.5px}.ctx-title{padding:4px 8px 6px;font-size:11px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctx-item{width:100%;display:flex;align-items:center;gap:8px;padding:5px 8px;background:transparent;border:1px solid transparent;border-radius:5px;text-align:left}.ctx-item:hover:not(:disabled),.ctx-item:focus-visible{outline:none;background:var(--panel-3);border-color:transparent}.ctx-item.danger{color:var(--danger)}.ctx-icon{width:16px;display:inline-flex;justify-content:center;color:var(--text-dim)}.ctx-item.danger .ctx-icon{color:var(--danger)}.ctx-label{flex:1}.ctx-hint{font-size:11px;color:var(--text-faint);font-family:IBM Plex Mono,monospace}.ctx-sep{height:1px;margin:4px 2px;background:var(--line)}.ctx-more{color:var(--text-faint);flex-shrink:0}.ctx-item.open{background:var(--panel-3)}.ctx-sub{min-width:220px}.ctx-note{padding:2px 8px 6px;font-size:11.5px;line-height:1.4;color:var(--text-dim);white-space:normal}.wt-panel{min-height:100%}.wt-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.wt-help{margin:0 0 8px}.wt-tree{margin:4px -12px 0;min-height:0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.wt-tree svg.thumb-paper,.wt-tree .thumb-paper{flex:none;display:block}.wt-rename{width:100%;padding:2px 6px!important}.wt-detail{margin-top:12px;display:flex;flex-direction:column;gap:8px}.wt-detail-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.wt-detail-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wall-section{display:block;height:auto}.wt-backdrop{position:fixed;inset:0;z-index:900;display:grid;place-items:center;background:#15181c52}.wt-dialog{width:min(900px,96vw);max-height:92vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 28px 60px -20px #15181c66}.wt-dialog-head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--line);color:var(--accent);cursor:move;-webkit-user-select:none;user-select:none}.wt-dialog-head strong{flex:1;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wt-dialog-body{flex:1;min-height:0;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.wt-top{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1.25fr);gap:16px;align-items:start}.wt-meta{display:flex;flex-direction:column;gap:8px}.wt-meta .field{grid-template-columns:90px 1fr}.wt-preview{min-width:0}.wt-layers-head{display:flex;align-items:center;gap:10px;padding-top:4px;border-top:1px solid var(--line-soft)}.wt-layers-head h4{margin:8px 0;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.wt-layers-head .spacer,.wt-dialog-foot .spacer{flex:1}.wt-layers{position:relative;display:flex;flex-direction:column;gap:4px}.wt-layer{display:grid;grid-template-columns:22px 16px 30px minmax(120px,1fr) 82px minmax(110px,150px) minmax(110px,170px) auto;align-items:center;gap:7px;padding:4px 6px;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:6px}.wt-layer.dragging{position:relative;z-index:3;background:var(--panel-3);border-color:var(--accent);box-shadow:var(--shadow-pop)}.wt-layer input,.wt-layer select{min-width:0;padding:4px 6px}.wt-grip{cursor:grab;touch-action:none;border-radius:4px}.wt-grip:focus-visible{outline:1px solid var(--accent)}body.wt-dragging,body.wt-dragging *{cursor:grabbing!important;-webkit-user-select:none;user-select:none}.wt-index{font-size:11px;color:var(--text-faint);font-family:IBM Plex Mono,monospace;text-align:right}.wt-color{position:relative;display:inline-flex;cursor:pointer}.wt-color input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;padding:0!important}.wt-mm{display:flex;align-items:center;gap:4px}.wt-mm input{width:100%;text-align:right;font-family:IBM Plex Mono,monospace}.wt-mm em{font-style:normal;font-size:11px;color:var(--text-faint)}.wt-row-actions{display:flex;gap:1px}.wt-insert{position:absolute;left:0;right:0;height:3px;margin-top:-2px;background:var(--accent);border-radius:2px;box-shadow:0 0 0 2px #15181c26;pointer-events:none;z-index:4}.wt-dialog-foot{flex:none;display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--line)}@media(max-width:760px){.wt-top{grid-template-columns:1fr}.wt-layer{grid-template-columns:22px 16px 30px 1fr 82px}.wt-layer select{grid-column:span 2}}.home{height:100%;overflow:auto;background:var(--bg)}.home-wrap{width:100%;max-width:1120px;margin:0 auto;padding:0 24px}.home-topbar{position:sticky;top:0;z-index:20;background:#fffffff5;border-bottom:1px solid var(--line-soft)}.home-top{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px}.home .brand{display:flex;align-items:center;gap:10px;margin:0;color:var(--text);font-weight:600;font-size:15px;letter-spacing:-.01em}.home .brand svg{flex:none}.home-main{padding-top:40px;padding-bottom:64px}.home-head h1{margin:0;font-size:28px;font-weight:500;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-head p{margin:8px 0 0;max-width:640px;color:var(--text-dim);font-size:13.5px;line-height:1.55}.home-create{display:flex;gap:8px;margin:28px 0 36px;padding:12px;background:var(--panel);border:1px solid var(--line)}.home-create input{flex:1;min-width:0;padding:9px 12px;font-size:14px}.home-create button{padding:8px 14px}.home-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;padding-bottom:10px;border-bottom:1px solid var(--line)}.home-bar-end{display:flex;align-items:center;gap:14px;margin-left:auto}.home-count{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:2px;min-width:0;margin:0;padding:0;list-style:none}.crumbs li{display:flex;align-items:center;gap:2px;min-width:0}.crumb-sep{color:var(--text-faint);flex-shrink:0}.home button.crumb{border-radius:var(--radius)}.home button.crumb.drop,.home button.crumb.drop:hover:not(:disabled){background:var(--panel);border-color:var(--text)}.folder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:24px}.folder-card{display:flex;align-items:center;gap:12px;padding:12px 14px;color:var(--text-dim);background:var(--panel);border:1px solid var(--line);cursor:pointer}.folder-card svg{flex-shrink:0}.folder-card .meta{flex:1;min-width:0;color:var(--text)}.folder-card h3{margin:0 0 2px;font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.folder-card .muted{font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.folder-card.drop{background:var(--panel-2);border-color:var(--text);color:var(--text)}.home-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.project-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:border-color .12s,box-shadow .12s}.project-card .thumb{position:relative;aspect-ratio:16 / 10;display:grid;place-items:center;overflow:hidden;color:#b8bec5;background:#f4f5f6;border-bottom:1px solid var(--line-soft)}.project-card .thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.project-card .meta{padding:10px 12px 9px;min-width:0}.project-card h3{margin:0;font-size:14.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-rename{width:100%;margin:-3px 0;padding:2px 6px;font-size:14px}.card-cartouche{display:grid;grid-template-columns:1fr auto;margin:0;border-top:1px solid var(--line-soft)}.card-cartouche>div{min-width:0;padding:6px 12px 7px}.card-cartouche>div+div{min-width:64px;border-left:1px solid var(--line-soft)}.card-cartouche dt{font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.card-cartouche dd{margin:1px 0 0;font-family:IBM Plex Mono,monospace;font-size:12px;color:var(--text-dim);white-space:nowrap}.folder-card:hover,.project-card:hover{border-color:var(--hover-line)}.project-card:hover{box-shadow:0 16px 32px -24px #15181c66}.folder-card:focus-visible,.project-card:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.folder-card.dragging,.project-card.dragging{opacity:.45}.home-bar{flex-wrap:wrap}.home-bar-end{flex-wrap:wrap;justify-content:flex-end}.home-sort{display:flex;align-items:center;gap:8px;color:var(--text-faint);font-size:12px;white-space:nowrap}.home-sort select{padding:5px 8px;background:var(--panel);color:var(--text)}.home-views{display:flex}.home-views button{padding:6px 8px;color:var(--text-faint);background:var(--panel);border-radius:0}.home-views button+button{margin-left:-1px}.home-views button.active,.home-views button.active:hover:not(:disabled){position:relative;color:#fff;background:var(--text);border-color:var(--text)}.ptree{--ptree-cols: minmax(0, 1fr) 128px 128px 52px;background:var(--panel);border:1px solid var(--line)}.ptree-head,.ptree-row{display:grid;grid-template-columns:var(--ptree-cols);align-items:center;column-gap:12px;padding:0 12px}.ptree-head{min-height:34px;border-bottom:1px solid var(--line);background:var(--panel-2)}.ptree-head button,.ptree-head span{justify-self:start;padding:0;font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);background:none;border:0;border-radius:0}.ptree-head button:hover:not(:disabled){color:var(--text);background:none}.ptree-head button.active{color:var(--text)}.ptree-head .rev{justify-self:end}.ptree-row{min-height:44px;border-bottom:1px solid var(--line-soft);cursor:pointer}.ptree-row:last-child{border-bottom:0}.ptree-row:hover{background:var(--panel-2)}.ptree-row:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.ptree-row.drop{background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--text)}.ptree-row.dragging{opacity:.45}.ptree-row.empty{min-height:32px;cursor:default;color:var(--text-faint);font-size:12px}.ptree-row.empty:hover{background:none}.ptree-row.empty .ptree-name{padding-left:calc(var(--depth, 0) * 22px + 22px)}.ptree-name{display:flex;align-items:center;gap:8px;min-width:0;padding:5px 0 5px calc(var(--depth, 0) * 22px)}.ptree-name h3{margin:0;font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptree-row.folder .ptree-name h3{font-weight:600}.ptree-chevron{flex:none;width:14px;color:var(--text-faint);transition:transform .12s}.ptree-chevron.open{transform:rotate(90deg)}.ptree-thumb{position:relative;flex:none;display:grid;place-items:center;width:54px;height:34px;overflow:hidden;color:var(--text-dim)}.ptree-row.project .ptree-thumb{color:#b8bec5;background:#f4f5f6;border:1px solid var(--line-soft)}.ptree-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.ptree-cell{font-family:IBM Plex Mono,monospace;font-size:11.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptree-cell.summary{grid-column:span 2;font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.ptree-cell.rev{text-align:right}@media(max-width:760px){.ptree{--ptree-cols: minmax(0, 1fr) 118px 40px}.ptree-head>:nth-child(3),.ptree-row>:nth-child(3){display:none}}@media(max-width:640px){.home-wrap{padding:0 16px}.home-main{padding-top:28px}.home-create{flex-wrap:wrap}.home-create input{flex-basis:100%}.home-count{display:none}}.picker-trigger{display:inline-flex;align-items:center;gap:7px;min-width:0;max-width:100%;padding:3px 7px 3px 4px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);text-align:left;font-size:12.5px}.picker-trigger:hover:not(:disabled){background:var(--panel-2)}.picker-trigger.open,.picker-trigger:focus-visible{outline:none;border-color:var(--accent)}.picker-trigger.compact{height:24px;padding:1px 6px 1px 3px;font-size:12px;max-width:340px;flex-shrink:0}.picker-trigger-thumb{display:inline-flex;flex:none}.picker-trigger-thumb svg{height:22px;width:auto;display:block}.picker-trigger.compact .picker-trigger-thumb svg{height:18px}.picker-trigger-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-chevron{flex:none;color:var(--text-dim)}.picker-field .picker-trigger{flex:1;width:100%}.picker-pop{position:fixed;z-index:1000;display:flex;flex-direction:column;min-height:0;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-pop);overflow:hidden;font-size:12.5px;color:var(--text)}.picker-search{flex:none;display:flex;align-items:center;gap:7px;padding:0 10px;border-bottom:1px solid var(--line);color:var(--text-dim)}.picker-search input{flex:1;min-width:0;border:none!important;background:transparent!important;padding:9px 0!important}.picker-count{font-size:10.5px;color:var(--text-faint);font-family:IBM Plex Mono,monospace}.picker-list{flex:1;min-height:0;overflow:auto;padding:4px;overscroll-behavior:contain}.picker-group{padding:8px 8px 4px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.picker-opt{display:flex;align-items:center;gap:10px;padding:5px 6px;border-radius:6px;cursor:pointer}.picker-opt.hi{background:var(--panel-3)}.picker-opt.current .picker-label{color:var(--accent)}.picker-thumb{flex:none;display:inline-flex}.picker-thumb svg{display:block}.picker-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.picker-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-label mark{background:#f6e3a6;color:inherit;border-radius:2px}.picker-sub{font-size:11px;color:var(--text-dim);line-height:1.35}.picker-aside{flex:none;font-size:11px;color:var(--text-dim);font-family:IBM Plex Mono,monospace}.picker-check{flex:none;width:14px;display:inline-flex;color:var(--accent)}.picker-empty{padding:14px 10px;color:var(--text-dim);text-align:center}.picker-footer{flex:none;border-top:1px solid var(--line);padding:5px;display:flex;gap:4px}.picker-footer button{flex:1;justify-content:center;font-size:12px}.layer-chips{display:flex;flex-wrap:wrap;gap:2px 0}.layer-chip{white-space:nowrap}.layer-chip em{font-style:normal;font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--text-faint);margin-left:3px}.layer-chip+.layer-chip:before{content:"|";margin:0 5px;color:var(--line)}.thumb-paper{background:var(--paper);border-radius:4px}.thumb-fixture text{display:none}.catalog-filter{padding:10px 12px 0;display:flex;flex-direction:column;gap:6px}.catalog-filter .search-box input{padding:7px 0!important}.catalog-filter-meta{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--text-dim);min-height:16px}.catalog-empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:4px 0;color:var(--text-dim);font-size:12px}.catalog-empty p{margin:0}.catalog-online summary{cursor:pointer;color:var(--text-dim);font-size:12px;padding:2px 0;list-style:none;display:flex;align-items:center;gap:6px}.catalog-online summary::-webkit-details-marker{display:none}.catalog-online[open] summary{margin-bottom:6px}.catalog-online-body{display:flex;flex-direction:column;gap:7px}.generic-item{position:relative}.generic-item .generic-thumb{align-self:stretch;display:flex;justify-content:center;margin-bottom:4px}.generic-item .generic-thumb svg{display:block}.generic-item strong span{font-family:inherit;font-size:inherit;color:inherit}.generic-item mark,.catalog-info mark{background:#f6e3a6;color:inherit;border-radius:2px}.tr{--tr-indent: 14px;display:flex;flex-direction:column;min-height:100%;background:var(--panel);font-size:12.5px}.tr-title{display:flex;align-items:center;gap:8px;padding:10px 12px 8px;font-size:13.5px;font-weight:600}.tr-title span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tr-search{position:relative;margin:0 10px 6px}.tr-search>svg{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.tr-search input{width:100%;padding-left:28px!important;padding-right:26px!important;background:var(--panel)!important}.tr-search button{position:absolute;right:2px;top:50%;transform:translateY(-50%)}.tr-sec{display:flex;align-items:center;gap:6px;min-height:30px;margin-top:6px;padding:0 6px 0 12px;border-top:1px solid var(--line-soft);font-family:IBM Plex Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.tr-sec:first-of-type{margin-top:0}.tr-sec>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tr-sec strong{color:var(--text-dim);font-weight:500}.tr-row{--row-bg: var(--panel);position:relative;display:flex;align-items:center;gap:6px;min-height:26px;padding:0 6px 0 calc(8px + var(--depth, 0) * var(--tr-indent));border-left:2px solid transparent;background:var(--row-bg);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.tr-row:hover{--row-bg: var(--hover-bg)}.tr-row.active{--row-bg: var(--panel-3);border-left-color:var(--text)}.tr-row.selected{--row-bg: #fbefe9;border-left-color:var(--mark)}.tr-row.dim{color:var(--text-faint)}.tr-row.dragging{opacity:.45}.tr-row.drop-inside{box-shadow:inset 0 0 0 1px var(--text)}.tr-row.drop-before{box-shadow:inset 0 2px 0 var(--text)}.tr-row.drop-after{box-shadow:inset 0 -2px 0 var(--text)}.tr-row.strong{font-weight:600}.tr-row:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.tr-chev{flex:none;width:14px;color:var(--text-faint);transition:transform .12s}.tr-chev.open{transform:rotate(90deg)}.tr-chev.none{visibility:hidden}.tr-icon{flex:none;color:var(--text-dim)}.tr-swatch{flex:none;width:9px;height:9px;border-radius:1px;box-shadow:inset 0 0 0 1px #15181c26}.tr-thumb{flex:none;width:30px;height:18px;border:1px solid var(--line-soft);background-size:cover;background-position:center}.tr-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tr-name input{width:100%;padding:1px 4px!important}.tr-sub{color:var(--text-faint)}.tr-meta{flex:none;font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--text-faint);white-space:nowrap}.tr-badge{flex:none;padding:0 4px;border:1px solid var(--line);font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim)}.tr-actions{position:absolute;right:2px;top:0;bottom:0;display:none;align-items:center;padding-left:14px;background:linear-gradient(90deg,transparent,var(--row-bg) 12px)}.tr-row:hover .tr-actions,.tr-row:focus-within .tr-actions{display:flex}.tr-actions button.icon{padding:3px;color:var(--text-dim)}.tr-actions button.icon:hover{color:var(--text);background:var(--panel-3)}.tr-state{flex:none;display:inline-flex;color:var(--text-faint)}.tr mark{background:#f6e3a6;color:inherit}.tr-group{padding:6px 8px 2px calc(8px + var(--depth, 0) * var(--tr-indent) + 20px);font-family:IBM Plex Mono,monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.tr-empty{padding:4px 8px 6px calc(8px + var(--depth, 0) * var(--tr-indent) + 20px);font-size:11.5px;color:var(--text-faint)}.tr-more{display:flex;align-items:center;gap:6px;min-height:26px;padding:0 8px 0 10px;font-size:11.5px;color:var(--text-faint);cursor:pointer;-webkit-user-select:none;user-select:none}.tr-more:hover{color:var(--text);background:var(--hover-bg)}.tr-spacer{flex:1;min-height:12px}.cvar{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}.cvar-main{display:flex;gap:10px;align-items:stretch}.cvar-plane{position:relative;border:1px solid var(--line);border-radius:6px;overflow:hidden;flex:none}.cvar-plane canvas,.cvar-plane svg{position:absolute;inset:0;width:100%;height:100%}.cvar-plane canvas{image-rendering:auto}.cvar-plane svg{touch-action:none}.cvar-axes line{stroke:#0000002e;stroke-width:1;stroke-dasharray:3 3}.cvar-poly{fill:#ffffff38;stroke:#1d1d1b;stroke-width:1.4;cursor:move}.cvar-vertex{stroke:#fff;stroke-width:2;cursor:grab;filter:drop-shadow(0 0 1px rgba(0,0,0,.7))}.cvar-mid{cursor:copy}.cvar-mid circle{fill:#ffffffe6;stroke:#1d1d1b;stroke-width:1}.cvar-mid path{stroke:#1d1d1b;stroke-width:1.2}.cvar-center{stroke:#1d1d1b;stroke-width:1;pointer-events:none}.cvar-zoom{position:absolute;right:4px;bottom:4px;display:flex;gap:2px}.cvar-zoom button{background:#ffffffd9;padding:2px}.cvar-light{display:flex;flex-direction:column;align-items:center;gap:4px;width:34px}.cvar-bar{position:relative;flex:1;width:16px;border-radius:4px;border:1px solid var(--line);touch-action:none}.cvar-range{position:absolute;left:-3px;right:-3px;border:1.5px solid #1d1d1b;border-radius:3px;pointer-events:none}.cvar-knob{position:absolute;left:-5px;right:-5px;height:8px;margin-top:-4px;background:#fff;border:1.5px solid #1d1d1b;border-radius:3px;cursor:ns-resize}.cvar-light-label{font-size:10px;font-family:IBM Plex Mono,monospace;color:var(--text-dim);white-space:nowrap}.cvar-presets{display:flex;flex-wrap:wrap;gap:4px}.cvar-presets button{font-size:11px;padding:2px 8px;border:1px solid var(--line);border-radius:10px}.cvar-indicator{display:flex;flex-direction:column;gap:3px;font-size:11px}.cvar-gauge{height:5px;border-radius:3px;background:linear-gradient(90deg,#cfe3d1,#f0d9a8,#e9a98f);position:relative;overflow:hidden}.cvar-gauge>div{height:100%;border-right:2px solid #1d1d1b;background:#fff0}.cvar-samples{display:flex;flex-wrap:wrap;gap:2px;align-items:center}.cvar-samples span{width:14px;height:14px;border-radius:2px;box-shadow:inset 0 0 0 1px #0000001f}.roof-sides-hint{font-size:11px;margin-bottom:6px}.roof-sides{width:100%;border-collapse:collapse;font-size:11.5px}.roof-sides th{font-weight:500;color:var(--text-faint);text-align:left;padding:0 3px 3px}.roof-sides td{padding:2px 3px;vertical-align:middle}.roof-sides tr.own td.len{color:var(--accent)}.roof-sides td.len{font-family:IBM Plex Mono,monospace;color:var(--text-dim);white-space:nowrap}.roof-sides select{width:100%;min-width:0;padding:2px 4px;font-size:11.5px}.roof-side-num{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;border:1px solid var(--mark);color:var(--mark);font-size:10px;font-weight:700}input.roof-mini{width:46px;padding:2px 4px;font-size:11.5px;font-family:IBM Plex Mono,monospace}input.roof-mini.dim{color:var(--text-dim)}.roof-sides button.icon{padding:2px 4px}.roof-tile-head{display:flex;gap:8px;align-items:flex-start;margin:4px 0}.roof-tile-preview{width:64px;height:64px;flex:none;border-radius:4px;background-size:cover;box-shadow:inset 0 0 0 1px #00000026}.roof-tile-swatches{display:flex;flex-wrap:wrap;gap:4px}.roof-tile-swatches button{width:20px;height:20px;border-radius:50%;padding:0;border:2px solid transparent;box-shadow:0 0 0 1px #0003}.roof-tile-swatches button.on{border-color:#fff;box-shadow:0 0 0 2px var(--accent, #d9622b)}.roof-tile-swatches input[type=color]{width:24px;height:22px;padding:0;border:none;background:none}.roof-tile-info{font-size:11px;margin-bottom:4px}.roof-tile-var{margin-top:4px}.modal.stair-editor{width:min(1320px,97vw);height:min(900px,94vh);max-height:94vh}.stair-header-actions{display:flex;align-items:center;gap:10px}.stair-verdict{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius);font-size:12px;border:1px solid transparent}.stair-verdict.ok{color:var(--ok);border-color:#b9d3c1;background:#eef5f0}.stair-verdict.warn{color:var(--warn);border-color:#e3cf9c;background:#fbf5e6}.stair-verdict.error{color:var(--danger);border-color:#e3b9b4;background:#fbf1f0}.stair-body{flex:1;min-height:0;display:grid;grid-template-columns:330px 1fr}.stair-form{overflow:auto;padding:12px 14px 20px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:14px}.stair-group h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.stair-group-body{display:flex;flex-direction:column;gap:7px}.stair-group .field{grid-template-columns:138px 1fr}.stair-shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.stair-shapes button{flex-direction:column;justify-content:flex-start;gap:4px;padding:6px 4px 5px;white-space:normal;text-align:center;font-size:10.5px;line-height:1.2;color:var(--text-dim);background:var(--panel-2)}.stair-shapes button.active{border-color:var(--accent);color:var(--text);background:var(--panel-3)}.stair-shapes .thumb-paper{border-radius:4px}.stair-seg{display:flex}.stair-seg button{flex:1;justify-content:center;font-size:12px}.stair-tune{align-self:flex-start}.stair-main{min-width:0;overflow:auto;padding:12px 16px 18px;display:flex;flex-direction:column;gap:12px}.stair-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.stair-stats>div{display:flex;flex-direction:column;gap:2px;padding:7px 10px;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:var(--radius);min-width:0}.stair-stats span{font-size:11px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stair-stats strong{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}.stair-views{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stair-pane{margin:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--paper)}.stair-pane.wide{grid-column:1 / -1}.stair-pane figcaption{padding:5px 10px;font-size:11px;color:#5b6570;background:#f1efe9;border-bottom:1px solid #e2ded5}.stair-pane-canvas{height:300px;position:relative}.stair-pane.wide .stair-pane-canvas{height:250px}.stair-pane-canvas svg{display:block;font-family:IBM Plex Mono,ui-monospace,monospace}.stair-pane .dim line{stroke:#c25f2c;stroke-width:1;vector-effect:non-scaling-stroke}.stair-pane .dim text{fill:#c25f2c}.stair-pane .stair-tag{fill:#5b6570;font-style:italic}.stair-opening{fill:#d9622b12;stroke:#d9622b;stroke-width:1.6;stroke-dasharray:7 4}.stair-opening-label{fill:#d9622b;opacity:.8}.stair-profile{fill:#e8d8c3;stroke:#3b4148;stroke-width:1.2}.stair-pitch{fill:none;stroke:#3f7fa6;stroke-width:1;stroke-dasharray:6 4}.stair-ceiling{stroke:#6b737b;stroke-width:1;stroke-dasharray:8 5}.stair-num{fill:#5b6570;opacity:.8}.stair-headroom line{stroke-width:1.4}.stair-headroom.ok line{stroke:#2e9d5b}.stair-headroom.ok text{fill:#2e9d5b}.stair-headroom.warn line{stroke:#c98a12}.stair-headroom.warn text{fill:#c98a12}.stair-headroom.error line{stroke:#d0453a}.stair-headroom.error text{fill:#d0453a}.stair-warn{fill:#d0453a}.stair-checks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:6px}.stair-checks li{display:flex;gap:8px;align-items:flex-start;padding:7px 10px;border-radius:var(--radius);background:var(--panel-2);border:1px solid var(--line-soft)}.stair-check-icon{flex:none;display:inline-flex;margin-top:1px}.stair-checks li.ok .stair-check-icon{color:var(--ok)}.stair-checks li.warn .stair-check-icon{color:var(--warn)}.stair-checks li.error{border-color:#e3b9b4}.stair-checks li.error .stair-check-icon{color:var(--danger)}.stair-check-text{display:flex;flex-direction:column;gap:2px;min-width:0}.stair-check-text strong{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;font-weight:500}.stair-check-text em{font-style:normal;font-variant-numeric:tabular-nums;color:var(--text)}.stair-check-text>span{font-size:11.5px;color:var(--text-faint);line-height:1.4}.stair-note{margin:0}.stair-props-summary{display:flex;align-items:center;gap:8px}.stair-open{justify-content:center}@media(max-width:900px){.stair-body{grid-template-columns:1fr;overflow:auto}.stair-form,.stair-main{overflow:visible}.stair-form{border-right:none;border-bottom:1px solid var(--line)}.stair-views{grid-template-columns:1fr}.stair-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}.dock{position:relative;display:flex;background:var(--panel);min-width:0;min-height:0}.dock-left,.dock-right{flex:0 1 auto;min-width:170px}.dock-left{border-right:1px solid var(--line)}.dock-right{border-left:1px solid var(--line)}.dock-bottom{flex:0 1 auto;min-height:110px;border-top:1px solid var(--line)}.dock-groups{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.dock-bottom .dock-groups{flex-direction:row}.dock-splitter{position:absolute;z-index:6;transition:background .12s}.dock-splitter-left,.dock-splitter-right{top:0;bottom:0;width:7px;cursor:col-resize}.dock-splitter-left{right:-4px}.dock-splitter-right{left:-4px}.dock-splitter-bottom{left:0;right:0;top:-4px;height:7px;cursor:row-resize}.dock-splitter:hover,.group-splitter:hover{background:var(--text-faint)}.group-splitter{flex:none;height:5px;cursor:row-resize;background:var(--line-soft);transition:background .12s}.dock-bottom .group-splitter{height:auto;width:5px;cursor:col-resize}.dock-group{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.dock-left .dock-group:not(.min),.dock-right .dock-group:not(.min){min-height:110px}.dock-bottom .dock-group:not(.min){min-width:200px}.dock-group.min .dock-tabs{border-bottom-color:var(--line-soft)}.dock-group.min .dock-tab.active{box-shadow:none;background:transparent}.dock-bottom .dock-group.min{width:34px}.dock-bottom .dock-group.min .dock-tabs{writing-mode:vertical-rl;height:100%;width:34px;border-bottom:none;border-right:1px solid var(--line-soft)}.dock-bottom .dock-group.min .dock-tab{padding:9px 0 3px;border-right:none;border-bottom:1px solid var(--line-soft)}.dock-bottom .dock-group.min .dock-btn{margin:0 0 4px}.group-splitter.inert{cursor:default;height:1px;background:var(--line)}.dock-bottom .group-splitter.inert{width:1px}.group-splitter.inert:hover{background:var(--line)}.dock-tabs{flex:none;display:flex;align-items:stretch;height:31px;background:var(--bg);border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.dock-tab{display:flex;align-items:center;gap:5px;padding:0 3px 0 9px;font-size:12px;color:var(--text-dim);border-right:1px solid var(--line-soft);cursor:grab;-webkit-user-select:none;user-select:none;white-space:nowrap}.dock-tab:hover{color:var(--text);background:var(--panel-2)}.dock-tab.active{color:var(--text);background:var(--panel);box-shadow:inset 0 -2px 0 var(--accent)}.dock-tab button.icon{opacity:0;padding:2px;border-radius:3px}.dock-tab:hover button.icon,.dock-tab.active button.icon{opacity:.8}.dock-tab button.icon:hover{background:var(--panel-3);opacity:1}.dock-tabs-fill{flex:1}.dock-btn{align-self:center;flex:none;margin-right:2px;padding:3px!important;border-radius:4px}.dock-btn:hover{background:var(--panel-3)}.dock-tabs>.dock-btn:last-child{margin-right:5px}.dock-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.dock-body>.project-tree{flex:1;overflow:auto}.dock-edge{position:absolute;z-index:30;display:flex;align-items:center;justify-content:center;background:#15181c08;border:1px dashed var(--hover-line);color:var(--accent);font-size:11px}.dock-edge-left,.dock-edge-right{top:66px;bottom:70px;width:64px}.dock-edge-left{left:0}.dock-edge-right{right:0}.dock-edge-left span,.dock-edge-right span{writing-mode:vertical-rl}.dock-edge-left span{transform:rotate(180deg)}.dock-edge-bottom{left:70px;right:70px;bottom:0;height:64px}.dock-edge-left.thin,.dock-edge-right.thin{width:26px}.dock-edge-bottom.thin{height:26px}.dock-edge.thin span{display:none}.dock-edge span{pointer-events:none;background:#15181cdb;padding:4px 8px;border-radius:4px}.dock-overlay{position:fixed;inset:0;z-index:70;pointer-events:none}.dock-drop-preview{position:fixed;background:#15181c14;border:2px solid var(--accent);border-radius:4px;transition:left .08s,top .08s,width .08s,height .08s}.dock-drop-preview.float{background:#235a911a;border:2px dashed var(--blue);border-radius:8px}.dock-ghost-hint{color:var(--text-faint);font-size:11px}.dock-ghost{position:fixed;display:flex;align-items:center;gap:6px;padding:4px 9px;font-size:12px;background:var(--panel-3);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-pop)}body.dock-dragging,body.dock-dragging *{cursor:grabbing!important;-webkit-user-select:none;user-select:none}body.resizing-x,body.resizing-x *{cursor:col-resize!important;-webkit-user-select:none;user-select:none}body.resizing-y,body.resizing-y *{cursor:row-resize!important;-webkit-user-select:none;user-select:none}body.resizing-nwse,body.resizing-nwse *{cursor:nwse-resize!important;-webkit-user-select:none;user-select:none}body.resizing-nesw,body.resizing-nesw *{cursor:nesw-resize!important;-webkit-user-select:none;user-select:none}.float-win{position:fixed;display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 22px 48px -18px #15181c59,0 0 0 1px #15181c0a;overflow:hidden}.float-win.moving{pointer-events:none;opacity:.88}.float-head{cursor:grab;background:var(--panel-2)}.float-head .dock-tab.active{background:var(--panel)}.float-rs{position:absolute;z-index:3}.rs-n,.rs-s{left:10px;right:10px;height:7px;cursor:ns-resize}.rs-n{top:-3px}.rs-s{bottom:-3px}.rs-w,.rs-e{top:10px;bottom:10px;width:7px;cursor:ew-resize}.rs-w{left:-3px}.rs-e{right:-3px}.rs-nw,.rs-ne,.rs-sw,.rs-se{width:14px;height:14px}.rs-nw{left:-3px;top:-3px;cursor:nwse-resize}.rs-se{right:-3px;bottom:-3px;cursor:nwse-resize}.rs-ne{right:-3px;top:-3px;cursor:nesw-resize}.rs-sw{left:-3px;bottom:-3px;cursor:nesw-resize}.layout-controls{position:relative;display:flex;align-items:center;gap:2px}.layout-controls>button.on{color:var(--accent)}.menu{position:absolute;top:calc(100% + 6px);right:0;width:280px;z-index:50;padding:6px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-pop)}.menu-title{padding:4px 8px 6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.menu-item{width:100%;justify-content:flex-start;gap:8px;padding:5px 8px;background:transparent;border-color:transparent}.menu-item:hover:not(:disabled){background:var(--panel-3);border-color:transparent}.menu-check{width:14px;display:inline-flex;color:var(--accent)}.menu-label{flex:1;text-align:left}.menu-hint{font-size:11px;color:var(--text-faint)}.menu-sep{height:1px;margin:6px 0;background:var(--line)}.menu-note{margin:4px 8px 2px;font-size:11.5px;line-height:1.4;color:var(--text-dim);white-space:normal}.modal:has(.export-dialog){width:min(1180px,96vw);height:min(780px,90vh);max-height:90vh}.modal:has(.export-dialog) .modal-body{flex:1;min-height:0;display:flex}.export-dialog{flex:1;min-height:0;display:grid;grid-template-columns:300px 1fr;gap:16px}.export-options{display:flex;flex-direction:column;gap:14px;overflow:auto;padding-right:4px}.export-group h4{margin:0 0 6px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.export-group>.field{margin-bottom:6px}.export-group-head{display:flex;align-items:center;justify-content:space-between;gap:6px}.export-group-head h4{margin:0}.export-quick{display:flex;gap:2px}.export-quick button{padding:2px 6px;font-size:11px}.export-layers{list-style:none;margin:6px 0 0;padding:0;border:1px solid var(--line-soft);border-radius:var(--radius)}.export-layers li+li{border-top:1px solid var(--line-soft)}.export-layers label{display:flex;align-items:center;gap:8px;padding:5px 8px;cursor:pointer}.export-layers label:hover{background:var(--panel-2)}.export-layers label.empty .name{color:var(--text-faint)}.export-layers .dot{width:9px;height:9px;border-radius:50%;flex:none}.export-layers .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.export-layers .count{color:var(--text-faint);font-size:11px;font-variant-numeric:tabular-nums}.export-checks{display:flex;flex-direction:column;gap:5px}.export-checks label{display:flex;align-items:center;gap:7px;cursor:pointer}.export-preview-col{display:flex;flex-direction:column;gap:10px;min-width:0;min-height:0}.export-preview{position:relative;flex:1;min-height:0;display:grid;place-items:center;border-radius:var(--radius);background:repeating-conic-gradient(var(--panel-2) 0 25%,var(--panel) 0 50%) 0 0 / 18px 18px;border:1px solid var(--line-soft)}.export-preview svg{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);filter:drop-shadow(0 2px 10px rgba(0,0,0,.45))}.export-info{font-size:12px;color:var(--text-dim);min-height:1.4em}.export-info strong{color:var(--text);font-weight:600}.export-info strong.warn{color:var(--danger)}.export-actions{display:flex;gap:8px;align-items:center}.export-actions .spacer{flex:1}@media(max-width:760px){.modal:has(.export-dialog){height:92vh}.export-dialog{grid-template-columns:1fr;grid-template-rows:auto minmax(260px,1fr);overflow:auto}.export-options{overflow:visible}}.shared{height:100%;display:flex;flex-direction:column;background:#f3f4f5}.shared-top{display:flex;align-items:center;gap:18px;min-height:56px;padding:0 20px;background:#fff;border-bottom:1px solid var(--line-soft)}.shared .brand{display:flex;align-items:center;gap:10px;flex:none;font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--text)}.shared-title{display:flex;align-items:baseline;gap:12px;min-width:0;padding-left:18px;border-left:1px solid var(--line-soft)}.shared-title h1{margin:0;font-size:16px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shared-title span{flex:none;font-size:12.5px;color:var(--text-faint)}.shared-badge{display:inline-flex;align-items:center;gap:6px;flex:none;margin-left:auto;padding:4px 10px;font-size:12.5px;color:var(--text-dim);border:1px solid var(--line)}.shared-tabs{display:flex;gap:2px;padding:0 14px;overflow-x:auto;background:#fff;border-bottom:1px solid var(--line)}.shared-tabs button{flex:none;padding:9px 12px 8px;color:var(--text-dim);background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0}.shared-tabs button:hover:not(:disabled){color:var(--text);background:var(--panel-2);border-color:transparent;border-bottom-color:var(--line)}.shared-tabs button.active,.shared-tabs button.active:hover:not(:disabled){color:var(--text);border-bottom-color:var(--text)}.shared-view{position:relative;flex:1;min-height:0;background:var(--paper)}.shared-message{max-width:520px;margin:12vh auto 0;padding:0 20px}.shared-message h1{margin:0 0 10px;font-size:24px;font-weight:500;letter-spacing:-.01em}.shared-message p{margin:0;color:var(--text-dim);line-height:1.55}@media(max-width:640px){.shared-top{gap:12px;padding:0 16px}.shared .brand span,.shared-title span{display:none}.shared-title{padding-left:12px}.shared-tabs{padding:0 8px}}.modal:has(.share-dialog){width:min(560px,calc(100vw - 32px))}.share-dialog{display:grid;gap:14px}.share-dialog p{margin:0;line-height:1.55;color:var(--text-dim)}.share-dialog>button{justify-self:start}.share-link{display:flex;gap:8px}.share-link input{flex:1;min-width:0;padding:8px 10px;font-family:IBM Plex Mono,monospace;font-size:12px}.share-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12.5px}.share-actions a{display:inline-flex;align-items:center;gap:6px;color:var(--blue)}.share-off{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:12px;border-top:1px solid var(--line-soft)}.share-off span{flex:1 1 220px;font-size:12.5px;color:var(--text-dim)}.light-ui .modal:has(.share-dialog){border-radius:var(--radius)}:root{--bg: #f3f4f5;--panel: #ffffff;--panel-2: #fafafb;--panel-3: #eceef0;--line: #c9ced4;--line-soft: #e4e6e9;--text: #15181c;--text-dim: #4b525a;--text-faint: #80878f;--accent: #15181c;--accent-ink: #ffffff;--accent-hover: #2b3036;--mark: #d9622b;--mark-soft: rgba(217, 98, 43, .1);--blue: #235a91;--danger: #a8281e;--warn: #8a5a00;--ok: #2f6b45;--hover-bg: #f4f5f6;--hover-line: #9aa1a9;--paper: #fbfaf7;--radius: 2px;--shadow-pop: 0 18px 40px -16px rgba(21, 24, 28, .28);font-family:IBM Plex Sans,system-ui,sans-serif;font-size:13px;color:var(--text);background:var(--bg);color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button,select,input{font:inherit;color:inherit}button{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--panel-3);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:var(--hover-line, #3d5063);background:var(--hover-bg, #2d3c4c)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover, #f6c565)}button.ghost{background:transparent;border-color:transparent}button.ghost:hover:not(:disabled){background:var(--panel-3)}button.danger{color:var(--danger)}button.small{padding:3px 8px;font-size:12px}button.icon,a.icon{padding:3px;background:transparent;border:none;color:var(--text-dim);display:inline-flex}button.icon:hover,a.icon:hover{color:var(--text);background:var(--panel-3)}button.icon.tiny{font-size:8px;padding:0 2px}button.link{background:none;border:none;padding:0;color:var(--blue);text-decoration:underline}select,input:not([type=checkbox]):not([type=color]):not([type=range]){background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px;min-width:0}select:focus,input:focus{outline:none;border-color:var(--accent)}.muted{color:var(--text-dim)}.small{font-size:11.5px}.faint{opacity:.35}.mono{font-family:IBM Plex Mono,monospace}.error-text{color:var(--danger)}.ok-text{color:var(--ok)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}button.crumb{padding:4px 8px;font-size:14px;color:var(--text-dim);background:transparent;border-color:transparent}button.crumb:hover:not(:disabled){color:var(--text);background:var(--panel-2);border-color:var(--line)}button.crumb.here,button.crumb.here:hover:not(:disabled){color:var(--text);font-weight:600;cursor:default;background:transparent;border-color:transparent}button.crumb.drop,button.crumb.drop:hover:not(:disabled){color:var(--text);background:var(--panel);border-color:var(--text)}.error-banner{background:#fbf1f0;border:1px solid #e3b9b4;border-left:3px solid var(--danger);color:#7a1f17;padding:10px 12px;border-radius:var(--radius);margin:12px 0}.center-message{height:100%;display:grid;place-content:center;gap:12px;color:var(--text-dim)}.editor{height:100%;display:flex;flex-direction:column}.topbar{height:44px;display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--panel);border-bottom:1px solid var(--line)}.topbar .title{display:flex;align-items:baseline;gap:10px;flex:1}.topbar .title strong{font-size:14px}.save-state{font-size:11px;color:var(--ok)}.save-state.dirty{color:var(--accent)}.topbar-actions{display:flex;align-items:center;gap:4px}.sep{width:1px;height:20px;background:var(--line);margin:0 4px}.workspace{flex:1;display:flex;min-height:0}.center-column{flex:1 1 0;min-width:300px;display:flex;flex-direction:column;min-height:0}.center{flex:1;display:flex;flex-direction:column;min-width:0;min-height:160px;position:relative}.view-area{flex:1;position:relative;min-height:0;background:var(--paper)}.empty-view{height:100%;display:grid;place-items:center;color:var(--text-faint)}.tabbar{display:flex;align-items:stretch;background:var(--bg);border-bottom:1px solid var(--line);height:34px;overflow-x:auto}.tab{display:flex;align-items:center;gap:6px;padding:0 6px 0 12px;border-right:1px solid var(--line-soft);color:var(--text-dim);cursor:pointer;white-space:nowrap;max-width:240px}.tab span{overflow:hidden;text-overflow:ellipsis}.tab.active{background:var(--panel);color:var(--text);box-shadow:inset 0 2px 0 var(--accent)}.tab-add{display:flex;align-items:center;padding:0 8px}.tab-add select{padding:3px 6px;font-size:12px;background:transparent;max-width:120px}.tab.dragged{opacity:.45}.panes-area{position:absolute;inset:0}.pane{position:absolute;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.pane-view{flex:1;position:relative;min-height:0}.panes-area:has(>.pane-splitter) .pane:not(.active) .tab.active{box-shadow:inset 0 2px 0 var(--text-faint)}.pane-splitter{position:absolute;z-index:4}.pane-splitter.row{width:7px;transform:translate(-50%);cursor:col-resize}.pane-splitter.col{height:7px;transform:translateY(-50%);cursor:row-resize}.pane-splitter:after{content:"";position:absolute;background:var(--line)}.pane-splitter.row:after{left:3px;top:0;bottom:0;width:1px}.pane-splitter.col:after{top:3px;left:0;right:0;height:1px}.pane-splitter:hover:after{background:var(--accent)}.pane-splitter.row:hover:after{left:2px;width:3px}.pane-splitter.col:hover:after{top:2px;height:3px}.toolbar{display:flex;flex-direction:column;gap:4px;padding:5px 8px;background:var(--panel);border-bottom:1px solid var(--line)}.toolbar-row{display:flex;align-items:center;gap:10px;height:32px;min-width:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin}.toolbar-row .spacer{flex:1}.global-options{display:flex;align-items:center;gap:10px;font-size:12px}.global-options select{padding:3px 6px}.tool-buttons{display:flex;gap:2px;background:var(--bg);padding:2px;border-radius:8px}.tool-buttons button{padding:6px 8px;background:transparent;border:none;color:var(--text-dim)}.tool-buttons button.active{background:var(--accent);color:var(--accent-ink)}.tool-buttons button.quasi{box-shadow:inset 0 0 0 2px var(--accent);color:var(--accent)}.tool-buttons button.active.quasi{color:var(--accent-ink)}.tool-options{gap:8px;font-size:12px;height:28px}.tool-options select{max-width:300px;min-width:110px;flex-shrink:0;padding:3px 6px}label.check{display:inline-flex;align-items:center;gap:5px;color:var(--text-dim);cursor:pointer;white-space:nowrap}.swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0;border:1px solid rgba(0,0,0,.3)}.panel-scroll{flex:1;overflow:auto;padding:10px 12px 30px}.panel-section{margin-bottom:14px;padding-bottom:12px;border-bottom:1px solid var(--line-soft)}.panel-section header{display:flex;align-items:center;justify-content:space-between}.panel-section h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.panel-section-body{display:flex;flex-direction:column;gap:6px}.panel-footer{padding-top:8px}.field{display:grid;grid-template-columns:118px 1fr;align-items:center;gap:8px}.field-label{color:var(--text-dim);font-size:12px}.field-input{display:flex;align-items:center;gap:6px;min-width:0}.field-input input,.field-input select{flex:1;width:100%;padding:4px 7px}.field-input em{font-style:normal;color:var(--text-faint);font-size:11px;width:20px}.field-input.color input{flex:0 0 34px;height:24px;padding:0;border:none;background:none}.field-input.color code{font-size:11px;color:var(--text-dim)}.field.check{display:flex;gap:8px;color:var(--text-dim)}.readout{font-size:12px;color:var(--text-dim);line-height:1.5}.readout strong{color:var(--text)}.button-row,.button-grid{display:flex;flex-wrap:wrap;gap:5px}.button-grid button{font-size:12px;padding:4px 8px}.composition .comp-row{display:flex;align-items:center;gap:8px;padding:2px 0;font-size:12px}.composition .comp-row span:nth-child(2){flex:1}.composition em{color:var(--text-faint);font-style:normal;font-family:IBM Plex Mono,monospace}.constraint-list{list-style:none;margin:0;padding:0}.constraint-list li{display:flex;justify-content:space-between;align-items:center;font-size:12px;padding:2px 0;color:var(--blue)}.constraint-list li.failing{color:var(--danger)}.wall-bands{display:flex;flex-direction:column;gap:6px;margin-top:6px}.wall-bands-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.wall-band{display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--line-soft);border-radius:6px;background:var(--panel-2)}.wall-band-row{display:flex;align-items:center;gap:4px}.wall-band-row select{min-width:0;flex:1;font-size:11.5px}.wall-band-row select:first-of-type{flex:0 0 auto}.wall-band-index{font-size:10.5px;font-family:IBM Plex Mono,monospace;color:var(--text-faint);width:14px}.shortcuts{list-style:none;padding:0;margin:0;font-size:12px;color:var(--text-dim);line-height:1.9}kbd{font-family:IBM Plex Mono,monospace;font-size:10.5px;background:var(--panel-3);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 4px;color:var(--text)}.item-photo{width:100%;max-height:160px;object-fit:contain;background:#fff;border-radius:var(--radius)}.source-link{color:var(--blue);font-size:12px}.closet-columns{display:flex;flex-direction:column;gap:8px;margin-top:6px}.closet-col{background:var(--panel-2);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:5px}.closet-col header{display:flex;justify-content:space-between;font-size:12px;font-weight:600}.catalog-panel{display:flex;flex-direction:column;min-height:0;flex:1}.seg{display:inline-flex;background:var(--bg);border-radius:7px;padding:2px;gap:2px}.seg.full{display:flex;margin:10px 12px 0}.seg.full button{flex:1;justify-content:center}.seg button{background:transparent;border:none;color:var(--text-dim);padding:4px 10px}.seg button.active{background:var(--panel-3);color:var(--text)}.catalog-search{padding:10px 12px;display:flex;flex-direction:column;gap:7px;border-bottom:1px solid var(--line-soft)}.catalog-search>button{justify-content:center}.search-box{display:flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:0 8px;color:var(--text-dim)}.search-box input{flex:1;border:none!important;background:transparent!important;padding:7px 0!important}.sources{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px}.sources select{padding:2px 4px;font-size:11.5px}.job{margin:8px 12px 0;background:var(--panel-2);border-radius:var(--radius);padding:8px;font-size:12px}.job.error{border:1px solid rgba(226,103,90,.5)}.job-head{display:flex;align-items:center;gap:8px}.job-head span{flex:1;color:var(--text-dim)}.progress{height:4px;background:var(--bg);border-radius:2px;margin:6px 0;overflow:hidden}.progress div{height:100%;background:var(--accent);transition:width .3s}.job-log{list-style:none;margin:0;padding:0;max-height:110px;overflow:auto;font-family:IBM Plex Mono,monospace;font-size:10.5px;color:var(--text-dim)}.job-log li.error{color:var(--danger)}.job-log li.warning{color:var(--accent)}.catalog-list{display:flex;flex-direction:column;gap:8px}.catalog-card{display:flex;gap:10px;background:var(--panel-2);border:1px solid var(--line-soft);border-radius:8px;padding:8px;cursor:grab}.catalog-card.incomplete{border-color:#f2b54473}.catalog-thumb{width:64px;height:64px;flex-shrink:0;background:#fff;border-radius:5px;display:grid;place-items:center;overflow:hidden;color:#888;font-size:10px}.catalog-thumb img{width:100%;height:100%;object-fit:contain}.catalog-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.catalog-info h5{margin:0;font-size:12px;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.catalog-meta{display:flex;gap:6px;font-size:11px;color:var(--text-dim)}.badge{background:var(--panel-3);border-radius:4px;padding:0 5px;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}.badge.base{background:transparent;box-shadow:inset 0 0 0 1px var(--blue);color:var(--blue)}.catalog-quota{margin:0;line-height:1.4}.catalog-dims{font-family:IBM Plex Mono,monospace;font-size:11.5px;color:var(--blue)}.catalog-dims.warn{color:var(--accent)}.catalog-actions{display:flex;gap:4px;align-items:center}.catalog-edit{display:flex;flex-direction:column;gap:4px}.catalog-edit .field{grid-template-columns:20px 1fr}.generic-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.generic-item{flex-direction:column;align-items:flex-start;white-space:normal;text-align:left;gap:2px;padding:8px}.generic-item span{color:var(--text-dim);font-size:11px;font-family:IBM Plex Mono,monospace}.paste-html{display:flex;flex-direction:column;gap:6px;background:var(--panel-2);border-radius:var(--radius);padding:8px}.paste-html textarea{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font-family:IBM Plex Mono,monospace;font-size:11px;padding:6px;resize:vertical}.walltype-list{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}.walltype-item{justify-content:flex-start;background:transparent;border-color:transparent;text-align:left}.walltype-item.active{background:var(--panel-3);border-color:var(--line)}.walltype-item span{flex:1;overflow:hidden;text-overflow:ellipsis}.walltype-item em{font-style:normal;font-family:IBM Plex Mono,monospace;color:var(--text-faint);font-size:11px}.mini-stack{display:flex;flex-direction:column;width:14px;height:22px;border-radius:2px;overflow:hidden;border:1px solid #000}.walltype-editor{display:flex;flex-direction:column;gap:6px;margin-top:12px;border-top:1px solid var(--line-soft);padding-top:12px}.wall-preview{display:flex;flex-direction:column;height:90px;border:1.5px solid #000;border-radius:3px;overflow:hidden}.wall-preview div{display:flex;align-items:center;padding-left:6px;color:#222;font-size:10px;font-weight:600;border-bottom:.5px solid rgba(0,0,0,.3);min-height:1px}.wall-preview .hatch-diagonal,.wall-preview .hatch-diagonal-dense{background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.35) 0 1px,transparent 1px 6px)!important}.wall-preview .hatch-insulation{background-image:repeating-radial-gradient(circle at 0 100%,transparent 0 4px,rgba(0,0,0,.3) 4px 5px)!important}.wall-preview .hatch-dots{background-image:radial-gradient(rgba(0,0,0,.35) 1px,transparent 1.5px)!important;background-size:5px 5px!important}.component-editor{background:var(--panel-2);border-radius:var(--radius);padding:7px}.component-editor header{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:12px}.component-editor header strong{flex:1}.component-fields{display:flex;flex-direction:column;gap:4px}.tex-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.seg.small button{padding:3px 7px}.tex-help{margin:6px 0 4px}.tex-tree{min-height:120px;margin:6px -12px 0;padding-bottom:20px;border-top:1px solid var(--line-soft)}.tex-tree .preview.mini{flex:none}.drop-inside{background:#15181c0f!important;outline:1px dashed var(--text)}.rename-input{width:100%;min-width:0;font-size:11.5px;padding:1px 4px}.preview.mini{position:relative;display:block;width:18px;height:18px;flex-shrink:0;border-radius:3px;border:1px solid rgba(0,0,0,.4);overflow:hidden}.material-dialog{display:grid;grid-template-columns:200px 1fr;gap:16px;align-items:start}.material-dialog-side{display:flex;flex-direction:column;gap:8px;position:sticky;top:0}.preview.big{position:relative;display:block;width:100%;aspect-ratio:1;border-radius:6px;border:1px solid rgba(0,0,0,.4);overflow:hidden}@media(max-width:640px){.material-dialog{grid-template-columns:1fr}}.confirm-box{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--danger) 55%,transparent);border-radius:7px;background:color-mix(in srgb,var(--danger) 8%,transparent)}.cropper{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.cropper-stage{position:relative;display:inline-block;max-width:100%;line-height:0;overflow:hidden;border-radius:6px;cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none;background:#fff}.cropper-stage img{display:block;max-width:100%;max-height:58vh;pointer-events:none}.cropper-sel{position:absolute;box-shadow:0 0 0 9999px #15181c73;outline:1px solid #fff;cursor:move}.cropper-h{position:absolute;width:12px;height:12px;background:var(--accent);border:1px solid #fff;border-radius:2px}.cropper-h.nw{left:-6px;top:-6px;cursor:nwse-resize}.cropper-h.ne{right:-6px;top:-6px;cursor:nesw-resize}.cropper-h.sw{left:-6px;bottom:-6px;cursor:nesw-resize}.cropper-h.se{right:-6px;bottom:-6px;cursor:nwse-resize}.cropper-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.cropper-size{font-family:IBM Plex Mono,monospace;font-size:11.5px;color:var(--text-dim);min-width:110px}.material-swatch .preview{position:relative;display:block;width:100%;aspect-ratio:1.4;border-radius:4px;border:1px solid rgba(0,0,0,.4);overflow:hidden}.preview-fill{position:absolute;inset:0}.material-swatch .price{font-size:10px;font-family:IBM Plex Mono,monospace;color:var(--accent)}.shop{display:flex;flex-direction:column;gap:6px;margin:8px 0 4px;padding:8px;border:1px solid var(--line-soft);border-radius:8px;background:var(--panel-2)}.shop-bar{display:flex;gap:4px}.shop-bar input{flex:1;min-width:0}.shop-bar select{flex:0 0 auto}.shop-chips{display:flex;flex-wrap:wrap;gap:4px}.chip{font-size:11px;padding:2px 8px;border-radius:999px}.shop-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;max-height:420px;overflow-y:auto}.shop-card{display:flex;flex-direction:column;gap:3px;padding:4px;border-radius:6px;background:var(--panel);border:1px solid var(--line-soft)}.shop-photo{display:block;aspect-ratio:1;border-radius:4px;overflow:hidden;background:#fff}.shop-photo img{width:100%;height:100%;object-fit:cover;display:block}.shop-name{font-size:10.5px;line-height:1.25;color:var(--text-dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.shop-price{font-size:11px;font-family:IBM Plex Mono,monospace}.shop-paste textarea{width:100%;font-family:IBM Plex Mono,monospace;font-size:10.5px}.photo-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:4px}.photo-pick button{padding:0;aspect-ratio:1;overflow:hidden;border-radius:4px}.photo-pick button.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.photo-pick img{width:100%;height:100%;object-fit:cover;display:block}.rotation-row{display:flex;align-items:flex-end;gap:4px}.rotation-row .field{flex:1}.uses{list-style:none;margin:0;padding:0;font-size:11.5px}.uses li{display:flex;justify-content:space-between;gap:8px;padding:2px 0;color:var(--text-dim)}.uses li.link{cursor:pointer}.uses li.link:hover{color:var(--text)}.uses em{font-style:normal;font-family:IBM Plex Mono,monospace;white-space:nowrap}.estimate{font-size:18px;font-weight:600;color:var(--text)}.material-swatch .label{font-size:10.5px;line-height:1.2;color:var(--text-dim);text-align:center}.material-editor{display:flex;flex-direction:column;gap:6px;min-width:0}.material-editor h5{margin:8px 0 0;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.plan-view{position:absolute;inset:0;outline:none;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none}.plan-view svg{display:block}.plan-hud{position:absolute;left:10px;right:10px;bottom:10px;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none;gap:10px}.plan-hint{background:#fffffff0;border:1px solid var(--line-soft);color:var(--text);padding:6px 10px;border-radius:var(--radius);font-size:12px;max-width:70%}.plan-zoom{margin-left:auto;display:flex;align-items:center;gap:2px;background:#fffffff0;border:1px solid var(--line);padding:3px;border-radius:var(--radius);pointer-events:auto}.plan-zoom button{padding:2px 8px;background:transparent;border:none}.plan-zoom span{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--text-dim);padding:0 6px}.typed-input{position:absolute;pointer-events:none;background:var(--panel);color:var(--text);border:1px solid var(--text);border-radius:var(--radius);padding:4px 8px;display:flex;gap:8px;align-items:baseline;font-size:11px;box-shadow:0 4px 14px #15181c29}.typed-input strong{font-family:IBM Plex Mono,monospace;font-size:15px;color:var(--mark)}.inline-prompt{position:absolute;transform:translate(-50%,-50%);background:var(--panel);border:1px solid var(--text);border-radius:var(--radius);padding:8px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow-pop);z-index:5}.inline-prompt label{font-size:11px;color:var(--text-dim)}.inline-prompt input{font-family:IBM Plex Mono,monospace;font-size:15px;width:160px}.view3d,.section-view{position:absolute;inset:0}.section-view{cursor:grab}.view3d-toolbar,.section-toolbar{position:absolute;top:10px;left:10px;right:10px;z-index:2;display:flex;flex-wrap:wrap;gap:8px;align-items:center;pointer-events:none}.view3d-toolbar>*,.section-toolbar>*{pointer-events:auto}.view3d-toolbar .seg,.view3d-toolbar>button,.view3d-toolbar>label,.view3d-toolbar>.view3d-group,.section-toolbar>*{background:#fffffff2;border:1px solid var(--line);border-radius:var(--radius)}.view3d-group{display:inline-flex;align-items:stretch}.view3d-group>label{padding:5px 10px;display:inline-flex;align-items:center;gap:6px;color:var(--text)}.view3d-group>label+label{border-left:1px solid var(--line-soft)}.view3d-group>label.disabled{color:var(--text-dim);cursor:default}.view3d-toolbar>label,.section-toolbar>label,.section-toolbar>strong{padding:5px 10px;display:inline-flex;align-items:center;gap:6px;color:var(--text)}.section-toolbar input{width:70px;padding:2px 6px!important}.view3d-toolbar>label.num input{width:56px;padding:2px 6px}.view3d-toolbar>label.num select{padding:2px 6px}.view3d-toolbar button.paint.active{background:var(--accent);color:var(--accent-ink)}.view3d-help{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#fffffff2;border:1px solid var(--line);padding:6px 12px;border-radius:var(--radius);z-index:2;font-size:12px}.crosshair{position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;z-index:2;pointer-events:none;background:linear-gradient(#fff,#fff) center / 2px 100% no-repeat,linear-gradient(#fff,#fff) center / 100% 2px no-repeat;mix-blend-mode:difference}.door-prompt{position:absolute;left:50%;top:calc(50% + 34px);transform:translate(-50%);z-index:2;pointer-events:none;padding:6px 12px;border-radius:var(--radius);background:#15181cdb;color:#fff;font-size:13px;white-space:nowrap}.door-prompt kbd{margin-right:4px}.statusbar{height:26px;display:flex;align-items:center;gap:18px;padding:0 12px;background:var(--panel);border-top:1px solid var(--line);font-size:11.5px;color:var(--text-dim)}.statusbar strong{color:var(--text);font-weight:500}.toast{position:fixed;bottom:40px;left:50%;transform:translate(-50%);background:var(--panel-3);border:1px solid var(--line);padding:8px 16px;border-radius:var(--radius);z-index:50;box-shadow:var(--shadow-pop)}.toast.success{border-color:var(--ok)}.toast.error{border-color:var(--danger);border-left-width:3px;color:#7a1f17}.toast{max-width:min(720px,calc(100vw - 32px))}.toast.with-action{display:flex;align-items:center;gap:12px}.toast.with-action button{flex:none;white-space:nowrap}.modal-backdrop{position:fixed;inset:0;background:#15181c52;display:grid;place-items:center;z-index:40}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;width:min(560px,94vw);max-height:86vh;display:flex;flex-direction:column}.modal.wide{width:min(980px,96vw)}.modal header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}.modal h3{margin:0;font-size:15px}.modal-body{padding:14px 16px;overflow:auto}.quantities{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:18px;margin-top:14px}.quantities h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.quantities table{width:100%;border-collapse:collapse;font-size:12px}.quantities th,.quantities td{text-align:left;padding:4px 6px;border-bottom:1px solid var(--line-soft)}.quantities th{color:var(--text-dim);font-weight:500}.quantities td:not(:first-child){font-family:IBM Plex Mono,monospace}.revisions{list-style:none;margin:0;padding:0}.revisions li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line-soft)}.revisions li span{flex:1}.revisions em{color:var(--text-dim);font-style:normal;font-size:11.5px}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--panel-3);border-radius:5px}::-webkit-scrollbar-track{background:transparent}.variation-editor{border-top:1px solid var(--line, #e3ded4);padding-top:6px;margin-top:4px;display:flex;flex-direction:column;gap:4px}.variation-cells{display:grid;grid-template-columns:1fr 1fr;gap:6px}.variation-body{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}.variation-preview img{width:150px;height:150px;object-fit:cover;border-radius:4px;box-shadow:inset 0 0 0 1px #00000026}
