/* ============================================================
   AerialQuote DeckIQ — the shed designer (dqSh*) and the Scan view (dqScan*), 28 Oct 2026.
   Its own file so it stays clear of deckiq.css / deckiq-night.css. Light mode uses the page's --panel / --ink tokens.
   ============================================================ */
/* ---- shed mode: the deck's own board tools step aside ---- */
#iq.dqShedOn .iqTileCol [data-act]:not([data-act="undo"]):not([data-act="redo"]):not([data-act="3d"]),
#iq.dqShedOn .iqTileCol .tileDiv, #iq.dqShedOn #iqBViewSeg, #iq.dqShedOn #iqTapeBtn, #iq.dqShedOn #iqEditBar, #iq.dqShedOn #iqBoardTip,
#iq.dqShedOn .iqBoardBox .iqZoom, #iq.dqShedOn #iqBoardStamp, #iq.dqShedOn #iqPill, #iq.dqShedOn #iq3dDims, #iq.dqShedOn #iq3dChips, #iq.dqShedOn #iq3dConn, #iq.dqShedOn #iqFixCard, #iq.dqShedOn #iqSelCard, #iq.dqShedOn #iqSideCard{display:none !important}
.dqShedBoard{position:absolute; inset:0; z-index:4; background:var(--shBg); overflow:hidden; border-radius:inherit}
.dqShedBoard[hidden]{display:none}
.dqShedBoard svg{position:absolute; inset:0; width:100%; height:100%; touch-action:none; cursor:default; user-select:none}
.dqShPlanSeg{position:absolute; right:14px; bottom:10px; z-index:2; display:flex; gap:4px; background:var(--panel, #fff); border:1.5px solid var(--line-2, #ccd); border-radius:10px; padding:3px}
.dqShPlanSeg button{font:700 13px/1 Figtree, sans-serif; border:0; background:transparent; color:var(--ink-2, #445); padding:7px 10px; border-radius:7px; cursor:pointer}
.dqShPlanSeg button[aria-pressed="true"]{background:var(--shAcc); color:#fff}
.dqShFootTx{position:absolute; left:14px; bottom:10px; font:600 12px/1.2 Figtree, sans-serif; color:var(--shMute); pointer-events:none}
/* the board's palette follows the board style (Drafting / Blueprint / CAD) */
:root{--shBg:#fff; --shInk:#111; --shAcc:#0A6FA3; --shAmber:#B25E00; --shBad:#C42746; --shGood:#0B8457; --shVeh:#2F6BFF; --shGrid:#E4E9F0; --shGrid5:#C9D3E0; --shMute:#556; --shFill:rgba(10,111,163,.06)}
html[data-board="blueprint"]{--shBg:#0E2D5E; --shInk:#F4F7FF; --shAcc:#FFD54A; --shAmber:#FFB42A; --shBad:#FF6B7F; --shGood:#4FE3B0; --shVeh:#9CC2FF; --shGrid:rgba(255,255,255,.08); --shGrid5:rgba(255,255,255,.2); --shMute:#BFD0EE; --shFill:rgba(255,255,255,.05)}
html[data-board="cad"]{--shBg:#0B1222; --shInk:#D8F3FF; --shAcc:#26E8FF; --shAmber:#FFB42A; --shBad:#FF5573; --shGood:#2EE6A6; --shVeh:#3B7BFF; --shGrid:#0F3552; --shGrid5:#144666; --shMute:#82AAC2; --shFill:rgba(38,232,255,.06)}
.dqShGrid{stroke:var(--shGrid); stroke-width:1}
.dqShGrid.g5{stroke:var(--shGrid5)}
.dqShFloor{fill:var(--shFill); stroke:none}
.dqShWall{fill:none; stroke:var(--shInk)}
.dqShGap{stroke:var(--shBg)}
.dqShDoor{stroke:var(--shAmber); stroke-width:2}
.dqShSwing{fill:none; stroke:var(--shAmber); stroke-width:1.4; stroke-dasharray:4 3}
.dqShWin{stroke:var(--shAcc); stroke-width:1.5}
.dqShRamp{fill:rgba(128,128,128,.18); stroke:var(--shMute); stroke-width:1.6}
.dqShLane{fill:var(--shVeh); fill-opacity:.07; stroke:var(--shVeh); stroke-width:1; stroke-dasharray:8 5}
.dqShZone{stroke:var(--shAmber); stroke-width:1; stroke-dasharray:4 3}
.dqShHatchLn{stroke:var(--shAmber); stroke-width:1; opacity:.45}
.dqShFnd{fill:rgba(178,94,0,.25); stroke:var(--shAmber); stroke-width:1.4}
.dqShFnd.dash{fill:none; stroke-dasharray:6 4}
/* 27 Oct: the pole barn: its posts on the wall line, the two-up tile groups (post spacing, trusses) */
.dqShPost{fill:var(--shInk); stroke:none; pointer-events:none}
.dqShTwo{display:grid; grid-template-columns:3fr 2fr; gap:10px}
.dqShTwo h4{margin-top:6px}
.dqShItem{stroke-width:1.6; cursor:grab; fill-opacity:.24}
.dqShItem.item{fill:var(--shAmber); stroke:var(--shAmber)}
.dqShItem.veh{fill:var(--shVeh); stroke:var(--shVeh)}
.dqShItem.wallItem{fill:var(--shAcc); stroke:var(--shAcc)}
.dqShItem.bad{fill:var(--shBad); stroke:var(--shBad)}
.dqShItem.sel{stroke:var(--shInk); stroke-width:2.6; fill-opacity:.42}
.dqShCab{fill:none; stroke:var(--shInk); stroke-width:1; stroke-dasharray:3 3; opacity:.6; pointer-events:none}
.dqShClear{fill:none; stroke:var(--shMute); stroke-width:1; stroke-dasharray:3 3; opacity:.7; pointer-events:none}
.dqShClear.warn{stroke:var(--shAmber); opacity:1}
.dqShItemTx{font:700 11px/1 Figtree, sans-serif; fill:var(--shInk); pointer-events:none}
.dqShItemTx.sel{font-size:12px}
.dqShRot{fill:var(--shBg); stroke:var(--shAcc); stroke-width:2.4; cursor:grab}
.dqShRotLn{stroke:var(--shAcc); stroke-width:1.4; stroke-dasharray:3 2}
.dqShDim line{stroke:var(--shInk); stroke-width:1}
.dqShDim text, .dqShLbl, .dqShWallTx{font:700 12px/1 'JetBrains Mono', ui-monospace, monospace; fill:var(--shInk)}
.dqShLbl.bad{fill:var(--shBad)}
.dqShWallTx{font-size:10px; fill:var(--shMute); letter-spacing:1px; text-transform:uppercase}
.dqShTick{stroke:var(--shInk); stroke-width:1.6}
.dqShSubP{fill:var(--shAmber)}
.dqShLot{fill:none; stroke:var(--shInk); stroke-width:1.6; stroke-dasharray:14 4 3 4}
.dqShHouse{fill:rgba(128,128,128,.18); stroke:var(--shInk); stroke-width:2.4}
.dqShHouse.mark{stroke:var(--shAmber); cursor:crosshair}
.dqShHouseTx{font:800 13px/1 Figtree, sans-serif; fill:var(--shInk); pointer-events:none}
.dqShDeck{fill:rgba(128,128,128,.08); stroke:var(--shMute); stroke-width:1.2; stroke-dasharray:6 4}
.dqShRef{fill:none; stroke:var(--shAmber); stroke-width:1.2; stroke-dasharray:5 4; opacity:.7}
.dqShShed{fill:var(--shFill); stroke:var(--shMute); stroke-width:1.8; cursor:grab}
.dqShShed.me{stroke:var(--shAcc); stroke-width:2.6; fill-opacity:1}
.dqShShed.bad{stroke:var(--shBad)}
.dqShShedTx{font:800 12px/1 Figtree, sans-serif; fill:var(--shInk); pointer-events:none}
.dqShDoorDot{fill:var(--shAmber)}
.dqShTrench{fill:none; stroke:var(--shAcc); stroke-width:3; stroke-dasharray:10 7}
.dqShPin{fill:var(--shAmber); stroke:var(--shBg); stroke-width:2; cursor:grab}
.dqShPinTx, .dqShTrTx{font:800 11px/1 Figtree, sans-serif; fill:var(--shAmber)}
.dqShTrTx{fill:var(--shAcc)}
.dqShScale{stroke:var(--shAcc); stroke-width:2}
/* ---- the rail and the cards ---- */
#iqRail .dqShExit{opacity:.8}
.dqShPanel{display:grid; gap:10px}
.dqShTier{display:flex; align-items:center; justify-content:space-between; gap:10px; border:2px solid; border-radius:12px; padding:9px 12px}
.dqShTier small{display:block; font:800 10.5px/1.2 'JetBrains Mono', ui-monospace, monospace; letter-spacing:1.4px; color:var(--ink-3, #667)}
.dqShTier b{font:800 17px/1.2 Figtree, sans-serif}
.dqShTier.g{border-color:#0B8457} .dqShTier.g b{color:#0B8457}
.dqShTier.y{border-color:#C77700} .dqShTier.y b{color:#C77700}
.dqShTier.r{border-color:#C42746} .dqShTier.r b{color:#C42746}
.dqShStats{display:grid; grid-template-columns:1fr 1fr; gap:6px}
.dqShStats span{border:1px solid var(--line-2, #ccd); border-radius:9px; padding:5px 7px; min-width:0}
.dqShStats small{display:block; font:700 10.5px/1.2 Figtree, sans-serif; color:var(--ink-3, #667)}
.dqShStats b{display:block; font:800 13px/1.25 'JetBrains Mono', ui-monospace, monospace; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.dqShSub{margin:-4px 0 0; color:var(--ink-3, #667); font-size:13px}
.dqShQ h4{margin:8px 0 2px; font:800 12px/1.2 Figtree, sans-serif; letter-spacing:.8px; text-transform:uppercase; color:var(--ink-2, #445); display:flex; align-items:center; gap:6px}
.dqShTiles{display:grid; gap:7px}
.dqShTiles.c2{grid-template-columns:1fr 1fr} .dqShTiles.c3{grid-template-columns:repeat(3, 1fr)} .dqShTiles.c4{grid-template-columns:repeat(4, 1fr)}
.dqShTile{border:1.5px solid var(--line-2, #ccd); background:var(--panel, #fff); color:var(--ink, #111); border-radius:10px; padding:8px 6px; display:flex; flex-direction:column; align-items:center; gap:3px; cursor:pointer; text-align:center; font:inherit; min-width:0}
.dqShTile b{font:700 13px/1.15 Figtree, sans-serif} .dqShTile small{font-size:11px; color:var(--ink-3, #667); line-height:1.2}
.dqShTile.on, .dqShTile[aria-pressed="true"]{border-color:#2F6BFF; box-shadow:0 0 0 2px rgba(47,107,255,.25); color:#2F6BFF}
.dqShTile[disabled]{opacity:.45; cursor:not-allowed}
.dqShChip{font:800 10.5px/1 Figtree, sans-serif; border:1px solid currentColor; border-radius:20px; padding:2px 7px; margin-top:2px}
.dqShChip.ok{color:#0B8457} .dqShChip.warn{color:#C77700} .dqShChip.bad{color:#C42746} .dqShChip.info{color:#2F6BFF}
.dqShSl{display:grid; grid-template-columns:1fr auto; gap:2px 8px; align-items:center}
.dqShSl label{font:700 13px/1.2 Figtree, sans-serif} .dqShSl output{font:700 13px/1 'JetBrains Mono', ui-monospace, monospace; color:#2F6BFF}
.dqShSl input{grid-column:1/-1; width:100%; accent-color:#2F6BFF}
.dqShSw{display:flex; gap:8px; align-items:center; font:600 13px/1.3 Figtree, sans-serif; cursor:pointer}
.dqShSw input{width:17px; height:17px; accent-color:#2F6BFF}
.dqShSw small{color:var(--ink-3, #667)}
.dqShKv{display:grid; grid-template-columns:1fr auto; gap:3px 10px; font-size:13px}
.dqShKv span{color:var(--ink-3, #667)} .dqShKv b{font:700 13px/1.3 'JetBrains Mono', ui-monospace, monospace; text-align:right}
.dqShLine{margin:0; font-size:13px; color:var(--ink-2, #445); display:flex; align-items:center; gap:6px; flex-wrap:wrap}
.dqShLine.warn{color:#C77700} .dqShLine.bad{color:#C42746; font-weight:700}
.dqShI{width:20px; height:20px; border-radius:50%; border:1.5px solid currentColor; background:transparent; color:#2F6BFF; font:800 12px/1 Georgia, serif; font-style:italic; cursor:help; padding:0; flex:none}
.dqShCk{display:flex; gap:7px; align-items:flex-start; font-size:12.5px; line-height:1.35}
.dqShCk i{flex:none; width:17px; height:17px; border-radius:50%; display:grid; place-items:center; font:800 10.5px/1 Figtree, sans-serif; font-style:normal; color:#fff; margin-top:1px}
.dqShCk.ok i{background:#0B8457} .dqShCk.info i{background:#2F6BFF} .dqShCk.warn i{background:#C77700} .dqShCk.bad i{background:#C42746}
.dqShFoot{display:flex; gap:8px; align-items:center; justify-content:space-between; position:sticky; bottom:0; background:inherit; padding-top:6px}
.dqShBtns{display:flex; gap:6px; flex-wrap:wrap}
.dqShLook{display:flex; gap:4px; flex-wrap:wrap}
.dqShLook button{font:700 12px/1 Figtree, sans-serif; border:1.5px solid var(--line-2, #ccd); background:var(--panel, #fff); color:var(--ink, #111); padding:6px 9px; border-radius:8px; cursor:pointer}
.dqShLook button[aria-pressed="true"]{border-color:#2F6BFF; color:#2F6BFF}
.dqShList{display:grid; gap:5px}
.dqShRow{border:1.5px solid var(--line-2, #ccd); border-radius:9px; padding:6px 9px; cursor:pointer; background:var(--panel, #fff)}
.dqShRow.on{border-color:#2F6BFF; box-shadow:0 0 0 2px rgba(47,107,255,.2); cursor:default}
.dqShRow.warn{border-left:4px solid #C77700} .dqShRow.bad{border-left:4px solid #C42746}
.dqShRowH{display:flex; justify-content:space-between; gap:8px; font-size:13px} .dqShRowH span{font:600 12px/1.3 'JetBrains Mono', ui-monospace, monospace; color:var(--ink-3, #667)}
.dqShRowB{display:grid; gap:6px; margin-top:6px}
.dqShLib{display:flex; flex-wrap:wrap; gap:4px; align-items:center}
.dqShLib > span{font:800 11px/1 Figtree, sans-serif; color:var(--ink-3, #667); text-transform:uppercase; letter-spacing:.8px; width:100%}
.dqShLib button{font:600 12px/1 Figtree, sans-serif; border:1.5px solid var(--line-2, #ccd); background:var(--panel, #fff); color:var(--ink, #111); padding:6px 8px; border-radius:8px; cursor:pointer}
.dqShLib button:hover{border-color:#2F6BFF}
.dqShStop{border:2px solid #C42746; border-radius:10px; padding:9px 11px; color:#C42746; font-size:13px}
.iqSmall.on{border-color:#2F6BFF; color:#2F6BFF}
.dqShModal{display:grid; gap:10px; max-width:900px}
.dqShModal.wide{max-width:1120px}
.dqShTable{width:100%; border-collapse:collapse; font-size:12.5px}
.dqShTable th, .dqShTable td{padding:4px 6px; border-bottom:1px solid var(--line-2, #ddd); text-align:left}
.dqShTable .n{text-align:right; font-variant-numeric:tabular-nums}
.dqShTable tr.cat td{font-weight:800; background:var(--panel-2, #f3f5fa)}
.dqShTable tr.sub td{font-weight:700} .dqShTable tr.est td{color:var(--ink-3, #667)}
.dqShBar{display:grid; grid-template-columns:1fr auto; gap:3px 8px; font-size:13px}
.dqShBar i{grid-column:1/-1; height:11px; border-radius:6px; background:var(--panel-2, #eef); overflow:hidden; display:block}
.dqShBar em{display:block; height:100%} .dqShBar em.a{background:#2F6BFF} .dqShBar em.b{background:#26B8D8} .dqShBar em.c{background:#C77700}
.dqShSheetTabs{display:flex; flex-wrap:wrap; gap:4px}
.dqShSheetTabs [aria-pressed="true"]{border-color:#2F6BFF; color:#2F6BFF}
.dqShSheet svg{width:100%; height:auto; border:1px solid var(--line-2, #ccd); border-radius:6px; background:#fff}

/* ---- the Scan view: the switch on the 3D bar, the corner brackets and the sweep ---- */
.dqScanWrap{display:inline-flex; gap:4px; align-items:center}
.dqScanBtn, .dqScanSub{display:inline-flex; align-items:center; gap:5px; font:700 13px/1 Figtree, sans-serif; border:1.5px solid var(--line-2, #ccd); background:var(--panel, #fff); color:var(--ink, #111); padding:7px 10px; border-radius:9px; cursor:pointer}
.dqScanBtn svg{width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round}
.dqScanBtn[aria-pressed="true"], .dqScanSub[aria-pressed="true"]{border-color:#26E8FF; color:#0A8FB0; box-shadow:0 0 12px rgba(38,232,255,.45)}
html:not([data-mode="light"]) .dqScanBtn[aria-pressed="true"], html:not([data-mode="light"]) .dqScanSub[aria-pressed="true"]{color:#26E8FF}
.dqScanSub[hidden]{display:none}
#iq3d.dqScanOn .stageWrap{position:relative}
#iq3d.dqScanOn .stageWrap::before{content:""; position:absolute; inset:10px; pointer-events:none; z-index:3; --c:#26E8FF; filter:drop-shadow(0 0 4px rgba(38,232,255,.6));
  background:linear-gradient(var(--c),var(--c)) top left/22px 2px no-repeat, linear-gradient(var(--c),var(--c)) top left/2px 22px no-repeat,
    linear-gradient(var(--c),var(--c)) top right/22px 2px no-repeat, linear-gradient(var(--c),var(--c)) top right/2px 22px no-repeat,
    linear-gradient(var(--c),var(--c)) bottom left/22px 2px no-repeat, linear-gradient(var(--c),var(--c)) bottom left/2px 22px no-repeat,
    linear-gradient(var(--c),var(--c)) bottom right/22px 2px no-repeat, linear-gradient(var(--c),var(--c)) bottom right/2px 22px no-repeat}
html[data-mode="light"] #iq3d.dqScanOn .stageWrap::before{--c:#007FA8; filter:none}
#iq3d.dqScanOn .stageWrap::after{content:""; position:absolute; left:0; right:0; top:0; height:110px; pointer-events:none; z-index:2; opacity:0;
  background:linear-gradient(180deg, transparent, rgba(38,232,255,.32), transparent); transform:translateY(-120px)}
html[data-mode="light"] #iq3d.dqScanOn .stageWrap::after{background:linear-gradient(180deg, transparent, rgba(0,127,168,.18), transparent)}
#iq3d.dqScanOn.dqScanSweep .stageWrap::after{animation:dqScanSweep 3.6s ease-in-out 2}
@keyframes dqScanSweep{0%{opacity:1; transform:translateY(-120px)} 70%{opacity:1; transform:translateY(var(--dqScanH, 900px))} 100%{opacity:0; transform:translateY(var(--dqScanH, 900px))}}
@media (prefers-reduced-motion:reduce){ #iq3d.dqScanOn.dqScanSweep .stageWrap::after{animation:none} }
