.af-intro{padding:12px 0 36px;max-width:900px}.af-intro h1{font-size:clamp(30px,3.5vw,46px)}
.af-layout{--af-blue:#3688d7;--af-orange:#d87c35;--af-green:#489a65;display:grid;grid-template-columns:minmax(285px,340px) minmax(0,1fr);gap:36px;align-items:start}
.af-controls{padding:22px;border:1px solid var(--line);border-radius:var(--radius);min-width:0}.af-controls h2,.af-result h2{font-size:22px}.af-controls-title,.af-result-top{display:flex;align-items:center;justify-content:space-between;gap:16px}.af-link{background:none;text-decoration:underline;text-underline-offset:4px;min-height:44px;font-size:14px;white-space:nowrap}
.af-hint{font-size:13px;line-height:1.7;margin:10px 0;color:var(--muted)}.af-controls details{border-top:1px solid var(--line);margin-top:18px;padding-top:12px}.af-controls summary,.af-assumptions summary{font-weight:500;min-height:44px;display:list-item;padding:8px 0}
.af-field{display:flex;flex-direction:column;gap:6px;font-size:14px;min-width:0;margin:10px 0}.af-layout select,.af-layout input[type=number]{width:100%;min-height:44px;padding:8px 10px;border:1px solid #aaa;background:var(--surface);color:var(--text);border-radius:4px;font-size:16px}.af-source-row{border-bottom:1px solid var(--line);padding:4px 0 12px}.af-source-row:last-child{border:0}.af-source-row h3{font-size:15px;margin-top:10px}.af-source-row .af-field:last-child{display:grid;grid-template-columns:1fr 95px;align-items:center}.af-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px}.af-check-grid label{display:flex;align-items:center;gap:8px;min-height:44px;font-size:14px}.af-layout input[type=checkbox]{width:18px;height:18px;accent-color:var(--text);flex-shrink:0}.af-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.af-actions .button{flex:1;padding-inline:12px}.af-layout button:disabled{opacity:.45;cursor:default}.af-layout #af-error{color:#b3261e;font-size:14px;margin-top:14px}.af-result{min-width:0}.af-result-top{align-items:flex-start}.af-result-top p{font-size:14px;margin-top:8px}.af-result-top .af-field{margin:0;min-width:130px}.af-result canvas{display:block;width:100%;aspect-ratio:1;margin:18px 0}.af-legend{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px}.af-legend span{display:flex;align-items:center;gap:6px}.af-legend i{width:12px;height:12px;border-radius:2px;display:inline-block}.af-source-0{background:var(--af-blue)}.af-source-1{background:var(--af-orange)}.af-source-2{background:var(--af-green)}.af-result progress{display:block;width:100%;height:8px;margin-top:18px;accent-color:var(--text)}.af-assumptions{border-top:1px solid var(--line);margin-top:20px;padding-top:8px;font-size:14px}.af-assumptions p{padding:8px 0;line-height:1.8}
@media(max-width:1050px){.af-layout{grid-template-columns:minmax(260px,300px) minmax(0,1fr);gap:20px}.page-airflow .site-header nav{gap:14px}}
@media(max-width:800px){.af-layout{grid-template-columns:1fr}.af-result{grid-row:1}.af-controls{padding:18px}.af-intro{padding-bottom:24px}.af-result-top{flex-wrap:wrap}.af-result-top .af-field{min-width:120px}.af-controls .af-check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.page-airflow{scroll-behavior:auto}}

.af-exit-row{display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.af-exit-row>label{display:flex;align-items:center;gap:8px;font-size:14px;min-height:44px}.af-exit-row .af-field{margin:0}.af-exit-row input:disabled{opacity:.45}.af-source-row .af-check-grid{margin-top:8px}

.af-source-3{background:#8c62c4}

.af-editor-panel{border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin:0 0 32px}.af-editor-panel summary{font-size:20px;font-weight:600;cursor:pointer;min-height:44px}.af-editor-panel p{font-size:14px;line-height:1.7;margin:12px 0}.af-editor-panel .af-field{max-width:520px}.af-editor-panel input,.af-editor-panel select{min-height:44px;max-width:100%;padding:8px;border:1px solid #aaa;border-radius:4px;background:var(--surface);font-size:16px}.af-editor-panel input[type=checkbox]{min-height:0;accent-color:#222}.af-editor-panel button{min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:4px}.af-editor-panel button:disabled{opacity:.45}.af-editor-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0}.af-editor-grid{display:grid;grid-template-columns:minmax(210px,280px) minmax(0,1fr);gap:24px;align-items:start}.af-editor-grid canvas{width:100%;max-width:720px;aspect-ratio:1;border:1px solid #aaa;touch-action:none;cursor:crosshair}.af-editor-grid canvas:focus-visible{outline:3px solid #3688d7;outline-offset:3px}.af-marker{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:8px 0}.af-marker input{width:100%}.af-marker input[type=checkbox]{width:auto;margin-right:8px}.af-invalid{color:#b3261e}.af-editor-panel[data-dirty=true] #af-use-plan:after{content:' · 有未应用修改'}.af-controls [hidden],.af-editor-panel [hidden]{display:none!important}
@media(max-width:700px){.af-editor-grid{grid-template-columns:1fr}.af-editor-panel{padding:14px}.af-marker{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.af-marker>button{grid-column:1/-1}.af-editor-toolbar button{flex:1}.af-editor-panel input[type=file]{width:100%}}

/* Object editor: canvas remains separate from the 80x80 solver mesh. */
.af-editor-badge{font-size:12px;font-weight:400;color:var(--muted);margin-left:12px}.af-upload-row .af-field{margin:0;flex:1;max-width:560px}.af-upload-row span{font-size:12px;color:var(--muted)}.af-main-actions strong{margin-right:auto;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.af-workspace{display:grid;grid-template-columns:168px minmax(0,1fr) 210px;gap:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}.af-tools,.af-inspector{padding:14px;min-width:0;background:#fafafa}.af-tools{border-right:1px solid var(--line)}.af-inspector{border-left:1px solid var(--line)}.af-workspace h3{font-size:14px;margin:6px 0 10px}.af-tool-buttons{display:grid;gap:6px;margin-bottom:20px}.af-tool-buttons button{text-align:left;padding:8px 9px;background:white;font-size:13px;display:flex;align-items:center;justify-content:space-between}.af-tool-buttons button[aria-pressed=true]{background:var(--text);color:white;border-color:var(--text)}.af-tool-buttons small{font-size:10px;opacity:.65}.af-editor-panel button{cursor:pointer}.af-editor-panel button:not(:disabled):hover{border-color:#587a96}.af-editor-panel :focus-visible{outline:3px solid #3688d7;outline-offset:2px}.af-editor-panel .af-inline-check{font-size:13px;display:flex;align-items:center;gap:8px;min-height:44px}.af-inline-check input{width:17px;height:17px}.af-recognition{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.af-editor-panel .af-workspace summary{font-size:14px;font-weight:500;padding:10px 0}.af-recognition button{width:100%;font-size:12px}.af-workspace .af-field{font-size:12px}.af-workspace .af-field input,.af-workspace .af-field select{width:100%;min-width:0;font-size:14px}.af-drawing-area{min-width:0;background:var(--surface-soft);display:flex;flex-direction:column}.af-canvas-bar{padding:10px 12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:white;border-bottom:1px solid var(--line);font-size:12px}.af-canvas-bar>span{flex:1;min-width:180px}.af-canvas-bar>div{display:flex;align-items:center;gap:6px}.af-canvas-bar button{padding:6px 10px;font-size:13px;background:white}.af-canvas-bar output{min-width:45px;text-align:center}#af-canvas-wrap{height:min(70vh,760px);min-height:400px;overflow:hidden;position:relative;flex:1}#af-editor-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}.af-canvas-footer{display:flex;gap:8px;flex-wrap:wrap;justify-content:space-between;padding:10px 12px;font-size:11px;color:var(--muted);background:white;border-top:1px solid var(--line)}.af-canvas-footer i{width:10px;height:10px;display:inline-block;margin:0 4px 0 6px}.af-key-room{background:#b8dde4}.af-key-wall{background:#24333b}.af-key-repair{background:#db8b24}#af-finish-bar{padding:10px;background:var(--surface-soft);font-size:12px}#af-finish-bar button{background:white;margin-right:6px}.af-inspector p.af-hint{font-size:12px}.af-inspector details{margin-top:18px;border-top:1px solid var(--line)}#af-object-list,#af-repair-list{max-height:260px;overflow:auto;display:grid;gap:6px}#af-object-list button,#af-repair-list button{text-align:left;width:100%;font-size:12px;background:white;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#af-object-list button[aria-pressed=true]{border-color:#3688d7;background:#e8f2fb}.af-nudge{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:12px 0}.af-nudge button{padding:4px}.af-inspector #af-delete{width:100%;font-size:13px}.af-prop-points{display:grid;grid-template-columns:1fr 1fr;gap:6px}.af-apply-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:16px}.af-apply-row .af-field{min-width:200px}.af-apply-row .button{margin-left:auto}.af-editor-panel.af-expanded{position:fixed;inset:12px;z-index:200;background:var(--surface);overflow:auto;margin:0;box-shadow:0 0 0 24px rgba(0,0,0,.3)}.af-expanded #af-canvas-wrap{height:72vh}.af-editor-panel[data-dirty=true] #af-use-plan:after{content:' · 待应用'}
@media(max-width:1150px){.af-workspace{grid-template-columns:148px minmax(0,1fr)}.af-inspector{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:10px 24px}.af-inspector>h3{grid-column:1/-1}.af-inspector details{margin-top:0}.af-main-actions strong{max-width:100%;flex-basis:100%}}
@media(max-width:650px){.af-workspace{grid-template-columns:1fr}.af-tools{border:0;border-bottom:1px solid var(--line);padding:10px}.af-tools>h3,.af-tools .af-inline-check,.af-tools>.af-field{display:none}.af-tool-buttons{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:6px}.af-tool-buttons button{font-size:12px;padding:6px}.af-tool-buttons small{display:none}.af-recognition{margin-top:6px}.af-recognition>summary{min-height:44px}.af-canvas-bar>span{flex-basis:100%}.af-inspector{display:block}.af-inspector details{margin-top:12px}#af-canvas-wrap{height:60vh;min-height:340px}.af-apply-row .button{margin-left:0;width:100%}.af-editor-panel.af-expanded{inset:0;border-radius:0;padding:10px}.af-editor-badge{display:block;margin-left:0}.af-upload-row .af-field{flex-basis:100%}}
.af-expanded>details>p:first-of-type,.af-expanded .af-upload-row,.af-expanded>details>summary{display:none}.af-expanded .af-main-actions{position:sticky;top:-20px;z-index:2;background:var(--surface);padding:8px 0;margin-top:0}.af-expanded #af-canvas-wrap{height:calc(100vh - 215px);min-height:400px}
/* Manual tracing: the image and editable walls share one world transform. */
.af-measure-bar{display:flex;align-items:end;flex-wrap:wrap;gap:10px;padding:12px;background:var(--surface-soft);border-bottom:1px solid #afc9dc;font-size:13px}.af-measure-bar label{display:flex;flex-direction:column;gap:6px}.af-measure-bar input{width:160px}.af-measure-bar button{background:var(--text);color:white}.af-measure-bar span{flex-basis:100%;color:#405364}.af-key-snap{background:#007f73}.af-editor-panel #af-scale-status{font-size:12px;color:#405364}.af-tools .af-field input[type=range]{padding:0;min-height:32px}.af-workspace .af-tools button:disabled{cursor:default}.af-canvas-footer{font-size:12px}.af-editor-panel .af-canvas-bar>span{line-height:1.6}
@media(max-width:650px){.af-tools>.af-field,.af-tools .af-inline-check{display:flex}.af-tools .af-inline-check{display:inline-flex;margin-right:12px}.af-tools>.af-field{max-width:200px}.af-measure-bar button{flex:1}.af-measure-bar input{width:100%}.af-measure-bar label{flex:1;min-width:150px}}
@media(min-width:1151px){.af-workspace{height:min(78vh,850px);min-height:500px}.af-tools,.af-inspector{overflow:auto}.af-drawing-area{min-height:0}#af-canvas-wrap{height:auto!important;min-height:0}.af-expanded .af-workspace{height:calc(100vh - 190px);min-height:400px}}
@media(min-width:651px) and (max-width:1150px){.af-tools{max-height:75vh;overflow:auto}.af-drawing-area{max-height:75vh}#af-canvas-wrap{min-height:300px}.af-inspector{max-height:400px;overflow:auto}}
@media(min-width:1151px){.af-expanded #af-canvas-wrap{min-height:0!important;height:auto!important}.af-measure-bar label{flex-direction:row;align-items:center}.af-measure-bar span{flex-basis:auto;flex:1;min-width:180px}.af-measure-bar input{width:110px}.af-expanded #af-editor-status{margin:0 0 8px}.af-expanded .af-workspace{height:calc(100vh - 150px)}}

/* Keep essential drawing tools with the sticky workspace actions. */
.af-main-actions .af-quick-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex-basis:100%;padding-top:8px;border-top:1px solid var(--line)}
.af-quick-tools button{background:white;min-width:64px;font-size:14px}.af-quick-tools button[aria-pressed=true]{background:var(--text);color:white;border-color:var(--text)}.af-quick-tools small{margin-left:8px;opacity:.7}.af-quick-tools span{font-size:12px;color:#405364;line-height:1.6}
.af-main-actions{position:sticky;top:72px;z-index:3;background:var(--surface);padding:8px 0}.af-expanded .af-main-actions{top:-20px;z-index:3}
@media(min-width:1151px){.af-expanded .af-workspace{height:calc(100vh - 215px)}}
@media(max-width:650px){.af-quick-tools{width:100%}.af-quick-tools button{flex:1;min-width:0}.af-quick-tools span{flex-basis:100%}.af-expanded .af-main-actions{top:-10px}}

/* Explicit cross-references between custom-plan controls and map labels. */
.af-controls .af-locate{display:inline-flex;align-items:center;justify-content:center;min-width:60px;min-height:36px;margin-top:8px;padding:5px 12px;border:1px solid var(--marker-color,#4b5563);border-radius:4px;color:#24343d;background:#fff;font-size:13px;cursor:pointer}
.af-controls .af-locate:hover{background:#edf4fa}.af-controls .af-locate:focus-visible{outline:2px solid #146bc0;outline-offset:3px}
.af-controls .af-marker-selected{background:#edf5ff;box-shadow:inset 3px 0 #146bc0;padding-left:10px;padding-right:10px}
.af-exit-row .af-locate{grid-column:1/-1;justify-self:start}

.af-auto-dimensions summary{cursor:pointer;font-weight:600}.af-auto-dimensions button{min-height:44px}.af-auto-dimensions canvas{display:block;width:min(100%,800px);height:auto;background:#fff;border:1px solid #d9dfe3}.af-auto-dimensions .af-field{max-width:480px}

/* Guided setup retains the existing editor and simulation controls. */
.af-guide{max-width:1400px;margin:24px auto;padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.af-step-nav{display:flex;flex-wrap:wrap;gap:8px}.af-guide button{min-height:44px;padding:10px 16px;cursor:pointer}.af-step-nav button[aria-current]{background:var(--text);color:white}.af-step-actions{display:flex;flex-wrap:wrap;gap:12px}.af-guide h2{margin-top:24px}.af-guide p{line-height:1.7}#af-step-feedback{color:#9b3b13}
body[data-airflow-step="1"] #af-editor-work,body[data-airflow-step="1"] #airflow-app{display:none}
body[data-airflow-step="2"] #airflow-app,body[data-airflow-step="3"] #airflow-app{display:none}
body[data-airflow-step="2"] .af-quick-tools,body[data-airflow-step="2"] .af-inspector,body[data-airflow-step="2"] .af-apply-row{display:none}
body[data-airflow-step="3"] .af-auto-dimensions,body[data-airflow-step="3"] .af-apply-row,body[data-airflow-step="4"] 
body[data-airflow-step="4"]:not(.af-plan-applied) #airflow-app{display:none}
body[data-airflow-step="5"] #af-editor-panel{display:none}
@media(max-width:650px){.af-guide{margin:12px;padding:16px}.af-step-nav button{flex:1 1 42%}}

body[data-airflow-step="2"] .af-tools [data-tool]:not([data-tool="measure"]):not([data-tool="pan"]),body[data-airflow-step="2"] #af-end-draw,body[data-airflow-step="2"] .af-tools h3,body[data-airflow-step="2"] .af-tools>.af-inline-check,body[data-airflow-step="2"] .af-tools>.af-field{display:none}
body[data-airflow-step="3"] [data-tool="source"],body[data-airflow-step="3"] [data-tool="exit"]{display:none}
body[data-airflow-step="2"] .af-workspace{grid-template-columns:160px minmax(0,1fr)}
@media(max-width:650px){body[data-airflow-step="2"] .af-workspace{grid-template-columns:1fr}}

.af-recognize-box{padding:20px;margin:16px 0;border:1px solid var(--line);background:var(--surface-soft);border-radius:8px}.af-recognize-box button{min-height:44px;padding:10px 16px}.af-recognize-box p{line-height:1.7}.af-recognize-box canvas{display:block;width:min(100%,480px);height:auto;background:white;border:1px solid var(--line)}body[data-airflow-step="1"] .af-recognize-box,body[data-airflow-step="2"] .af-recognize-box,body[data-airflow-step="4"] .af-recognize-box{display:none}

#af-recognize-review-row.af-review-error{color:#b42318;font-weight:600;outline:2px solid #b42318;outline-offset:5px;border-radius:3px;scroll-margin-block:100px}
.af-review-shake{animation:af-review-shake .4s ease-in-out}
@keyframes af-review-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
@media(prefers-reduced-motion:reduce){.af-review-shake{animation:none}}

.af-placement-help{display:none;padding:20px 24px;margin:16px 0;background:var(--surface-soft);border:1px solid var(--line);border-radius:8px;color:var(--text)}
.af-placement-help strong{display:block;font-size:20px;line-height:1.5}
#af-editor-panel .af-placement-help p{font-size:16px;line-height:1.65;margin:8px 0 0}
body[data-airflow-step="4"] .af-placement-help{display:block}
body[data-airflow-step="4"] .af-upload-row,body[data-airflow-step="4"] .af-upload-help,body[data-airflow-step="4"] .af-editor-badge{display:none}
@media(max-width:650px){.af-placement-help{padding:16px}.af-placement-help strong{font-size:18px}}

/* Compact simulation settings: full-size controls, fewer stacked labels. */
.af-controls.af-compact-custom{padding:18px}
.af-compact-custom details{margin-top:10px;padding-top:4px}
.af-compact-custom summary{min-height:44px;padding:10px 0;font-size:15px}
.af-compact-custom summary small{float:right;font-size:12px;color:#667782;font-weight:400}
.af-compact-custom .af-supply-row,.af-compact-custom .af-exit-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 48px;gap:8px;align-items:center;padding:8px 0}
.af-compact-custom .af-supply-row h3{margin:0;font-size:14px;overflow-wrap:anywhere}
.af-compact-custom .af-supply-row .af-field,.af-compact-custom .af-exit-row .af-field{display:block;font-size:0;margin:0}
.af-compact-custom .af-supply-row input,.af-compact-custom .af-exit-row input[type=number]{font-size:15px;padding:8px;min-height:44px}
.af-controls.af-compact-custom .af-locate{grid-column:auto;min-width:44px;min-height:44px;width:48px;margin:0;padding:4px;font-size:12px;border-color:#d1dce5;border-left:3px solid var(--marker-color);border-radius:6px}
.af-compact-custom .af-exit-row>label:not(.af-field){font-size:13px;gap:5px;overflow-wrap:anywhere}
.af-compact-custom .af-door-row{display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:8px;padding:5px 0}
.af-compact-custom .af-door-row>label{display:flex;align-items:center;gap:8px;min-height:44px;font-size:14px}
.af-compact-custom .af-marker-selected{padding-left:6px;padding-right:6px}
.af-compact-custom #af-windows .af-field{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:8px;align-items:center;font-size:13px;margin:8px 0}
.af-compact-custom #af-windows select{font-size:14px}

.af-recognition-notice{margin:16px 0;padding:14px 16px;border:1px solid #edc479;border-left:4px solid #c77b13;border-radius:8px;background:#fff8e9;color:#75470e;font-size:15px;line-height:1.65}
.af-recognition-notice strong{display:block;font-size:17px;margin-bottom:4px}
.af-recognition-notice p{margin:0}
#af-recognize-review-row{min-height:44px;font-weight:600;line-height:1.6;cursor:pointer}

.af-flow-details{margin-top:16px}.af-flow-details table{width:100%;border-collapse:collapse;font-size:14px}.af-flow-details th,.af-flow-details td{text-align:left;padding:8px;border-bottom:1px solid #e5e9ed;overflow-wrap:anywhere}

.af-domain-review{margin:16px 0;padding:18px 20px;background:#fff5e8;border:1px solid #ddaf77;border-left:4px solid #a7510d;border-radius:8px;color:#61320f}.af-domain-review strong{font-size:18px}.af-domain-review p{font-size:15px;line-height:1.75;margin:8px 0 14px;max-width:960px}.af-domain-review>div{display:flex;flex-wrap:wrap;gap:10px}.af-domain-review button{min-height:44px;padding:10px 16px;border:1px solid #cfa16e;background:white;color:#61320f;border-radius:4px}

.af-cloud-storage{padding:16px;margin:12px 0;border:1px solid #b9cbd4;border-radius:8px;background:#f5f9fb}.af-cloud-storage p{margin:8px 0;line-height:1.6}.af-cloud-storage button{min-height:44px;margin:4px;padding:8px 12px}.af-cloud-storage a{display:inline-block;padding:10px;color:var(--accent);text-decoration:underline}.af-cloud-storage [data-error="true"]{color:#9b2525}

.af-canvas-notice{margin:0;padding:10px 14px;background:var(--surface-soft);color:var(--text);border-bottom:1px solid var(--line);font-size:14px;line-height:1.5}.af-canvas-notice.af-invalid{background:#fff4e7;color:#8a370b;border-color:#e5b77f}.af-canvas-notice[hidden]{display:none}

/* Two clear entry actions: native upload control stays keyboard accessible. */
.af-entry-actions{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:8px 0 24px}
.af-entry-upload,.af-entry-archive{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:60px;min-width:220px;padding:16px 28px;border:1px solid transparent;border-radius:8px;font-size:18px;font-weight:600;line-height:1.4;text-decoration:none;cursor:pointer;box-sizing:border-box;margin:0}
.af-entry-upload{background:var(--accent);color:#fff;box-shadow:none}
.af-entry-upload:hover{background:var(--ink)}
.af-entry-upload span{font-size:inherit;color:inherit}
.af-entry-archive{background:#fff;color:var(--accent);border-color:var(--line)}
.af-entry-archive:hover{background:var(--surface-soft);border-color:var(--accent);color:var(--ink);text-decoration:none}
.af-entry-actions svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.af-entry-upload input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0}
.af-entry-upload:focus-within,.af-entry-archive:focus-visible{outline:3px solid #3688d7;outline-offset:4px}
@media(max-width:600px){.af-entry-actions{flex-direction:column;align-items:stretch;gap:12px}.af-entry-upload,.af-entry-archive{width:100%;min-width:0}}


.af-editor-panel .af-auto-dimensions>summary{font-size:22px;font-weight:700;color:var(--text)}
.af-auto-dimensions>.af-hint{font-size:15px;color:var(--muted);max-width:800px}
#af-measure-apply{background:var(--accent);color:white;border:1px solid var(--accent);min-height:52px;padding:12px 24px;font-size:17px;font-weight:600;border-radius:8px}
#af-measure-apply:hover{background:var(--ink)}
#af-auto-scan:disabled{opacity:.55;cursor:wait}
.af-measure-heading{flex-basis:100%;font-size:17px;color:var(--text);padding-bottom:10px}
#af-measure-bar{padding:18px;gap:14px;align-items:end}
#af-measure-length{width:190px;max-width:100%;min-height:52px;border:2px solid var(--muted);font-size:19px;background:white}
#af-measure-reselect{background:white;color:var(--muted);border:1px solid var(--line)}
@media(max-width:600px){.af-editor-panel .af-auto-dimensions>summary{font-size:19px}.af-measure-heading{line-height:1.8}#af-measure-apply{width:100%}}

#af-measure-bar #af-demo-open{margin-left:16px;background:white;color:var(--accent);border:1px solid var(--line);border-radius:8px;padding:9px 16px;font-size:15px;min-height:44px}
#af-measure-demo{width:min(680px,calc(100vw - 32px));max-height:90vh;overflow:auto;border:0;border-radius:8px;padding:24px;color:var(--text);box-sizing:border-box;box-shadow:0 20px 80px #0004}
#af-measure-demo::backdrop{background:#142b40a6}
#af-measure-demo header,#af-measure-demo footer{display:flex;justify-content:space-between;align-items:center;gap:12px}
#af-measure-demo h2{margin:0;font-size:24px}#af-measure-demo header+p{color:var(--muted);font-size:14px}
#af-measure-demo svg{width:100%;display:block;background:#f9fbfc;border-radius:8px}
#af-demo-caption{min-height:54px;padding:14px;background:var(--surface-soft);font-weight:600;line-height:1.6;border-radius:8px}
.af-demo-form{display:flex;flex-wrap:wrap;align-items:center;gap:12px;font-size:14px;margin-bottom:24px}
#af-demo-value{padding:12px 18px;border:2px solid var(--line);border-radius:6px;background:white;min-width:120px;color:#647582}
#af-demo-confirm{padding:14px;background:#dfe7ec;border-radius:6px;color:#586d7b}
#af-measure-demo button{min-height:44px;padding:10px 18px;cursor:pointer;border-radius:6px}#af-measure-demo button:focus-visible{outline:3px solid #3688d7;outline-offset:3px}
.af-demo-a,.af-demo-b,.af-demo-pointer{opacity:0;transition:opacity .3s,transform .5s}
#af-measure-demo[data-step="1"] .af-demo-a,#af-measure-demo[data-step="2"] .af-demo-a,#af-measure-demo[data-step="3"] .af-demo-a,#af-measure-demo[data-step="4"] .af-demo-a{opacity:1}
#af-measure-demo[data-step="2"] .af-demo-b,#af-measure-demo[data-step="3"] .af-demo-b,#af-measure-demo[data-step="4"] .af-demo-b{opacity:1}
#af-measure-demo[data-step="1"] .af-demo-pointer{opacity:1}#af-measure-demo[data-step="2"] .af-demo-pointer{opacity:1;transform:translateX(400px)}
#af-measure-demo[data-step="3"] #af-demo-value{border-color:#1976bd;color:var(--text);box-shadow:0 0 0 4px #1976bd22}
#af-measure-demo[data-step="4"] #af-demo-confirm{background:var(--accent);color:white;box-shadow:0 0 0 4px #175b8022}
@media(prefers-reduced-motion:reduce){.af-demo-a,.af-demo-b,.af-demo-pointer{transition:none}}
/* Recorded-operation style calibration demo. */
#af-measure-demo{width:min(820px,calc(100vw - 32px))}
#af-measure-demo .af-demo-stage{max-height:58vh}
#af-demo-cursor{transition:transform .85s cubic-bezier(.4,0,.2,1);pointer-events:none;filter:drop-shadow(1px 3px 2px #0005)}
.af-demo-click{opacity:0}.is-clicking .af-demo-click{animation:af-demo-click .65s ease-out 2}
@keyframes af-demo-click{0%{opacity:1;r:7}100%{opacity:0;r:30}}
.af-demo-selected{opacity:0}#af-measure-demo[data-step="2"] .af-demo-selected,#af-measure-demo[data-step="3"] .af-demo-selected,#af-measure-demo[data-step="4"] .af-demo-selected{opacity:1}
#af-demo-caret{visibility:hidden}#af-measure-demo[data-typing="true"] #af-demo-caret{visibility:visible;animation:af-demo-blink .75s steps(1) infinite}
@keyframes af-demo-blink{50%{opacity:0}}
#af-measure-demo[data-step="3"] #af-demo-input-box{stroke:#1976bd;stroke-width:4}
#af-measure-demo[data-step="4"] #af-demo-confirm{fill:#16734d;stroke:#94d5b7;stroke-width:4}
@media(prefers-reduced-motion:reduce){#af-demo-cursor{transition:none}.is-clicking .af-demo-click,#af-measure-demo[data-typing="true"] #af-demo-caret{animation:none}}

.af-recognize-box #af-recognize-title{font-size:23px;font-weight:700;line-height:1.5;color:var(--text);margin:0 0 16px}
#af-recognize{min-height:58px;padding:14px 30px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:8px;font-size:19px;font-weight:700;box-shadow:none}
#af-recognize:hover{background:var(--ink)}#af-recognize:disabled{opacity:.6;cursor:wait}
#af-recognize-status{font-size:16px;line-height:1.7;color:var(--muted)}
#af-recognition-notice[hidden]{display:none}
@media(max-width:600px){#af-recognize{width:100%}.af-recognize-box #af-recognize-title{font-size:20px}}
.af-tool-demo-row{display:flex;gap:4px;min-width:0}.af-tool-demo-row>[data-tool]{flex:1;min-width:0}.af-tool-buttons .af-tool-demo-row>[data-draw-demo]{flex-shrink:0;padding:6px;font-size:11px;color:var(--accent);border-color:var(--line);justify-content:center;min-height:44px}
#af-draw-demo{width:min(820px,calc(100vw - 32px));max-height:90vh;overflow:auto;padding:24px;border:0;border-radius:8px;color:var(--text);box-sizing:border-box;box-shadow:0 20px 80px #0004}
#af-draw-demo::backdrop{background:#142b40a6}#af-draw-demo header,#af-draw-demo footer{display:flex;justify-content:space-between;align-items:center;gap:12px}#af-draw-demo h2{font-size:24px;margin:0}#af-draw-demo svg{display:block;width:100%;max-height:58vh}#af-draw-demo button{padding:10px 16px;min-height:44px;cursor:pointer;border-radius:7px}#af-draw-demo button:focus-visible{outline:3px solid #3688d7;outline-offset:3px}
#af-draw-demo-caption{min-height:54px;padding:14px;background:var(--surface-soft);border-radius:8px;font-size:18px;font-weight:600;line-height:1.6}#af-draw-demo-cursor{transition:transform .85s ease;pointer-events:none;filter:drop-shadow(1px 3px 2px #0005)}
@media(prefers-reduced-motion:reduce){#af-draw-demo-cursor{transition:none}}
@media(max-width:650px){.af-tool-demo-row{flex-wrap:wrap}.af-tool-demo-row>[data-draw-demo]{width:100%}}

#af-editor-panel[data-recognized="true"] #af-recognize{background:white;color:var(--muted);border-color:var(--line);box-shadow:none;font-size:14px;font-weight:500;min-height:42px;padding:8px 16px}
#af-recognize-status:empty{display:none}
#af-recognize-review-row{margin-top:18px}#af-recognize-review-row[hidden]{display:none}
#af-review-continue{background:var(--accent);color:white;border:1px solid var(--accent);border-radius:8px;min-height:58px;padding:14px 28px;font-size:19px;font-weight:700;box-shadow:none}
#af-review-continue:hover{background:var(--ink)}
@media(max-width:650px){#af-review-continue{width:100%;font-size:17px}}
/* Stage-specific tools and responsive controls. */
body[data-airflow-step="2"] .af-tool-demo-row{display:none}
.af-result-top{flex-wrap:wrap}.af-result-top>div:first-child{flex:1 1 200px}.af-result-top>.af-field{flex:0 1 160px}
.af-layout button,.af-editor-panel .af-tools button{min-height:44px}
.af-tool-buttons .af-tool-demo-row>[data-draw-demo]{font-size:12px;min-width:54px}
.af-editor-panel .af-workspace .af-field input,.af-editor-panel .af-workspace .af-field select{font-size:16px}
.af-extra-help{margin:12px 0;color:var(--muted);font-size:14px}.af-extra-help>summary{cursor:pointer;min-height:44px;padding:10px 0}
#af-cloud-status[data-error="true"]{display:block;color:#a33224;font-size:14px;margin:10px 0}
#af-step-feedback:empty,#af-editor-status:empty{display:none}
#af-step-feedback:not(:empty){padding:12px 16px;background:#fff4e6;border-left:4px solid #c87816;border-radius:6px}
.af-flow-details{overflow-x:auto}.af-flow-details table{min-width:360px}
.af-result :focus-visible{outline:3px solid #3688d7;outline-offset:3px}
@media(max-width:650px){.af-result-top>div:first-child{flex-basis:100%}.af-result-top>.af-field{flex:1 1 120px}.af-main-actions{gap:8px}.af-main-actions strong{white-space:normal;overflow-wrap:anywhere}.af-actions .button{min-height:48px}.af-measure-bar label{max-width:100%}.af-controls{padding:16px}.af-layout{gap:18px}}

/* Original website design system: neutral interface, semantic plot colors retained. */
.af-guide{background:var(--surface);border-color:var(--line);padding:20px 24px}
.af-guide h2{font-size:24px;margin-top:16px}.af-guide p{font-size:14px}
.af-step-nav button{background:var(--surface-soft);color:var(--muted);border:1px solid var(--line);border-radius:4px;font-size:14px}
.af-step-nav button[aria-current]{background:var(--text);color:var(--on-dark);border-color:var(--text)}
.af-step-actions{margin-top:12px}.af-step-actions button{border:1px solid var(--line);border-radius:4px;background:var(--surface);font-size:14px}
.af-step-actions .primary{background:var(--accent);color:var(--on-dark)}
body[data-airflow-step="1"] #af-step-next,body[data-airflow-step="2"] #af-step-next,body[data-airflow-step="4"] #af-step-next,
body[data-airflow-step="3"]:has(#af-editor-panel[data-recognized="true"]) #af-step-next{display:none}
.af-entry-upload,.af-entry-archive,#af-measure-apply,#af-recognize,#af-review-continue{min-height:52px;padding:12px 24px;border-radius:4px;font-size:16px;font-weight:600;box-shadow:none}
body:not([data-airflow-step="1"]) .af-entry-upload{background:var(--surface);color:var(--text);border-color:var(--line)}
.af-entry-archive{color:var(--text);border-color:var(--line)}
.af-entry-actions{padding-bottom:16px}.af-main-actions{margin:8px 0 16px}
.af-recognize-box{padding:20px 24px}.af-recognize-box #af-recognize-title{font-size:22px;font-weight:500;color:var(--text);margin-bottom:16px}
.af-recognition-notice{background:transparent;border:0;border-radius:0;color:var(--muted);padding:0;margin:12px 0;font-size:14px}
.af-editor-panel .af-recognition-notice p{margin:0}
.af-tool-buttons button,.af-editor-panel .af-inline-check,.af-workspace .af-field,#af-object-list button,#af-repair-list button,.af-inspector p.af-hint,.af-canvas-bar{font-size:14px}
.af-tool-buttons{gap:8px}.af-tool-demo-row{gap:8px}
.af-canvas-footer{font-size:12px;color:var(--muted)}
.af-editor-panel button:not(:disabled):hover{border-color:var(--text)}
.af-editor-panel :focus-visible,.af-result :focus-visible,.af-entry-upload:focus-within,.af-entry-archive:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
#af-measure-demo,#af-draw-demo{color:var(--text);border:1px solid var(--line);border-radius:8px}
#af-measure-demo button,#af-draw-demo button,#af-measure-bar #af-demo-open{border-radius:4px}
#af-measure-demo::backdrop,#af-draw-demo::backdrop{background:#0008}
.af-placement-help{padding:16px 24px}.af-placement-help p{margin-bottom:0}
@media(max-width:650px){.af-guide{padding:16px}.af-guide h2{font-size:22px}.af-recognize-box{padding:16px}.af-entry-actions{gap:12px}.af-tool-buttons button{font-size:14px}.af-step-actions{gap:8px}}

/* Direct manipulation in the simulation view, using the site's existing tokens. */
.af-map-stage{position:relative;margin:18px 0}.af-result .af-map-stage canvas{margin:0}
#af-map-targets{position:absolute;inset:0;pointer-events:none}
.af-map-target{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;min-height:44px;padding:0;border:0;background:transparent;pointer-events:auto;cursor:pointer;border-radius:6px}
.af-map-target:hover,.af-map-target:focus-visible{background:rgba(23,91,128,.09);outline:2px solid var(--text);outline-offset:2px}
.af-map-hint{padding:10px 14px;margin:12px 0 0;background:var(--surface-soft);font-size:14px;line-height:1.6}
.af-map-settings{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);max-width:420px;margin:12px 0 18px}
.af-map-settings[hidden],.af-map-settings [hidden]{display:none!important}.af-map-settings h3{font-size:16px;margin:0}.af-map-settings .af-controls-title button{min-height:44px;padding:8px 12px}
#af-map-enable-label{display:flex;align-items:center;gap:8px;min-height:44px;margin-top:10px}#af-map-error{color:#b3261e;font-size:14px}
.af-map-settings .button{min-height:44px;width:100%}.af-result .af-actions .button{flex:0 1 auto;min-width:110px}
.af-map-stage .af-map-settings{position:absolute;right:12px;top:12px;z-index:2;width:280px;max-width:calc(100% - 24px);margin:0;box-shadow:0 4px 20px rgba(0,0,0,.1)}
@media(max-width:650px){.af-map-stage .af-map-settings{position:relative;inset:auto;width:100%;max-width:none;margin-top:12px;box-shadow:none}}

.af-tour{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;width:440px;max-width:calc(100% - 24px);padding:18px;background:var(--surface,#fff);color:var(--text,#171717);border:1px solid var(--line,#ddd);border-radius:var(--radius,8px);box-shadow:0 8px 32px #0003}
.af-tour[hidden]{display:none}
.af-tour-heading,.af-tour-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}
.af-tour-heading button{min-height:44px;background:transparent;border:0;cursor:pointer;color:inherit}
.af-tour p{font-size:16px;line-height:1.6;margin:8px 0 16px}
.af-tour-actions .button{min-height:44px}
#af-map-targets .af-tour-target,.af-tour-target{outline:3px solid var(--text,#171717)!important;outline-offset:5px;box-shadow:0 0 0 9px #ffffffdb!important}
@media(max-width:650px){.af-tour{bottom:calc(12px + env(safe-area-inset-bottom));padding:14px}}
.af-measure-bar [hidden]{display:none!important}
#af-measure-instruction{font-size:20px;line-height:1.5}
#af-measure-apply:disabled{opacity:.45;cursor:not-allowed}

#af-recognize.af-next-action{outline:3px solid var(--text,#171717);outline-offset:5px;position:relative}
#af-recognize.af-next-action::after{content:"← 点击这里";position:absolute;left:calc(100% + 22px);top:50%;transform:translateY(-50%);white-space:nowrap;color:var(--text,#171717);font-size:16px;font-weight:600}
@media(max-width:650px){#af-recognize.af-next-action::after{content:"↓ 点击这里";left:0;top:-26px;transform:none} .af-recognize-box:has(.af-next-action) h3{margin-bottom:40px}}
/* Inline demonstration leaves the drawing surface interactive. */
#af-measure-demo[hidden]{display:none!important}
body[data-airflow-step="2"] .af-workspace.af-with-measure-demo{grid-template-columns:160px minmax(0,1fr) 380px}
.af-workspace #af-measure-demo{position:sticky;top:16px;align-self:start;grid-column:3;grid-row:1;width:100%;max-height:calc(100vh - 32px);margin:0;padding:18px;border:0;border-left:1px solid var(--line);border-radius:0;box-shadow:none;background:var(--surface,#fff)}
.af-workspace #af-measure-demo h2{font-size:20px}
.af-workspace #af-demo-caption{font-size:16px;line-height:1.6;min-height:5em}
.af-workspace #af-measure-demo button{padding:8px 12px}
@media(max-width:1100px){body[data-airflow-step="2"] .af-workspace.af-with-measure-demo{grid-template-columns:140px minmax(0,1fr)}.af-workspace #af-measure-demo{position:static;grid-column:2;grid-row:1;max-height:none;border-left:0;border-bottom:1px solid var(--line)}.af-with-measure-demo .af-drawing-area{grid-column:2;grid-row:2}.af-with-measure-demo .af-tools{grid-row:1/3}.af-workspace #af-measure-demo svg{max-height:240px}}
@media(max-width:650px){body[data-airflow-step="2"] .af-workspace.af-with-measure-demo{grid-template-columns:1fr}.af-workspace #af-measure-demo{grid-column:1;grid-row:2}.af-with-measure-demo .af-tools{grid-row:1}.af-with-measure-demo .af-drawing-area{grid-column:1;grid-row:3}}
/* Give the result more room while keeping controls readable. */
@media(min-width:1051px){.af-layout{grid-template-columns:minmax(260px,290px) minmax(0,1fr);gap:22px}.af-controls{padding:18px}}
.af-result .af-actions{margin-top:12px}
.af-result .af-map-stage{margin-top:10px}
.af-result .af-map-hint{padding:8px 12px}
/* Compact settings beside the primary simulation view. */
#airflow-app.af-layout{grid-template-columns:250px minmax(0,1fr);gap:16px}
#airflow-app>.af-controls{grid-column:1;grid-row:1;padding:12px;min-width:0}
#airflow-app>.af-result{grid-column:2;grid-row:1}
#airflow-app .af-controls-title{gap:6px}
#airflow-app .af-controls-title h2{font-size:18px;margin:0}
#airflow-app .af-controls .af-link{font-size:12px;padding:4px}
#airflow-app .af-controls details{margin-top:8px;padding-top:0}
#airflow-app .af-controls summary{padding:8px 0;font-size:14px}
#airflow-app .af-controls .af-hint{font-size:12px;line-height:1.5;margin:6px 0}
#airflow-app .af-supply-row,#airflow-app .af-exit-row{grid-template-columns:minmax(0,1fr) 76px 44px;gap:5px;padding:5px 0}
#airflow-app .af-controls .af-locate{width:44px}
#airflow-app .af-compact-custom #af-windows .af-field{grid-template-columns:minmax(0,1fr) 115px}
#airflow-app .af-map-stage{width:100%;margin:10px 0}
@media(max-width:800px){#airflow-app.af-layout{grid-template-columns:minmax(0,1fr)}#airflow-app>.af-result{grid-column:1;grid-row:1}#airflow-app>.af-controls{grid-column:1;grid-row:2}}

/* V5 geometry preview: visualization resolution is independent of solver mesh. */
#af-show-3d{margin:12px 16px;min-height:44px;background:#191919;color:white;border-radius:6px;padding:10px 20px}
#af-model-preview{position:fixed;inset:20px;z-index:2000;background:#fff;border:1px solid #ddd;border-radius:12px;padding:16px;box-shadow:0 12px 60px #0004;display:flex;flex-direction:column}
#af-model-preview[hidden]{display:none}
.af-model-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.af-model-toolbar strong{margin-right:auto}.af-model-toolbar button{min-height:44px;padding:8px 16px}.af-model-toolbar label{display:flex;gap:8px;align-items:center}
#af-model-stage{flex:1;min-height:160px;overflow:hidden;border-radius:8px;touch-action:none}#af-model-stage canvas{display:block;width:100%;height:100%}#af-model-preview p{font-size:14px;margin:8px 0;color:#555}
@media(max-width:600px){#af-model-preview{inset:6px;padding:10px}.af-model-toolbar{gap:6px}.af-model-toolbar strong{width:100%}}
.af-model-door-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px;font-size:14px}.af-model-door-tools select{width:auto;max-width:200px;min-height:44px}.af-model-door-tools button{min-height:44px;padding:8px 12px}#af-model-preview button:focus-visible,#af-model-preview select:focus-visible{outline:2px solid #195c7c;outline-offset:2px}
.af-model-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:12px;flex:1;min-height:0}.af-port-panel{overflow:auto;padding:10px;background:#f7f7f7;border:1px solid #ddd;border-radius:8px}.af-port-panel h3{margin:0 0 10px}.af-port-panel label{display:block;font-size:14px;margin:8px 0}.af-port-panel input,.af-port-panel select{box-sizing:border-box;width:100%;min-height:40px;padding:6px}.af-port-panel button{min-height:40px;padding:8px;margin:3px 0}#af-port-help{color:#195c7c;font-weight:600}.af-model-layout #af-model-stage{height:100%}@media(max-width:650px){.af-model-layout{grid-template-columns:150px minmax(0,1fr)}.af-port-panel{padding:6px}.af-port-panel label{font-size:12px}}

.af-3d-validation{border-bottom:1px solid #ccc;margin-bottom:16px;padding-bottom:16px}.af-3d-validation #af-3d-run{background:#181818;color:#fff}.af-3d-validation button:disabled{opacity:.5;cursor:default}.af-3d-validation output{font-size:13px}

.af-heat-scale{height:12px;margin:8px 0;background:linear-gradient(to right,#16834b,#f1ce45,#c73432)}
.af-heat-ticks{display:flex;justify-content:space-between;gap:4px;font-size:12px}

.af-quality {border-bottom:1px solid #ddd;padding:12px 0;margin-bottom:12px}.af-quality label{display:block;margin:8px 0}.af-quality input,.af-quality select{width:100%;min-height:44px}.af-quality button{min-height:44px;margin:4px 0}.af-quality p{font-size:13px;line-height:1.6}.aq-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}

.aq-pair[hidden]{display:none}

#af-show-3d[hidden]{display:none}

/* Editing and 3D placement occupy the browser viewport. */
.af-editor-panel.af-expanded{inset:0;border-radius:0;box-shadow:none;padding:12px;box-sizing:border-box}
.af-expanded .af-main-actions{top:-12px}
body:has(.af-editor-panel.af-expanded),body:has(#af-model-preview:not([hidden])){overflow:hidden}
body:has(#af-model-preview:not([hidden])) #af-editor-panel{visibility:hidden;pointer-events:none}
#af-model-preview{inset:0;border-radius:0;box-sizing:border-box}

/* Three-dimensional workspace follows the site's monochrome task hierarchy. */
#af-model-preview{padding:16px;gap:12px;color:var(--text,#171717);background:var(--surface,#fff)}
#af-model-preview [hidden]{display:none!important}
.af-model-toolbar{gap:8px;border-bottom:1px solid var(--line,#ddd);padding-bottom:12px;flex-shrink:0}
.af-model-toolbar strong{font-size:20px}.af-model-toolbar button{font-size:14px;border-radius:4px;background:#fff}
.af-model-toolbar label{font-size:14px;min-height:44px}
.af-model-tasks{display:flex;gap:8px;flex-shrink:0}
.af-model-tasks button{min-height:44px;padding:10px 20px;border:1px solid var(--line,#ddd);border-radius:4px;background:#fff;color:#666;font:inherit;font-size:14px;cursor:pointer}
.af-model-tasks button[aria-pressed=true]{background:#171717;border-color:#171717;color:white}
.af-model-layout{grid-template-columns:280px minmax(0,1fr);gap:16px}
.af-port-panel{padding:16px;background:#f4f4f4;border:0;border-radius:4px;overscroll-behavior:contain}
#af-model-preview .af-task-hint{font-size:14px;color:#666;margin:0 0 18px;line-height:1.6}
.af-port-panel h3{font-size:18px;margin:0 0 14px;font-weight:600}
.af-port-panel .af-quality,.af-port-panel .af-3d-validation{border:0;padding:0;margin:0}
.af-port-panel input,.af-port-panel select{min-height:44px;background:white;border:1px solid #ccc;border-radius:4px;font-size:14px}
.af-port-panel button{min-height:44px;border:1px solid #ccc;border-radius:4px;background:white;font-size:14px}
.af-port-panel details{border-top:1px solid #ddd;margin-top:16px;padding-top:4px}
.af-port-panel summary{cursor:pointer;padding:12px 0;font-size:14px;font-weight:500}
#af-model-preview .af-port-panel p{font-size:13px;line-height:1.65;color:#666}
.af-port-panel .af-task-next,#af-3d-run{width:100%;background:#171717;color:#fff;border-color:#171717;margin-top:16px}
#af-3d-state{padding:12px;background:white;border:1px solid #ddd;border-radius:4px}
#af-3d-warning:empty,#aq-help:empty{display:none}
.af-model-door-tools{margin:0}.af-model-door-tools select{max-width:100%;width:100%}
#af-model-preview>p:last-child{margin:0;font-size:12px;color:#666}
#af-model-stage{background:#f4f4f4;border-radius:4px}
@media(max-width:800px){.af-model-layout{grid-template-columns:230px minmax(0,1fr);gap:8px}#af-model-preview{padding:8px;gap:8px}.af-model-tasks button{padding:8px 12px}.af-port-panel{padding:10px}.af-model-toolbar strong{font-size:16px}}
@media(max-width:500px){.af-model-layout{grid-template-columns:170px minmax(0,1fr)}.af-model-tasks{gap:4px}.af-model-tasks button{flex:1;padding:8px 4px;font-size:13px}.af-model-toolbar{gap:4px}.af-model-toolbar button{padding:6px 8px}}

.af-port-panel .af-task-next{position:sticky;bottom:0;z-index:1;box-shadow:0 -8px 0 #f4f4f4}
#af-model-preview button:disabled{opacity:.5;cursor:not-allowed}
.af-model-tasks button:focus-visible{outline:2px solid #171717;outline-offset:3px}

.af-device-menu{position:fixed;z-index:2010;max-height:calc(100dvh - 24px);overflow:auto;background:#fff;border:1px solid #ddd;border-radius:4px;padding:16px;box-shadow:0 8px 32px #0002;box-sizing:border-box}
.af-device-menu header{display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid #ddd;margin-bottom:12px}
.af-device-menu button{min-height:44px;padding:8px 12px;border:1px solid #ddd;background:#fff;border-radius:4px}
.af-device-menu label{display:block;margin:10px 0;font-size:14px}.af-device-menu input,.af-device-menu select{width:100%;box-sizing:border-box;min-height:44px;padding:8px;border:1px solid #ccc;border-radius:4px;background:#fff;font-size:14px}
.af-device-menu button[type=submit]{width:100%;background:#171717;color:#fff}.af-device-menu-actions{display:flex;gap:8px}.af-device-menu-actions button{flex:1}
#af-model-preview .af-device-menu-feedback{font-size:13px;line-height:1.6}

.af-opening-menu{position:fixed;z-index:10050;width:320px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);overflow:auto;padding:18px;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 8px 30px #0002;color:#171717}.af-opening-menu[hidden]{display:none}.af-opening-menu header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.af-opening-menu h3{margin:0;font-size:18px}.af-opening-menu button{min-height:40px}.af-opening-menu .af-field{display:block;margin-bottom:12px}.af-opening-menu input,.af-opening-menu select{width:100%;box-sizing:border-box}.af-opening-menu #af-properties>button{margin:4px 6px 8px 0}.af-opening-menu .af-hint{font-size:13px;color:#666;line-height:1.6}
/* Return to editing is available while running, paused, or viewing results. */
#af-3d-exit{width:100%;margin-top:8px}

/* Guided placement uses the existing editor and simulation controls. */
#af-model-preview .af-model-layout{grid-template-columns:340px minmax(0,1fr)}
#af-model-preview .af-port-panel{background:#f5f7f6;border:1px solid #e1e7e3;border-radius:14px;padding:20px}
.af-conversation{padding-bottom:20px;margin-bottom:18px;border-bottom:1px solid #dce5df}
.af-conversation-heading{display:flex;gap:12px;align-items:center;margin-bottom:20px}
.af-guide-mark{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:50%;background:#285546;color:#fff;font-size:18px;font-weight:600}
.af-conversation-kicker{font-size:13px;color:#476052;letter-spacing:.04em}
#af-model-preview .af-conversation-progress{font-size:12px;color:#69776e;margin:3px 0 0}
#af-model-preview .af-conversation h2{font-size:25px;line-height:1.4;font-weight:600;letter-spacing:-.03em;margin:0 0 12px;color:#243c30}
#af-model-preview .af-conversation-copy{font-size:15px;line-height:1.8;color:#4b5e53;margin:0}
#af-model-preview .af-guide-count{font-size:13px;color:#356249;margin:16px 0 0;padding:10px 12px;background:#e7eee8;border-radius:8px}
#af-model-preview .af-model-tasks button{border-radius:24px;padding:10px 22px}
#af-model-preview .af-model-tasks button[aria-pressed=true]{background:#285546;border-color:#285546}
#af-model-preview .af-task-next,#af-model-preview #af-3d-run{background:#285546;border-color:#285546;border-radius:8px;min-height:48px;position:static;box-shadow:none}
#af-model-preview #af-port-source,#af-model-preview #af-port-exit,#af-model-preview #aq-add{width:100%;border:1px solid #285546;color:#285546;background:#fff;min-height:48px;border-radius:8px;font-weight:600}
.af-condition-summary{display:grid;gap:8px;margin-bottom:18px}
#af-model-preview .af-condition-summary button{display:grid;grid-template-columns:1fr auto;text-align:left;padding:12px;font-size:12px;color:#526659;border-radius:8px;margin:0}
.af-condition-summary strong{grid-row:2;grid-column:1 / -1;font-size:16px;color:#253c30;margin-top:4px}
#af-model-preview .af-guide-skip,#af-model-preview .af-guide-back{border:0;background:transparent;color:#526659;text-decoration:underline;text-underline-offset:4px;width:100%;min-height:44px}
#af-model-preview[data-guide-task="0"] .af-equipment>.af-guide-skip{display:none}
#af-model-preview .af-equipment>h3,#af-model-preview .af-quality>h3{display:none}
#af-model-preview .af-port-panel .af-quality>p:first-of-type{display:none}
#af-model-preview .af-port-panel .af-guide-back{margin-top:18px;text-align:left}
@media(max-width:800px){#af-model-preview .af-model-layout{grid-template-columns:280px minmax(0,1fr)}#af-model-preview .af-port-panel{padding:14px}#af-model-preview .af-conversation h2{font-size:22px}.af-model-tasks{overflow:auto}.af-model-tasks button{white-space:nowrap}}
@media(max-width:600px){#af-model-preview .af-model-layout{display:flex;flex-direction:column;overflow:auto}#af-model-preview #af-model-stage{order:-1;flex:none;height:36vh;min-height:210px}#af-model-preview .af-port-panel{flex:none;overflow:visible}#af-model-preview .af-model-tasks button{padding:8px 12px;font-size:12px}.af-conversation-heading{margin-bottom:12px}.af-conversation{padding-bottom:14px;margin-bottom:14px}}
#af-model-preview .af-guide-warning{padding:12px;border-left:3px solid #ac762d;background:#fff6e7;color:#77501c;border-radius:4px}
/* The preparation guide stays inside the editor, including fullscreen review. */
#af-editor-panel>.af-guide{margin:0 0 16px;background:#f5f7f6;border:1px solid #dce5df;border-radius:14px;padding:20px 24px;max-width:none}
.af-entry-guide-header{display:flex;gap:12px;align-items:center;margin:18px 0 12px;color:#476052;font-size:13px}
.af-entry-guide-header p{margin:3px 0 0;font-size:12px!important}
#af-editor-panel>.af-guide h2{font-size:26px;line-height:1.4;max-width:none;margin:8px 0;color:#243c30}
#af-editor-panel>.af-guide #af-step-help{font-size:15px;margin:8px 0 14px;max-width:850px;color:#4b5e53}
#af-editor-panel>.af-guide #af-step-feedback:empty{display:none}
#af-editor-panel>.af-guide .af-step-nav button{border-radius:24px;background:white;color:#526659;border:1px solid #dce5df}
#af-editor-panel>.af-guide .af-step-nav button[aria-current]{background:#285546;color:white;border-color:#285546}
#af-entry-primary{background:#285546;border-color:#285546;color:white;border-radius:8px}
.af-guide [hidden]{display:none!important}
body[data-airflow-step="1"] .af-intro{margin-bottom:20px}
body[data-airflow-step="1"] .af-entry-upload{display:none}
body[data-airflow-step="3"] #af-editor-panel:has(.af-guide[data-phase="recognize"]) .af-workspace,body[data-airflow-step="3"] #af-editor-panel:has(.af-guide[data-phase="busy"]) .af-workspace{display:none}
body[data-airflow-step="3"] .af-recognize-box{margin-top:8px;padding:12px 18px}
body[data-airflow-step="3"] #af-recognize-title,body[data-airflow-step="3"] #af-recognition-notice,body[data-airflow-step="3"] #af-recognize-review-row{display:none}
body[data-airflow-step="3"] #af-editor-panel:has(.af-guide[data-phase="recognize"]) #af-recognize{display:none}
#af-editor-panel.af-expanded .af-main-actions{position:static}
@media(min-width:1151px){#af-editor-panel.af-expanded .af-workspace{height:calc(100vh - 410px);min-height:360px}}
@media(max-width:650px){#af-editor-panel>.af-guide{padding:16px;margin-bottom:12px}#af-editor-panel>.af-guide h2{font-size:22px}.af-entry-guide-header{margin-top:12px}.af-guide .af-step-nav{gap:5px}.af-guide .af-step-nav button{flex:1 1 28%;font-size:12px;padding:8px}.af-guide .af-step-actions button{flex:1 1 auto}#af-editor-panel.af-expanded{padding:8px}}
#af-editor-panel.af-expanded .af-entry-actions{display:none}
#af-editor-panel.af-expanded>.af-guide .af-entry-guide-header{margin-top:12px;margin-bottom:8px}
#af-editor-panel.af-expanded>.af-guide{padding:16px 20px}
/* Explain the product before asking a first-time visitor to prepare a plan. */
.af-welcome{display:none!important}
body.af-welcome-active .af-welcome{display:grid!important}
body.af-welcome-active #af-editor-panel,body.af-welcome-active #airflow-app{display:none!important}
body.af-welcome-active .af-guide{display:none!important}
.af-welcome{grid-template-columns:1fr 1fr;gap:32px 48px;max-width:1240px!important;margin:36px auto 64px!important;color:#243e32;text-align:left!important}
.af-welcome-copy{align-self:center;padding:12px 0}
.af-welcome .eyebrow{font-size:12px;letter-spacing:.14em;color:#667c6e;margin-bottom:24px}
.af-welcome-category{font-size:16px!important;color:#42664f!important;margin-bottom:12px!important}
.af-welcome h1{font-size:clamp(36px,3.9vw,58px)!important;line-height:1.18!important;letter-spacing:-.035em;margin:0 0 24px!important;max-width:none!important;color:#243e32}
.af-welcome .af-welcome-description{font-size:17px;line-height:1.9;color:#576a5e;max-width:470px;margin:0 0 26px}
.af-welcome-actions{display:flex;gap:12px;flex-wrap:wrap}
.af-welcome-actions button{min-height:48px;padding:12px 20px;border-radius:24px;border:1px solid #cdd9d1;background:transparent;color:#285546;font:inherit;font-size:15px;cursor:pointer}
.af-welcome-actions .primary{background:#285546;color:white;border-color:#285546}
.af-welcome-actions button:hover{box-shadow:0 3px 12px #28554620}
.af-welcome .af-welcome-assist{font-size:12px;color:#68796e;margin:12px 0}
#af-welcome-resume,.af-welcome-about{border:0;background:none;color:#285546;cursor:pointer;text-decoration:underline;text-underline-offset:4px;min-height:44px;font-size:13px}
.af-welcome-about{margin-left:auto;white-space:nowrap}
.af-welcome-visual{margin:0;background:#f1f5f1;border:1px solid #e1e8e1;border-radius:24px;overflow:hidden;padding:24px 22px 20px;align-self:center}
.af-welcome-visual figcaption{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center;font-size:14px;font-weight:600}
.af-welcome-tag{font-size:10px;font-weight:400;color:#627768;background:#fff;padding:6px 9px;border-radius:12px}
.af-welcome-visual svg{display:block;width:100%;height:auto;margin:2px auto}
.af-welcome-question{background:#fff;border-radius:14px;padding:17px 20px}
.af-welcome-question span{display:block;font-size:11px;color:#76877a;margin-bottom:6px}
.af-welcome-question strong{font-size:19px;font-weight:600}
.af-welcome .af-welcome-question p{font-size:12px;margin:7px 0 0;color:#66776a;line-height:1.7}
.af-welcome-benefits{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:32px;border-top:1px solid #dde5de;padding-top:28px}
.af-welcome-benefits article>span{font-size:11px;letter-spacing:.05em;color:#69806f}
.af-welcome-benefits h2{font-size:19px!important;margin:10px 0!important;line-height:1.4}
.af-welcome .af-welcome-benefits p{font-size:14px;line-height:1.8;color:#65776a;margin:0;max-width:330px}
.af-welcome .af-welcome-footnote{grid-column:1/-1;font-size:12px;color:#7b887e;line-height:1.9;margin:0}
@media(max-width:850px){.af-welcome{grid-template-columns:1fr;gap:28px;margin-top:24px!important}.af-welcome-copy{padding:0}.af-welcome .eyebrow{margin-bottom:16px}.af-welcome h1{font-size:42px!important}.af-welcome-visual{max-width:600px;width:100%;box-sizing:border-box}.af-welcome-benefits{gap:20px}.af-welcome-about{white-space:normal}}
@media(max-width:520px){.af-welcome-benefits{grid-template-columns:1fr;gap:24px}.af-welcome h1{font-size:36px!important}.af-welcome-visual{padding:16px 12px}.af-welcome-actions button{flex:1 1 auto}.af-welcome-question strong{font-size:17px}.af-welcome .af-welcome-description{font-size:16px}}
