@import "https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;700;900&family=Noto+Serif+TC:wght@500;600;700;900&display=swap";
:root{--paper:#f4efe3;--paper-deep:#ece4d1;--surface:#fffdf7;--surface-2:#f9f5ea;--surface-3:#fbf8f0;--ink:#241f15;--muted:#776d59;--line:#ded4bd;--hairline:#e9e1cd;--cinnabar:#b23a26;--cinnabar-soft:#f7e4dd;--cinnabar-line:#e2b3a6;--jade:#2c7a5e;--jade-soft:#e1efe6;--jade-line:#b5d4c3;--gold:#96731f;--gold-soft:#f3e9cf;--gold-line:#dbc68d;--blue:#3d5d82;--blue-soft:#e3eaf4;--blue-line:#c3d2e4;--shadow:0 1px 2px #241e140d, 0 14px 40px #241e1412;--radius:10px;--radius-sm:7px;--font-serif:"Noto Serif TC", "Songti TC", "PMingLiU", "Times New Roman", serif;--font-sans:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box}html,body{min-height:100%}body{background:radial-gradient(1200px 500px at 50% -120px, #b23a260d, transparent 70%), var(--paper);color:var(--ink);font-family:var(--font-sans);letter-spacing:0;margin:0;position:relative}body:before{content:"";mix-blend-mode:multiply;opacity:.05;pointer-events:none;z-index:1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:#b23a262e}button{font:inherit}h1,h2,h3{font-family:var(--font-serif);font-weight:700}.app-frame{z-index:2;flex-direction:column;max-width:1240px;min-height:100vh;margin:0 auto;padding:0 28px;display:flex;position:relative}.masthead{justify-content:space-between;align-items:center;gap:20px;padding:22px 2px 16px;display:flex}.brand{align-items:center;gap:13px;display:flex}.brand-seal{background:var(--cinnabar);color:#fdf8ec;font-family:var(--font-serif);border-radius:9px;justify-content:center;align-items:center;width:46px;height:46px;font-size:24px;font-weight:900;display:flex;box-shadow:inset 0 0 0 2px #fffbf066,0 2px 10px #b23a2652}.brand-name strong{font-family:var(--font-serif);letter-spacing:.06em;font-size:19px;font-weight:900;display:block}.brand-name span{color:var(--muted);letter-spacing:.14em;margin-top:2px;font-size:12px;display:block}.masthead-status{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.status-chip{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:9px;padding:8px 12px;display:flex}.status-chip svg{color:var(--cinnabar)}.status-chip span{color:var(--muted);letter-spacing:.08em;font-size:10px;font-weight:700;display:block}.status-chip strong{margin-top:1px;font-size:13px;display:block}.stepper{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:color-mix(in srgb, var(--paper) 86%, transparent);border-bottom:1px solid var(--line);scrollbar-width:none;z-index:40;gap:4px;display:flex;position:sticky;top:0;overflow-x:auto}.stepper::-webkit-scrollbar{display:none}.stepper-item{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:10px;min-width:118px;padding:13px 8px 11px;transition:color .16s,border-color .16s;display:flex}.stepper-numeral{font-family:var(--font-serif);border:1.5px solid;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;font-weight:700;transition:background .16s,color .16s;display:flex}.stepper-title{letter-spacing:.04em;font-size:14px;font-weight:700}.stepper-item:hover{color:var(--ink)}.stepper-item[data-active=true]{border-bottom-color:var(--cinnabar);color:var(--ink)}.stepper-item[data-active=true] .stepper-numeral{background:var(--cinnabar);border-color:var(--cinnabar);color:#fdf8ec}.step-stage{flex:1;padding:26px 0 30px}.step-pane{flex-direction:column;gap:18px;animation:.36s both pane-in;display:flex}.step-pane[hidden]{display:none}@keyframes pane-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.step-intro{justify-content:space-between;align-items:flex-end;gap:20px;padding:6px 2px 2px;display:flex;position:relative;overflow:hidden}.step-intro:after{color:#241e140e;content:attr(data-numeral);font-family:var(--font-serif);pointer-events:none;font-size:118px;font-weight:900;line-height:.8;position:absolute;top:-8px;right:6px}.step-intro h1{letter-spacing:.05em;margin:0;font-size:clamp(25px,3vw,33px);font-weight:900;line-height:1.1}.step-intro h1:before{background:var(--cinnabar);content:"";border-radius:2px;width:4px;height:.85em;margin-right:12px;display:inline-block;transform:translateY(.1em)}.step-intro p{color:var(--muted);max-width:560px;margin:9px 0 0;font-size:14px;line-height:1.6}.step-hint{background:var(--surface);border:1px solid var(--line);color:var(--muted);letter-spacing:.06em;z-index:1;border-radius:999px;flex:none;align-items:center;gap:6px;padding:7px 12px;font-size:11px;font-weight:700;display:flex;position:relative}.step-hint svg{color:var(--cinnabar)}.step-footer{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:color-mix(in srgb, var(--paper) 88%, transparent);border-top:1px solid var(--line);z-index:40;justify-content:space-between;align-items:center;gap:14px;padding:12px 2px;display:flex;position:sticky;bottom:0}.step-nav{border-radius:var(--radius);cursor:pointer;letter-spacing:.08em;align-items:center;gap:8px;min-height:42px;padding:0 18px;font-size:14px;font-weight:900;transition:transform .14s,box-shadow .14s;display:flex}.step-nav:not(:disabled):hover{transform:translateY(-1px)}.step-nav.prev{background:var(--surface);border:1px solid var(--line);color:var(--ink)}.step-nav.next{background:var(--cinnabar);color:#fdf8ec;border:0;box-shadow:0 2px 12px #b23a264d}.step-nav:disabled{cursor:not-allowed;opacity:.4}.step-footer-meta{color:var(--muted);letter-spacing:.1em;font-size:12px;font-weight:700}.fold{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.fold>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:16px 18px;list-style:none;display:flex}.fold>summary::-webkit-details-marker{display:none}.fold>summary:after{border-bottom:1.5px solid var(--muted);border-right:1.5px solid var(--muted);content:"";width:7px;height:7px;margin-left:auto;transition:transform .16s;transform:rotate(45deg)}.fold[open]>summary{border-bottom:1px solid var(--hairline)}.fold[open]>summary:after{transform:rotate(225deg)}.fold>summary svg{color:var(--cinnabar)}.fold>summary span{font-family:var(--font-serif);letter-spacing:.04em;font-size:15px;font-weight:700}.fold>summary small{color:var(--muted);letter-spacing:.05em;font-size:11px}.fold-body{padding:18px}.capture-panel,.draft-panel,.assembly-panel,.puzzle-panel,.assembly-inspector,.orientation-panel,.orientation-summary,.site-panel,.site-results{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-heading,.inspector-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.panel-heading.compact{padding:16px 18px}.panel-heading h2,.inspector-head h2{letter-spacing:.04em;margin:0;font-size:18px;line-height:1.2}.panel-heading span,.inspector-head span{color:var(--muted);letter-spacing:.05em;margin-top:4px;font-size:11px;display:block}.mini-heading{align-items:center;gap:7px;display:flex}.primary-action{background:var(--jade);border-radius:var(--radius-sm);color:#f4faf5;cursor:pointer;letter-spacing:.05em;border:0;align-items:center;gap:8px;min-height:42px;padding:0 14px;font-size:14px;font-weight:900;transition:transform .14s;display:flex;box-shadow:0 2px 10px #2c7a5e42}.primary-action:not(:disabled):hover{transform:translateY(-1px)}.primary-action:disabled{cursor:not-allowed;opacity:.55}.primary-action.small{min-height:36px;padding:0 11px;font-size:13px}.inline-alert{background:var(--gold-soft);border-top:1px solid var(--gold-line);color:#5e4818;align-items:center;gap:8px;padding:10px 18px;font-size:13px;display:flex}.inline-alert.danger{background:var(--cinnabar-soft);border-color:var(--cinnabar-line);color:#7d2c1c}.compact-alert{border:1px solid var(--cinnabar-line);border-radius:var(--radius-sm);padding:9px 10px}.empty-state{background:var(--surface-2);border-radius:var(--radius);color:var(--muted);text-align:center;border:1px dashed #c5b893;place-items:center;gap:8px;min-height:180px;padding:24px;display:grid}.empty-state strong{color:var(--ink);font-family:var(--font-serif)}.empty-state span{font-size:13px}.schema-pill{border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:8px 9px;font-size:12px;font-weight:900;display:flex}.schema-pill.ok{background:var(--jade-soft);border-color:var(--jade-line);color:var(--jade)}.schema-pill.bad{background:var(--cinnabar-soft);border-color:var(--cinnabar-line);color:var(--cinnabar)}.capture-mode{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:3px;display:flex}.capture-mode button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:800;display:flex}.capture-mode button[aria-selected=true]{background:var(--surface);color:var(--cinnabar);box-shadow:0 1px 6px #241e141a}.icon-action{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.icon-action.confirm{background:var(--jade-soft);border-color:var(--jade-line);color:var(--jade)}.icon-action.dismiss{background:var(--cinnabar-soft);border-color:var(--cinnabar-line);color:var(--cinnabar)}.muted-line{color:var(--muted);font-size:12px}.section-title{justify-content:space-between;align-items:end;margin-top:6px;display:flex}.section-title h2{letter-spacing:.04em;margin:0;font-size:18px}.section-title span{color:var(--muted);font-size:12px}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.capture-shell{grid-template-columns:minmax(0,.92fr) minmax(360px,.72fr);gap:18px;display:grid}.room-type-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:14px 18px;display:grid}.room-type-button{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;min-height:40px;font-size:13px;font-weight:800;transition:border-color .14s,background .14s}.room-type-button[data-active=true]{background:var(--cinnabar-soft);border-color:var(--cinnabar);color:var(--cinnabar)}.wall-capture-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 18px 16px;display:grid}.wall-slot{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);gap:10px;min-width:0;padding:12px;display:grid}.wall-slot-title strong,.wall-slot-title span{display:block}.wall-slot-title strong{font-family:var(--font-serif);font-size:14px}.wall-slot-title span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:11px;overflow:hidden}.media-button,.video-drop{border-radius:var(--radius-sm);cursor:pointer;border:1px dashed #c1b48f;justify-content:center;align-items:center;gap:8px;min-height:42px;display:flex}.media-button{color:var(--jade);font-size:13px;font-weight:900}.media-button input,.video-drop input{display:none}.heading-row{grid-template-columns:minmax(0,1fr) 38px;gap:6px;display:grid}.heading-row input,.draft-fields input,.draft-fields select,.opening-row input,.opening-row select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);width:100%;min-height:36px;padding:7px 9px;font-size:13px}.heading-row button,.opening-row button,.wall-editor-title button,.uncertain-list button{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:5px;display:flex}.video-capture{gap:12px;padding:0 18px 16px;display:grid}.video-drop{color:var(--blue);flex-direction:column;align-items:center;gap:5px;min-height:126px;padding:18px}.video-drop strong,.video-drop span{display:block}.video-drop span{color:var(--muted);font-size:12px}.keyframe-strip{gap:8px;display:flex;overflow-x:auto}.keyframe-strip img{aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--radius-sm);object-fit:cover;height:72px}.capture-actions{border-top:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.capture-actions span{color:var(--muted);font-size:12px;font-weight:800}.topology-suggestions{border-top:1px solid var(--hairline);gap:10px;padding:14px 18px 18px;display:grid}.topology-suggestions .mini-heading{color:var(--jade);font-size:13px}.topology-suggestions .mini-heading span{color:var(--muted);text-transform:uppercase;margin-left:auto;font-size:11px;font-weight:800}.topology-row{flex-wrap:wrap;gap:7px;display:flex}.topology-row code{background:var(--surface-2);color:var(--ink);border-radius:6px;padding:5px 7px;font-size:11px;font-weight:800}.topology-suggestions p,.topology-suggestions small{color:var(--muted);margin:0;font-size:12px;line-height:1.55}.draft-panel{flex-direction:column;align-self:stretch;min-height:100%;display:flex;overflow:hidden}.draft-panel.empty{color:var(--muted);text-align:center;justify-content:center;align-items:center;min-height:360px}.draft-panel.empty strong{color:var(--ink);font-family:var(--font-serif);margin-top:8px;font-size:18px;display:block}.draft-panel.empty span{margin-top:4px;font-size:13px;display:block}.draft-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.draft-head h2{margin:0;font-size:18px}.draft-head span{color:var(--muted);margin-top:4px;font-size:12px;display:block}.draft-fields{grid-template-columns:1.1fr .8fr .8fr;gap:10px;padding:14px 18px;display:grid}.draft-fields label{color:var(--muted);gap:5px;font-size:11px;font-weight:900;display:grid}.wall-editor-list{gap:10px;padding:0 18px 14px;display:grid;overflow:auto}.wall-editor{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);gap:8px;padding:10px;display:grid}.wall-editor-title{justify-content:space-between;align-items:center;display:flex}.wall-editor-title strong{font-family:var(--font-serif);font-size:14px}.wall-editor-title button{color:var(--jade);min-height:30px;padding:0 8px;font-size:12px;font-weight:900}.opening-row{grid-template-columns:20px minmax(92px,1fr) 74px 34px;align-items:center;gap:7px;display:grid}.opening-row svg{color:var(--jade)}.opening-row button{color:var(--cinnabar);height:34px}.uncertain-list{border-top:1px solid var(--hairline);gap:8px;padding:14px 18px;display:grid}.uncertain-list>strong{font-size:13px}.uncertain-list button{text-align:left;justify-content:flex-start;min-height:36px;padding:8px 10px}.assembly-shell{grid-template-columns:360px minmax(0,1fr) 300px;gap:18px;display:grid}.assembly-panel{flex-direction:column;display:flex;overflow:hidden}.assembly-tabs{gap:8px;padding:14px 16px;display:grid}.assembly-tabs button{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;text-align:left;min-height:58px;padding:10px}.assembly-tabs button[aria-selected=true]{background:var(--cinnabar-soft);border-color:var(--cinnabar)}.assembly-tabs strong,.assembly-tabs span{display:block}.assembly-tabs strong{font-size:14px}.assembly-tabs span{color:var(--muted);margin-top:4px;font-size:12px}.connection-list{border-top:1px solid var(--hairline);gap:8px;padding:14px 16px;display:grid}.connection-row{grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:center;gap:8px;display:grid}.connection-row code{background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;padding:6px;font-size:12px;overflow:hidden}.connection-row span{color:var(--muted);text-align:center;font-size:11px;font-weight:900}.connection-row select,.scale-row input{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);min-height:34px;padding:6px 8px;font-size:13px}.scale-row{border-top:1px solid var(--hairline);grid-template-columns:20px repeat(auto-fit,minmax(118px,1fr));align-items:end;gap:10px;margin-top:auto;padding:14px 16px;display:grid}.scale-row>svg{margin-bottom:9px}.scale-row label{gap:5px;min-width:0;display:grid}.scale-row span{color:var(--muted);grid-column:2/-1;font-size:12px;line-height:1.45}.scale-row .door-width-check.warning{color:var(--cinnabar)}.puzzle-panel{min-height:440px;overflow:hidden}.puzzle-panel svg{background:linear-gradient(#241e140a 1px, transparent 1px), linear-gradient(90deg, #241e140a 1px, transparent 1px), var(--surface-3);cursor:grab;touch-action:none;background-size:34px 34px;width:100%;height:100%;min-height:440px}.puzzle-bg{fill:#0000}.puzzle-room rect{fill:#e1efe6cc;stroke:var(--jade);stroke-width:4px}.puzzle-room.manual rect{fill:#f3e9cfd6;stroke:var(--gold)}.puzzle-room text{fill:var(--ink);paint-order:stroke;pointer-events:none;stroke:#fffdf7d9;stroke-width:6px;text-anchor:middle;font-size:28px;font-weight:900}.assembly-inspector{gap:12px;padding:14px;display:grid}.assembly-status{border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:8px;min-height:48px;padding:10px;display:flex}.assembly-status.solved{background:var(--jade-soft);border-color:var(--jade-line);color:var(--jade)}.assembly-status.partial{background:var(--gold-soft);border-color:var(--gold-line);color:#5e4818}.assembly-status.conflicted{background:var(--cinnabar-soft);border-color:var(--cinnabar-line);color:var(--cinnabar)}.room-control-list{gap:8px;display:grid}.room-control-list button{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;text-align:left;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:42px;padding:8px 10px;display:grid}.room-control-list span{text-overflow:ellipsis;font-weight:800;overflow:hidden}.room-control-list code{color:var(--muted);font-size:12px}.conflict-list{gap:8px;display:grid}.inline-ok,.floorplan-summary{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);align-items:center;gap:8px;min-height:40px;padding:9px 10px;font-size:13px;font-weight:800;display:flex}.conflict-card{background:var(--surface-3);border:1px solid var(--line);border-left:4px solid var(--cinnabar);border-radius:var(--radius-sm);padding:10px}.conflict-card strong,.conflict-card span{display:block}.conflict-card strong{font-size:13px}.conflict-card span{color:var(--muted);margin-top:3px;font-size:12px}.conflict-card p{color:var(--muted);margin:6px 0 0;font-size:12px;line-height:1.45}.orientation-shell{grid-template-columns:minmax(0,1fr) 280px;gap:18px;display:grid}.orientation-panel{overflow:hidden}.orientation-grid{grid-template-columns:240px minmax(0,1fr);gap:12px;padding:16px 18px;display:grid}.orientation-card{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);gap:10px;padding:12px;display:grid}.orientation-card.wide{min-width:0}.orientation-card>span,.sample-list code,.orientation-readout span{color:var(--muted);font-size:12px}.big-bearing{font-family:var(--font-serif);font-size:36px;font-weight:900;line-height:1}.orientation-card button,.orientation-summary button{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:7px;min-height:38px;padding:0 10px;font-size:13px;font-weight:900;display:flex}.orientation-card button:disabled{cursor:not-allowed;opacity:.56}.orientation-card button.primary-action,.orientation-summary button.primary-action{background:var(--jade);color:#f4faf5;border:0}.sample-row,.manual-row{align-items:center;gap:8px;display:grid}.sample-row{grid-template-columns:100px auto auto}.manual-row{grid-template-columns:minmax(132px,.95fr) 92px 64px minmax(0,1fr)}.sample-row input,.manual-row input,.manual-row select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);width:100%;min-height:38px;padding:7px 9px;font-size:15px}.manual-row select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 14px) 16px,calc(100% - 9px) 16px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:28px;font-weight:800}.manual-row strong{color:var(--jade);font-family:var(--font-serif);font-size:18px}.manual-row span{color:var(--muted);font-size:12px}.sample-list{flex-wrap:wrap;gap:6px;min-height:28px;display:flex}.sample-list code{background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue);border-radius:6px;padding:5px 7px}.orientation-summary{align-content:start;gap:10px;padding:14px;display:grid}.bearing-dial{aspect-ratio:1;background:linear-gradient(90deg, transparent calc(50% - 1px), #3d5d822e calc(50% - 1px), #3d5d822e calc(50% + 1px), transparent calc(50% + 1px)), linear-gradient(transparent calc(50% - 1px), #3d5d822e calc(50% - 1px), #3d5d822e calc(50% + 1px), transparent calc(50% + 1px)), var(--surface-3);border:1px solid var(--line);box-shadow:inset 0 0 0 6px var(--surface), inset 0 0 0 7px var(--hairline);border-radius:50%;justify-content:center;align-items:center;width:100%;max-width:160px;margin:0 auto;display:flex;position:relative}.bearing-dial div{background:var(--cinnabar);height:42%;transform:rotate(var(--north-angle));transform-origin:50% 86%;border-radius:999px;width:4px;position:absolute;top:14%}.bearing-dial span{color:var(--ink);font-family:var(--font-serif);font-size:13px;font-weight:900;position:absolute;top:10px}.orientation-readout{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);justify-content:space-between;min-height:42px;padding:10px;display:flex}.orientation-readout strong{font-size:15px}.orientation-readout.subtle{background:var(--surface-2)}.site-shell{grid-template-columns:360px minmax(0,1fr);gap:18px;display:grid}.site-panel{overflow:hidden}.site-fixtures{gap:8px;padding:14px 16px;display:grid}.site-fixtures button{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;text-align:left;min-height:58px;padding:10px}.site-fixtures button[aria-selected=true]{background:var(--cinnabar-soft);border-color:var(--cinnabar)}.site-fixtures strong,.site-fixtures span{display:block}.site-fixtures strong{font-size:14px}.site-fixtures span{color:var(--muted);overflow-wrap:anywhere;margin-top:4px;font-size:12px}.site-form{border-top:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) 76px;gap:10px;padding:14px 16px;display:grid}.site-form label{color:var(--muted);gap:5px;font-size:11px;font-weight:900;display:grid}.site-form label:first-child{grid-column:span 2}.site-form input{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);min-width:0;min-height:36px;padding:7px 9px;font-size:13px}.site-form .primary-action{justify-content:center;align-self:end;min-height:36px}.photo-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-file{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;align-items:center;gap:7px;min-width:0;min-height:36px;padding:7px 9px;font-size:12px;font-weight:800;display:flex;overflow:hidden}.site-quality{background:var(--gold-soft);border-top:1px solid var(--gold-line);color:#5e4818;align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.site-quality strong,.site-quality span{display:block}.site-quality strong{font-size:13px}.site-quality span{margin-top:3px;font-size:12px;line-height:1.45}.privacy-strip{background:var(--surface-2);border-top:1px solid var(--hairline);gap:4px;padding:12px 16px;display:grid}.privacy-strip strong,.privacy-strip span,.privacy-strip small{min-width:0;display:block}.privacy-strip strong{color:var(--jade);font-size:12px;font-weight:900}.privacy-strip span{color:var(--ink);overflow-wrap:anywhere;font-size:12px;font-weight:800}.privacy-strip small{color:var(--muted);font-size:12px;line-height:1.4}.photo-privacy{background:var(--surface-3)}.site-results{flex-direction:column;min-width:0;display:flex;overflow:hidden}.site-summary{border-bottom:1px solid var(--hairline);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px 16px;display:grid}.site-summary div{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);min-height:68px;padding:10px}.site-summary span,.site-summary strong{display:block}.site-summary span{color:var(--muted);font-size:11px;font-weight:900}.site-summary strong{font-family:var(--font-serif);margin-top:4px;font-size:22px}.site-feature-list{gap:12px;padding:14px;display:grid;overflow:auto}.site-feature{background:var(--surface-3);border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:var(--radius-sm);grid-template-columns:112px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:12px;display:grid}.site-feature.confirmed{border-left-color:var(--jade)}.site-feature.dismissed{opacity:.76;border-left-color:#a39a85}.photo-followup{background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:var(--radius-sm);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.photo-followup h3{margin:0;font-size:16px;line-height:1.3}.photo-followup p{color:var(--blue);margin:0;font-size:13px;line-height:1.5}.site-feature-body{gap:8px;min-width:0;display:grid}.site-feature-top{flex-wrap:wrap;gap:7px;display:flex}.site-feature-top span{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:4px 7px;font-size:11px;font-weight:800}.site-feature h3{margin:0;font-size:16px;line-height:1.3}.site-feature p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.site-feature code{background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue);overflow-wrap:anywhere;border-radius:6px;max-width:max-content;padding:5px 7px;font-size:12px}.site-feature-actions{gap:7px;display:grid}.site-thumb{width:112px;height:112px}.site-thumb-ring{fill:var(--surface-2);stroke:var(--line);stroke-width:2px}.site-thumb-north{stroke:var(--blue);stroke-linecap:round;stroke-width:3px}.site-thumb-label{fill:var(--blue);text-anchor:middle;font-size:10px;font-weight:900}.site-thumb-bearing{stroke:var(--jade);stroke-linecap:round;stroke-width:4px}.site-thumb-site{fill:var(--ink);stroke:var(--surface);stroke-width:3px}.site-thumb-feature{fill:var(--jade);stroke:var(--surface);stroke-width:3px}.site-thumb-icon{color:#fff}.photo-thumb-frame{fill:var(--surface-2);stroke:var(--line);stroke-width:2px}.photo-empty{min-height:220px}.report-shell{grid-template-columns:360px minmax(0,1fr);gap:18px;display:grid}.report-panel,.report-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.summary-box{gap:10px;padding:18px;display:grid}.summary-box .mini-heading{color:var(--jade);align-items:center;gap:7px;font-size:13px;display:flex}.summary-box .mini-heading span{color:var(--muted);text-transform:uppercase;margin-left:auto;font-size:11px;font-weight:800}.summary-box p{color:var(--muted);margin:0;font-size:14px;line-height:1.7}.summary-box small{border-top:1px solid var(--hairline);color:var(--muted);padding-top:10px;font-size:11px;line-height:1.5}.report-map{border-top:1px solid var(--hairline);gap:12px;padding:16px 18px 18px;display:grid}.report-map .mini-heading{color:var(--jade);align-items:center;gap:7px;font-size:13px;display:flex}.report-map .mini-heading span{color:var(--muted);text-transform:uppercase;margin-left:auto;font-size:11px;font-weight:800}.report-map-svg{aspect-ratio:1.16;background:linear-gradient(#241e140a 1px, transparent 1px), linear-gradient(90deg, #241e140a 1px, transparent 1px), var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);background-size:30px 30px;width:100%;display:block;overflow:visible}.report-grid line{stroke:#2c7a5e5c;stroke-dasharray:10 8;stroke-width:2px}.report-outer{fill:#fffdf780;stroke:var(--ink);stroke-width:4px}.report-room polygon{fill:#e1efe6a8;stroke:#2c7a5e8c;stroke-width:2px}.report-room text,.report-opening text,.report-object text,.report-center-label{fill:var(--ink);paint-order:stroke;pointer-events:none;stroke:#fffdf7e0;stroke-width:5px;text-anchor:middle;font-size:18px;font-weight:900}.report-opening circle,.report-object circle,.report-object rect{fill:#3d5d822e;stroke:var(--blue);stroke-width:3px}.report-opening text{text-anchor:start;font-size:15px}.report-object text{font-size:16px}.report-room.highlight-low polygon,.report-opening.highlight-low circle,.report-object.highlight-low circle,.report-object.highlight-low rect{fill:#3d5d8242;stroke:var(--blue);stroke-width:6px}.report-room.highlight-medium polygon,.report-opening.highlight-medium circle,.report-object.highlight-medium circle,.report-object.highlight-medium rect{fill:#96731f47;stroke:var(--gold);stroke-width:6px}.report-room.highlight-high polygon,.report-opening.highlight-high circle,.report-object.highlight-high circle,.report-object.highlight-high rect{fill:#b23a2647;stroke:var(--cinnabar);stroke-width:7px}.report-room.selected polygon,.report-opening.selected circle,.report-object.selected circle,.report-object.selected rect{filter:drop-shadow(0 0 7px #241e1452);stroke:var(--ink);stroke-width:10px}.report-north line{stroke:var(--cinnabar);stroke-linecap:round;stroke-width:5px}.report-north circle{fill:var(--cinnabar)}.report-north text{fill:#fdf8ec;text-anchor:middle;font-size:15px;font-weight:900}.report-center{fill:var(--jade);stroke:var(--surface);stroke-width:4px}.sector-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.sector-strip code{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);border-radius:6px;gap:2px;min-width:0;min-height:58px;padding:7px 8px;font-size:11px;font-weight:900;display:grid;overflow:hidden}.sector-strip code span,.sector-strip code strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.sector-strip code span:first-child{font-family:var(--font-serif);font-size:13px}.sector-strip code span:nth-child(2){color:var(--muted);font-size:10px}.sector-strip code strong{font-size:11px}.sector-strip code.tone-jade{background:var(--jade-soft);color:var(--jade);border-color:#2c7a5e4d}.sector-strip code.tone-blue{background:var(--blue-soft);color:var(--blue);border-color:#3d5d8257}.sector-strip code.tone-gold{background:var(--gold-soft);color:#7b5c1d;border-color:#96731f57}.sector-strip code.tone-cinnabar{background:var(--cinnabar-soft);color:var(--cinnabar);border-color:#b23a2657}.sector-strip code.tone-violet{color:#6946a2;background:#f0ebfb;border-color:#d8c8f0}.sector-strip code.tone-slate{color:#43505a;background:#eef2f4;border-color:#ccd6dc}.sector-strip code.tone-teal{color:#12695d;background:#e4f5f1;border-color:#b9ddd5}.sector-strip code.tone-rose{color:#9d3f55;background:#fae9ec;border-color:#e7bec7}.sector-strip code.tone-missing{color:var(--muted);border-style:dashed}.mansion-state{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;min-height:40px;padding:8px 10px;display:flex}.mansion-state span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:800}.mansion-state strong{color:var(--ink);font-size:12px}.mansion-state em{color:var(--muted);font-size:11px;font-style:normal;font-weight:900}.mansion-state.ready{background:var(--jade-soft);border-color:#2c7a5e47}.report-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.report-card-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.report-card{border-left:4px solid var(--gold);cursor:pointer;outline:0;gap:12px;padding:16px;transition:border-color .16s,box-shadow .16s;display:grid}.report-card:focus-visible{box-shadow:0 0 0 3px #3d5d8238, var(--shadow)}.report-card.selected{box-shadow:0 0 0 3px #96731f33, var(--shadow);background:#fffcf2;border-color:#241e1452}.report-card.high{border-left-color:var(--cinnabar)}.report-card.medium{border-left-color:var(--gold)}.report-card.low{border-left-color:var(--blue)}.report-card-top,.report-evidence,.report-remedies{flex-wrap:wrap;align-items:center;gap:7px;min-width:0;display:flex}.report-card-top span{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:4px 7px;font-size:11px;font-weight:800}.report-card h3{margin:0;font-size:16px;line-height:1.32}.report-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.55}.report-evidence{color:var(--blue)}.report-evidence code{background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue);overflow-wrap:anywhere;border-radius:6px;max-width:100%;padding:5px 7px;font-size:12px}.report-remedies{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--jade);align-items:flex-start;padding:10px}.report-remedies p{flex:180px}.report-remedies strong{color:var(--jade);text-transform:uppercase;margin-bottom:3px;font-size:11px;display:block}.report-card small{color:var(--muted);font-size:12px;line-height:1.45}.advanced-shell{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.fold-body .advanced-shell{box-shadow:none;border:0;padding:0}.track-chip{background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:var(--radius-sm);color:var(--blue);align-items:center;gap:6px;padding:8px 10px;font-size:12px;font-weight:800;display:inline-flex}.advanced-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px;margin-top:16px;display:grid}.advanced-card{background:var(--surface-3);border:1px solid var(--line);border-radius:var(--radius-sm);flex-direction:column;gap:12px;min-width:0;padding:14px;display:flex}.advanced-card p,.advanced-card small{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.advanced-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.advanced-metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px}.advanced-metric span,.advanced-metric strong{display:block}.advanced-metric span{color:var(--muted);font-size:11px;font-weight:800}.advanced-metric strong{font-family:var(--font-serif);margin-top:2px;font-size:18px}.schema-state,.advanced-warning{border-radius:var(--radius-sm);align-items:center;gap:8px;padding:9px 10px;font-size:12px;font-weight:800;display:flex}.schema-state{background:var(--jade-soft);color:var(--jade)}.advanced-warning{background:var(--gold-soft);color:var(--gold)}.advanced-list,.module-list,.advanced-notes{gap:8px;display:grid}.advanced-list.compact{gap:6px}.advanced-row,.module-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.advanced-row{grid-template-columns:18px minmax(0,1fr) auto}.advanced-row span{overflow-wrap:anywhere;min-width:0}.advanced-row code,.module-row code{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:5px 7px;font-size:11px;font-weight:800}.advanced-row.muted,.module-row{grid-template-columns:minmax(0,1fr) auto}.module-row strong,.module-row span{display:block}.module-row strong{font-size:13px}.module-row span{color:var(--muted);margin-top:3px;font-size:12px;line-height:1.45}.module-row.ready code{background:var(--jade-soft);color:var(--jade)}.module-row.data_required code{background:var(--gold-soft);color:var(--gold)}.module-row.rules_required code{background:var(--blue-soft);color:var(--blue)}.personal-gua{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.personal-gua span,.personal-gua strong{border-radius:var(--radius-sm);text-align:center;min-width:0;padding:10px;font-size:13px;display:block}.personal-gua span{background:var(--surface-2);color:var(--muted);font-weight:800}.personal-gua strong{background:var(--jade-soft);color:var(--jade)}.advanced-notes{border-top:1px solid var(--hairline);padding-top:10px}.m0-regression{gap:12px;display:grid}.case-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.case-tab{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;text-align:left;min-height:72px;padding:14px;transition:border-color .16s,box-shadow .16s,transform .16s}.case-tab:hover{border-color:#b3a684;transform:translateY(-1px)}.case-tab[aria-selected=true]{border-color:var(--cinnabar);box-shadow:0 0 0 3px #b23a2621}.case-tab strong,.case-tab span{display:block}.case-tab strong{font-size:15px}.case-tab span{color:var(--muted);margin-top:5px;font-size:13px}.content-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:stretch;gap:18px;min-height:0;display:grid}.plan-panel,.inspector{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.plan-panel{flex-direction:column;min-height:620px;display:flex;overflow:hidden}.compass-chip{background:var(--blue-soft);border:1px solid var(--blue-line);border-radius:var(--radius-sm);color:var(--blue);align-items:center;gap:7px;padding:9px 11px;font-size:13px;font-weight:800;display:flex}.plan-canvas{background:linear-gradient(#241e140a 1px, transparent 1px), linear-gradient(90deg, #241e140a 1px, transparent 1px), var(--surface-3);background-size:34px 34px;flex:1;justify-content:center;align-items:center;min-height:0;padding:24px;display:flex}.plan-canvas svg{width:100%;max-width:100%;height:min(63vh,620px)}.nine-grid line{stroke:#3d5d8247;stroke-dasharray:8 10;stroke-width:2px}.outer{fill:#fffdf7b8;stroke:var(--ink);stroke-linejoin:round;stroke-width:4px}.outer.warning{stroke:var(--cinnabar)}.room polygon{fill:#e1efe694;stroke:#2c7a5ea3;stroke-width:2px}.room.bedroom polygon{fill:#e3eaf49e;stroke:#3d5d8294}.room.bathroom polygon{fill:#f3e9cfb8;stroke:#96731fb8}.room text,.object text,.opening text{fill:var(--ink);paint-order:stroke;stroke:#fffdf7d6;stroke-width:5px;text-anchor:middle;font-size:22px;font-weight:800}.opening circle{fill:var(--cinnabar);stroke:var(--surface);stroke-width:3px}.opening text{fill:var(--cinnabar);text-anchor:start;font-size:16px}.object rect,.object circle{fill:#b23a2629;stroke:var(--cinnabar);stroke-width:2px}.object.bed rect{fill:#3d5d8221;stroke:var(--blue)}.object text{font-size:15px}.north-vector line{stroke:var(--jade);stroke-linecap:round;stroke-width:5px}.north-vector circle{fill:var(--jade);stroke:var(--surface);stroke-width:4px}.north-vector text{fill:#f4faf5;text-anchor:middle;font-size:18px;font-weight:900}.center-dot{fill:var(--gold);stroke:var(--surface);stroke-width:4px}.inspector{flex-direction:column;min-width:0;display:flex}.inspector-head{justify-content:flex-start;gap:10px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px;display:grid}.metric{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:4px;min-height:82px;padding:10px;display:grid}.metric svg{color:var(--jade)}.metric span{color:var(--muted);font-size:11px;font-weight:700}.metric strong{font-family:var(--font-serif);font-size:22px}.rule-boundary{background:var(--gold-soft);border-block:1px solid var(--gold-line);color:#5e4818;align-items:flex-start;gap:10px;padding:14px 16px;display:flex}.rule-boundary strong,.rule-boundary span{display:block}.rule-boundary strong{font-size:14px}.rule-boundary span{margin-top:3px;font-size:12px}.finding-list{gap:12px;padding:14px;display:grid;overflow:auto}.finding-card{background:var(--surface-3);border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:var(--radius-sm);padding:14px}.finding-card.high{border-left-color:var(--cinnabar)}.finding-card.medium{border-left-color:var(--gold)}.finding-card.low{border-left-color:var(--blue)}.finding-topline{gap:8px;display:flex}.finding-topline span{background:var(--surface-2);color:var(--muted);border-radius:6px;padding:4px 7px;font-size:11px;font-weight:800}.finding-card h3{margin:10px 0 0;font-size:16px;line-height:1.3}.finding-card p{color:var(--muted);margin:8px 0 0;font-size:13px;line-height:1.55}.evidence-row{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.evidence-row code{background:var(--blue-soft);border:1px solid var(--blue-line);color:var(--blue);border-radius:6px;padding:5px 7px;font-size:12px}.remedy{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:12px;padding:10px}.remedy span{color:var(--jade);font-size:11px;font-weight:900;display:block}.remedy p{margin-top:4px}@media (max-width:1100px){.app-frame{padding:0 16px}.content-grid,.capture-shell,.assembly-shell,.orientation-shell,.orientation-grid,.report-shell,.site-shell,.advanced-grid,.report-card-list{grid-template-columns:1fr}.wall-capture-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.room-type-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:720px){.masthead{flex-direction:column;align-items:flex-start;gap:12px}.masthead-status{justify-content:flex-start}.stepper-item{flex:none;min-width:0;padding-inline:12px}.stepper-title{font-size:13px}.step-intro{flex-direction:column;align-items:flex-start;gap:10px}.step-intro:after{font-size:84px}.step-footer{gap:8px}.step-footer-meta{display:none}.step-nav{flex:1;justify-content:center}.case-tabs,.metric-grid,.wall-capture-grid,.room-type-grid,.draft-fields{grid-template-columns:1fr}.capture-mode{width:100%}.capture-mode button{flex:1;justify-content:center}.capture-actions,.section-title{flex-direction:column;align-items:flex-start}.sample-row,.manual-row,.site-form{grid-template-columns:1fr}.site-form label:first-child{grid-column:auto}.site-summary,.advanced-metrics,.personal-gua{grid-template-columns:1fr}.site-feature{grid-template-columns:88px minmax(0,1fr);align-items:flex-start}.site-thumb{width:88px;height:88px}.site-feature-actions{grid-column:1/-1;display:flex}.photo-followup{grid-template-columns:1fr}.plan-panel{min-height:460px}.panel-heading{flex-direction:column;align-items:flex-start;gap:12px}.plan-canvas,.fold-body{padding:14px}}
