:root{font-family:Inter,"Microsoft YaHei",Arial,sans-serif;color:#1E2A28;background:#F6F8FA;font-synthesis:none}*{box-sizing:border-box}body{margin:0;font-weight:400}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid #0E9C8F;outline-offset:2px}.app{display:flex;min-height:100vh}.sidebar{width:226px;flex:none;background:#fff;border-right:1px solid #e5e9e7;padding:25px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:600;padding:4px 13px 36px;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:31px;height:31px;border-radius:6px;background:#0E9C8F;color:#fff;font-size:17px}.nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;text-align:left;padding:12px 14px;border-radius:6px;color:#596560;display:flex;gap:13px;align-items:center;width:100%}.nav-item:hover,.nav-item.active{background:#E6F4F1;color:#0E9C8F;font-weight:600}.nav-icon{width:20px;text-align:center;font-size:21px;line-height:1}.side-note{margin-top:auto;padding:15px 13px;border-top:1px solid #e8ecea;color:#53635c;font-size:12px;line-height:1.8}.side-note small{color:#98a39e}
/* 底部备案号：工信部要求所有境内站点显著标示并链接备案系统 */
.side-note .beian{display:inline-block;margin-top:5px;color:#8a9790;font-size:11px;text-decoration:none;border-bottom:1px solid rgba(138,151,144,.45)}
.side-note .beian:hover{color:#0E9C8F;border-bottom-color:#0E9C8F}.content{min-width:0;flex:1}.topbar{height:64px;padding:0 clamp(22px,4vw,64px);border-bottom:1px solid #e5e9e7;display:flex;align-items:center;gap:14px;background:#fff}.breadcrumb{font-size:13px;color:#5d6b64}.status{margin-left:auto;color:#577468;font-size:12px;white-space:nowrap}.status i{display:inline-block;width:7px;height:7px;background:#32a884;border-radius:50%;margin-right:6px}.view{display:none;max-width:1440px;margin:auto;padding:38px clamp(22px,4vw,64px) 72px}.view.active{display:block}.page-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:42px}.page-heading.compact{margin-bottom:29px}.heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.workspace-search{display:flex;align-items:center;gap:8px;width:min(280px,34vw);min-width:190px;height:42px;padding:0 12px;border:1px solid #d9e0dd;border-radius:8px;background:#fff;color:#8a958f}.workspace-search:focus-within{border-color:#0c8b71;box-shadow:0 0 0 2px #0c8b7118}.workspace-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#1E2A28;font-size:13px}.eyebrow{font-size:11px;font-weight:600;color:#13856d;margin:0 0 9px;letter-spacing:0}.page-heading h1,.detail-heading h1{font-size:30px;line-height:1.25;margin:0 0 10px;font-weight:600}.page-heading p:not(.eyebrow),.detail-heading p:not(.eyebrow){color:#738079;margin:0;font-size:14px}.primary-button{background:#0E9C8F;color:#fff;border:1px solid #0E9C8F;border-radius:6px;padding:12px 17px;font-weight:600;white-space:nowrap}.primary-button:hover{background:#066e5b}.workspace,.catalog-preview{margin-bottom:43px}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.section-head h2,.results-head h2{margin:0;font-size:20px}.subtle{font-size:12px;color:#8c9992}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.quick-item,.tool-card{border:1px solid #e2e8e4;background:#fff;border-radius:7px;text-align:left;transition:border-color .15s,transform .15s}.quick-item:hover,.tool-card:hover{border-color:#84bcab;transform:translateY(-2px)}.quick-item{padding:20px;min-height:126px;display:flex;flex-direction:column;align-items:flex-start}.quick-item strong{font-size:15px;margin-top:12px}.quick-item small{font-size:12px;color:#8a9890;margin-top:5px}.mini-symbol,.tool-symbol{display:grid;place-items:center;color:#176f5e;background:#e9f5ee;border-radius:6px;font-weight:600}.mini-symbol{width:32px;height:32px;font-size:17px}.tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.tool-card{padding:19px;min-height:161px;display:flex;flex-direction:column;gap:12px}.tool-card-top{display:flex;justify-content:space-between;align-items:start}.tool-card h3{font-size:15px;margin:0}.tool-card p{font-size:12px;line-height:1.6;color:#74817a;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tool-card-foot{margin-top:auto;display:flex;justify-content:space-between;font-size:11px;color:#98a59e}.badge{font-size:11px;color:#98763c;background:#fbf3e4;border-radius:4px;padding:5px 7px;white-space:nowrap}.badge.ready{background:#e6f4ec;color:#187550}
/* 目录卡片「3D」角标：标识该工具可输出真三维网格 .glb */
.badge.mesh-3d{background:#e7eefb;color:#2b5ea8;font-weight:700;letter-spacing:.4px;cursor:help}
/* ===== 逐功能提示词指令（设置页）===== */
.dir-search{height:30px;min-width:180px;max-width:260px;border:1px solid #dce4df;border-radius:6px;padding:0 10px;font-size:12.5px}
.dir-list{display:grid;gap:10px}
.dir-card{border:1px solid #e3e8e6;border-radius:9px;padding:11px 13px;background:#fff;display:grid;gap:8px}
.dir-card.changed{border-color:#e8c9a0;background:#fffdf7}
.dir-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dir-head strong{font-size:13.5px}
.dir-head .subtle{font-size:11px;flex:1;min-width:0}
.badge.changed-dir{background:#fdf3e2;color:#8a6a12;font-weight:700}
.dir-card textarea{width:100%;border:1px solid #dfe6e2;border-radius:6px;padding:8px 10px;font:inherit;font-size:12.5px;line-height:1.65;resize:vertical;color:#2b3a33;background:#fbfdfc}
.dir-card textarea:focus{outline:0;border-color:#0c8b71;box-shadow:0 0 0 2px #0c8b7118;background:#fff}
/* 工具面板：多图需求 CTA */
.multi-cta{margin:14px 0 4px;padding:12px 13px;border:1px solid #e8c9a0;border-radius:9px;background:#fffdf7;display:grid;gap:9px}
.multi-cta-hint{margin:0;line-height:1.7}
.multi-cta-btn{margin:0}
.multi-cta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.multi-cta-grid:empty{display:none}
/* 提示词指令字数提示 */
.directive-tip{display:block;margin-top:5px;font-size:11px;line-height:1.6}
.directive-len{font-weight:700;color:#0e9c8f}
/* 目录卡片「多图」角标：标识该工具对多张参考图的实际依赖度
   must  = 必须多图才能完成，但面板单槽 → 建议改走「多图合一图」
   multi = 面板本身已支持 ≥2 张输入
   boost = 单图可完成，多图能明显提升精度 */
.badge.multi-must{background:#fdeeea;color:#a8412f;font-weight:700;cursor:help}
.badge.multi-multi{background:#eaf3fb;color:#2b5ea8;font-weight:700;cursor:help}
.badge.multi-boost{background:#f2f4f6;color:#5f6d76;font-weight:600;cursor:help}
/* 目录页多图图例 */
.multi-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-left:auto;font-size:11.5px;color:#8a958f}
.multi-legend .badge{padding:2px 6px}
@media (max-width:900px){.multi-legend{margin-left:0;width:100%}}
/* 网格模式下隐藏「出图模型」（2D 模型不参与图转 3D）
   注意：.auto-grid / .field 是 display:flex/grid，会覆盖 hidden 属性的默认 display:none，必须显式声明 */
[id$="ModelBox"][hidden],.auto-grid[hidden],.field[hidden],label[hidden]{display:none}.text-button,.back-button{background:none;border:0;color:#0E9C8F;font-size:13px;font-weight:600;padding:5px 0}.catalog-controls{display:flex;gap:16px;justify-content:space-between;align-items:center;margin-bottom:19px}.search{height:42px;min-width:250px;width:min(360px,100%);border:1px solid #dce4df;border-radius:6px;background:#fff;display:flex;align-items:center;gap:9px;padding:0 13px;color:#7f9088}.search input{border:0;outline:0;width:100%;font-size:13px;background:transparent}.segmented{display:flex;flex-wrap:wrap;background:#ebefec;padding:3px;border-radius:6px;gap:2px}.segmented button,.category-filters button{border:0;background:transparent;color:#637169;font-size:12px;padding:8px 12px;border-radius:4px;white-space:nowrap}.segmented button.active{background:#fff;color:#0E9C8F;box-shadow:0 1px 3px #263b3020;font-weight:600}.category-filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:28px}.category-filters button{border:1px solid #e2e8e4;background:#fff}.category-filters button.active{background:#e5f3ec;border-color:#bddfce;color:#0E9C8F}.results-head{display:flex;align-items:baseline;gap:11px;margin-bottom:15px}.results-head span{font-size:12px;color:#89968d}.empty-results{padding:50px;text-align:center;color:#7a8a80}.back-button{margin-bottom:31px}.detail-heading{display:flex;align-items:center;gap:18px;padding-bottom:28px;border-bottom:1px solid #e2e8e4;margin-bottom:27px}.detail-heading .badge{margin-left:auto}.tool-symbol{width:57px;height:57px;font-size:26px;flex:none}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:28px}.tool-panel,.detail-aside{background:#fff;border:1px solid #e3e9e5;border-radius:7px;padding:25px}.tool-panel h2,.detail-aside h3{margin:0 0 19px;font-size:17px}.detail-aside h3{font-size:14px}.detail-aside ul{padding-left:18px;margin:0;color:#66766e;font-size:12px;line-height:1.9}.notice{margin-top:24px;padding:13px;background:#f4f7f5;border-left:3px solid #82b49e;font-size:12px;line-height:1.7;color:#5c6f64}.pending{max-width:540px;padding:31px 0}.pending strong{display:block;font-size:18px;margin-bottom:9px}.pending p{line-height:1.75;color:#708077;font-size:13px}.field{display:block;margin:19px 0;color:#405349;font-size:13px;font-weight:600}.field input[type=file]{display:block;width:100%;margin-top:9px;border:1px dashed #9cbcab;background:#f8fbf9;border-radius:6px;padding:22px;color:#60766a;font-size:12px}.field input[type=range]{display:block;width:100%;margin-top:12px;accent-color:#0E9C8F}.preview-box{min-height:240px;display:grid;place-items:center;background:#f2f5f2;border:1px solid #e6ebe7;border-radius:5px;overflow:hidden;color:#9aa69f;font-size:13px}.preview-box img{max-width:100%;max-height:400px;object-fit:contain}.swatches{display:flex;flex-wrap:wrap;gap:9px;margin-top:19px}.swatch{width:90px;border:1px solid #e1e6e2;background:#fff;border-radius:5px;padding:5px;text-align:left}.swatch-color{height:48px;border-radius:3px;display:block}.swatch code{font-size:11px;display:block;text-align:center;padding:5px 0 2px}.result-actions{display:flex;gap:12px;align-items:center;margin-top:16px;flex-wrap:wrap}.result-actions small{color:#7d8a82}.help-list{display:grid;gap:0;max-width:850px}.help-list section{padding:22px 0;border-bottom:1px solid #e0e7e2}.help-list h2{font-size:17px;margin:0 0 9px}.help-list p{font-size:13px;color:#65756c;line-height:1.8;margin:0}.toast{position:fixed;bottom:22px;right:22px;background:#223b32;color:#fff;padding:11px 16px;border-radius:5px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s}.toast.show{opacity:1}.mobile-menu{display:none}.icon-button{border:0;background:transparent;font-size:20px;color:#50645a;padding:4px}
@media(max-width:1050px){.quick-grid{grid-template-columns:repeat(2,1fr)}.tool-grid,.canvas-tool-grid,.canvas-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.catalog-controls{align-items:stretch;flex-direction:column}.detail-layout{grid-template-columns:1fr}.detail-aside{max-width:none}}@media(max-width:700px){.sidebar{position:fixed;z-index:10;transform:translateX(-100%);transition:transform .2s;box-shadow:10px 0 30px #17271e12}.sidebar.open{transform:translateX(0)}.mobile-menu{display:block}.topbar{height:56px}.view{padding-top:29px}.page-heading{align-items:start;flex-direction:column;margin-bottom:31px}.page-heading h1,.detail-heading h1{font-size:25px}.heading-actions{width:100%;justify-content:stretch;flex-direction:column;align-items:stretch}.workspace-search{width:100%;min-width:0}.heading-actions .primary-button{width:100%}.quick-grid,.tool-grid,.canvas-tool-grid,.canvas-gallery-grid{grid-template-columns:1fr}.quick-grid{gap:9px}.quick-item{min-height:90px;padding:14px;display:grid;grid-template-columns:32px 1fr;column-gap:13px;align-items:center}.quick-item strong{margin:0}.quick-item small{grid-column:2;margin-top:-15px}.subtle{display:none}.segmented{width:100%;overflow:auto;flex-wrap:nowrap}.detail-heading{flex-wrap:wrap}.detail-heading .badge{margin-left:75px}.tool-panel,.detail-aside{padding:19px}.status{font-size:11px}}
.ck-row{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-bottom:1px solid #e8ecea}
.ck-badge{flex:none;font-size:12px;font-weight:600;padding:3px 10px;border-radius:20px;color:#fff;white-space:nowrap}
.ck-pass .ck-badge{background:#32a884}
.ck-warn .ck-badge{background:#d9920a}
.ck-fail .ck-badge{background:#d9534f}
.ck-row strong{display:block;margin-bottom:3px}
.ck-row p{margin:0;color:#53635c;font-size:13px}
.ck-row small{color:#98a39e}
.ck-summary{background:#E6F4F1;color:#0c6151;padding:11px 14px;border-radius:8px;font-size:13px;margin-bottom:8px}
.ck-group-title{font-size:13px;font-weight:600;color:#0c6151;margin:14px 0 4px;padding-bottom:4px;border-bottom:1px dashed #d9e0dd}
.field-hint{color:#76837d;font-size:13px;margin:0 0 16px}
/* P3 图转 CAD（imagecad）：参数表单双列栅格 */
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
@media(max-width:560px){.field-grid{grid-template-columns:1fr}}
.result-image{display:block;max-width:100%;border:1px solid #e5e9e7;border-radius:10px;margin:14px 0 10px;cursor:zoom-in;transition:transform .16s ease;will-change:transform}
.result-image:hover{transform:scale(2);transform-origin:var(--zoom-origin,center);position:relative;z-index:9999}
/* 真三维网格（.glb）查看器：固定比例舞台 + 顶部到底部渐变背景，避免透明网格看不清 */
.glb-result{margin:14px 0 0}
.glb-stage{width:100%;height:420px;border:1px solid #e5e9e7;border-radius:10px;background:linear-gradient(180deg,#f7f9f8 0%,#e9edec 100%);display:flex;align-items:center;justify-content:center;color:#5b6b66;font-size:13px;text-align:center;padding:16px;overflow:hidden}
.glb-stage model-viewer{width:100%;height:100%;background:transparent;--poster-color:transparent}
/* 多视角参考图：4 槽（正/左/后/右），网格排布；仅 mesh 模式 + 百炼服务商时显示 */
.mesh-views{margin:12px 0 0;padding:12px;border:1px dashed #d6dedb;border-radius:10px;background:#fafcfb}
.mesh-views[hidden]{display:none}
/* SecretId 与 SecretKey 成对相邻：SecretId 上边距收紧，SecretKey 紧贴其下，中间不插入其它元素 */
#meshKeyBox .field.mesh-sid{margin:6px 0 8px}
#meshKeyBox .field.mesh-sid input{margin-top:6px}
.mesh-view-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:8px}
.mesh-view-grid .field{margin:0;font-size:12.5px}
/* 多图合一图（豆包）：已选参考图缩略网格 + 角标 + 移除按钮 */
.mesh-view-cell{position:relative;border:1px solid var(--line,#e3e8e6);border-radius:9px;overflow:hidden;background:#f7f9f8;aspect-ratio:4/3}
.mesh-view-cell img{width:100%;height:100%;object-fit:cover;display:block}
.mesh-view-cell span{position:absolute;left:6px;top:6px;background:rgba(22,35,47,.78);color:#fff;font-size:11px;line-height:1.2;padding:3px 7px;border-radius:6px;pointer-events:none}
.mesh-view-del{position:absolute;right:5px;top:5px;width:22px;height:22px;border:0;border-radius:50%;background:rgba(160,75,61,.9);color:#fff;font-size:14px;line-height:1;cursor:pointer;padding:0}
.mesh-view-del:hover{background:#8d3a2c}
.mf-picks{margin:8px 0 4px}
.demo-banner{background:#fff4f0;color:#b23b2b;border:1px solid #f3c9bd;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:14px 0 0;line-height:1.5}
.real-badge{background:#e9f7ef;color:#1c7a4c;border:1px solid #bfe5cf;border-radius:8px;padding:7px 11px;font-size:12.5px;margin:14px 0 0;display:inline-block;font-weight:600}
.gi-status{background:#fdf3f1;color:#a8412f;border:1px solid #f0cdc4;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:14px 0 8px;line-height:1.5}
.gi-status-warn{background:#fff8e8;color:#8a5a12;border-color:#f0dcae}
/* —— 局部重绘 inpaint：画笔涂抹 UI —— */
.ip-stage{position:relative;margin-top:14px;border:1px solid #e5e9e7;border-radius:10px;background:#f4f6f5;overflow:hidden;max-width:880px}
.ip-canvas{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}
.ip-empty{position:absolute;inset:0;display:grid;place-items:center;color:#98a39e;font-size:13px;text-align:center;padding:20px}
.ip-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:12px;padding:10px 12px;border:1px solid #e5e9e7;border-radius:10px;background:#fafbfa;max-width:880px}
.ip-toolbar .field-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#3a4744}
.ip-toolbar .field-inline input[type=range]{width:120px}
.ip-method-note{background:#eef4fb;color:#2c5a86;border:1px solid #c7dbee;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:14px 0 0;line-height:1.5;font-weight:600}
.ex-stage{position:relative;margin-top:14px;border:1px solid #e5e9e7;border-radius:10px;background:#f4f6f5;overflow:hidden;max-width:880px}
.ex-canvas{display:block;width:100%;height:auto;touch-action:none}
.ex-empty{position:absolute;inset:0;display:grid;place-items:center;color:#98a39e;font-size:13px;text-align:center;padding:20px}
.ex-dirs{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #e5e9e7;border-radius:10px;background:#fafbfa;max-width:880px}
.ex-dir{display:flex;align-items:center;gap:10px}
.ex-dir .check-field{font-size:13px;color:#24302d;font-weight:600}
.ex-dir .field-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#3a4744}
.ex-method-note{background:#eef4fb;color:#2c5a86;border:1px solid #c7dbee;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:14px 0 0;line-height:1.5;font-weight:600}
.sl-disclaimer{background:#fff4e5;color:#8a5a16;border:1px solid #f0d8a8;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:12px 0 0;line-height:1.5}
.sl-cols{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px}
.sl-left{flex:1 1 320px;min-width:300px}
.sl-right{flex:1 1 260px;min-width:240px}
.sl-block-title{font-weight:600;color:#24302d;font-size:13.5px;margin:4px 0 8px}
.sl-draw-wrap{max-width:480px}
.sl-canvas{display:block;width:100%;max-width:480px;height:auto;background:#fff;cursor:crosshair;border:1px solid #e5e9e7;border-radius:8px;touch-action:none}
.sl-bld-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;font-size:12.5px;color:#3a4744}
.sl-bld{display:inline-flex;align-items:center;gap:4px;background:#eef1f0;border:1px solid #dbe1df;border-radius:6px;padding:3px 7px}
.sl-bld-x{border:none;background:#c0392b;color:#fff;border-radius:4px;width:16px;height:16px;line-height:1;cursor:pointer;font-size:11px}
.sl-progress{height:8px;background:#e5e9e7;border-radius:6px;overflow:hidden;margin-top:10px}
.sl-progress-bar{height:100%;width:0;background:#3fae5a;transition:width .12s linear}
.sl-result{margin-top:16px}
.sl-out{display:block;max-width:560px;width:100%;height:auto;border:1px solid #e5e9e7;border-radius:8px;background:#fff}
.sl-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;font-size:12.5px;color:#3a4744}
.sl-sw{display:inline-block;width:16px;height:16px;border-radius:3px;border:1px solid #ccc;margin-right:2px;vertical-align:-3px}
.sl-stat{margin-top:10px;font-size:13px;color:#24302d;line-height:1.7;background:#f7f9f8;border:1px solid #e5e9e7;border-radius:8px;padding:10px 12px}
.pa-stage{position:relative;margin-top:14px;border:1px solid #e5e9e7;border-radius:10px;background:#f4f6f5;overflow:hidden;max-width:880px}
.pa-canvas{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}
.pa-empty{position:absolute;inset:0;display:grid;place-items:center;color:#98a39e;font-size:13px;text-align:center;padding:20px}
.pa-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:12px;padding:10px 12px;border:1px solid #e5e9e7;border-radius:10px;background:#fafbfa;max-width:880px}
.pa-tools{display:inline-flex;gap:6px;flex-wrap:wrap}
.pa-tool{padding:6px 12px;border:1px solid #d9e0dd;border-radius:8px;background:#fff;color:#1E2A28;cursor:pointer;font-size:13px}
.pa-tool:hover{border-color:#0c6151;color:#0c6151}
.pa-tool.active{background:#0E9C8F;color:#fff;border-color:#0E9C8F}
.pa-summary{margin-top:12px;padding:10px 12px;border:1px dashed #c9d6d2;border-radius:10px;background:#f7fafa;max-width:880px;font-size:13px;color:#3a4744;line-height:1.7}
.pa-summary-title{font-weight:600;color:#1E2A28}
.pa-summary-empty{color:#98a39e}
.pa-summary ol{margin:6px 0 0;padding-left:20px}
.pa-summary li{margin:2px 0}
.pa-method-note{background:#eef4fb;color:#2c5a86;border:1px solid #c7dbee;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:14px 0 0;line-height:1.5;font-weight:600}
/* ===== 全景查看器 panoViewer（.pv-*） ===== */
.pv-disclaimer{background:#fff4e5;color:#8a5a16;border:1px solid #f0d8a8;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:12px 0 0;line-height:1.5}
.pv-src-tabs{display:inline-flex;border:1px solid #d9e0dd;border-radius:8px;overflow:hidden;margin:12px 0 10px}
.pv-src-tab{border:0;background:#fff;color:#1E2A28;padding:8px 16px;font:inherit;cursor:pointer}
.pv-src-tab.active{background:#0E9C8F;color:#fff}
.pv-hist-list{display:flex;flex-direction:column;gap:8px;margin-top:4px;max-height:170px;overflow:auto}
.pv-hist-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#f6f9f8;border:1px solid #e2e6ea;border-radius:8px;padding:9px 12px;cursor:pointer;font:inherit;color:#24302d}
.pv-hist-item:hover{border-color:#0c6151;background:#eef6f4}
.pv-hist-item small{color:#8a958f;font-size:11.5px;word-break:break-all}
.pv-view{position:relative;height:420px;margin-top:14px;border:1px solid #e5e9e7;border-radius:10px;background:#1d2724;overflow:hidden;cursor:grab;touch-action:none}
.pv-view.loaded{cursor:grab}
.pv-view:active{cursor:grabbing}
.pv-view:fullscreen{height:100vh;width:100vw}
.pv-canvas{display:block;width:100%;height:100%;touch-action:none}
.pv-hint{position:absolute;inset:0;display:grid;place-items:center;color:#9fb0a8;font-size:13px;pointer-events:none;text-align:center;padding:20px}
.pv-view.loaded .pv-hint{display:none}
.pv-info-badge{position:absolute;top:10px;left:10px;font-size:12px;padding:4px 9px;border-radius:6px;pointer-events:none}
.pv-badge-ok{background:#0E9C8F;color:#fff}
.pv-badge-warn{background:#d9920a;color:#fff}
.pv-note{background:#fff8e8;color:#8a5a12;border:1px solid #f0dcae;border-radius:8px;padding:9px 12px;font-size:12.5px;margin:10px 0 0;line-height:1.5}
.pv-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #e5e9e7;border-radius:10px;background:#fafbfa}
.pv-info{font-size:12.5px;color:#53635c}
.pv-zoom{font-size:12.5px;color:#53635c;margin-left:auto}
.cq-item{background:#E6F4F1;color:#0c6151;padding:11px 14px;border-radius:8px;font-size:13px;margin:0 0 8px}
/* 主提示词输入框：放大至 ~11 行，使 300–440 字增强提示词可完整呈现（仍支持拖拽继续放大） */
textarea#aiPrompt{width:100%;min-height:240px;padding:10px 12px;border:1px solid #d9e0dd;border-radius:8px;font:inherit;resize:vertical;line-height:1.55}
/* 其余出图类提示框同步放大，避免增强后的长提示词被压缩滚动 */
#ipPrompt,#exPrompt,#paPrompt{min-height:160px;width:100%;padding:10px 12px;border:1px solid #d9e0dd;border-radius:8px;font:inherit;resize:vertical;line-height:1.55}
.ca-step-prompt{min-height:104px;width:100%;padding:6px 8px;border:1px solid #d7dde2;border-radius:6px;font-size:13px;resize:vertical;font-family:inherit;line-height:1.5}
#toolGrid{display:block}
.tool-group{margin-bottom:36px}
.group-title{display:flex;align-items:baseline;gap:10px;font-size:17px;font-weight:600;color:#1E2A28;margin:0 0 16px;padding-bottom:9px;border-bottom:1px solid #e5e9e7}
.group-count{font-size:12px;font-weight:600;color:#8a958f}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.chip{padding:4px 12px;border:1px solid #d9e0dd;border-radius:999px;background:#fff;color:#1E2A28;cursor:pointer;font-size:13px}
.chip:hover{border-color:#0c6151;color:#0c6151}
.ghost-button{padding:8px 14px;border:1px solid #d9e0dd;border-radius:8px;background:#fff;color:#1E2A28;cursor:pointer;font:inherit}
.ghost-button:hover{border-color:#0c6151;color:#0c6151}
.nav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:0 0 20px}
.nav-card{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #e0e6e3;border-radius:10px;background:#fff;text-decoration:none;color:inherit;transition:border-color .15s}
.nav-card:hover{border-color:#0c6151}
.nav-card strong{font-size:14px;color:#1E2A28}
.nav-card span{font-size:12px;color:#8a958f}
.hist-list{display:flex;flex-direction:column;gap:14px}
.hist-item{padding:14px;border:1px solid #e0e6e3;border-radius:10px;background:#fff}
.hist-meta{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.hist-meta span{font-size:12px;color:#8a958f}
.hist-prompt{font-size:13px;color:#4a5551;margin:6px 0 8px;word-break:break-all}
.hist-thumb{max-width:280px;max-height:280px;border-radius:8px;border:1px solid #e5e9e7}

/* ===== 顶部选项卡 ===== */
.top-tabs{display:flex;gap:2px;padding:0 clamp(22px,4vw,64px);background:#fff;border-bottom:1px solid #e5e9e7;overflow:auto;scrollbar-width:none}
.top-tabs::-webkit-scrollbar{display:none}
.top-tab{border:0;background:transparent;color:#596560;padding:15px 17px 14px;font-size:14px;font-weight:600;position:relative;white-space:nowrap;transition:color .15s,background .15s}
.top-tab:hover{color:#0E9C8F;background:#f5faf8}
.top-tab.active{color:#0E9C8F}
.top-tab.active::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:3px;background:#0E9C8F;border-radius:3px 3px 0 0}

/* ===== 工作台布局 ===== */
.workspace,.catalog-preview{background:#fff;border:1px solid #e5e9e7;border-radius:10px;padding:24px;margin-bottom:20px}
.workspace{background:linear-gradient(135deg,#f8fcfa 0%,#fff 72%)}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:18px}
.section-head h2{margin:0;font-size:20px}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.quick-item{min-height:108px;border:1px solid #dce7e2;border-radius:8px;background:#fff;padding:16px;text-align:left;display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;transition:border-color .15s,box-shadow .15s,transform .15s}
.quick-item:hover{border-color:#0c8b71;box-shadow:0 6px 18px #0c615112;transform:translateY(-2px)}
.quick-item .mini-symbol{grid-row:1 / span 2}
.quick-item strong{font-size:14px;color:#1E2A28}
.quick-item small{font-size:12px;color:#8a958f;margin-top:4px}
.catalog-preview{padding-bottom:26px}
.tool-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.tool-card{min-height:174px;border:1px solid #e0e6e3;border-radius:8px;background:#fff;padding:16px;text-align:left;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s,transform .15s}
.tool-card:hover{border-color:#0c8b71;box-shadow:0 6px 18px #17271e0d;transform:translateY(-2px)}
.tool-card h3{margin:13px 0 7px;font-size:15px}
.tool-card p{margin:0;color:#53635c;font-size:12.5px;line-height:1.55;flex:1}
.tool-card-foot{display:flex;justify-content:space-between;gap:8px;margin-top:16px;color:#8a958f;font-size:11.5px}
.catalog-controls{display:flex;gap:12px;align-items:center;margin-bottom:14px}
.search{flex:1;min-width:220px}
.detail-layout{align-items:start}
.canvas-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.template-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.agent-composer{max-width:920px}


/* ===== AI 画布 ===== */
.canvas-grid{display:block;min-width:0}
.canvas-section-head{margin-top:4px}
.canvas-tool-grid,.canvas-gallery-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;min-width:0}
.canvas-tile{display:flex;flex-direction:column;gap:5px;min-width:0;min-height:148px;text-align:left;border:1px solid #e0e6e3;border-radius:12px;background:#fff;padding:16px;transition:border-color .15s,transform .15s}
.tool-thumb{position:relative;width:100%;aspect-ratio:16/10;background:linear-gradient(135deg,#E6F4F1,#cfe9e3);overflow:hidden;margin:-16px -16px 0;border-radius:8px 8px 0 0}
.tool-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tool-thumb img.thumb-fail{display:none}
.tile-thumb{display:block;width:100%;aspect-ratio:16/10;background:linear-gradient(135deg,#E6F4F1,#cfe9e3);overflow:hidden;margin:-16px -16px 8px;border-radius:12px 12px 0 0}
.tile-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tile-thumb img.thumb-fail{display:none}
.canvas-tile:hover{border-color:#0c6151;transform:translateY(-2px)}
.workspace-empty{grid-column:1/-1;margin:0;padding:22px;border:1px dashed #cdd5d2;border-radius:8px;background:#fafbfa;color:#76837d;font-size:13px;text-align:center}
.tile-symbol{font-size:26px;line-height:1;color:#0c6151}
.tile-name{font-size:15px;font-weight:600;color:#1E2A28}
.tile-meta{font-size:12px;color:#8a958f}
.tile-desc{font-size:12.5px;color:#53635c;line-height:1.5}
.canvas-card{min-width:0;margin:0;border:1px solid #e0e6e3;border-radius:12px;overflow:hidden;background:#fff}
.canvas-card img{display:block;width:100%;aspect-ratio:4/3;height:auto;object-fit:cover;background:#eef1f0}
.canvas-card figcaption{padding:11px 13px}
.canvas-card figcaption strong{display:block;font-size:14px;color:#1E2A28}
.canvas-card figcaption span{font-size:12px;color:#8a958f}
.canvas-card figcaption p{margin:6px 0 0;font-size:12.5px;color:#53635c;line-height:1.5}

/* ===== AI 模板 ===== */
.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px;margin-top:24px}
.template-card{text-align:left;border:1px solid #e0e6e3;border-radius:12px;background:#fff;padding:18px;display:flex;flex-direction:column;gap:8px;transition:border-color .15s,transform .15s}
.template-card:hover{border-color:#0c6151;transform:translateY(-2px)}
.template-top{display:flex;align-items:center;justify-content:space-between}
.template-label{font-size:12px;font-weight:600;color:#13856d;background:#E6F4F1;padding:3px 10px;border-radius:20px}
.template-card h3{margin:2px 0;font-size:16px;color:#1E2A28}
.template-card p{margin:0;font-size:13px;color:#53635c;line-height:1.5;flex:1}
.template-go{font-size:13px;font-weight:600;color:#0c6151}
.badge.ready{background:#32a884;color:#fff;border:0}

/* ===== 自动化表单 ===== */
.auto-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:6px 0 14px}
.field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#4a5551;font-weight:500}
.field input,.field select{font:inherit;font-weight:500;padding:9px 10px;border:1px solid #d9e0dd;border-radius:8px;background:#fff;color:#1E2A28}
.field input:focus,.field select:focus{outline:2px solid #0E9C8F;outline-offset:1px}
.check-field{display:flex;align-items:center;gap:8px;font-size:13px;color:#4a5551;font-weight:500}
.check-row{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0 14px}
.result-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.result-actions small{color:#8a958f;font-size:12px}

/* ===== 代码框 ===== */
.code-box{margin-top:14px;border:1px solid #d9e0dd;border-radius:10px;overflow:hidden;background:#fbfcfb}
.code-box .code-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:#eef2f0;border-bottom:1px solid #e0e6e3;font-size:12.5px;color:#4a5551;font-weight:600}
.code-box .code-head button{border:0;background:transparent;color:#0c6151;font-weight:600;cursor:pointer;padding:4px 8px;border-radius:6px}
.code-box .code-head button:hover{background:#e2ece8}
.code-box pre{margin:0;padding:14px;max-height:360px;overflow:auto;font:12.5px/1.6 "SFMono-Regular",Consolas,Menlo,monospace;color:#1E2A28;white-space:pre;background:#fff}
.su-bridge-panel{margin:18px 0;padding:16px;border:1px solid #cfe4dc;border-radius:10px;background:#f4faf7}.su-bridge-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.su-bridge-status{font-size:12px;color:#77847f}.su-bridge-status[data-state="ok"]{color:#0E9C8F;font-weight:600}.su-bridge-status[data-state="off"]{color:#a04b3d}.su-bridge-panel .field-hint{margin:8px 0 12px}
.su-token-hint{font-size:13px;color:#596560;margin:0 0 12px}
.su-token-hint span{font-weight:600}
.su-token-hint .text-button{background:none;border:none;color:#0E9C8F;padding:0;font:inherit;text-decoration:underline}
.settings-section{background:#fff;border:1px solid #e5e9e7;border-radius:10px;padding:24px;margin-bottom:20px}
.settings-section .auto-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.settings-section .field{margin-bottom:14px}
.settings-section .field input,.settings-section .field select{width:100%;padding:9px 12px;border:1px solid #d9e0dd;border-radius:8px;font:inherit}
@media(max-width:700px){.settings-section .auto-grid{grid-template-columns:1fr}.facade-upload-grid,.facade-preview-grid{grid-template-columns:1fr}.facade-preview-grid .preview-box img{height:180px}}

/* ===== AI 智能体 ===== */
.agent-log{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.agent-msg{max-width:100%;padding:13px 15px;border-radius:12px;font-size:14px;line-height:1.65}
.agent-msg.user{background:#0E9C8F;color:#fff;align-self:flex-end;border-bottom-right-radius:3px}
.agent-msg.bot{background:#fff;border:1px solid #e0e6e3;align-self:flex-start;border-bottom-left-radius:3px;color:#1E2A28}
.agent-msg b{color:#0c6151}
.agent-body .agent-code{background:#f2f5f4;border:1px solid #dde4e1;border-radius:8px;padding:10px 12px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;white-space:pre-wrap;overflow-x:auto;margin:8px 0}
.agent-body code{background:#f2f5f4;border-radius:4px;padding:1px 5px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
.agent-composer{position:sticky;bottom:0;background:#fff;border:1px solid #e0e6e3;border-radius:12px;padding:12px;box-shadow:0 -4px 16px #17271e0a}
.agent-composer textarea{width:100%;min-height:64px;padding:10px 12px;border:1px solid #d9e0dd;border-radius:8px;font:inherit;resize:vertical}
.agent-bar{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}
.file-chip{font-size:13px;color:#0c6151;background:#E6F4F1;padding:7px 12px;border-radius:8px;cursor:pointer;font-weight:600}
.file-chip input{display:none}
.agent-file{font-size:12px;color:#8a958f}
.agent-steps{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.agent-step{display:flex;align-items:baseline;gap:10px;font-size:13px;color:#4a5551}
.agent-step .dot{flex:none;width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#eef2f0;color:#8a958f;font-size:12px}
.agent-step.done .dot{background:#32a884;color:#fff}
.agent-step.fail .dot{background:#d9534f;color:#fff}
.agent-step.run .dot{background:#d9920a;color:#fff}
.agent-step b{color:#1E2A28}
.agent-note{background:#E6F4F1;color:#0c6151;padding:10px 13px;border-radius:8px;font-size:13px;margin-top:8px}
.agent-table{width:100%;border-collapse:collapse;margin-top:8px;font-size:13px}
.agent-table th,.agent-table td{text-align:left;padding:7px 10px;border-bottom:1px solid #e8ecea}
.agent-table th{color:#0c6151;font-weight:600}

/* ===== 图片预览/处理 ===== */
.preview-box{margin-top:12px;min-height:120px;border:1px dashed #cdd5d2;border-radius:10px;display:grid;place-items:center;color:#98a39e;font-size:13px;background:#fafbfa;padding:14px}
.preview-box:not(:empty){color:inherit}
.preview-box img{max-width:100%;border-radius:8px;display:block}
.facade-upload-grid,.facade-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.facade-preview-grid .preview-box{min-height:180px;align-items:start;overflow:hidden}.facade-preview-grid .preview-box img{width:100%;height:220px;object-fit:contain;background:#f4f6f5}.facade-upload-grid .field{min-width:0}


/* AI建筑造型生成：仅在该工具入口收窄外壳，不改变其他工具。 */
body.massing-page{background:#fff;color:#303e48}
.massing-page .sidebar{width:72px;padding:12px 6px}.massing-page .brand{justify-content:center;padding:4px 0 18px}.massing-page .brand>span:last-child{display:none}
.massing-page .brand{font-size:16px;padding:4px 6px 22px;gap:7px}
.massing-page .brand-mark{width:26px;height:26px;font-size:14px;background:#303e48}
.massing-page .nav-item{font-size:0;padding:10px 5px;gap:0;justify-content:center}.massing-page .nav-item::after{content:attr(data-label);display:none}.massing-page .nav-icon{font-size:16px}
.massing-page .nav-icon{font-size:16px;width:17px}
.massing-page .side-note{padding:12px 6px;font-size:10px}
.massing-page .topbar{height:46px;padding:0 14px;border-bottom:1px solid #e6eaec}
.massing-page .breadcrumb{font-weight:600;color:#34424c}
.massing-page .top-tabs{display:none}
.massing-page #detailView{max-width:none;padding:10px 12px 8px}
.massing-page #backButton{margin:0 0 5px;padding:0;font-size:11px}
.massing-page .detail-heading{display:flex;align-items:center;gap:10px;margin:0 0 8px;padding:0;border:0}
.massing-page .detail-heading .tool-symbol,.massing-page .detail-heading .eyebrow,.massing-page .detail-heading #detailDescription,.massing-page .detail-heading #detailStatus{display:none}
.massing-page .detail-heading h1{font-size:16px;margin:0;color:#303e48}
.massing-page .detail-aside{display:none}
.massing-page .detail-layout{display:block}
.massing-page #toolPanel{border:0;background:none;border-radius:0;padding:0;min-width:0}
.mg-workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;height:calc(100dvh - 90px);min-height:440px;font-family:"Microsoft YaHei",Arial,sans-serif;font-size:12px;letter-spacing:0}
.mg-stage{min-width:0;display:flex;flex-direction:column}
.mg-stage-head{display:flex;align-items:center;justify-content:space-between;min-height:34px;gap:8px;padding-bottom:5px}
.mg-title-wrap{display:flex;align-items:baseline;gap:8px;min-width:0}
.mg-kicker{font-size:10px;color:#9aa4aa;white-space:nowrap}
#toolPanel .mg-stage-head h2{margin:0;font-size:15px;font-weight:600;color:#303e48}
.mg-toolbar{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.mg-toolbar button{height:26px;min-width:27px;border:1px solid #e4e8eb;border-radius:4px;background:#f8f9fa;color:#52616c;font-size:13px;padding:0 6px}
.mg-toolbar #mgTutorial{font-size:11px;padding:0 9px;color:#34424c;background:#fff}
.mg-toolbar button:disabled{opacity:.45;cursor:not-allowed}
.mg-scene{position:relative;flex:1;min-height:0;border:1px solid #e4e9ed;border-radius:5px;overflow:hidden;background:#f5fbfd}
#mgCanvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
#mgCanvas:active{cursor:grabbing}
.mg-scene-tag{position:absolute;right:10px;top:10px;font-size:10px;color:#fff;background:#9cabb2;padding:3px 8px;border-radius:4px;pointer-events:none}
.mg-load{position:absolute;left:12px;right:12px;top:38%;text-align:center;padding:15px;color:#52616c;background:#ffffffed;line-height:1.7}
.mg-info{position:absolute;bottom:0;left:0;right:0;pointer-events:none;white-space:pre-line;font-size:11px;line-height:1.6;background:#ffffffdf;padding:8px 12px;margin:0;color:#56646e}
.mg-info:empty{display:none}
.mg-params{min-width:0;display:flex;flex-direction:column;border-left:1px solid #edf0f2;padding-left:10px;overflow:hidden}
.mg-scroll{overflow-y:auto;min-height:0;flex:1;padding:2px 2px 8px 0;scrollbar-width:thin}
.mg-params h3{font-size:12px;font-weight:600;margin:4px 0 10px;color:#34424c}
.mg-field{height:31px;display:flex;align-items:center;gap:4px;border:1px solid #d8dee3;border-radius:5px;padding:0 8px;margin:0 0 7px;color:#8b939b;font-size:10px}
.mg-field span{flex:1;white-space:nowrap}
.mg-field input{width:75px;min-width:0;text-align:right;border:0;background:transparent;color:#53616c;font-size:11px;outline-offset:0;padding:0;appearance:textfield;-moz-appearance:textfield}
.mg-field input::-webkit-inner-spin-button{appearance:none}
.mg-plans{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;margin-bottom:12px}
.mg-plan{border:0;background:transparent;min-width:0;padding:0;display:flex;align-items:center;flex-direction:column;gap:5px;color:#8c959d}
.mg-plan-icon{display:grid;place-items:center;width:100%;height:44px;background:#f6f7f8;border:1px solid #eef0f2;border-radius:6px;font-family:Arial,"Microsoft YaHei",sans-serif;font-size:29px;font-weight:600;line-height:1;color:#969b9e}
.mg-icon-kou{font-size:0}
.mg-icon-kou::before{content:"";width:18px;height:18px;border:5px solid currentColor}
.mg-plan small{font-size:10px;line-height:1.2}.mg-icon-hui{font-size:0}.mg-icon-hui::before{content:"";width:18px;height:18px;border:5px solid currentColor;box-shadow:inset 0 0 0 4px #f6f7f8}
.mg-plan[aria-pressed="true"]{color:#34424c}
.mg-plan[aria-pressed="true"] .mg-plan-icon{border-color:#34424c;color:#34424c;background:#f4f7f9}
.mg-forms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-bottom:12px}
.mg-form{border:1px solid #e9edf0;background:#f6f7f8;color:#58636c;font-size:9px;height:27px;border-radius:5px;padding:0 2px;white-space:nowrap}
.mg-form[aria-pressed="true"]{background:#303e48;border-color:#303e48;color:#fff}
.mg-eff{background:#f6f7f8;border-radius:5px;padding:12px 9px;margin-bottom:9px;font-size:10px;color:#67747e}
.mg-eff label{display:flex;justify-content:space-between;gap:4px;margin-bottom:7px}
.mg-eff>div{display:flex;align-items:center;gap:4px;font-size:9px;white-space:nowrap}
.mg-eff input{flex:1;min-width:0;width:70px;height:12px;margin:0;accent-color:#34424c}
.mg-switch{display:flex;align-items:center;justify-content:space-between;margin:8px 0;gap:8px;font-size:11px;font-weight:600}
.mg-switch input{appearance:none;width:28px;height:15px;border-radius:10px;background:#c5c9cc;position:relative;margin:0;cursor:pointer;flex:none}
.mg-switch input:before{content:"";position:absolute;width:11px;height:11px;border-radius:50%;top:2px;left:2px;background:#fff;transition:transform .12s}
.mg-switch input:checked{background:#34424c}
.mg-switch input:checked:before{transform:translateX(13px)}
/* ===== A 任务：massingGen 形体锁形 + 风格批换（.mg-style / .mg-grid / .secondary-button） ===== */
.mg-styles .mg-style{border:1px solid #cfe0db;background:#fff;color:#2f6f63;border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer}
.mg-styles .mg-style:hover{background:#eaf4f1}
.mg-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:8px}
.mg-grid .cell{border:1px solid #e3e9e7;border-radius:10px;overflow:hidden;background:#fff}
.mg-grid .cell img{width:100%;display:block}
.mg-grid .cell .cap{font-size:12px;color:#4a5551;padding:4px 8px}
.mg-grid .cell .acts{display:flex;gap:6px;padding:0 8px 8px}
.secondary-button{background:#eef3f1;color:#2f6f63;border:1px solid #cfe0db;border-radius:8px;padding:8px 14px;cursor:pointer}
.mg-error{color:#a44032;font-size:11px;line-height:1.6;overflow-wrap:anywhere;margin:8px 0}
.mg-error:empty{display:none}
.mg-footer{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 0 0;background:#fff;border-top:1px solid #edf0f2;flex:none}
.mg-footer button{height:52px;border:1px solid #34424c;border-radius:8px;background:#fff;color:#34424c;font-size:16px;font-weight:600}
.mg-footer #mgGen{background:#303e48;color:#fff}
.mg-footer button:disabled{opacity:.45;cursor:not-allowed}
.mg-footer small{grid-column:1/-1;text-align:center;font-size:10px;color:#7b858d}
.mg-overlay{position:absolute;inset:44px 12px 56px;background:#fffffff5;border:1px solid #dce3e7;border-radius:5px;padding:12px;overflow:auto;box-shadow:0 6px 20px #25344012}
.mg-overlay[hidden],.mg-load[hidden]{display:none}
.mg-overlay-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.mg-overlay-head button,.mg-overlay-close{border:1px solid #dce3e7;border-radius:4px;background:#fff;color:#34424c;padding:3px 8px}
.mg-tutorial{max-width:620px;color:#52616c;font-size:12px;line-height:1.8}
.mg-tutorial ol{margin:10px 0;padding-left:20px}
.mg-tutorial-note{padding:8px 10px;background:#f6f8f8;border-left:3px solid #9aa9ae;color:#68757d}
.mg-history-row{display:block;border:0;border-bottom:1px solid #e5e9ec;background:transparent;color:#34424c;padding:12px 0;text-align:left;width:100%;font-size:12px;overflow-wrap:anywhere}
@media(max-width:760px){.massing-page .sidebar{width:72px}.mg-workspace{grid-template-columns:minmax(0,1fr) 270px;gap:8px}.massing-page #detailView{padding:8px}.mg-params{padding-left:7px}}
@media(max-width:560px){.mg-workspace{display:flex;flex-direction:column;height:auto;min-height:0}.mg-stage{height:53dvh;min-height:310px}.mg-params{border-left:0;border-top:1px solid #edf0f2;padding:12px 0 0;overflow:visible}.mg-scroll{overflow:visible}.mg-footer{position:sticky;bottom:0;padding:10px 0 8px;z-index:1}.mg-field{height:34px;font-size:11px}.mg-form{font-size:10px}.mg-plan-icon{height:45px}.mg-info{font-size:10px}}
@media(prefers-reduced-motion:reduce){.mg-switch input:before{transition:none}}
/* ===== 规范查询 codeQuery（.cq-*） ===== */
.cq-search-row{display:flex;gap:8px;margin:10px 0 6px}
.cq-input{flex:1;padding:9px 12px;border:1px solid #d6dee0;border-radius:8px;font-size:13px}
.cq-filters{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.cq-chip{font-size:12px;padding:4px 11px;border:1px solid #d6dee0;background:#fff;border-radius:20px;cursor:pointer;color:#46555d}
.cq-chip:hover{border-color:#1f9d77}
.cq-chip.active{background:#1f9d77;color:#fff;border-color:#1f9d77}
.cq-cols{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:680px){.cq-cols{grid-template-columns:1fr}}
.cq-list{max-height:440px;overflow:auto;border:1px solid #e5e9ec;border-radius:10px;padding:6px;background:#fbfcfc}
.cq-item-btn{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:#fff;border:1px solid #e5e9ec;border-radius:8px;padding:9px 11px;margin-bottom:6px;cursor:pointer}
.cq-item-btn:hover{border-color:#1f9d77;background:#f1faf7}
.cq-item-code{font-size:11px;color:#1f9d77;font-weight:600}
.cq-item-topic{font-size:13px;color:#34424c}
.cq-detail{border:1px solid #e5e9ec;border-radius:10px;padding:14px 16px;background:#fff;min-height:200px}
.cq-detail-code{font-size:14px;font-weight:600;color:#0c6151}
.cq-detail-meta{font-size:12px;color:#8a949b;margin:4px 0 10px}
.cq-detail-sec{margin-bottom:10px}
.cq-detail-sec h4{margin:0 0 4px;font-size:13px;color:#1f9d77}
.cq-detail-sec p{margin:0;font-size:13px;color:#3b4951;line-height:1.55}
.cq-nomatch{color:#c0392b !important}
.ck-note{margin:8px 0 2px;font-size:12px;color:#8a949b}
/* ===== 规范校验 提示/操作 ===== */
.ck-result-actions{margin-top:8px}
/* ===== boardGen 展板生成 ===== */
.bg-picks{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.bg-pick{display:flex;flex-direction:column;align-items:center;gap:2px;width:84px;border:1px solid #e2e6ea;border-radius:8px;padding:4px;cursor:pointer;font-size:11px;color:#5b6770}
.bg-pick img{width:74px;height:56px;object-fit:cover;border-radius:4px;background:#f3f4f6}
.bg-pick input{margin:0}
.ex-stage{position:relative;margin:10px 0;border:1px dashed #cdd5db;border-radius:10px;background:#fafbfc;min-height:160px;display:flex;align-items:center;justify-content:center;padding:8px}
.bg-canvas{max-width:100%;height:auto;display:none;border:1px solid #d7dde2;border-radius:6px;box-shadow:0 2px 10px rgba(20,35,50,.08)}
.ex-empty{color:#9aa4ac;font-size:13px}
.ex-method-note{font-size:12px;color:#8a949b;margin:10px 0 4px}
.real-badge{font-size:12px;color:#0c6151;margin:6px 0}
.result-image{max-width:100%;height:auto;border-radius:8px;border:1px solid #e2e6ea;margin-top:8px}
/* ===== storyboard 分镜生成 ===== */
.sb-cells{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:8px 0}
.sb-cell{display:flex;align-items:center;gap:8px;margin:0}
.sb-cell-no{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#16232f;color:#fff;font-size:12px;flex:0 0 auto}
.sb-cell-ph{flex:0 0 auto;font-size:12px;color:#5b6770;min-width:48px}
.sb-cell input{flex:1;min-width:0}
.demo-banner{font-size:12px;color:#b9770e;background:#fff6e9;border:1px solid #f0d9b0;border-radius:8px;padding:8px 10px}
/* ===== canvasAgent AI 画布 Agent ===== */
.ca-quota{font-size:13px;color:#5b6770;background:#f3f6f8;border:1px solid #e2e8ec;border-radius:8px;padding:8px 10px;margin:8px 0}
.ca-steps{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.ca-step{border:1px solid #e2e6ea;border-radius:10px;padding:8px 10px;background:#fafbfc}
.ca-step-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ca-step-no{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#16232f;color:#fff;font-size:12px;flex:0 0 auto}
.ca-step-name{flex:0 0 130px;min-width:0;padding:5px 7px;border:1px solid #d7dde2;border-radius:6px;font-size:13px}
.ca-ref{display:inline-flex;align-items:center;gap:3px;font-size:12px;color:#5b6770;white-space:nowrap}
.ca-step-del{margin-left:auto;border:none;background:#f3e6e3;color:#a04b3d;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:13px}
.ca-step-del:disabled{opacity:.4;cursor:not-allowed}
.ca-step-prompt{width:100%;padding:6px 8px;border:1px solid #d7dde2;border-radius:6px;font-size:13px;resize:vertical;font-family:inherit}
.ca-step-actions{margin:2px 0 8px}
.ca-exec{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.field.inline{display:inline-flex;align-items:center;gap:6px;margin:0}
.ca-canvas{position:relative;min-height:240px;margin:10px 0;border:1px dashed #cdd5db;border-radius:10px;background:#fafbfc;overflow:auto}
.ca-node{position:absolute;width:200px;border:1px solid #d7dde2;border-radius:10px;background:#fff;box-shadow:0 2px 10px rgba(20,35,50,.08);padding:8px;cursor:grab;user-select:none}
.ca-node:active{cursor:grabbing}
.ca-node-run{border-color:#3b82c4;box-shadow:0 0 0 2px rgba(59,130,196,.25)}
.ca-node-err{border-color:#a04b3d;background:#fdf5f3}
.ca-node-no{position:absolute;top:-9px;left:-9px;width:22px;height:22px;border-radius:50%;background:#16232f;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center}
.ca-node-del{position:absolute;top:-9px;right:-9px;width:22px;height:22px;border:none;background:#a04b3d;color:#fff;border-radius:50%;cursor:pointer;font-size:12px;line-height:1}
.ca-node-img{width:100%;height:120px;border-radius:6px;overflow:hidden;background:#eef1f3;display:flex;align-items:center;justify-content:center}
.ca-node-img img{max-width:100%;max-height:100%;object-fit:contain}
.ca-node-title{font-size:13px;font-weight:600;color:#16232f;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-node-mod{font-size:11px;color:#8a949b;margin-top:2px}
.ca-node-errmsg{font-size:11px;color:#a04b3d;margin-top:4px;line-height:1.4}
.ca-node-retry{margin-top:4px;font-size:12px}
.ca-export{display:flex;gap:10px;margin-top:6px}
/* ===== 待接入统一面板 renderPending ===== */
.pd-wrap{max-width:680px;margin:8px 0;display:flex;flex-direction:column;gap:20px}
.pd-head{display:flex;align-items:center;gap:14px}
.pd-symbol{display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:#E6F4F1;color:#0E9C8F;font-size:24px;flex:none}
.pd-titleblock{display:flex;align-items:center;gap:12px}
.pd-title{margin:0;font-size:20px;color:#1E2A28}
.pd-badge{font-size:12px;font-weight:600;padding:4px 12px;border-radius:20px;background:#fff8e8;color:#8a5a12;border:1px solid #f0dcae;white-space:nowrap}
.pd-section{border:1px solid #e5e9e7;border-radius:12px;background:#fff;padding:16px 18px}
.pd-label{font-size:12px;font-weight:600;color:#13856d;background:#E6F4F1;display:inline-block;padding:3px 10px;border-radius:20px;margin-bottom:10px}
.pd-reason{margin:0;font-size:14px;color:#8a5a12;font-weight:600}
.pd-expect{margin:0 0 6px;font-size:14px;color:#1E2A28;line-height:1.6}
.pd-note{margin:4px 0 0;font-size:13px;color:#53635c;line-height:1.5}
.pd-back{align-self:flex-start}
/* ===== 字重收敛（P5）：标题 600 / 正文 400 ===== */
h1,h2,h3{font-weight:600}
/* ===== 灵感案例（P2） ===== */
.insp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-top:8px}
.insp-card{border:1px solid #e0e6e3;border-radius:12px;overflow:hidden;background:#fff;margin:0;transition:border-color .15s,transform .15s}
.insp-card.insp-open{cursor:pointer}
.insp-card.insp-open:hover{border-color:#0c6151;transform:translateY(-2px)}
.insp-thumb{width:100%;aspect-ratio:4/3;background:linear-gradient(135deg,#E6F4F1,#cfe9e3);overflow:hidden}
.insp-img{width:100%;height:100%;object-fit:cover;display:block}
.insp-img.thumb-fail{display:none}
.insp-noimg{display:grid;place-items:center;color:#8a958f;font-size:13px}
.insp-card figcaption{padding:11px 13px}
.insp-card figcaption strong{display:block;font-size:14px;color:#1E2A28}
.insp-card figcaption span{font-size:12px;color:#8a958f}
.insp-card figcaption p{margin:6px 0 0;font-size:12.5px;color:#53635c;line-height:1.5}
.insp-empty{padding:28px;border:1px dashed #cdd5d2;border-radius:12px;background:#fafbfa;text-align:center;max-width:520px}
.insp-empty .primary-button{margin-top:14px}
/* ===== 使用教程（P2） ===== */
.tutorial-body{max-width:920px}
.tut-steps{list-style:none;counter-reset:step;padding:0;margin:0 0 30px;display:grid;gap:14px}
.tut-steps li{counter-increment:step;position:relative;padding:16px 18px 16px 64px;border:1px solid #e0e6e3;border-radius:12px;background:#fff}
.tut-steps li::before{content:counter(step);position:absolute;left:16px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:#0E9C8F;color:#fff;display:grid;place-items:center;font-size:15px;font-weight:600}
.tut-steps strong{display:block;font-size:15px;color:#1E2A28;margin-bottom:4px}
.tut-steps span{font-size:13.5px;color:#53635c;line-height:1.6}
.tut-h2{font-size:18px;margin:0 0 10px}
.tut-tools{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.tut-chip{padding:5px 12px;border:1px solid #d9e0dd;border-radius:999px;background:#fff;color:#1E2A28;font-size:13px}
/* =====================================================================
   第 1 轮 UI 美化（2026-10-02）
   ① 设计令牌（渐变/分类色/层次） ② 统一主导航（隐藏顶部横排九栏）
   ③ 卡片层次与渐变描边 ④ 首页 hero + 真实出图画廊
   追加式覆盖块：不改动既有规则，回滚时整段删除即可。
   ===================================================================== */

/* ---------- ① 设计令牌 ---------- */
:root{
  --brand:#0E9C8F;
  --brand-deep:#0c6151;
  --brand-grad:linear-gradient(135deg,#0E9C8F,#0c6151);
  --ink:#1E2A28;
  --body:#3a4744;
  --muted:#76837d;
  --line:#e5e9e7;
  --bg:#f7fafa;
  --card:#fff;
  --cat-arch:#0E9C8F;   /* 建筑 */
  --cat-int:#E08A3C;    /* 室内 */
  --cat-land:#3FAE5A;   /* 景观 */
  --cat-plan:#3B7FD0;   /* 规划 */
  --cat-gen:#8A6FD0;    /* 通用 */
  --radius:14px;
  --shadow-1:0 1px 2px rgba(16,42,38,.05);
  --shadow-2:0 12px 28px rgba(12,97,81,.14);
}
body{background:var(--bg);color:var(--body)}
h1,h2,h3,h4{color:var(--ink)}
.eyebrow{color:var(--brand-deep)}
.page-heading p:not(.eyebrow),.detail-heading p:not(.eyebrow),.help-list p{color:var(--muted)}
[data-cat="arch"]{--cat:var(--cat-arch)}
[data-cat="int"]{--cat:var(--cat-int)}
[data-cat="land"]{--cat:var(--cat-land)}
[data-cat="plan"]{--cat:var(--cat-plan)}
[data-cat="gen"]{--cat:var(--cat-gen)}

/* ---------- ② 导航统一：仅保留左侧竖排主导航（顶部横排九栏全局隐藏，DOM 保留便于回滚） ---------- */
.top-tabs{display:none}
.brand{background:var(--brand-grad);color:#fff;border-radius:var(--radius);padding:12px 14px;margin:0 0 20px;font-size:18px;box-shadow:0 8px 20px rgba(12,97,81,.22)}
.brand-mark{background:rgba(255,255,255,.94);color:var(--brand-deep);border-radius:8px}
.massing-page .brand{background:transparent;box-shadow:none}
.nav{gap:4px}
.nav-item{position:relative;border-radius:10px;color:#4f5d58;transition:background .15s,color .15s}
.nav-item:hover{background:#eef7f4;color:var(--brand-deep)}
.nav-item.active{background:linear-gradient(90deg,rgba(14,156,143,.16),rgba(14,156,143,.03));color:var(--brand-deep);font-weight:600;box-shadow:inset 0 0 0 1px rgba(14,156,143,.20)}
.nav-item.active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--brand-grad)}
.side-note{border-top:1px solid var(--line);color:var(--muted);font-size:11.5px;line-height:1.7;letter-spacing:.02em}
.side-note small{color:#9aa8a2;font-size:10.5px}

/* ---------- ③ 卡片、控件与层次 ---------- */
.quick-item,.tool-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-1)}
.quick-item:hover,.tool-card:hover{border-color:transparent;background:linear-gradient(#fff,#fff) padding-box,var(--brand-grad) border-box;box-shadow:var(--shadow-2);transform:translateY(-2px)}
.tool-thumb{border-radius:10px}
.nav-card,.canvas-tile,.template-card,.insp-card{border-radius:var(--radius);box-shadow:var(--shadow-1)}
.nav-card:hover,.canvas-tile:hover,.template-card:hover{border-color:var(--brand);box-shadow:var(--shadow-2)}
.workspace,.catalog-preview,.settings-section,.tool-panel,.detail-aside{border-radius:var(--radius)}
.workspace{background:linear-gradient(135deg,#f3fbf8 0%,#fff 62%)}
.primary-button{background:var(--brand-grad);border-color:transparent;border-radius:10px;box-shadow:0 6px 16px rgba(12,97,81,.20)}
.primary-button:hover{background:var(--brand-grad);filter:brightness(1.07)}
.search,.workspace-search,.segmented{border-radius:10px}
.text-button{color:var(--brand)}
.group-title{border-bottom-color:var(--line)}
.tut-steps li::before{background:var(--brand-grad)}
.tool-card[data-cat] .mini-symbol,.quick-item[data-cat] .mini-symbol{background:var(--cat);color:#fff;box-shadow:0 4px 12px rgba(16,42,38,.16)}
.tool-card[data-cat] .tool-card-foot span:first-child{color:var(--cat);font-weight:600}
.canvas-tile[data-cat] .tile-symbol{color:var(--cat)}

/* ---------- ④ 首页 hero + 真实出图画廊 ---------- */
.hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:230px;margin:0 0 22px;padding:36px clamp(22px,3vw,44px);border-radius:18px;background:var(--brand-grad);color:#fff;box-shadow:0 18px 42px rgba(12,97,81,.22)}
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(520px 280px at 92% 4%,rgba(224,138,60,.62),transparent 66%),radial-gradient(460px 300px at 2% 108%,rgba(59,127,208,.58),transparent 68%),radial-gradient(420px 240px at 62% 118%,rgba(63,174,90,.5),transparent 70%),radial-gradient(360px 300px at 70% -10%,rgba(255,255,255,.28),transparent 72%)}
.hero>*{position:relative;z-index:1}
.hero .eyebrow{color:rgba(255,255,255,.86);margin:0 0 10px}
.hero h1{margin:0 0 12px;color:#fff;font-size:clamp(24px,3.1vw,34px);line-height:1.22;letter-spacing:.01em}
.hero-sub{margin:0;max-width:660px;color:rgba(255,255,255,.92);font-size:14.5px;line-height:1.75}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:22px}
.hero .workspace-search{width:min(320px,100%);min-width:0;height:44px;background:rgba(255,255,255,.96);border-color:transparent;border-radius:10px}
.hero .workspace-search:focus-within{box-shadow:0 0 0 3px rgba(255,255,255,.45)}
.hero .primary-button{background:#fff;color:var(--brand-deep);border-color:#fff;border-radius:10px;box-shadow:0 8px 18px rgba(6,60,52,.22)}
.hero .primary-button:hover{background:#f2fbf8;color:var(--brand-deep);filter:none}
.hero-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.cat-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 13px;border-radius:999px;font-size:12px;font-weight:600;color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.32)}
.cat-chip i{width:8px;height:8px;border-radius:50%;background:var(--cat,var(--brand));box-shadow:0 0 0 2px rgba(255,255,255,.4)}
.gallery{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;margin:0 0 43px}
.hero-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.gal-item{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--card);transition:transform .18s,box-shadow .18s,border-color .18s}
.gal-item:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:transparent}
.gal-thumb{position:relative;aspect-ratio:4/3;background:linear-gradient(135deg,var(--cat,var(--brand)),var(--brand-deep))}
.gal-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.gal-thumb img.thumb-fail{display:none}
.gal-ph{display:none;position:absolute;inset:0;place-items:center;color:#fff;font-size:12px;font-weight:600;letter-spacing:.1em}
.gal-thumb img.thumb-fail~.gal-ph{display:grid}
.gal-item figcaption{padding:10px 12px 12px;font-size:12.5px;font-weight:600;color:var(--ink)}
.gal-item figcaption span{display:block;margin-top:2px;font-size:11.5px;font-weight:400;color:var(--muted)}

@media(max-width:700px){
  .hero{min-height:0;padding:24px 18px;border-radius:16px}
  .hero h1{font-size:23px}
  .hero-actions{width:100%}
  .hero .workspace-search{width:100%}
  .hero .primary-button{width:100%;text-align:center}
  .hero-chips{gap:6px}
  .cat-chip{padding:4px 11px}
  .gallery{padding:16px;margin-bottom:29px}
  .hero-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .brand{padding:11px 12px;margin-bottom:14px}
}
/* ---------- ⑤ 第1轮美化 · 精修 ---------- */
/* 占位缩略图按分类着色（缺图时不再是一片灰绿） */
[data-cat="arch"]{--cat-soft:#e2f4f1}
[data-cat="int"]{--cat-soft:#fbeee0}
[data-cat="land"]{--cat-soft:#e8f6ec}
/* ② 画廊「景观」卡强化区分（border + 柔光环，hover 保持绿） */
.hero-gallery .gal-item[data-cat="land"]{border:2px solid var(--cat-land);box-shadow:0 0 0 3px rgba(63,174,90,.16)}
.hero-gallery .gal-item[data-cat="land"]:hover{border-color:var(--cat-land);box-shadow:var(--shadow-2),0 0 0 3px rgba(63,174,90,.22)}
[data-cat="plan"]{--cat-soft:#e6f0fb}
[data-cat="gen"]{--cat-soft:#f0ecfb}
.tool-card[data-cat] .tool-thumb{background:linear-gradient(135deg,var(--cat-soft,#e6f4f1),#fff)}
/* 常用工具（6 项）：3 列 × 2 行，避免落单 */
#featuredGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1050px){
  .hero-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}
  #featuredGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .hero-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
  #homeView #featuredGrid{grid-template-columns:1fr}
}

/* ================= 第2轮美化 ① 工具详情页 ================= */
/* 图标块：分类色（通用回退品牌渐变） */
#detailView .tool-symbol{width:48px;height:48px;border-radius:12px;background:var(--brand-grad);color:#fff;font-size:22px;box-shadow:0 6px 16px rgba(12,97,81,.20)}
#detailView[data-cat="arch"] .tool-symbol{background:var(--cat-arch)}
#detailView[data-cat="int"] .tool-symbol{background:var(--cat-int)}
#detailView[data-cat="land"] .tool-symbol{background:var(--cat-land)}
#detailView[data-cat="plan"] .tool-symbol{background:var(--cat-plan)}
#detailView[data-cat="gen"] .tool-symbol{background:var(--brand-grad)}
/* 标题与眉标 */
#detailTitle{font-size:22px;font-weight:600;color:var(--ink);margin:0}
#detailCategory.eyebrow{color:var(--brand-deep);letter-spacing:.08em;font-size:12px;text-transform:uppercase}
/* 状态徽章 */
#detailStatus.badge{background:#fff3e6;color:#b9770e;border:1px solid #f0d9b8;border-radius:999px;padding:4px 12px;font-weight:600}
#detailStatus.badge.ready{background:var(--brand-grad);color:#fff;border:0}
/* 使用说明软卡（含项目已有的 .detail-notes 类名） */
.detail-notes{background:#f7fafa;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:10px}
#detailNotes{list-style:none;margin:10px 0 0;padding:14px 16px;background:#f7fafa;border:1px solid var(--line);border-radius:12px}
#detailNotes li{position:relative;padding-left:18px;margin:6px 0;color:var(--body);font-size:13px;line-height:1.6}
#detailNotes li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:var(--brand-grad)}
/* 布局与侧栏卡片质感 */
.detail-layout{grid-template-columns:minmax(0,1fr) 280px;gap:22px;align-items:start}
.detail-aside{border-color:var(--line);box-shadow:var(--shadow-1)}
#toolPanel .field,#toolPanel .preview-box,#toolPanel #result{border-radius:var(--radius)}
#toolPanel .preview-box{border-color:var(--line);background:#f7fafa}
@media(max-width:1050px){.detail-layout{grid-template-columns:1fr}}
@media(max-width:860px){.detail-layout{grid-template-columns:1fr}}

/* ================= 第2轮美化 ② 移动端细化 ================= */
/* 抽屉遮罩（默认不可见、不拦截点击；仅在 nav-open 且窄屏时显示） */
#navOverlay{position:fixed;inset:0;background:rgba(15,30,25,.42);z-index:9;opacity:0;visibility:hidden;transition:opacity .2s}
.sidebar.open{z-index:11}
@media(max-width:760px){
  body{overflow-x:hidden;overflow-x:clip}
  body.nav-open{overflow:hidden}
  body.nav-open #navOverlay{opacity:1;visibility:visible}
  .tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .catalog-preview .tool-grid,#featuredGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .canvas-tool-grid,.canvas-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero{padding:18px 16px;min-height:auto}
  .hero h1{font-size:24px}
  .hero-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
  .catalog-controls{flex-wrap:wrap}
  .workspace{padding:16px}
}
@media(max-width:420px){
  .tool-grid,#featuredGrid{grid-template-columns:repeat(2,1fr)}
}

/* 第3轮美化：工具详情页「产出示例」缩略图 */
.detail-samples{margin:0 0 22px}
.detail-samples h3{font-size:15px;font-weight:600;color:var(--ink);margin:0 0 4px}
.detail-samples .field-hint{margin:0 0 2px}
.detail-samples .sample-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:10px}
.detail-samples .sample-grid img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid var(--line);box-shadow:var(--shadow-1);background:var(--line)}
@media(max-width:760px){.detail-samples .sample-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ================= 第4轮美化 · 目录栏双轴分类 ================= */
:root{--cat-ai:#7a5cc0;--cat-ai-soft:#efeaf9}
[data-cat="ai"]{--cat:var(--cat-ai)}
[data-cat="ai"]{--cat-soft:var(--cat-ai-soft)}
.catalog-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}
.cat-rail{position:sticky;top:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow-1)}
.cat-rail-head{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;margin:2px 4px 10px}
.cat-rail-list{display:flex;flex-direction:column;gap:2px}
.cat-rail-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:#4f5d58;border-radius:9px;padding:9px 10px;font-size:13.5px;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s,color .15s}
.cat-rail-item:hover{background:#eef7f4;color:var(--brand-deep)}
.cat-rail-item.active{background:linear-gradient(90deg,rgba(14,156,143,.16),rgba(14,156,143,.03));color:var(--brand-deep);font-weight:600;box-shadow:inset 0 0 0 1px rgba(14,156,143,.2)}
.cri-icon{width:20px;text-align:center;color:var(--cat,var(--brand));font-size:14px}
.cat-rail-item.active .cri-icon{color:var(--brand-deep)}
.cri-label{flex:1;white-space:nowrap}
.cri-count{font-size:11px;color:var(--muted);background:#eef1f0;border-radius:999px;padding:1px 8px;min-width:22px;text-align:center}
.cat-rail-item.active .cri-count{background:rgba(14,156,143,.16);color:var(--brand-deep)}
.cat-rail-item.empty{opacity:.4}
.cat-rail-item.empty .cri-count{visibility:hidden}
/* 横排领域标签栏（建筑 / 室内 / 景观 / 规划 / 通用 / AI） */
.domain-bar{flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;padding:2px}
.domain-bar::-webkit-scrollbar{display:none}
.domain-bar button{white-space:nowrap}
.domain-bar button[data-dom]::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:var(--dot,var(--brand));vertical-align:middle}
[data-dom="建筑"]{--dot:var(--cat-arch)}
[data-dom="室内"]{--dot:var(--cat-int)}
[data-dom="景观"]{--dot:var(--cat-land)}
[data-dom="规划"]{--dot:var(--cat-plan)}
[data-dom="通用"]{--dot:var(--cat-gen)}
[data-dom="AI"]{--dot:var(--cat-ai)}
@media(max-width:860px){
  .catalog-layout{grid-template-columns:1fr}
  .cat-rail{position:static;padding:12px}
  .cat-rail-head{display:none}
  .cat-rail-list{flex-direction:row;flex-wrap:wrap;gap:6px}
  .cat-rail-item{width:auto;padding:7px 11px}
  .cri-label{white-space:normal}
}

/* ================= 第5轮美化 · 首页功能分类入口 ================= */
.home-cats{margin:30px 0 6px}
.home-cats .section-head{margin-bottom:16px}
.home-dom-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin:0 0 20px}
.home-dom-card{display:flex;flex-direction:column;gap:7px;align-items:flex-start;text-align:left;padding:18px 16px;border:1px solid var(--line);border-left:4px solid var(--dot,var(--brand));border-radius:14px;background:var(--card);cursor:pointer;font-family:inherit;transition:transform .15s,box-shadow .15s,border-color .15s}
.home-dom-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(0,0,0,.10);border-color:var(--dot,var(--brand))}
.home-dom-card .hdc-icon{width:34px;height:34px;border-radius:9px;background:var(--dot,var(--brand));opacity:.16}
.home-dom-card .hdc-name{font-weight:600;font-size:16px;color:var(--ink)}
.home-dom-card .hdc-sub{font-size:12px;color:var(--muted)}
.home-cat-tags{display:flex;flex-wrap:wrap;gap:10px}
.home-cat-tag{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:8px 16px;font-size:14px;color:#3a4a40;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s,color .15s}
.home-cat-tag:hover{background:var(--brand);border-color:var(--brand);color:#fff}
@media(max-width:860px){.home-dom-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.home-dom-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* R6: 可视化分级 + 智能搜索 + 最近浏览 */
.home-dom-card .hdc-icon{opacity:1}
.home-cat-tag .hct-icon{margin-right:6px;font-size:13px}
.smart-search-row{position:relative;max-width:680px;margin:0 0 16px}
.home-smart input{width:100%}
.smart-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 34px rgba(0,0,0,.14);padding:8px;z-index:30;max-height:320px;overflow:auto}
.smart-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;padding:10px 12px;border-radius:10px;cursor:pointer;font-family:inherit;font-size:14px;color:var(--ink)}
.smart-item:hover{background:#f3f6f4}
.smart-item .si-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.smart-item .si-name{font-weight:600}
.smart-item .si-cat{margin-left:auto;font-size:12px;color:var(--muted)}
.smart-empty{padding:12px;color:var(--muted);font-size:13px}
.recent-hot{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.recent-chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:6px 14px;font-size:13px;color:#3a4a40;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s,color .15s}
.recent-chip:hover{background:var(--brand);border-color:var(--brand);color:#fff}
@media(max-width:520px){.home-smart input{font-size:14px}.smart-results{position:static;box-shadow:none;border:0;padding:0;max-height:none}.smart-item{border:1px solid var(--line);border-radius:10px}}
/* ===== 第7轮 UI：首页目录二级化 ===== */
.home-dual{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
#homeDomGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.home-dom-card{padding:11px 12px;gap:4px;border-radius:12px;border:1.5px solid transparent;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.home-dom-card:hover{transform:translateY(-2px);border-color:var(--hdot,#0E9C8F)}
.home-dom-card.active{border-color:var(--hdot,#0E9C8F);box-shadow:0 4px 14px rgba(0,0,0,.10)}
.home-dom-card.active .hdc-name{color:var(--hdot,#0E9C8F)}
.home-dom-card .hdc-icon{width:32px;height:32px;font-size:16px;border-radius:9px}
.home-dom-card .hdc-name{font-size:14px;line-height:1.2}
.home-dom-card .hdc-sub{font-size:12px;line-height:1.2}
.home-rail{background:var(--card,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:14px;position:sticky;top:74px}
.home-rail-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.hrl-title{font-weight:600;font-size:14px}
.home-rail-scope{border:0;background:transparent;padding:2px 0;font-size:12px;color:var(--hdot,#0E9C8F);cursor:pointer;font-weight:500}
.home-rail-scope:hover{text-decoration:underline}
.home-rail-list{display:flex;flex-direction:column;gap:2px}
.home-rail-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:transparent;border-radius:9px;cursor:pointer;font-size:13px;color:var(--body,#1f2937);text-align:left;transition:background .15s ease}
.home-rail-item:hover{background:rgba(14,156,143,.08)}
.hri-icon{width:22px;height:22px;flex:none;display:grid;place-items:center;border-radius:6px;background:var(--hdot,#0E9C8F);color:#fff;font-size:12px}
.hri-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hri-count{flex:none;font-size:11px;color:var(--muted,#6b7280);background:rgba(0,0,0,.05);border-radius:999px;padding:1px 8px}
.home-rail-item:hover .hri-count{color:var(--hdot,#0E9C8F)}
@media(max-width:1050px){.home-dual{grid-template-columns:minmax(0,1fr) 260px}}
@media(max-width:860px){.home-dual{grid-template-columns:1fr}.home-rail{position:static}.home-rail-list{flex-direction:row;flex-wrap:wrap;gap:8px}.home-rail-item{width:auto;padding:6px 12px;border-radius:999px;background:rgba(0,0,0,.03)}}
@media(max-width:520px){#homeDomGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* ===== 第8轮 UI：功能分类下沉为领域卡二级目录 ===== */
.home-dual{display:block}
.home-rail{position:static;margin-top:16px;border:1px solid var(--line,#e5e7eb);border-left:3px solid var(--hdot,#0E9C8F)}
.hrl-title{display:inline-flex;align-items:center;gap:7px}
.hrl-title::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--hdot,#0E9C8F)}
.home-rail-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:6px 10px}
.home-rail-item{width:100%;padding:7px 10px;border-radius:9px}
@media(max-width:1050px){.home-dual{display:block}}
@media(max-width:860px){.home-dual{display:block}.home-rail{position:static}.home-rail-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 8px}.home-rail-item{width:100%;padding:7px 10px;border-radius:9px}}
@media(max-width:520px){.home-rail-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}.home-rail-item{padding:6px 8px;font-size:12px}.hri-icon{width:20px;height:20px;font-size:11px}}
/* ===== 第9轮 UI：功能分类移入左侧栏「工具目录」二级子目录 ===== */
.sidebar .nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}
.nav-item[data-view="tools"]{padding-right:32px}
.nav-item[data-view="tools"]::after{content:"\25B8";position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:10px;line-height:1;opacity:.5;transition:transform .18s ease}
.nav-item[data-view="tools"].expanded::after{transform:translateY(-50%) rotate(90deg)}
.nav-sub{display:flex;flex-direction:column;gap:1px;margin:2px 0 8px 22px;padding-left:10px;border-left:1px solid rgba(14,156,143,.22)}
.nav-sub[hidden]{display:none}
.nav-sub-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 9px;border:0;background:transparent;border-radius:8px;cursor:pointer;font-size:12.5px;color:#6b7b76;text-align:left;transition:background .15s ease,color .15s ease}
.nav-sub-item:hover{background:#E6F4F1;color:#0E9C8F}
.nav-sub-item.active{background:rgba(14,156,143,.14);color:#0E9C8F;font-weight:600}
.nav-sub-item .ns-icon{width:16px;flex:none;text-align:center;font-size:11px;opacity:.85}
.nav-sub-item .ns-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== 第10轮 UI：左侧竖向导航 间距与配色美化 ===== */
.sidebar{background:linear-gradient(180deg,#ffffff 0%,#f6fbf9 100%);border-right:1px solid rgba(14,156,143,.13);padding:22px 12px}
.sidebar .brand{margin:0 0 18px;letter-spacing:.02em;box-shadow:0 6px 16px rgba(12,97,81,.20)}
.sidebar .nav{align-content:start;gap:6px}
.sidebar .nav-item{padding:12px 12px;gap:12px;border-radius:11px;letter-spacing:.035em;line-height:1.45;color:#54635d}
.sidebar .nav-icon{width:24px;height:24px;flex:none;display:grid;place-items:center;border-radius:8px;background:rgba(14,156,143,.10);color:#0d7d6f;font-size:14px;line-height:1;transition:background .18s ease,color .18s ease,transform .18s ease}
.sidebar .nav-item:hover{background:linear-gradient(90deg,rgba(14,156,143,.10),rgba(14,156,143,.02));color:var(--brand-deep)}
.sidebar .nav-item:hover .nav-icon{background:rgba(14,156,143,.19);transform:scale(1.05)}
.sidebar .nav-item.active{background:linear-gradient(90deg,rgba(14,156,143,.17),rgba(14,156,143,.03));color:var(--brand-deep);font-weight:600;box-shadow:inset 0 0 0 1px rgba(14,156,143,.24),0 2px 10px rgba(14,156,143,.10)}
.sidebar .nav-item.active .nav-icon{background:var(--brand-grad);color:#fff;box-shadow:0 3px 8px rgba(12,97,81,.24)}
.sidebar .nav-item.active::before{content:"";position:absolute;left:0;top:11px;bottom:11px;width:3px;border-radius:0 3px 3px 0;background:var(--brand-grad)}
.sidebar .nav-sub{gap:2px;margin:2px 0 8px 24px;padding-left:11px;border-left:1px solid rgba(14,156,143,.20)}
.sidebar .nav-sub-item{padding:6px 9px;gap:9px;border-radius:8px;font-size:12.5px;letter-spacing:.02em;line-height:1.45;color:#6c7c77}
.sidebar .nav-sub-item .ns-icon{width:18px;height:18px;flex:none;display:grid;place-items:center;border-radius:6px;background:rgba(14,156,143,.09);color:#0d7d6f;font-size:10px;opacity:1}
.sidebar .nav-sub-item:hover{background:rgba(14,156,143,.09);color:var(--brand-deep)}
.sidebar .nav-sub-item:hover .ns-icon{background:rgba(14,156,143,.19)}
.sidebar .nav-sub-item.active{background:linear-gradient(90deg,rgba(14,156,143,.16),rgba(14,156,143,.04));color:var(--brand-deep);font-weight:600}
.sidebar .nav-sub-item.active .ns-icon{background:var(--brand-grad);color:#fff}
.sidebar .side-note{padding:14px 12px 2px;border-top:1px solid rgba(14,156,143,.14);letter-spacing:.045em;line-height:1.9;color:#5d7b73}
.sidebar .side-note small{display:inline-block;margin-top:5px;letter-spacing:.07em;color:#9aa8a2}
/* 压缩侧栏（massing 模式）复位，保持既有形态 */
.massing-page .sidebar .nav-item{padding:10px 5px;gap:0;font-size:0;letter-spacing:0;line-height:1;justify-content:center}
.massing-page .sidebar .nav-icon{width:auto;height:auto;background:none;box-shadow:none;border-radius:0;font-size:16px;color:inherit}

/* ===== 第11轮 UI：侧栏二级目录计数徽标 ===== */
.nav-sub-item .ns-count{flex:none;font-size:10.5px;line-height:1.5;color:var(--muted,#6b7280);background:rgba(14,156,143,.09);border-radius:999px;padding:0 7px;min-width:20px;text-align:center;letter-spacing:0;font-variant-numeric:tabular-nums}
.nav-sub-item.active .ns-count{background:rgba(14,156,143,.22);color:#0b7a70;font-weight:600}
.nav-sub-item.empty{opacity:.42}
.nav-sub-item.empty:hover{opacity:.62;background:transparent;color:#6b7b76}
.nav-sub-item.empty.active{opacity:.72}

/* ===== 第13轮 UI：首页 hero 领域快捷入口（建筑/室内/景观/规划/通用/AI · 点击直达目录并筛选） ===== */
.hero-chips .cat-chip{appearance:none;-webkit-appearance:none;font:inherit;font-size:12px;font-weight:600;color:#fff;cursor:pointer;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.32);transition:background .16s ease,transform .16s ease,box-shadow .16s ease}
.hero-chips .cat-chip:hover{background:rgba(255,255,255,.26);transform:translateY(-1px)}
.hero-chips .cat-chip:active{transform:translateY(0);background:rgba(255,255,255,.34)}
.hero-chips .cat-chip:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}
.hero-chips .cat-chip[data-dom="建筑"]{--cat:#5BE0CE}
.hero-chips .cat-chip[data-dom="室内"]{--cat:#F2A85C}
.hero-chips .cat-chip[data-dom="景观"]{--cat:#6BD584}
.hero-chips .cat-chip[data-dom="规划"]{--cat:#6FA8E6}
.hero-chips .cat-chip[data-dom="通用"]{--cat:#AE97E8}
.hero-chips .cat-chip[data-dom="AI"]{--cat:#B49BF2}
.hero-chips .cat-chip i{box-shadow:0 0 0 2px rgba(255,255,255,.34)}

/* ===== 第14轮 UI：首页删除「设计领域」领域卡区块，仅保留「最近浏览」chips 行 ===== */
.home-cats:not(:has(#recentHot:not([hidden]))){display:none}

/* ===== 第15轮 UI：侧栏整体滚动 —— 二级目录展开时不再出现内层滚动条（滑杆位置固定、不跳动）===== */
.sidebar{overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}
.sidebar .nav{flex:0 0 auto;min-height:0;overflow:visible}
.sidebar::-webkit-scrollbar{width:9px}
.sidebar::-webkit-scrollbar-track{background:transparent}
.sidebar::-webkit-scrollbar-thumb{background:rgba(14,156,143,.20);border-radius:999px;border:3px solid transparent;background-clip:content-box}
.sidebar::-webkit-scrollbar-thumb:hover{background:rgba(14,156,143,.40);background-color:rgba(14,156,143,.40);background-clip:content-box}
.sidebar{scrollbar-width:thin;scrollbar-color:rgba(14,156,143,.28) transparent}

/* ===== 第16轮 UI：① 侧栏彻底无滑杆（滚动能力保留、滚动条不可见） ===== */
.sidebar{scrollbar-width:none;-ms-overflow-style:none}
.sidebar::-webkit-scrollbar{width:0;height:0;display:none}
/* 二级目录展开时压缩自身占用：隐藏底部说明 + 子项行距微收，使侧栏不再溢出 */
.sidebar:has(.nav-sub:not([hidden])) .side-note{display:none}
.sidebar:has(.nav-sub:not([hidden])) .nav{gap:5px}
.sidebar:has(.nav-sub:not([hidden])) .nav-sub-item{padding:5px 9px}

/* ===== 第16轮 UI：② 提示词「增强提示词」按钮（由 prompt-enhance.js 注入） ===== */
.pe-bar{display:flex;align-items:center;gap:8px;margin:7px 0 2px;flex-wrap:wrap}
.pe-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(14,156,143,.34);
  background:linear-gradient(135deg,rgba(14,156,143,.12),rgba(14,156,143,.03));color:#0d7d6f;
  border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;line-height:1.2;cursor:pointer;
  transition:background .15s ease,border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.pe-btn:hover{background:linear-gradient(135deg,rgba(14,156,143,.2),rgba(14,156,143,.06));
  border-color:rgba(14,156,143,.52);transform:translateY(-1px);box-shadow:0 3px 10px rgba(14,156,143,.14)}
.pe-btn:active{transform:translateY(0);box-shadow:none}
.pe-hint{font-size:11px;font-weight:400;color:#8a958f;letter-spacing:.01em}

/* ══ AI工程报告面板（report-gen） ══ */
.rg-wrap{display:flex;flex-direction:column;gap:18px}
.rg-card{border:1px solid var(--line,#e3e8e6);border-radius:12px;padding:16px;background:var(--panel,#fff)}
.rg-card h3{margin:0 0 12px;font-size:15px;font-weight:600}
.rg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.rg-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink,#2b3a36)}
.rg-grid input,.rg-grid select,.rg-grid textarea{
  border:1px solid var(--line,#e3e8e6);border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;
  background:var(--panel,#fff);color:inherit;width:100%}
.rg-grid textarea{min-height:64px;resize:vertical}
.rg-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}
.rg-status{font-size:13px;color:var(--ink-2,#5c6b66);min-height:20px}
.rg-outline{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.rg-chapter{display:flex;gap:8px;align-items:flex-start;border:1px solid var(--line,#e3e8e6);border-radius:10px;padding:10px 12px;background:var(--panel,#fff)}
.rg-chapter-no{font-size:12px;color:var(--ink-2,#5c6b66);min-width:22px;padding-top:6px}
.rg-chapter-body{flex:1;min-width:0}
.rg-chapter-title{font-size:14px;font-weight:600;margin-bottom:4px}
.rg-chapter-hint{font-size:12px;color:var(--ink-2,#5c6b66);white-space:pre-wrap;word-break:break-word}
.rg-chapter textarea{width:100%;min-height:78px;margin-top:8px;border:1px solid var(--line,#e3e8e6);border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;resize:vertical;background:var(--panel,#fff);color:inherit}
.rg-chapter .rg-chapter-text{margin-top:8px;font-size:13px;line-height:1.75;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto;background:var(--bg-soft,#f6f9f8);border-radius:8px;padding:10px 12px}
.rg-mini{font-size:12px;padding:5px 10px;border-radius:8px;border:1px solid var(--line,#e3e8e6);background:var(--panel,#fff);color:inherit;cursor:pointer}
.rg-mini:hover{border-color:var(--brand,#0E9C8F);color:var(--brand,#0E9C8F)}
.rg-mini[disabled]{opacity:.5;cursor:not-allowed}
.rg-preview{font-size:13px;line-height:1.8;white-space:pre-wrap;word-break:break-word;background:var(--bg-soft,#f6f9f8);border-radius:10px;padding:14px;max-height:520px;overflow:auto}
.rg-codes{font-size:12px;color:var(--ink-2,#5c6b66);margin-top:8px;line-height:1.7}
.rg-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.rg-bar .rg-progress{font-size:12px;color:var(--ink-2,#5c6b66)}
@media (max-width:720px){.rg-grid{grid-template-columns:1fr}}

/* 设置页三张卡片统一规格（模型服务 / 出图白名单 / 模型库） */
.set-card{margin-top:18px;padding:14px;border:1px solid #e3e8e6;border-radius:12px;background:#fbfcfc}
.set-card>div:first-child{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.set-card h3{margin:2px 0 0;font-size:15px;font-weight:600}
.set-card .eyebrow{margin:0}
.set-card .card-body{max-height:320px;overflow:auto;border:1px solid #eef1f0;border-radius:8px;background:#fff}

/* ── 设置页统一规格（t 轮）：同类型按钮同尺寸，整体收紧；卡片规格统一 ── */
#settingsView .rg-card{padding:12px;border-radius:12px;margin-bottom:10px !important}
#settingsView .set-card{padding:12px;margin-top:12px}
/* t 轮：设置页按钮统一收窄；x2 轮：整体再压一档，主/次按钮同高同宽 */
#settingsView .primary-button,
#settingsView .ghost-button{font-size:12px;line-height:1.2;padding:5px 10px;border-radius:7px;box-shadow:none;white-space:nowrap;min-height:0}
#settingsView .primary-button{background:var(--brand-grad);border:1px solid transparent;color:#fff;font-weight:600}
#settingsView .primary-button:hover{filter:brightness(1.07)}
#settingsView .result-actions{gap:6px;margin-top:10px}
/* 同排多个按钮的行（模型卡片操作条 / 白名单表头 / 卡片底部操作条）统一间距与对齐 */
#settingsView .rg-card .result-actions{gap:6px;margin-top:8px}
#settingsView .set-card>div:first-child{gap:6px}
#settingsView .subtle{font-size:11.5px}
#settingsView .set-card>div:first-child{margin-bottom:6px}


/* ===== workbench ·首页首屏快速生成工作台 ===== */
.workbench{margin-bottom:26px}
.wb-panel{display:grid;grid-template-columns:132px 1fr;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-1)}
.wb-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px dashed var(--line);border-radius:10px;background:var(--bg);color:var(--muted);cursor:pointer;text-align:center;padding:10px}
.wb-upload:hover{border-color:var(--brand);color:var(--brand)}
.wb-upload:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.wb-upload-icon{font-size:22px;line-height:1}
.wb-upload-main{font-size:13px;color:var(--body)}
.wb-upload-hint{font-size:11px;line-height:1.5}
.wb-main{display:flex;flex-direction:column;gap:10px;min-width:0}
.wb-prompt{width:100%;min-height:88px;resize:vertical;border:1px solid var(--line);border-radius:10px;padding:12px;font:inherit;font-size:14px;line-height:1.7;color:var(--ink);background:var(--bg)}
.wb-prompt:focus{outline:none;border-color:var(--brand)}
.wb-params{display:flex;gap:10px;flex-wrap:wrap}
.wb-select{flex:1 1 160px;min-width:0;height:38px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font:inherit;font-size:13px;padding:0 10px}
.wb-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.wb-hint{font-size:12px;color:var(--muted);flex:1;min-width:0}
.wb-submit{height:38px;padding:0 30px;border:none;border-radius:8px;background:var(--brand);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.wb-submit:hover{background:var(--brand-deep)}
.wb-submit:disabled{opacity:.5;cursor:not-allowed}
.wb-thumb{position:relative;width:100%;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.wb-thumb img{width:100%;height:100%;object-fit:contain}
.wb-thumb button{position:absolute;top:6px;right:6px;width:24px;height:24px;border:none;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;font-size:14px;line-height:1}
@media (max-width:900px){.wb-panel{grid-template-columns:1fr}}
@media (max-width:640px){.wb-select{flex:1 1 100%}.wb-actions{flex-direction:column;align-items:stretch}.wb-submit{width:100%}}

/* ===== pricing / wallet ===== */
.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:18px 0 34px}
.pricing-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow-1)}
.pricing-card.is-featured{border-color:var(--brand);box-shadow:var(--shadow-2)}
.pricing-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}
.pricing-head h3{margin:0;font-size:18px}
.pricing-price{font-size:28px;font-weight:700;color:var(--brand)}
.pricing-price small{font-size:12px;color:var(--muted);font-weight:400}
.pricing-card ul{list-style:none;margin:16px 0 0;padding:0}
.pricing-card li{padding:7px 0;border-top:1px solid var(--line);color:var(--body);font-size:13px}
.wallet-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px}

/* ===== assets ===== */
#assetGrid .tool-link{display:flex;flex-direction:column;gap:6px}
#assetGrid .tool-desc{font-size:12px;color:var(--muted);line-height:1.55}
.asset-ext .tool-domain{font-size:11px;color:var(--muted)}

/* ===== responsive ===== */
@media (max-width:1200px){.pricing-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.pricing-grid{grid-template-columns:1fr}}

.plan-layout-page .detail-layout{grid-template-columns:minmax(0,1fr)}
.plan-layout-page .detail-aside{width:100%}
.plan-layout-page #toolPanel{min-width:0}
