/* Quote planner (ported layout from the a_happy_move plugin; Happy Move colours only). Logical properties for RTL. */
.hero-y .wrap>h1{margin-top:24px}
.qgrid{display:grid;gap:24px;max-width:1100px}
@media(min-width:1000px){.qgrid{grid-template-columns:minmax(0,1fr) 340px;align-items:start}.qside{position:sticky;top:92px}}
.topr{display:flex;align-items:center;gap:8px}
.lang{position:relative}
.lang-btn{min-width:44px;height:44px;border-radius:999px;border:2px solid var(--k);background:#fff;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 12px!important;font:inherit;font-weight:800;font-size:.9rem;cursor:pointer;box-shadow:var(--sh-sm);padding:0;color:var(--k)}
.lang-menu{position:absolute;top:calc(100% + 8px);inset-inline-end:0;z-index:50;width:168px;display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:6px;
 background:#fff;border:2px solid var(--k);border-radius:var(--r-in);box-shadow:var(--sh-sm)}
.lang-menu[hidden]{display:none}
.lang-menu button{min-height:36px;border:0;border-radius:8px;background:#fff;font:inherit;font-weight:800;cursor:pointer;color:var(--k)}
.lang-menu button:hover{background:var(--y2)}.lang-menu button[aria-current=true]{background:var(--y);color:var(--on-y,inherit)}
.tabsbar button:disabled{cursor:default;opacity:.55}
/* clock */
.when-grid{display:grid;gap:16px}@media(min-width:700px){.when-grid{grid-template-columns:1fr 1fr}}
.clock{display:grid;justify-items:center;gap:10px}
.clock svg{width:min(260px,72vw);height:auto;touch-action:none;user-select:none}
.clock .face{fill:#fff;stroke:var(--k);stroke-width:3}
.clock .num{font:800 15px Nunito,system-ui,sans-serif;fill:var(--k);text-anchor:middle;dominant-baseline:central;cursor:pointer}
.clock .num.off{fill:var(--off,#c9c3ad);cursor:default}
.clock .sel{fill:var(--y);stroke:var(--k);stroke-width:2}
.clock .hand{stroke:var(--k);stroke-width:3;stroke-linecap:round}
.clock-read{display:flex;align-items:center;gap:8px;font-weight:900;font-size:1.6rem}
.seg{display:inline-flex;border:2px solid var(--k);border-radius:999px;overflow:hidden;background:#fff}
.seg button{border:0;background:#fff;padding:6px 12px;font:inherit;font-weight:800;cursor:pointer;color:var(--k)}
.seg button[aria-pressed=true]{background:var(--y);color:var(--on-y,inherit)}
/* stops */
.stops{display:grid;gap:14px;margin-bottom:14px}
.stop{position:relative;border:3px solid var(--k);border-radius:var(--r-card);background:#fff;padding:14px;box-shadow:var(--sh-sm)}
.stop.dragging{opacity:.85;box-shadow:var(--sh-lg);z-index:5}
.stop-h{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.badge{display:inline-grid;place-items:center;min-width:30px;height:30px;padding:0 8px;border-radius:999px;border:2px solid var(--k);background:var(--y);font-weight:900;font-size:.85rem;color:var(--on-y,inherit)}
.stop-h .ttl{font-weight:900;flex:1;min-width:0}
.grip{width:36px;height:36px;border:2px solid var(--k);border-radius:10px;background:#fff;display:grid;place-items:center;cursor:grab;touch-action:none;padding:0;color:var(--k)}
.grip:active{cursor:grabbing}
.ibtn{width:36px;height:36px;border:2px solid var(--k);border-radius:50%;background:#fff;cursor:pointer;font-weight:900;padding:0;color:var(--k)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.chip{border:2px solid var(--k);border-radius:999px;background:#fff;padding:6px 12px;min-height:36px;font:inherit;font-weight:800;font-size:.9rem;cursor:pointer;color:var(--k)}
.chip[aria-pressed=true]{background:var(--y);color:var(--on-y,inherit)}
.det{display:grid;gap:10px;margin-top:10px}@media(min-width:700px){.det{grid-template-columns:1fr 1fr}}
.det[hidden]{display:none}
.linkbtn{border:0;background:none;font:inherit;font-weight:800;text-decoration:underline;cursor:pointer;padding:6px 0;color:var(--k)}
.drop-line{height:4px;background:var(--y);border-radius:4px;color:var(--on-y,inherit)}
/* rooms modal */
dialog.rooms{max-width:460px}
.rooms .grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
/* inventory */
.inv-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.inv-tools input{flex:1;min-width:200px}
/* summary */
.qside h3{font-size:1.15rem;margin:0 0 10px}.qside dl{margin:0;display:grid;gap:8px}.qside dt{font-size:.8rem;color:var(--g);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.qside dd{margin:0 0 4px;font-weight:800}
.qside ol{margin:0;padding:0;list-style:none;font-weight:800}.qside ol li{margin-bottom:4px}
.qside ul{margin:0;padding:0;list-style:none;display:grid;gap:10px}.qside ul li{display:flex;gap:10px;align-items:flex-start}.qside li svg{flex:none;margin-top:2px}
.sugg{position:relative;z-index:40}
[dir=rtl] .sugg button{text-align:right}
[dir=rtl] .grip svg,[dir=rtl] .nextarrow{transform:scaleX(-1)}
/* month calendar with weather (ported from the plugin's calendar; Happy Move palette) */
.calwrap{min-width:0}
.cal-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.cal-lbl{font-weight:800}
.wxcity{display:flex;align-items:center;gap:6px;font-size:.85rem;font-weight:700;margin:0}
.wxcity select{width:auto;min-height:36px;padding:4px 8px;font-size:.9rem}
.mcal{border:3px solid var(--k);border-radius:var(--r-card);background:#fff;padding:10px;box-shadow:var(--sh-sm)}
.mc-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.mc-title{font-weight:900;font-size:1.15rem}.mc-title span{color:var(--g);font-weight:700}
.mc-nav{width:40px;height:40px;border-radius:50%;border:2px solid var(--k);background:#fff;font-weight:900;font-size:1.2rem;cursor:pointer;color:var(--k);padding:0}
.mc-nav:disabled{opacity:.3;cursor:default}
[dir=rtl] .mc-nav{transform:scaleX(-1)}
.mc-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.mc-dow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--g);padding:2px 0}
.mc-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;min-height:62px;padding:4px 1px;
 border:2px solid transparent;border-radius:10px;background:#fff;font:inherit;color:var(--k);cursor:pointer;min-width:0}
.mc-day .n{font-weight:900;font-size:1rem;line-height:1.1}
.mc-day .wx{display:block;width:20px;height:20px}
.mc-day .tp{font-size:.68rem;font-weight:800;line-height:1;white-space:nowrap}.mc-day .tp i{font-style:normal;color:var(--g);font-weight:700}
.mc-day .pr{font-size:.62rem;font-weight:700;color:var(--g);line-height:1}
.mc-day.we{background:var(--cr,#fffdf5)}
.mc-day:hover:not(:disabled){border-color:var(--k)}
/* today: dashed ring (not the yellow Move date fill); not selected */
.mc-day.today::after{content:"";position:absolute;inset:2px;border:2px dashed var(--k);border-radius:inherit;pointer-events:none}
.mc-legend b.lg-today{background:#fff;border-style:dashed}
.mc-day[aria-pressed=true]{background:var(--y);border-color:var(--k);box-shadow:var(--sh-sm);color:var(--on-y,inherit)}
.mc-day:disabled{color:var(--off,#c9c3ad);cursor:default;background:none}
.mc-day:focus-visible{outline:3px solid var(--k);outline-offset:1px}
.mc-day .hol{position:absolute;top:3px;inset-inline-end:4px;width:7px;height:7px;border-radius:50%;background:var(--k)}
.mc-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px;font-size:.75rem;font-weight:700;color:var(--g)}
.mc-legend b{display:inline-block;width:12px;height:12px;border-radius:4px;vertical-align:-2px;margin-inline-end:4px;border:2px solid var(--k)}
@media(max-width:420px){.mc-day{min-height:58px}.mc-day .tp i{display:none}.mcal{padding:6px}.mc-grid{gap:2px}}
.clock .eb{fill:none;stroke:var(--y);stroke-width:4}

.pfull{grid-column:1/-1}
.props{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}
.prop{display:flex;flex-direction:column;align-items:center;gap:4px;border:2px solid var(--k);border-radius:12px;background:#fff;padding:6px 4px;font:inherit;font-weight:800;font-size:.78rem;line-height:1.15;color:var(--k);cursor:pointer;text-align:center}
.prop img{width:64px;height:48px;display:block}
.prop[aria-checked=true]{background:var(--y);color:var(--on-y,inherit)}
.prop:focus-visible{outline:3px solid var(--k);outline-offset:2px}

/* clock: ticks mark allowed half-hours; PM button turns black when selected (face stays white) */
.clock [data-ap=pm][aria-pressed=true]{background:var(--k);color:#fff}
.clock svg:focus{outline:none}
.clock svg:focus-visible .face{stroke:var(--y);stroke-width:6}
.clock .sel.half{r:11}
.clock .hub{fill:var(--k)}
.clock .tick{fill:var(--k);opacity:.45}
.clock .num{pointer-events:none}
.clock .num.on{fill:var(--k)}
.clock svg{cursor:grab}
.mc-day.closed{background:repeating-linear-gradient(135deg,#f4f1e6 0 6px,#fff 6px 12px)}
.mc-day.closed .n{text-decoration:line-through}

/* progress bar + step truck: the active label rides inside the truck's cargo box (truck-step.svg, 3-slice border-image so
   the box stretches with the word while the cab and wheels keep their shape). Black line art, Happy Move yellow fill. */
.tabsbar{position:relative;display:flex;gap:4px;margin:6px 0 16px;padding:22px 0 calc(var(--trkH,2.9em) * .7 - .9em);font-size:1rem;overflow:hidden}
.ptrack{position:absolute;top:0;inset-inline:0;height:14px;border:3px solid var(--k);border-radius:99px;background:#fff;overflow:hidden}
.ptrack i{display:block;height:100%;width:var(--p,12.5%);background:var(--y);border-inline-end:3px solid var(--k);transition:width .8s cubic-bezier(.45,0,.2,1);color:var(--on-y,inherit)}
.tabsbar button{position:relative;z-index:1;flex:1;display:flex;align-items:center;gap:.35em;min-width:0;border:0;background:none;padding:.5em .2em;
 font:inherit;font-weight:900;font-size:.95rem;line-height:1.2;color:#8a8577;cursor:pointer;white-space:nowrap}
.tabsbar button[aria-selected=true]{color:var(--k);padding-inline-end:calc(var(--trkH,2.9em) * .62)}
.tabsbar button:focus-visible{outline:3px solid var(--k);outline-offset:2px;border-radius:8px}
.tabsbar button:disabled{cursor:default;opacity:.55}
.tabsbar .sd{opacity:.8}
.trk{position:absolute;left:0;top:0;height:var(--trkH,2.9em);width:0;pointer-events:none;z-index:0;
 transition:transform .9s cubic-bezier(.45,0,.2,1),width .9s cubic-bezier(.45,0,.2,1)}
.trk.now{transition:none}
.trk-b{display:block;height:100%;box-sizing:border-box;border-style:solid;border-color:transparent;border-image:url(/assets/truck-step.svg) 0 150 0 100 fill stretch}
.trk-b.back{transform:scaleX(-1)}
.trk.turn{transition:transform .45s ease-in-out,width .45s ease-in-out}.trk.turn .trk-b{transition:transform .45s ease-in-out}
.trk.moving .trk-b{animation:trkBump .18s linear infinite alternate}
@keyframes trkBump{to{translate:0 -1.5px}}
@media(max-width:600px){.tabsbar button:not([aria-selected=true]) :is(.sd,.sw){display:none}.tabsbar button{flex:0 1 auto;justify-content:center}
 .tabsbar button:not([aria-selected=true]){flex:1 1 0}}
@media(prefers-reduced-motion:reduce){.trk,.trk.turn,.trk.turn .trk-b,.ptrack i{transition:none}.trk.moving .trk-b{animation:none}}
/* step navigation + dialog actions: desktop = primary at the end (right; left in RTL), Back at the start; mobile <=640px = start-aligned */
.tabs.actions{justify-content:flex-end;align-items:center}
.tabs.actions .back{margin-inline-end:auto}
@media(max-width:640px){.tabs.actions{justify-content:flex-start}.tabs.actions .back{margin-inline-end:0}}
/* address (~75%) + suite/unit (~25%, min 90px) on one row; grid follows dir, so RTL mirrors */
.addrrow{display:grid;grid-template-columns:minmax(0,3fr) minmax(90px,1fr);gap:8px;align-items:start}
.addrrow .unitf input{width:100%;min-width:0}
/* service elevator booking: one row per hour, :00 | :30 columns (grid follows dir, so RTL mirrors) */
.eslots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-width:340px;max-height:260px;overflow:auto;padding:2px}
.eslot{font:inherit;font-weight:700;font-size:.95rem;padding:.5em .4em;border:2px solid var(--k);border-radius:10px;background:#fff;color:var(--k);cursor:pointer;min-height:40px}
.eslot:hover{background:var(--y2,#fff7d6)}
.eslot[aria-checked=true]{background:var(--y);box-shadow:2px 2px 0 var(--k);color:var(--on-y,inherit)}
.eslot:focus-visible{outline:3px solid var(--k);outline-offset:2px}
/* Elevator start + Until side by side when there is room, else stacked */
.elevwin{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px}
.elevwin .field{margin:0}
/* address validity */
[data-addr][aria-invalid=true]{border-color:#c62828!important;box-shadow:0 0 0 2px rgba(198,40,40,.18)}
.hint.bad{color:#c62828;font-weight:700}
.elevcol{display:grid;gap:10px}.elevcol .field{margin:0}
/* Elevator start / Until dropdowns: look like the Elevator select; popover holds the half-hour grid */
.elevwin{grid-template-columns:repeat(2,minmax(0,1fr))}
.edd{position:relative}
.ddbtn{width:100%;font:inherit;text-align:start;padding:10px 36px 10px 12px;padding-inline:12px 36px;border:2px solid var(--k);border-radius:var(--r-in,12px);background:#fff;min-height:44px;cursor:pointer;color:var(--k);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231a1a1a' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
[dir=rtl] .ddbtn{background-position:left 12px center}
.ddbtn:disabled{opacity:.5;cursor:default}
.ddbtn[aria-expanded=true]{box-shadow:2px 2px 0 var(--k)}
.ddbtn:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.ddpop{position:absolute;z-index:30;top:calc(100% + 6px);inset-inline-start:0;width:max(100%,220px);max-height:280px;overflow:auto;padding:8px;background:#fff;border:2px solid var(--k);border-radius:12px;box-shadow:4px 4px 0 var(--k)}
.ddpop .eslots{max-height:none;overflow:visible;max-width:none}
.elevwin .edd:last-child .ddpop{inset-inline-start:auto;inset-inline-end:0}
/* boxes: scroll number picker (drum). 3 rows visible, selected centred */
.wheel{position:relative;width:58px;height:48px;box-sizing:border-box;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;border:2px solid var(--k);border-radius:12px;background:#fff;
  -webkit-mask-image:linear-gradient(transparent,#000 35%,#000 65%,transparent);mask-image:linear-gradient(transparent,#000 35%,#000 65%,transparent);overscroll-behavior:contain}
.wheel::-webkit-scrollbar{display:none}
.wheel:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.wl{padding:14px 0}
.wl span{display:block;height:16px;line-height:16px;text-align:center;scroll-snap-align:center;font-size:.78rem;color:#777;cursor:pointer;user-select:none}
.wl span.on{font-size:1.05rem;font-weight:900;color:var(--k)}
.item.has .wheel{background:#fff}

.fsum{margin-top:16px}.fsum dl{margin:10px 0 0}.fsum dt{font-weight:900;margin-top:10px}.fsum dd{margin:4px 0 0}.fsum ol,.fsum ul{margin:0;padding-inline-start:20px}.fsum ol{list-style:none;padding:0}
.fsum li{margin:4px 0}.ftot{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;padding-top:10px;border-top:2px solid var(--k)}
@media print{body *{visibility:hidden}#fsum,#fsum *{visibility:visible}#fsum{position:absolute;inset:0 auto auto 0;width:100%;border:0;box-shadow:none;background:#fff}.noprint{display:none!important}}

.invhead{display:flex;align-items:baseline;justify-content:space-between;gap:8px 14px;flex-wrap:wrap}.invhead h2{margin-bottom:6px}
.wl-tot{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.wl-tot b{font-size:1.05rem}
.invstops{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;margin:4px 0 6px;scrollbar-width:thin}
.invstop{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:120px;max-width:200px;text-align:start;border:2px solid var(--k);border-radius:12px;background:#fff;padding:6px 10px;cursor:pointer;font:inherit;color:var(--k)}
.invstop span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.invstop[aria-selected="true"]{background:var(--y);box-shadow:3px 3px 0 var(--k);color:var(--on-y,inherit)}
.invstop:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.items>.item{min-width:0}.item>.lbl,.item .lbl{min-width:0;flex:1 1 auto;overflow-wrap:anywhere;display:flex;flex-direction:column}
.item .ctl,.item .trkc{flex:0 0 auto;display:flex;align-items:center;gap:4px}
.item .ibtn{width:28px;height:28px;border:2px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font-size:.95rem;line-height:1;padding:0;color:var(--k)}
.item .ibtn:hover{border-color:var(--k)}
.item.dupl{border-style:dashed}.dupnote{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;padding:4px 6px;font:inherit;background:#fff}
.item.ontrk .dropbtn{white-space:nowrap}.item.ontrk.has .dropbtn{background:var(--k);color:#fff}
.fstop ul{margin:2px 0 6px}.sload{margin:6px 0;padding-inline-start:18px}
@media(max-width:420px){.item{padding:6px 6px 6px 10px;gap:6px}.item .qty button{width:32px;height:32px}.wheel{width:50px}.item .ibtn{width:26px;height:26px}}
.sizes{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:3px}.szsel{font:inherit;font-size:.85rem;padding:2px 4px;border:2px solid var(--k);border-radius:8px;background:#fff;max-width:100%}.crate{color:#7a5a00}
.qmain,.qmain>*,.qside{min-width:0}.invstops{max-width:100%}

.sbody{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.sbin{overflow:hidden;min-height:0}
.stop.collapsed .sbody{grid-template-rows:0fr}.stop.collapsed .sbin{visibility:hidden;transition:visibility 0s .25s}
.stop.collapsed{cursor:pointer;padding-bottom:10px}.stop.collapsed .stop-h{margin-bottom:0}
.chev svg{transition:transform .2s}.chev[aria-expanded="true"] svg{transform:rotate(180deg)}
.rdot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#d93025;margin-inline-start:6px;vertical-align:middle}
@media(prefers-reduced-motion:reduce){.sbody,.chev svg{transition:none}}

.irows{display:grid;gap:6px;margin:4px 0 8px}
.irow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;border:2px solid var(--line);border-radius:12px;padding:6px 8px;background:#fff}
.irow .iname{flex:1 1 140px;min-width:0;font-weight:700;overflow-wrap:anywhere}
.irow .rwrap{position:relative}.rbtn{border:2px solid var(--k);border-radius:999px;background:var(--y2);padding:2px 10px;font:inherit;font-size:.82rem;cursor:pointer;color:var(--k);white-space:nowrap}
span.rbtn{cursor:default}
.rmenu{position:absolute;z-index:20;inset-inline-start:0;top:calc(100% + 4px);display:grid;min-width:150px;background:#fff;border:2px solid var(--k);border-radius:12px;box-shadow:var(--sh-sm);padding:4px}
.rmenu button{border:0;background:none;text-align:start;padding:6px 10px;border-radius:8px;font:inherit;cursor:pointer}.rmenu button[aria-checked="true"],.rmenu button:hover,.rmenu button:focus-visible{background:var(--y);color:var(--on-y,inherit)}
.flsel{font:inherit;font-size:.85rem;padding:3px 6px;border:2px solid var(--k);border-radius:8px;background:#fff}
.addons{display:flex;flex-wrap:wrap;gap:4px}.chip.tog{font-size:.78rem;padding:2px 8px}.chip.tog[aria-pressed="true"]{background:var(--k);color:#fff}
.irow.ro .chip.tog[aria-pressed="false"]{display:none}.irow.ro .chip.tog{opacity:1}
.review{margin:10px 0}.review summary{cursor:pointer;margin-bottom:6px}
@media print{.irow{break-inside:avoid;border-width:1px}.rmenu,.irow .qty button{display:none!important}.chip.tog[aria-pressed="false"]{display:none}.flsel{border:0;appearance:none}}
.dopts{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.item.ontrk .trkc{flex-wrap:wrap;justify-content:flex-end}.item.ontrk{flex-wrap:wrap}

/* compact item rows */
.irow{flex-wrap:wrap;gap:4px 6px;padding:5px 8px}
.irow .iname{flex:1 1 120px;min-width:80px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pwrap{position:relative;display:inline-flex}
.pchip{border:2px solid var(--k);border-radius:999px;background:#fff;padding:1px 8px;font:inherit;font-size:.8rem;line-height:1.5;cursor:pointer;color:var(--k);white-space:nowrap}
.pchip.room{background:var(--y2)}.pchip span{font-size:.65rem}
.pchip:focus-visible,.pill:focus-visible{outline:3px solid var(--k);outline-offset:1px}
.qro{font-size:.85rem;padding:0 4px}
.pill{border:2px solid var(--k);border-radius:999px;background:#fff;color:var(--k);padding:1px 8px;font:inherit;font-size:.75rem;line-height:1.5;cursor:pointer;white-space:nowrap}
.pill[aria-pressed="true"]{background:var(--k);color:#fff}
.irow .addons{gap:4px;flex-wrap:nowrap}
.qpop{min-width:0;padding:6px}.qpop .wheel{margin:0 auto}
@media(max-width:640px){.irow .iname{flex-basis:calc(100% - 110px)}}
@media print{.pchip span,.rmenu{display:none!important}.pill[aria-pressed="false"]{display:none}.pchip,.pill{border-width:1px}}
@media(max-width:640px){.fsum .finv{padding-inline-start:0;list-style:none}.fsum .fstop{margin-inline:0}.irow{padding:5px 6px}.irow .addons{gap:3px}.pill,.pchip{padding:1px 6px}}
.stop-h{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.stop-h .grip{cursor:grab}.htog{display:flex;align-items:center;gap:8px;flex:1;min-width:0;border-radius:8px}.htog:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.clock .handg{transform-origin:110px 110px;transform-box:view-box}.clock .handg.anim{transition:transform .2s cubic-bezier(.2,.8,.2,1)}@media(prefers-reduced-motion:reduce){.clock .handg.anim{transition:none}}

.bedsel{gap:4px 10px}.bedg{display:inline-flex;flex-wrap:wrap;gap:4px}.bedb{padding:3px 9px;font-size:.82rem;min-height:30px}

.roomsprop{justify-content:center;gap:2px;background:var(--y2,#fff8d6)}.roomsprop small{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.7}.roomsprop b{font-size:.76rem;line-height:1.15;overflow-wrap:anywhere}.roomsprop .rp-edit{font-size:.8rem}
.det>.elevcol{grid-column:1/-1}@media(min-width:700px){.det>.elevcol{grid-template-columns:1fr 1fr}}
/* elevator row: Elevator start · Until · Hallway on one line (desktop); start + until side by side, hallway below (mobile) */
.det>.elevrow,.det>.elevadd,.det>.elevrow+.hint{grid-column:1/-1}
.elevrow{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.elevrow .field{margin:0}
.elevrow>.field:last-child{grid-column:1/-1}
@media(min-width:700px){.elevrow{grid-template-columns:repeat(3,minmax(0,1fr))}.elevrow>.field:last-child{grid-column:auto}}
.elevrow .edd:nth-child(2) .ddpop{inset-inline-start:auto;inset-inline-end:0}
@media(min-width:700px){.elevrow .edd:nth-child(2) .ddpop{inset-inline-start:0;inset-inline-end:auto}}
.eclear{display:block;width:100%;margin-bottom:6px}
.elevadd{margin-top:-2px}
/* save & continue later: main button right on desktop, left on mobile */
.later-bar{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin:0 0 10px}
@media(max-width:640px){.later-bar{justify-content:flex-start;flex-direction:row-reverse}}
.later-box{margin:0 0 14px}.later-box .field{margin:8px 0 0}
.later-copy{display:flex;gap:8px}.later-copy input{flex:1;min-width:0}
html.resuming .qmain,html.resuming .qside{opacity:.4;pointer-events:none}
/* stop card titles ~1.35x, number circle scaled to match */
.stop-h .ttl{font-size:1.35em;line-height:1.2}
.stop-h .badge{min-width:40px;height:40px;font-size:1.15rem;padding:0 10px}
.szunits{display:grid;gap:10px}.szunit{padding:10px 12px}.szunit .dlg-h{margin-bottom:4px}
.mc-day .lu{display:block;font-size:.6rem;font-weight:700;line-height:1;color:var(--g);white-space:nowrap;overflow:hidden;max-width:100%}.mc-day[aria-pressed="true"] .lu{color:inherit}
@media(max-width:420px){.mc-day .lu{font-size:.55rem}}
.clock{position:relative}
.clock-hint{position:absolute;left:50%;bottom:-6px;transform:translate(-50%,6px);margin:0;padding:6px 12px;border:2px solid var(--k);border-radius:999px;background:var(--y);font-weight:800;font-size:.85rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:5;box-shadow:var(--sh-sm);color:var(--on-y,inherit)}
.clock-hint.show{opacity:1;transform:translate(-50%,0);animation:hmHint .45s ease}
@keyframes hmHint{0%{transform:translate(-50%,8px) scale(.9)}60%{transform:translate(-50%,-2px) scale(1.04)}100%{transform:translate(-50%,0) scale(1)}}
@media (prefers-reduced-motion:reduce){.clock-hint.show{animation:none}}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.q-nohero{padding-top:20px}
@media(max-width:759px){.q-nohero{padding-top:14px}}
.hm-toast{position:fixed;left:50%;width:max-content;z-index:80;max-width:min(560px,calc(100vw - 24px));box-sizing:border-box;padding:8px 16px;border:2px solid var(--ok);border-radius:999px;background:#e3f4e8;color:var(--ok);font-weight:700;font-size:.9rem;line-height:1.3;text-align:center;box-shadow:var(--sh-sm);cursor:pointer;opacity:0;pointer-events:none;transform:translate(-50%,-10px);transition:opacity .3s ease,transform .3s ease}
[dir=rtl] .hm-toast{direction:rtl}
.hm-toast.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
@media (max-width:480px){.hm-toast{border-radius:14px;font-size:.85rem;padding:7px 12px}}
@media (prefers-reduced-motion:reduce){.hm-toast{transition:none;transform:translate(-50%,0)}}
/* in-page confirm dialog */
.hm-modal-bg{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(26,26,26,.45);animation:hmFade .18s ease}
.hm-modal{box-sizing:border-box;width:min(420px,100%);background:#fff;border:3px solid var(--k);border-radius:18px;box-shadow:6px 6px 0 var(--k);padding:20px 20px 18px;text-align:start;animation:hmPop .2s ease}
.hm-modal h2{margin:0 0 6px;font-size:1.25rem}
.hm-modal p{margin:0 0 18px;color:var(--g,#555);font-weight:600}
.hm-modal-act{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.hm-modal-act .btn{min-height:44px}
html.hm-modal-open{overflow:hidden}
@keyframes hmFade{from{opacity:0}}@keyframes hmPop{from{transform:scale(.94);opacity:0}}
@media (prefers-reduced-motion:reduce){.hm-modal-bg,.hm-modal{animation:none}}
/* step 1: no side column; the form takes the full grid width */
.qgrid[data-cur="0"] .qside{display:none}
@media(min-width:1000px){.qgrid[data-cur="0"]{grid-template-columns:minmax(0,1fr)}}
/* step 1: calendar until a date is picked, then the clock; "Change date" brings the calendar back */
.when-grid[data-picked="0"] .clock{display:none}
.when-grid[data-picked="1"] .calwrap{display:none}
@media(min-width:760px){.when-grid[data-picked="0"],.when-grid[data-picked="1"]{grid-template-columns:minmax(0,1fr)}
 .when-grid[data-picked="1"] .clock{max-width:420px;margin-inline:auto;width:100%}}
.date-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 14px;border:2px solid var(--k);border-radius:14px;background:var(--y2,var(--y2,#fff3b0))}
.date-bar[hidden]{display:none}
.date-bar-txt{display:flex;flex-direction:column;min-width:0}
.date-bar-lbl{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--g)}
.date-bar strong{font-size:1.05rem}
@media(min-width:760px){.date-bar{max-width:420px;margin-inline:auto;width:100%;box-sizing:border-box}}
/* arrival label: screen readers only (a toast says it after a date pick) */
#clockLbl{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.date-bar.flash{animation:hmBarFlash 1.2s ease}
@keyframes hmBarFlash{0%,40%{background:var(--y);box-shadow:0 0 0 4px var(--y);color:var(--on-y,inherit)}100%{}}
@media (prefers-reduced-motion:reduce){.date-bar.flash{animation:none}}
/* after a date pick: hide heading + forecast-city row (back on Change date) */
section[data-step="0"]:has(#whenGrid[data-picked="1"]) .when-head{display:none}
/* step 1 (When) and step 2 (Stops): no side column; Stops also hides the progress truck badge */
.qgrid[data-cur="0"] .qside,.qgrid[data-cur="1"] .qside{display:none}
@media(min-width:1000px){.qgrid[data-cur="0"],.qgrid[data-cur="1"]{grid-template-columns:minmax(0,1fr)}}

/* property type cover-flow carousel */
.pcar{--dx:0px;--dir:1;position:relative;height:122px;overflow:hidden;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;border-radius:14px;background:repeating-linear-gradient(0deg,transparent 0 0)}
[dir=rtl] .pcar{--dir:-1}
.pcar.dragging{cursor:grabbing}
.pcar .pt{position:absolute;top:8px;left:50%;width:118px;height:104px;justify-content:center;transform:translateX(calc(-50% + var(--dx))) scale(1);transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .32s,box-shadow .32s;z-index:3;box-shadow:0 4px 0 var(--k)}
.pcar .pt img{width:72px;height:54px;pointer-events:none}
.pcar{container-type:inline-size;--o1:15cqw;--o2:28cqw;--o3:40cqw}
.pcar .pt{z-index:4}
.pcar .pt:not([data-pos="0"]){box-shadow:0 2px 0 var(--k)}
.pcar .pt[data-pos="1"],.pcar .pt[data-pos="-1"]{z-index:3;opacity:.92}
.pcar .pt[data-pos="2"],.pcar .pt[data-pos="-2"]{z-index:2;opacity:.78}
.pcar .pt[data-pos="3"],.pcar .pt[data-pos="-3"]{z-index:1;opacity:.62}
.pcar .pt[data-pos="1"]{transform:translateX(calc(-50% + var(--dir) * var(--o1) + var(--dx))) scale(.86)}
.pcar .pt[data-pos="-1"]{transform:translateX(calc(-50% - var(--dir) * var(--o1) + var(--dx))) scale(.86)}
.pcar .pt[data-pos="2"]{transform:translateX(calc(-50% + var(--dir) * var(--o2) + var(--dx))) scale(.74)}
.pcar .pt[data-pos="-2"]{transform:translateX(calc(-50% - var(--dir) * var(--o2) + var(--dx))) scale(.74)}
.pcar .pt[data-pos="3"]{transform:translateX(calc(-50% + var(--dir) * var(--o3) + var(--dx))) scale(.64)}
.pcar .pt[data-pos="-3"]{transform:translateX(calc(-50% - var(--dir) * var(--o3) + var(--dx))) scale(.64)}
.pcar .pt:not([data-pos="0"]) span{font-size:.86rem}
@media(max-width:600px){.pcar .pt{--o1:23cqw;--o2:37cqw;--o3:50cqw}.pcar .pt[data-pos="3"],.pcar .pt[data-pos="-3"]{opacity:0;pointer-events:none}}
.pcar.dragging .pt{transition:none}
.pnav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:30px;height:30px;border:2px solid var(--k);border-radius:50%;background:var(--y);color:var(--on-y,var(--k));font:900 1.1rem/1 inherit;cursor:pointer;display:grid;place-items:center;padding:0}
.pnav[data-pnav="-1"]{inset-inline-start:4px}.pnav[data-pnav="1"]{inset-inline-end:4px}
[dir=rtl] .pnav{transform:translateY(-50%) scaleX(-1)}
@media(hover:none){.pnav{display:none}}
.prow{display:flex;justify-content:center;margin-top:8px}.prow .roomsprop{flex-direction:row;gap:8px;padding:8px 14px;min-width:200px}
@media(prefers-reduced-motion:reduce){.pcar .pt{transition:none}}

/* add-stop sits between Back and Next in the step footer */
.tabs.actions:has(#addStop){justify-content:space-between;gap:8px}
.tabs.actions:has(#addStop) .back{margin-inline-end:0}
.tabs.actions #addStop{flex:0 1 auto;white-space:nowrap;font-size:.88rem;padding:.55em .9em}
@media(max-width:640px){.tabs.actions:has(#addStop){flex-wrap:nowrap;gap:6px}.tabs.actions:has(#addStop) .btn{min-width:0;font-size:.8rem;padding:.55em .7em;line-height:1.15}.tabs.actions #addStop{white-space:normal;text-align:center;flex:0 1 auto}.tabs.actions:has(#addStop) .next{flex:0 1 auto;white-space:normal}}

/* step 1 (When): the calendar and clock scale up as an enlarged copy of the ~600px layout (cells keep their aspect ratio).
   cqw units are relative to the calendar / when-grid width; 560px wide = the reference look. Phones (<=600px) keep mobilefix. */
@media(min-width:760px){
 .mcal{container-type:inline-size}
 .mc-grid{gap:max(3px,.54cqw)}
 .mc-day{min-height:0;aspect-ratio:76/62;padding:max(4px,.7cqw) 1px;gap:max(1px,.2cqw);border-radius:max(10px,1.8cqw)}
 .mc-day .n{font-size:max(1rem,2.86cqw)}
 .mc-day .wx{width:max(20px,3.57cqw);height:max(20px,3.57cqw);flex-shrink:0}
 .mc-day{gap:0;line-height:1.05}
 .mc-day .tp,.mc-day .pr,.mc-dow,.mc-legend{font-size:max(12px,2.14cqw)}
 .mc-day .lu{font-size:max(.6rem,1.7cqw)}
 .mc-day .hol{width:max(7px,1.25cqw);height:max(7px,1.25cqw)}
 .mc-title{font-size:max(1.15rem,3.3cqw)}
 .mc-nav{width:max(40px,7.1cqw);height:max(40px,7.1cqw);font-size:max(1.2rem,3.4cqw)}
 .mc-legend b{width:max(12px,2.14cqw);height:max(12px,2.14cqw)}
 .when-grid{container-type:inline-size}
 .when-grid[data-picked="1"] .clock{max-width:none}
 .when-grid[data-picked="1"] .clock svg#clock{width:max(260px,46cqw)}
 .when-grid[data-picked="1"] .clock .clock-read{font-size:max(1rem,2.9cqw)}
}

/* smooth clock: dimmed hand over closed hours, landing-limit hint, crossfades */
.clock svg.gray .handg{opacity:.45}.clock svg.gray .hand{stroke:var(--off2,#9a937c)}
#clockTxt{display:inline-block}#clockTxt.fade{animation:hmFade .18s ease-out}#clockTxt.lim{opacity:.7}#clockTxt.lim::before{content:"→ ";font-weight:700}
@keyframes hmFade{from{opacity:.35}to{opacity:1}}
.clock [data-ap]{transition:background-color .2s ease,color .2s ease}
@media(prefers-reduced-motion:reduce){#clockTxt.fade{animation:none}.clock [data-ap]{transition:none}}

/* internal move (one address): note + "to unit" fields under the single stop */
.inmove{margin-top:8px;border:2px dashed transparent;border-radius:14px;padding:2px 4px;transition:background .2s,border-color .2s,padding .2s}
.inmove.open{border-color:var(--k);background:var(--y2,#fff8d6);padding:8px 12px}
.inlink{all:unset;cursor:pointer;font-size:.9rem;font-weight:700;text-decoration:underline;text-underline-offset:3px;padding:4px 0;display:inline-flex;gap:4px;align-items:center}
.inlink:focus-visible{outline:2px solid var(--k);outline-offset:2px;border-radius:4px}
.inchev{display:inline-block;transition:transform .2s;text-decoration:none}
.inmove.open .inchev{transform:rotate(90deg)}
[dir=rtl] .inchev{transform:scaleX(-1)}[dir=rtl] .inmove.open .inchev{transform:rotate(90deg)}
.inbody{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s ease}
.inbody>div{overflow:hidden;min-height:0;visibility:hidden;transition:visibility 0s .22s}
.inmove.open .inbody>div{visibility:visible;transition:none}
.inmove.open .inbody{grid-template-rows:1fr}
.inmove .inrow{margin-top:6px}
@media(max-width:600px){.inlink{font-size:.82rem}.inmove.open{padding:6px 8px}}
.inrow{display:grid;grid-template-columns:minmax(90px,.8fr) 1fr 1fr;gap:8px}
.inrow.noel{grid-template-columns:1fr 1fr}
@media(max-width:600px){.inrow{grid-template-columns:1fr 1fr}.inrow .field:first-child{grid-column:1/-1}.inrow.noel .field:first-child{grid-column:auto}}

/* field tips (address pick / elevator early): float under the field, fade after ~3 s */
.hint[data-ok]:empty{display:none}
.ftip{position:absolute;left:0;z-index:30;max-width:min(360px,100%);padding:6px 10px;border:2px solid var(--k);border-radius:10px;background:var(--y2,#fff8d6);color:var(--k);font-size:.82rem;font-weight:700;line-height:1.3;box-shadow:var(--sh-sm);pointer-events:none;opacity:0;transform:translateY(-4px);transition:opacity .35s ease,transform .35s ease}
.ftip{box-shadow:0 0 0 6px #fff,var(--sh-sm)}
.ftip.ok{border-color:var(--ok);background:#e3f4e8;color:var(--ok)}
.ftip.warn{border-color:#c62828;background:#fdecea;color:#c62828}
.ftip.show{opacity:1;transform:none}
[dir=rtl] .ftip{left:auto;right:0}
@media (prefers-reduced-motion:reduce){.ftip{transition:none}}
/* arrival clock: Happy Move card look (theme vars; yellow default, blue in theme-blue) */
.clock{--dial-tint:#fff;background:#fff;border:3px solid var(--k);border-radius:20px;box-shadow:6px 6px 0 var(--k);padding:16px 16px 18px;text-align:center}
.clock[data-part=sunrise]{--dial-tint:#fdf6ee}.clock[data-part=sunset]{--dial-tint:#fbefe9}.clock[data-part=moon]{--dial-tint:#eceef4}
.clock-ic{width:56px;height:56px;color:var(--k)}.clock-ic svg{width:100%;height:100%;display:block}
.clock .clock-read #clockTxt{font-size:2.6rem;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.clock [data-ap]{border:3px solid var(--k);border-radius:10px;background:#fff;color:var(--k);font-weight:900;padding:6px 10px;min-height:44px}
.clock [data-ap][aria-pressed=true],.clock [data-ap=pm][aria-pressed=true]{background:var(--y);color:var(--on-y,#111)}
.clock .face{fill:var(--dial-tint);stroke-width:4;transition:fill .4s}
.clock .num{font-size:17px}
.clock .hand{stroke-width:5}
.clock .sel{stroke-width:3}
.clock .hub{r:6px}
.clock-rot{margin:0;color:var(--g);font-size:.95rem}
@media (prefers-reduced-motion:reduce){.clock .face{transition:none}}

/* quote page: no site header; compact tool row right-aligned above the progress bar */
.q-tools{display:flex;justify-content:flex-end;align-items:center;gap:6px;margin:10px 0 6px;position:relative;z-index:30}
.q-tools .lang-btn{min-width:38px;height:38px;padding:0 9px!important;box-shadow:none;font-size:.8rem}
.q-tools .lang-btn svg{width:18px;height:18px}
.q-tools .lang{position:relative}
.q-tools #acct{display:inline-flex;align-items:center;gap:6px}
.q-tools #acct .btn,.q-tools #acct a.btn-sm{height:38px;min-height:38px;padding:0 12px;font-size:.8rem;box-shadow:none;display:inline-flex;align-items:center}
.q-tools #acct .small{max-width:16ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:480px){.q-tools #acct .small{display:none}}
@media(max-width:600px){.q-tools{padding-right:10px;padding-left:10px}}

/* quote: only a floating language button (top-right); undo/save/account hidden (their JS stays wired; autosave unaffected) */
.q-tools{position:fixed;top:10px;right:10px;margin:0;padding:0!important;z-index:90;gap:0}
.q-tools #startOver,.q-tools #later,.q-tools #acct{display:none!important}
.q-tools .lang-btn{box-shadow:var(--sh-sm,2px 2px 0 #1a1a1a);background:#fff;color:#1a1a1a}
.q-tools .lang-menu{right:0;left:auto}
.qmain>.tabsbar{margin-top:56px}

/* arrival readout: [icon] 10:00 [AM|PM] on one centred line */
.clock .clock-read{justify-content:center;flex-wrap:nowrap;gap:10px}
.clock .clock-read .clock-ic{width:44px;height:44px;flex:none;display:inline-block}
.clock .clock-read #clockTxt{white-space:nowrap}
@media(max-width:400px){.clock .clock-read .clock-ic{width:36px;height:36px}.clock .clock-read #clockTxt{font-size:2.2rem}}

/* move date sits inside the clock card, centred above the time row */
.clock .date-bar{width:100%;max-width:420px;margin:0 auto 4px;box-sizing:border-box;justify-content:center;gap:14px;text-align:center}
.clock .date-bar-txt{align-items:center}

/* AM|PM toggle on the dial face: centred between the 12 and the hub, above the needle */
.clock .clock-face{position:relative;display:inline-block;line-height:0}
.clock .seg-face{position:absolute;left:50%;top:33%;transform:translate(-50%,-50%);z-index:2;line-height:1;display:inline-flex;gap:0;box-shadow:2px 2px 0 var(--k);border-radius:12px}
.clock .seg-face [data-ap]{min-height:36px;height:36px;min-width:42px;padding:0 9px;font-size:.95rem;border-radius:0}
.clock .seg-face [data-ap]:first-child{border-radius:12px 0 0 12px;border-right-width:1.5px}
.clock .seg-face [data-ap]:last-child{border-radius:0 12px 12px 0;border-left-width:1.5px}
@media(pointer:coarse),(max-width:600px){.clock .seg-face [data-ap]{height:44px;min-height:44px;min-width:44px;padding:0 8px;font-size:.9rem}}

/* no visible time readout: icon only (screen readers use #clockLive / slider valuetext) */
.clock .clock-read #clockTxt{display:none}
.clock .clock-read{justify-content:center}

/* time-of-day icon in the dial's top-left outside corner; empty readout row removed */
.clock .clock-read{display:none}
.clock .clock-face .clock-ic-face{position:absolute;left:0;top:0;width:13%;max-width:46px;min-width:30px;height:auto;aspect-ratio:1;z-index:1;pointer-events:none;line-height:0}

/* step labels ABOVE the progress bar; bar sits just above the form card */
.qmain>.tabsbar{margin-top:0;padding-top:10px;padding-bottom:30px}
.qmain>.tabsbar .ptrack{top:auto;bottom:4px}
@media(max-width:600px){
 body.mf-quote .qmain>.tabsbar{padding-top:8px;padding-bottom:24px;padding-right:76px}  /* labels end before the floating language button */
 body.mf-quote .qmain>.tabsbar .ptrack{left:12px;right:12px;bottom:4px}
}

/* quote: footer line hidden on mobile (DB-IP CC BY attribution kept on /privacy and on desktop) */
@media(max-width:480px){body.mf-quote > footer.wrap{display:none}}

/* no unwanted zoom on the quote (pinch zoom stays available for accessibility) */
@media(max-width:760px){.qgrid input,.qgrid select,.qgrid textarea,#hmAuth input,#auth input{font-size:16px!important}}
.qgrid .step,.qgrid .card{touch-action:manipulation}
#clock{touch-action:none}

/* Stops: heading/lead visually hidden (still read by screen readers), shown as a short pop-out instead */
.step[data-step="1"] > h2,.step[data-step="1"] > h2 + p{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.step[data-step="1"]{position:relative}
.stops-pop{position:fixed;z-index:85;transform:translate(-50%,-50%) scale(.85);opacity:0;pointer-events:none;max-width:min(440px,calc(100vw - 32px));box-sizing:border-box;
  background:#fff;color:#1a1a1a;border:3px solid #1a1a1a;border-radius:18px;box-shadow:6px 6px 0 #1a1a1a;padding:16px 20px;text-align:center;
  transition:opacity .35s ease,transform .35s cubic-bezier(.2,.9,.3,1.3)}
.stops-pop b{display:block;font-size:1.35rem;font-weight:900;margin-bottom:4px}
.stops-pop b::after{content:"";display:block;width:48px;height:5px;margin:8px auto 0;background:var(--y);border-radius:3px}
.stops-pop span{display:block;color:#4a4a4a;font-size:.95rem;line-height:1.35;margin-top:6px}
.stops-pop.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.stops-pop.hide{opacity:0;transform:translate(-50%,-50%) scale(.96)}
@media (prefers-reduced-motion:reduce){.stops-pop,.stops-pop.show,.stops-pop.hide{transition:none;transform:translate(-50%,-50%)}}

/* Property carousel lives in the stop header row (after "1 Stop", before collapse) */
.stop-h .htog{flex:0 0 auto}
.stop-h .ttl{flex:0 0 auto}
.stop-h .pcar{flex:1 1 220px;min-width:0;height:86px;margin:0 2px;cursor:grab}
.stop-h .pcar .pt{top:4px;width:84px;height:76px;padding:4px}
.stop-h .pcar .pt img{width:46px;height:34px}
.stop-h .pcar .pt span{font-size:.78rem}
.stop-h .pcar .pt:not([data-pos="0"]) span{font-size:.7rem}
.stop-h .pnav{width:26px;height:26px;font-size:1rem}
.stop-h .chev{margin-left:auto}
@media(max-width:600px){.stop-h{flex-wrap:wrap}.stop-h .pcar{order:9;flex:1 1 100%;margin:6px 0 0}}

/* v2: slim header row: 40px icon tiles (label in title/aria-label), same height as the badge */
.stop-h .pcar{height:44px;flex:1 1 260px;--o1:52px;--o2:100px;--o3:146px}
.stop-h .pcar .pt{top:2px;width:48px;height:40px;padding:0;border-radius:10px;box-shadow:0 2px 0 var(--k)}
.stop-h .pcar .pt span{display:none}
.stop-h .pcar .pt img{width:34px;height:26px}
.stop-h .pcar .pt[data-pos="1"],.stop-h .pcar .pt[data-pos="-1"]{scale:.9}
.stop-h .pcar .pt[data-pos="2"],.stop-h .pcar .pt[data-pos="-2"],.stop-h .pcar .pt[data-pos="3"],.stop-h .pcar .pt[data-pos="-3"]{scale:.85}
.stop-h .pcar .pt[data-pos]:not([data-pos="0"]){transform:translateX(calc(-50% + var(--s,1) * var(--dir) * var(--off) + var(--dx)))}
.stop-h .pcar .pt[data-pos="1"]{--off:var(--o1)}.stop-h .pcar .pt[data-pos="-1"]{--off:var(--o1);--s:-1}
.stop-h .pcar .pt[data-pos="2"]{--off:var(--o2)}.stop-h .pcar .pt[data-pos="-2"]{--off:var(--o2);--s:-1}
.stop-h .pcar .pt[data-pos="3"]{--off:var(--o3)}.stop-h .pcar .pt[data-pos="-3"]{--off:var(--o3);--s:-1}
.stop-h .pnav{width:36px;height:36px;display:grid}
@media(max-width:600px){.stop-h .pcar{height:48px;--o1:56px;--o2:110px;--o3:162px}.stop-h .pcar .pt{width:52px;height:44px}
 .stop-h .pcar .pt[data-pos="3"],.stop-h .pcar .pt[data-pos="-3"]{opacity:.55;pointer-events:auto}}
.stop-h .pcar,.stop-h .pcar .pt{--o1:56px;--o2:110px;--o3:164px}
.stop-h .pcar{max-width:420px;margin:0 auto}
@media(max-width:600px){.stop-h .pcar,.stop-h .pcar .pt{--o1:58px;--o2:114px;--o3:170px}.stop-h .pcar{max-width:none}}

/* phone: picked-address confirmation without a floating chip */
.okflash{border-color:var(--ok,#1e7d3a)!important;box-shadow:0 0 0 3px #e3f4e8!important;transition:border-color .2s,box-shadow .2s}

/* weather note: under the step-1 button, small + muted; calendar view only */
section[data-step="0"] #wxNote{font-size:12px;line-height:1.35;color:var(--g);text-align:end;margin:8px 0 0}
@media(max-width:640px){section[data-step="0"] #wxNote{text-align:start}}
section[data-step="0"]:has(#whenGrid[data-picked="1"]) #wxNote{display:none}
/* legend sample for the lunar dates under each day (zh only) */
.mc-legend .lg-lu{font-size:.6rem;font-weight:700;line-height:1;color:var(--g);margin-inline-end:4px}

/* v3 (3-up): exactly 3 tiles — the chosen type centred, larger and raised; neighbours tucked ~30% under it; arrows beside, never over the tiles */
.stop-h .pcar.pcar{height:60px;max-width:240px;margin-inline:auto;--o1:46px;--o2:46px;--o3:46px}
.stop-h .pcar.pcar .pt{--o1:46px;--o2:46px;--o3:46px;top:7px;width:52px;height:44px;transform-origin:0 50%}
.stop-h .pcar.pcar .pt[data-pos="0"]{scale:1.12;z-index:5;box-shadow:0 4px 0 var(--k)}
.stop-h .pcar.pcar .pt[data-pos="1"],.stop-h .pcar.pcar .pt[data-pos="-1"]{scale:.82;z-index:3;opacity:1;pointer-events:auto}
.stop-h .pcar.pcar .pt[data-pos="2"],.stop-h .pcar.pcar .pt[data-pos="-2"],.stop-h .pcar.pcar .pt[data-pos="3"],.stop-h .pcar.pcar .pt[data-pos="-3"]{scale:.7;z-index:1;opacity:0;pointer-events:none}
.stop-h .pcar.pcar .pnav{width:34px;height:34px;display:grid}
.stop-h .pcar.pcar .pnav[data-pnav="-1"]{inset-inline-start:calc(50% - 106px)}
.stop-h .pcar.pcar .pnav[data-pnav="1"]{inset-inline-end:calc(50% - 106px)}
@media(max-width:600px){.stop-h .pcar.pcar{max-width:240px}}

/* unit box: just wide enough for ~6 characters (e.g. PH1203, 2550B); the address takes the rest of the row */
.addrrow{grid-template-columns:minmax(0,1fr) max-content}
.addrrow .unitf input{width:calc(6.5ch + 12px);min-width:0;padding-inline:4px;text-align:center;text-overflow:ellipsis}   /* 16px font kept (no iOS zoom); PH1203 = 61px of text */

/* property type: one button in the stop header (replaces the carousel) + small picker; yellow/black card style */
.ptbtn{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:92px;max-width:150px;padding:6px 10px 5px;border:2px solid var(--k);border-radius:12px;background:var(--y);color:var(--on-y,var(--k));box-shadow:0 4px 0 var(--k);font:inherit;line-height:1.1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ptbtn img{width:38px;height:38px;display:block;pointer-events:none}
.ptbtn .ptl{font-size:.72rem;font-weight:800;white-space:nowrap}
.ptbtn .ptv{font-size:.72rem;font-weight:700;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.85}
.ptbtn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--k)}
.ptbtn:focus-visible{outline:3px solid var(--k);outline-offset:3px}
.stop-h .pcar{display:none}
.ptmodal{width:min(380px,100%);padding:14px 14px 16px;text-align:center}
.ptmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:800;font-size:.95rem;text-align:start;min-width:0}
.ptmodal .pthead img{flex:0 0 auto}.ptmodal .pthead span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ptprev{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;height:178px;border:2px solid var(--k);border-radius:14px;background:#FFF4C7;box-shadow:0 4px 0 var(--k)}
.ptprev img{width:150px;height:112px;object-fit:contain;display:block}
.ptprev b{font-size:1.1rem;font-weight:800}
.ptmodal h2{margin:16px 0 10px;font-size:1.15rem;letter-spacing:.02em}
.ptgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ptchip{min-height:44px;padding:6px 8px;border:2px solid var(--k);border-radius:12px;background:#fff;color:var(--k);font:inherit;font-weight:800;font-size:.85rem;line-height:1.15;cursor:pointer;box-shadow:0 2px 0 var(--k);-webkit-tap-highlight-color:transparent}
.ptchip[aria-checked=true]{background:var(--y);color:var(--on-y,var(--k));box-shadow:0 4px 0 var(--k)}
.ptchip:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.ptact{display:flex;justify-content:center;margin-top:18px}.ptact .btn{min-width:120px}
/* property type button sits left of the Rooms pill, same row, centred; the pill wraps its own text instead of dropping below */
.prow:has(.ptbtn){align-items:center;flex-wrap:nowrap;gap:10px}
.prow:has(.ptbtn) .roomsprop{flex:0 1 auto;min-width:0;max-width:calc(100% - 110px)}
.prow:has(.ptbtn) .roomsprop b{white-space:normal}
@media(max-width:480px){.prow .ptbtn{min-width:78px;max-width:104px;padding:5px 7px 4px}.prow .ptbtn img{width:32px;height:32px}.prow .ptbtn .ptl,.prow .ptbtn .ptv{font-size:.66rem}.prow .ptbtn .ptv{max-width:90px}
.prow:has(.ptbtn) .roomsprop{padding:7px 10px;gap:6px;max-width:calc(100% - 90px)}}
.ptbtn img{object-fit:contain}.ptbg{display:block}.ptbg .ptmodal{position:fixed;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);overflow:auto}
/* property type button: text on top ("Property type", chosen type), icon below; labels wrap instead of clipping */
.ptbtn img{order:3;margin-top:2px}.ptbtn .ptl{order:1}.ptbtn .ptv{order:2}
.ptbtn .ptl,.ptbtn .ptv{white-space:normal;overflow:visible;text-overflow:clip;max-width:100%;text-align:center;overflow-wrap:break-word}
@media(max-width:480px){.prow .ptbtn .ptv{max-width:100%}}
/* property type button order: title, icon, chosen type; bigger icon box (type icons are ~4:3, so a wide box shows them large) */
.ptbtn .ptl{order:1}.ptbtn img{order:2;margin:1px 0}.ptbtn .ptv{order:3}
.ptbtn img{width:54px;height:40px}
@media(max-width:480px){.prow .ptbtn{padding:4px 6px 4px;gap:1px}.prow .ptbtn img{width:56px;height:40px}}
/* "Property type" caption sits above the button (outside it); the button holds icon + chosen type. Caption is absolutely placed so the Rooms pill centres on the button */
.ptcol{position:relative;flex:0 0 auto;margin-top:18px}
.ptcap{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);white-space:nowrap;font-size:.72rem;font-weight:800;line-height:1.1;color:var(--k);pointer-events:none}
.ptbtn .ptph{font-weight:700;opacity:.8}
.ptbtn img{width:60px;height:44px}
@media(max-width:480px){.prow .ptbtn{min-width:84px;max-width:108px;padding:5px 7px}.prow .ptbtn img{width:64px;height:46px}.prow .ptbtn .ptv{font-size:.68rem}}
/* nothing chosen: the button itself says "Property type", so the outside caption is hidden */
.ptcol:has(.ptph){margin-top:0}.ptcol:has(.ptph) .ptcap{display:none}
/* reserve caption space on the row (not the column) so the Rooms pill centres on the button itself */
.ptcol{margin-top:0}.prow:has(.ptbtn .ptv:not(.ptph)){padding-top:18px}
/* Rooms pill: door icon replaces the "ROOMS" label (kept for screen readers); same height as the Property type button */
.roomsprop .rpic{width:56px;height:42px;object-fit:contain;flex:0 0 auto;display:block;pointer-events:none}
.roomsprop .rpvh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.prow:has(.ptbtn) .roomsprop{position:relative;box-sizing:border-box;min-height:75px;align-items:center;align-self:center}
.prow:has(.ptbtn) .roomsprop b{text-align:start}
@media(max-width:480px){.prow:has(.ptbtn) .roomsprop .rpic{width:48px;height:36px}}
/* "Property type" caption is a plain <label> (same style as "Elevator start"), in flow, left-aligned over the button; row aligns bottoms so the 75px Rooms box centres on the 75px button */
.ptcol{position:static;display:flex;flex-direction:column;align-items:flex-start;margin:0}
.ptlab{max-width:min(170px,42vw);white-space:normal;overflow-wrap:break-word;pointer-events:none}
.ptcol:has(.ptph) .ptlab{display:none}
.prow:has(.ptbtn){align-items:flex-end}.prow:has(.ptbtn .ptv:not(.ptph)){padding-top:0}
.prow:has(.ptbtn) .roomsprop{align-self:flex-end}
/* elevator pop-up (same look as the property picker) + compact inline summary */
.evbg{display:block}.evbg .evmodal{position:fixed;width:min(420px,calc(100vw - 16px));padding:14px 14px 16px;text-align:start}
.evbg.noanim,.evbg .evmodal.noanim{animation:none}
.evmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 12px;font-weight:800;font-size:1rem}
.evmodal .pthead .badge{flex:0 0 auto}
.evmodal .elevrow{grid-template-columns:repeat(2,minmax(0,1fr))}.evmodal .elevrow>.field:last-child{grid-column:1/-1}
.evmodal .elevrow .edd:nth-child(2) .ddpop{inset-inline-start:auto;inset-inline-end:0}
.evmodal .hint{display:block;margin-top:8px}
.evmodal .ptact{margin-top:16px}
.evsum{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:100%;padding:6px 12px;border:2px solid var(--k);border-radius:999px;background:var(--y2,#fff8d6);color:var(--k);font:inherit;font-size:.82rem;font-weight:700;line-height:1.25;text-align:start;cursor:pointer;box-shadow:0 2px 0 var(--k)}
.evsum b{font-weight:800}.evsum .rp-edit{font-size:.8rem}
.evsum:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.evsum{display:inline-block}
/* shorter Property type button + Rooms/Size box: both 58px, icons scaled down proportionally */
.prow .ptbtn{box-sizing:border-box;height:58px;min-height:58px;padding:3px 7px;gap:1px;justify-content:center}
.prow .ptbtn img{width:46px;height:34px;margin:0}
.prow:has(.ptbtn) .roomsprop{box-sizing:border-box;min-height:58px;padding-block:4px}
.prow:has(.ptbtn) .roomsprop .rpic{width:42px;height:32px}
@media(max-width:480px){.prow .ptbtn{padding:3px 6px;gap:1px}.prow .ptbtn img{width:46px;height:34px}.prow:has(.ptbtn) .roomsprop{min-height:58px;padding-block:4px}.prow:has(.ptbtn) .roomsprop .rpic{width:40px;height:30px}}
/* elevator summary = Rooms box style, full card width, 58px */
.evbox{position:relative;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;width:100%;min-width:0;min-height:58px;padding:4px 14px;text-align:start}
.evbox .rpic{width:42px;height:32px;object-fit:contain;flex:0 0 auto}
.evbox b{flex:1 1 auto;min-width:0;font-size:.76rem;line-height:1.15;overflow-wrap:anywhere;white-space:normal}
.evbox .rp-edit{flex:0 0 auto}
.evbox:focus-visible{outline:3px solid var(--k);outline-offset:2px}
@media(max-width:480px){.evbox .rpic{width:40px;height:30px}.evbox{padding:4px 10px;gap:6px}}
/* equal heights incl. the offset shadow: Rooms/Size + Elevator get the same 0 4px 0 shadow as the Property type button (all 58px + 4px) */
.prow:has(.ptbtn) .roomsprop,.evbox{box-shadow:0 4px 0 var(--k);height:58px;min-height:58px;max-height:58px;overflow:hidden}
.prow:has(.ptbtn) .roomsprop b,.evbox b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
/* shared edges: Property type at the address fields left edge, Rooms/Size stretches to the Unit boxs right edge */
.prow:has(.ptbtn){justify-content:flex-start}
.prow:has(.ptbtn) .roomsprop{flex:1 1 auto;max-width:none;justify-content:flex-start;text-align:start}
.prow:has(.ptbtn) .roomsprop b{flex:1 1 auto;min-width:0}
/* equal visual gaps: address -> property row = property row (incl. shadow) -> elevator box */
.elevadd:has(.evbox){margin-top:2px}
.elevadd:has(.evbox){margin-top:0}
.sugg button.hl{background:var(--y2,#fff8d6);outline:2px solid var(--k);outline-offset:-2px}
/* elevator pop-up: hallway chips + small header icon */
.evmodal .evhall .chips{display:flex;flex-wrap:wrap;gap:6px}
.evmodal .pthead .evhic{width:32px;height:24px;object-fit:contain;flex:0 0 auto}
/* elevator time lists: centred over the pop-up, every half-hour visible (no scrolling) */
.ddbg{position:fixed;inset:0;z-index:205;background:rgba(26,26,26,.28)}
.ddpop.ddmid{position:fixed;z-index:210;left:50%;top:50%;inset-inline-start:50%;inset-inline-end:auto;transform:translate(-50%,-50%);width:min(380px,calc(100vw - 16px));max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);overflow:auto;box-sizing:border-box;padding:12px;border:3px solid var(--k);border-radius:16px;box-shadow:6px 6px 0 var(--k)}
[dir=rtl] .ddpop.ddmid{transform:translate(50%,-50%)}
.evmodal .elevrow .edd:nth-child(2) .ddpop.ddmid{inset-inline-start:50%;inset-inline-end:auto}
.ddmid .ddttl{font-weight:800;font-size:1rem;margin:0 0 8px}
.ddmid .eshd{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;opacity:.75;margin:8px 0 4px}
.ddmid .eshd:first-of-type{margin-top:0}
.ddmid .eslots{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;max-height:none;overflow:visible;max-width:none;padding:0}
.ddmid .eslot{font-size:.85rem;padding:.3em .1em;min-height:34px;border-radius:9px}
@media(max-height:600px){.ddmid .eslot{min-height:30px;font-size:.8rem}}
/* elevator pop-up: early-booking warning in flow (full width, under the times) */
.evmodal .evwarn{grid-column:1/-1;margin:-4px 0 0;padding:5px 10px;border:2px solid #c62828;border-radius:10px;background:#fdecea;color:#c62828;font-size:.8rem;font-weight:700;line-height:1.3}
/* time grid: focus/hover = outline ring only; only the selected time is yellow */
.ddmid .eslot:not([aria-checked=true]),.ddmid .eslot:not([aria-checked=true]):hover,.ddmid .eslot:not([aria-checked=true]):focus{background:#fff}
.ddmid .eslot:focus{outline:none}.ddmid .eslot:focus-visible{outline:3px solid var(--k);outline-offset:1px}
@media(hover:hover){.ddmid .eslot:not([aria-checked=true]):hover{box-shadow:inset 0 0 0 1px var(--k)}}
.ddmid .enotsure{display:block;width:100%;margin:0 0 8px;font-weight:800}
/* hallway m / ft toggle (segmented, our style) */
.evhrow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.evhrow label{margin:0}
.segu{display:inline-flex;flex:0 0 auto;border:2px solid var(--k);border-radius:999px;overflow:hidden;background:#fff}
.segu button{font:inherit;font-weight:800;font-size:.8rem;min-width:40px;min-height:30px;padding:2px 10px;border:0;background:#fff;color:var(--k);cursor:pointer}
.segu button+button{border-inline-start:2px solid var(--k)}
.segu button[aria-pressed=true]{background:var(--y);color:var(--on-y,var(--k))}
.segu button:focus-visible{outline:3px solid var(--k);outline-offset:-3px}
.ddpop.ddmid{border-radius:18px;box-shadow:6px 6px 0 var(--k)}
.ddmid .eshd{text-align:center}
.det>.accadd{grid-column:1/-1;margin-top:0}
.accmodal .evhall .chips{display:flex;flex-wrap:wrap;gap:6px}
.accmodal .evhall>label{display:block;margin-bottom:6px}
.det>.accadd{margin-top:12px}
/* room below the last box: its 4px shadow + 4px, so with the card padding there is 18px under the shadow (sbin clips overflow for the collapse) */
.sbin>.det{padding-bottom:8px}
/* early-elevator warning: message + "Change arrival time" link (wraps under at narrow widths) */
.evmodal .evwarn{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 10px}
.evwarn-a{margin-inline-start:auto;padding:2px 0;border:0;background:none;color:inherit;font:inherit;font-weight:800;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.evwarn-a:focus-visible{outline:2px solid #c62828;outline-offset:2px;border-radius:4px}
.arrbg{padding:8px}
.arrbg .arrmodal{width:min(380px,100%);max-height:calc(100vh - 16px);overflow:auto;padding:14px 14px 16px}
.arrmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 8px;font-weight:800;font-size:1rem}
.arrmodal .clock .date-bar,.arrmodal .clock #clockLbl{display:none}
.arrmodal .ptact{margin-top:12px}
.arrslot.when-grid{display:block}
.arrmodal .clock{border:0;box-shadow:none;padding:0;background:none;max-width:none}
/* Stops intro pop-out: over the step bar down to the Stop 1 header, same left/right edges as the stop card; tap dismisses */
.stops-pop.top{transform:scale(.97);transform-origin:50% 0;max-width:none;display:flex;flex-direction:column;justify-content:center;padding:10px 18px;overflow:hidden;pointer-events:auto;cursor:pointer}
.stops-pop.top.show{transform:none}
.stops-pop.top.hide{transform:scale(.98)}
.stops-pop.top b{font-size:1.2rem;margin-bottom:0}
.stops-pop.top b::after{margin-top:6px}
.stops-pop.top span{margin-top:6px;font-size:.92rem}
@media (prefers-reduced-motion:reduce){.stops-pop.top,.stops-pop.top.show,.stops-pop.top.hide{transform:none}}
/* header: Save + Setting pills (language lives in the Setting pop-up) */
.q-tools{gap:8px}
.q-tools #later{display:inline-flex!important}
.q-tools .lang{display:none}
.q-tools .qpill{gap:6px;padding:0 12px!important;width:auto}
.q-tools .qpill .qic{width:22px;height:22px;object-fit:contain;flex:none}
.q-tools .qpill img.qic{width:26px;height:20px}
.q-tools .qlbl{font-weight:800;font-size:.82rem;white-space:nowrap}
@media(max-width:1199px){.q-tools{gap:6px}.q-tools .qlbl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.q-tools .qpill{min-width:38px;padding:0 7px!important}}
.qmain:has(>#laterBox:not([hidden]))>#laterBox{margin-top:56px}
.qmain:has(>#laterBox:not([hidden]))>.tabsbar{margin-top:8px}
.setbg .setmodal{width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:14px 14px 16px}
.setmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:800;font-size:1.05rem}
.setmodal .pthead svg{width:24px;height:24px;flex:none}
.setmodal .setlbl{margin:0 2px 8px;font-size:.92rem}
.setmodal .setlang{display:block}
.setmodal .setlang .lang-menu{position:static!important;width:auto!important;max-height:none;overflow:visible;box-shadow:none;display:grid;grid-auto-flow:row!important;grid-template-rows:none!important;grid-template-columns:1fr 1fr!important;gap:4px;padding:6px}
.setmodal .ptact{margin-top:14px}
/* step labels end before the Save + Setting pills */
@media(max-width:1199px){.qmain>.tabsbar{padding-right:100px}}
@media(max-width:600px){body.mf-quote .qmain>.tabsbar{padding-right:106px}}
.evbox .hallpic{flex:0 0 auto;width:46px;height:46px;object-fit:contain}
@media(max-width:480px){.evbox .hallpic{width:42px;height:42px}}
/* "Change arrival time" pop-up: always the real clock face, never the phone <select> fallback */
.arrmodal .clock svg#clock{display:block!important;width:min(260px,72vw);height:auto;margin:0 auto}
.arrmodal .clock .clock-sel{display:none!important}
/* stop card: address row -> Property type label gap matches the 18px gap between the summary boxes (was 30px) */
.stop .det > .field.pfull > .prow:has(.ptbtn){margin-top:-4px}
/* stop number lives inside the drag-handle box (the separate yellow circle is gone) */
.stop-h .grip .gripn{font-weight:900;font-size:1.15rem;line-height:1;color:var(--k);pointer-events:none;font-variant-numeric:tabular-nums}
/* stop-number handle: site yellow with the black outline and the gear pill's offset shadow (shape/size unchanged) */
.stop-h .grip{background:var(--y);color:var(--on-y,var(--k));box-shadow:var(--sh-sm,2px 2px 0 #1a1a1a)}
.stop-h .grip .gripn{color:var(--on-y,var(--k))}
/* header: only the Setting (gear) pill; Save now lives inside the Setting menu */
.q-tools #later{display:none!important}
.setmenu .pthead #setT{flex:1;min-width:0}
.setmenu .setx{flex:none;width:36px;height:36px;border:2px solid var(--k);border-radius:999px;background:#fff;color:var(--k);font:inherit;font-size:1.3rem;font-weight:800;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
.setmenu .setbigs{display:grid;gap:12px;margin:4px 2px 4px}
.setmenu .setbig{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 16px;border:2px solid var(--k);border-radius:14px;background:var(--y);color:var(--on-y,var(--k));box-shadow:0 4px 0 var(--k);font:inherit;font-size:1.02rem;font-weight:800;text-align:start;cursor:pointer}
.setmenu .setbig b{font-weight:900}
.setmenu .setbig svg{width:28px;height:28px;flex:none}
.setmenu .setbig img{width:32px;height:24px;object-fit:contain;flex:none}
.setmenu .setbig:active{transform:translateY(2px);box-shadow:0 2px 0 var(--k)}
.setmenu .setbig:focus-visible,.setmenu .setx:focus-visible{outline:3px solid var(--k);outline-offset:3px}
/* Property type button: icon the same rendered size as the Rooms icon (42x32, 40x30 on phones); the type name always fits
   inside the 58px box in every language (up to 2 lines, clamped) */
.prow .ptbtn{padding:2px 6px;gap:1px;max-width:118px}
.prow .ptbtn img{width:42px;height:32px;margin:0;flex:none}
.prow .ptbtn .ptv{font-size:.6rem;line-height:1.05;max-width:100%;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:anywhere;hyphens:auto;flex:none}
@media(max-width:480px){.prow .ptbtn{padding:2px 5px;max-width:112px}.prow .ptbtn img{width:40px;height:30px}.prow .ptbtn .ptv{font-size:.6rem}}
/* collapsed stop card = one row: number handle, full address (ellipsis), collapse / remove buttons */
.stop .stop-h .caddr{display:none}
.stop.collapsed .stop-h .ttl,.stop.collapsed .addrrow{display:none}
.stop.collapsed .stop-h{flex-wrap:nowrap}
.stop.collapsed .stop-h .htog{flex:1 1 auto;min-width:0}
.stop.collapsed .stop-h .caddr{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;font-size:1rem;line-height:1.3;text-align:start}
.stop.collapsed .stop-h .caddr.ph{color:#8a8a8a;font-weight:600}
.stop.collapsed .stop-h .chev,.stop.collapsed .stop-h [data-rm]{flex:none}
.stop:not(.collapsed) .stop-h .crd{display:none}.stop.collapsed .stop-h .crd{flex:none}
.stops > .stop,#stops > .stop{min-width:0}.stop.collapsed .stop-h{min-width:0;max-width:100%}
.stop-h .grip{flex:none}
/* stop card collapse/expand: chevron only (no circle), nudged toward the card's top-right corner; 40px tap area */
.stop-h .chev{border:0;background:transparent;box-shadow:none;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;flex:none;transform:translate(0,-5px)}
.stop-h:not(:has([data-rm])) .chev{transform:translate(5px,-5px)}
[dir=rtl] .stop-h:not(:has([data-rm])) .chev{transform:translate(-5px,-5px)}
.stop-h .chev svg{width:22px;height:22px}
.stop-h .chev:focus-visible{outline:3px solid var(--k);outline-offset:0}
/* expanded stop card: "Address" title centred in the header (number handle left, chevron right) */
.stop-h{position:relative}
.stop:not(.collapsed) .stop-h .htog{flex:1 1 auto;min-width:0;align-self:stretch}
.stop:not(.collapsed) .stop-h .ttl{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 200px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;display:inline-flex;align-items:center;gap:6px;pointer-events:none}
/* summary-box labels ("Stairs for this location · …", "Door-to-truck distance · …"): up to 3 lines on phones so long languages keep the value visible */
@media(max-width:480px){.evbox.accbox b{-webkit-line-clamp:3;line-clamp:3;font-size:.7rem;line-height:1.1}}
.stop:not(.collapsed) .stop-h .ttl{max-width:calc(100% - 184px)}
@media(max-width:420px){.stop:not(.collapsed) .stop-h .ttl{font-size:1.2em}}
/* "+ Add another address": nav-row button hidden (kept for its handler); shown inside the last stop card instead */
.tabs.actions #addStop{display:none!important}
.stop .addslot{display:none}
.stop.collapsed .addtop{display:block;padding-inline-start:44px;margin-top:6px}
.stop:not(.collapsed) .addbot{display:flex;justify-content:center;margin-top:18px}
.stop .addbtn{font-size:.85rem;padding:.5em .95em;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* collapsed row: smaller address text, top-aligned with the number handle */
.stop.collapsed .stop-h{align-items:flex-start}
.stop.collapsed .stop-h .htog{align-self:flex-start}
.stop.collapsed .stop-h .caddr{font-size:.9rem;line-height:1.25;padding-top:2px}
.stop.collapsed .addtop{margin-top:-6px}

/* intro + address-focus hints: compact light-green box (same green/border as .hm-toast / .ftip.ok) */
.stops-pop.top{background:#e3f4e8;color:var(--ok);border:2px solid var(--ok);border-radius:14px;box-shadow:var(--sh-sm);padding:7px 14px;gap:0}
.stops-pop.top b{font-size:1rem;line-height:1.25;font-weight:800;margin:0}
.stops-pop.top b::after{display:none}
.stops-pop.top span{margin-top:2px;font-size:.85rem;line-height:1.3;color:var(--ok);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}

/* theme toggle lives in the Setting pop-up on the quote page: hide the floating round button here */
.hm-theme-sw.float{display:none!important}
.setmenu .setmode-ic{flex:none;width:30px;height:30px;border-radius:50%;background:#111;display:inline-grid;place-items:center;box-shadow:2px 2px 0 rgba(0,0,0,.35)}
.setmenu .setmode-ic::before{content:"";width:15px;height:15px;border-radius:50%;box-sizing:border-box;border:2px solid #fff;box-shadow:0 0 0 1px #111;background:#FFD84D}
.setmenu [data-setmode][data-t=blue] .setmode-ic::before{background:#0E4BB3}

/* "+ Add another address": plain bold text link with a double underline (no pill) */
.stop .addbtn{appearance:none;border:0;background:none;box-shadow:none;border-radius:6px;color:var(--k,#111);font:inherit;font-size:.9rem;font-weight:800;padding:10px 6px;min-height:40px;cursor:pointer;text-decoration:underline double;text-underline-offset:3px;text-decoration-thickness:1px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.stop .addbtn:hover{background:none;box-shadow:none;transform:none}
.stop .addbtn:active{transform:none;box-shadow:none}
.stop .addbtn:focus-visible{outline:3px solid var(--k,#111);outline-offset:2px}
.stop .addbtn[disabled]{opacity:.45;cursor:not-allowed}
.stop.collapsed .addtop{margin-top:-12px;margin-inline-start:-6px}
.stop:not(.collapsed) .addbot{margin-top:10px}

/* one shared height for all quote step nav buttons (Next/Continue, Back, See estimate, Save, Submit) on phones = the Stops-step size */
@media(max-width:640px){.step .tabs.actions .btn{box-sizing:border-box;height:36px;min-height:0;padding:0 .9em;font-size:.8rem;line-height:1.15;display:inline-flex;align-items:center;justify-content:center;text-align:center}}

/* trash bin (replaces the x): right side, under the chevron, on the "+ Add another address" line */
.stop.collapsed .addtop{display:flex;align-items:center;gap:8px}
.stop:not(.collapsed) .addbot{position:relative;min-height:42px;align-items:center}
.stop .rmbin{flex:none;width:40px;height:40px;padding:0;border:0;background:transparent;box-shadow:none;border-radius:10px;color:#112244;display:grid;place-items:center;cursor:pointer;margin-inline-start:auto;margin-inline-end:-5px}
.stop:not(.collapsed) .addbot .rmbin{position:absolute;inset-inline-end:0;top:50%;transform:translateY(-50%);margin:0;margin-inline-end:-5px}
.stop .rmbin svg{width:22px;height:22px}
.stop .rmbin:hover{background:rgba(17,34,68,.07)}
.stop .rmbin:focus-visible{outline:3px solid var(--k,#111);outline-offset:0}
.stop:not(.collapsed) .addbot .addbtn{max-width:calc(100% - 96px)}
.hm-modal h2#hmmT:last-child,.hm-modal h2#hmmT + .hm-modal-act{margin-top:0}
.hm-modal h2#hmmT:not(:has(+ p)){margin-bottom:18px}

/* rooms / size pop-ups: address as bold title (max 2 lines), x on the Done row at the right */
dialog.rooms .dlgaddr{font-size:1.15rem;font-weight:900;line-height:1.25;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
dialog.rooms .tabs.actions{justify-content:flex-end;align-items:center;gap:10px}
dialog.rooms .tabs.actions .dlgx{flex:none;width:44px;height:44px}

/* nav order: primary (Next / Continue / See estimate / Save / Submit) at the start (left in LTR), Back at the end (right); flex mirrors in RTL */
.step .tabs.actions{justify-content:flex-start!important}
.step .tabs.actions .back{order:99;margin-inline-start:auto!important;margin-inline-end:0!important}

/* "Where are we moving?" hint: black bold title, green body that wraps fully (no clamp) */
.stops-pop.top:not(.addr-hint) b{color:#111;font-weight:900}
.stops-pop.top span{display:block;-webkit-line-clamp:unset;line-clamp:none;overflow:visible;font-size:.84rem;line-height:1.28}
.stops-pop.top:not(.addr-hint){max-height:none!important}

/* collapsed row with no address yet: red bold "No address" (the red dot is kept only for a typed-but-unmapped address) */
.stop.collapsed .stop-h .caddr.ph.noaddr{color:#d93025;font-weight:800}

/* Inventory intro heading + lead now pop out as the green hint (kept in the a11y tree, visually hidden in place) */
.step[data-step="2"] .invhead h2,.step[data-step="2"] [data-x="invHint"]{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.stops-pop.top.inv-pop{max-height:none!important}

.stops-pop.top.tight{padding:5px 12px}
.stops-pop.top.tight b{font-size:.9rem;line-height:1.2}
.stops-pop.top.tight span{font-size:.74rem;line-height:1.22;margin-top:1px}
/* Inventory stop tabs: readable cuft line on the selected tab; tighter tabs on phones so the address ellipsizes */
.invstop[aria-selected="true"] .muted{color:inherit!important;opacity:.85}
@media(max-width:480px){.invstop{min-width:104px;max-width:150px}}
/* Inventory: static header block removed (green hint carries the title); h2 stays for screen readers, totals still computed */
.step[data-step="2"] > .invhead{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.step[data-step="2"] > .invhead #wl{display:none}
.step[data-step="2"] > p:has([data-x="invHint"]){display:none}
.step[data-step="2"] > .invstops{margin-top:0}

/* inventory row: duplicate button left of the room pill */
.irow .idup{flex:none;width:30px;height:30px;padding:0;display:inline-grid;place-items:center;border:2px solid var(--k);border-radius:8px;background:var(--y);color:var(--on-y,var(--k));box-shadow:2px 2px 0 var(--k);cursor:pointer}
.irow .idup:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--k)}
.irow .idup:focus-visible{outline:3px solid var(--k);outline-offset:2px}
@media print{.irow .idup{display:none}}

/* inventory row pills carry their label: "Quantity: ×10 ▾", "Placement: 1st floor ▾"; long languages wrap instead of overflowing */
.irow .pchip .plbl{font-weight:600;opacity:.8}
.irow .pwrap{max-width:100%;min-width:0}
.irow .pchip{max-width:100%;white-space:normal;text-align:start;overflow-wrap:anywhere}
.irow .qro{white-space:nowrap}

/* bed card: "Bed" + King / Queen / Single / Bunk on one line, type chips below; compact chips */
.bedsel .bedline{display:flex;align-items:center;gap:3px;flex-wrap:nowrap;min-width:0}
.bedsel .bedttl{font-weight:inherit;margin-inline-end:5px;white-space:nowrap}
.bedsel .bedline .bedg{flex-wrap:nowrap;gap:3px}
.bedsel .bedb{font-size:.74rem;padding:2px 7px;min-height:28px}
@media(max-width:400px){.item:has(.bedsel){flex-wrap:wrap}.item:has(.bedsel)>.lbl{flex:1 1 100%}.item:has(.bedsel)>.ctl{margin-inline-start:auto}.bedsel .bedb{padding:2px 6px}}
.item .ibtn[data-dup] svg{display:block}
.bedsel .bedb{white-space:nowrap;overflow-wrap:normal;word-break:keep-all;flex:none}
@media(max-width:460px){.item:has(.bedsel){flex-wrap:wrap}.item:has(.bedsel)>.lbl{flex:1 1 100%}.item:has(.bedsel)>.ctl{margin-inline-start:auto}}
/* long languages: if the four size chips can't fit, they wrap instead of overflowing the card */
.bedsel .bedline,.bedsel .bedline .bedg{flex-wrap:wrap;row-gap:4px}
@media(max-width:400px){.bedsel .bedb{font-size:.7rem;padding:2px 5px}}

/* duplicate button: left of the item name, blue rounded square with a white icon (inventory cards + item rows) */
.item .nmline{display:flex;align-items:center;gap:8px;min-width:0}
.item .nmline .nm{min-width:0;overflow-wrap:anywhere}
.item .ibtn.dupl,.irow .idup{flex:none;width:30px;height:30px;min-width:30px;padding:0;display:inline-grid;place-items:center;border:0;border-radius:7px;background:#0E4BB3;color:#fff;box-shadow:none}
.item .ibtn.dupl svg,.irow .idup svg{width:17px;height:17px;display:block}
.item .ibtn.dupl:hover,.irow .idup:hover{background:#0b3d93}
.item .ibtn.dupl:active,.irow .idup:active{transform:translateY(1px);box-shadow:none}
.item .ibtn.dupl:focus-visible,.irow .idup:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.bedsel .bedline .ibtn.dupl{margin-inline-start:6px}
.bedsel .bedttl{margin-inline-end:8px}
@media(max-width:420px){.item .ibtn.dupl{width:28px;height:28px;min-width:28px}}

/* catalog cards without the stepper: tap to add; added cards show a small check badge */
#inv .item:not(:has(.wheel)){cursor:pointer}
#inv .item .qadded{font-weight:800;font-size:.85rem;white-space:nowrap;padding:2px 8px;border-radius:999px;background:var(--y);color:var(--on-y,var(--k));border:2px solid var(--k)}
.bedsel .bedsvcs{margin-top:0}
.item .bedsel{display:flex;flex-direction:column;align-items:flex-start;gap:5px}

/* bed card room pill (same look as the list row's room pill), left of "Bed" */
.cardroomw{position:relative;display:inline-flex;flex:none;margin-inline-end:6px}
.cardroomw .cardroom{appearance:none;-webkit-appearance:none;padding-inline-end:20px;max-width:150px;text-overflow:ellipsis;overflow:hidden}
.cardroomw::after{content:"▾";position:absolute;inset-inline-end:8px;top:50%;transform:translateY(-50%);font-size:.65rem;pointer-events:none}
@media(max-width:400px){.bedsel .bedb{font-size:.74rem;padding:2px 6px}}

.item .nmline .pianow{margin-inline-end:0}
.item .nmline .pianosel{max-width:170px}

.bedsel .bedline .ibtn.dupl{margin-inline-start:0;margin-inline-end:6px}

/* coffee table: two pills right of the name wrap below on narrow cards */
.item .nmline:has([data-ct]){flex-wrap:wrap;row-gap:6px}
.item .nmline .ctfrag{flex-basis:100%;margin:0;color:#b3261e;font-weight:700}
.item .nmline:has(.tvcrate){flex-wrap:wrap;row-gap:6px}
.item .nmline .tvcrate{color:inherit;font-weight:600}
.dopts .cardroomw .flsel{font-size:.85rem;max-width:200px}
/* compact Qty pop: about the pill's width, anchored under it */
.rmenu.qpop{width:max-content;min-width:0;max-width:140px;padding:4px}
.rmenu.qpop .qty{display:flex;align-items:center;gap:2px}
.rmenu.qpop .qty button{width:34px;height:34px;flex:none}
.rmenu.qpop .qty output{min-width:28px;text-align:center}
/* item colour label pill + swatch picker */
.irow .ldot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--c);border:1.5px solid var(--k);vertical-align:-1px}
.irow .ldot.none{background:#fff;border-style:dashed}
.irow .ldot.ro{width:14px;height:14px;flex:none}
.rmenu.lpop{width:max-content;min-width:0;max-width:200px;padding:6px;gap:6px}
.lpop .lgrid{display:grid;grid-template-columns:repeat(4,34px);gap:6px}
.lpop .lsw{width:34px;height:34px;padding:0;border-radius:50%;background:var(--c)!important;border:2px solid #fff;box-shadow:0 0 0 2px var(--k)}
.lpop .lsw[aria-checked="true"]{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--k);outline:0}
.lpop .lsw[aria-checked="true"]::after{content:"✓";color:#fff;font-weight:900;text-shadow:0 0 2px #000}
.lpop .lnone{text-align:center!important;border:2px dashed var(--k)!important;font-weight:700}
/* room sections: collapsible headers, boxes sub-group at the end */
.roomh{margin-bottom:6px}
.roomtog{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;border-bottom:2px solid var(--k);padding:6px 2px;font:inherit;font-weight:800;color:inherit;cursor:pointer;text-align:start}
.roomtog .rnm{flex:1 1 auto;min-width:0}
.roomtog .rcount{background:var(--y,#ffd23f);color:var(--on-y,#111);border:2px solid var(--k);border-radius:999px;padding:0 8px;font-size:.8rem;line-height:1.4}
.roomtog .rchev{flex:none;transition:transform .15s}
.roomtog[aria-expanded="false"] .rchev{transform:rotate(-90deg)}
[dir="rtl"] .roomtog[aria-expanded="false"] .rchev{transform:rotate(90deg)}
.roomtog:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.rsec .boxsub{margin:12px 0 6px;font-size:.9rem;font-weight:800;opacity:.85}
/* TV group card */
.tvgrp .lbl{display:flex;flex-direction:column;gap:6px;min-width:0}
.tvgrp .nmline{flex-wrap:wrap;row-gap:6px}
.tvgrp .tvchips{display:flex;flex-wrap:wrap;gap:6px}
.tvgrp .tvb{white-space:nowrap}
.tvgrp .tvn{font-size:.75rem}
.tvgrp .tvl2:empty{display:none}
.tvgrp .tvl2{flex-wrap:wrap;row-gap:6px}
/* Qty pill on catalog cards (same compact stepper as the list rows) */
#inv .cqw{position:relative}
#inv .cqw .rmenu{inset-inline-start:auto;inset-inline-end:0}
#inv .item .ctl:has(.cqw){display:flex;align-items:center}
.bedsel .bedsvcs .cqw{margin-inline-start:auto}
.bedsel .bedsvcs{width:100%}
/* compact stop tabs (~90-110px) */
.invstop{min-width:0;max-width:110px;width:max-content;padding:5px 9px}
@media(max-width:480px){.invstop{min-width:0;max-width:110px}}
.invstop b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
/* card pickers as small pills (same as list rows) */
.pselw{position:relative}
.pselw::after{content:none!important}
.pselw select{display:none!important}
#inv .pchip.psel,#truck .pchip.psel{min-height:0;height:auto;font-size:.8rem;line-height:1.5;padding:1px 8px;white-space:nowrap;max-width:none}
.pselm{max-height:min(60vh,320px);overflow:auto;width:max-content;max-width:min(260px,90vw)}
/* Qty pill on the card's top line, right-aligned */
#inv .item:has(.cqw){align-items:flex-start}
#inv .item:has(.cqw) > .ctl{padding-top:2px}
.bedsel .bedline .cqw{margin-inline-start:auto}
.bedsel .bedline > .bedg{flex-basis:100%}
.bedsel .bedsvcs{width:auto}
/* Add to pick-up on every item card */
#inv .item.card{flex-wrap:wrap}
#inv .item .addrow{flex:1 1 100%;display:flex;justify-content:flex-end;margin-top:6px}
.addpick{background:#0E4BB3;color:#fff;border:2px solid #0a3a8c;border-radius:999px;padding:6px 16px;font:inherit;font-weight:800;font-size:.9rem;cursor:pointer;min-height:36px;box-shadow:var(--sh-sm)}
.addpick:hover{background:#0b3f99}.addpick:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.addpick[data-ok]{background:#1e8e3e;border-color:#166e30}
#inv .item.addedc{background:#eef6ff;border-style:dashed;padding:6px 10px;opacity:.95}
#inv .item.addedc .nm{font-weight:700}
#inv .item.addedc .lbl{display:flex;flex-direction:column;gap:1px}
.lpop .lptitle{display:block;font-weight:900;font-size:.95rem;padding:2px 2px 4px;color:var(--k)}
/* address gate */
#tabs [data-go].dim{opacity:.55}
section[data-step="1"] .next.dim{background:color-mix(in srgb,var(--y) 40%,#fff)!important;color:var(--k)!important;opacity:1}
/* invalid address: black border kept, red ring outside it exactly like the yellow focus ring (3px, offset 1px, follows the 12px radius); red wins while focused */
#stops input.addrbad,#stops input.addrbad:focus,#stops input.addrbad:focus-visible{border:2px solid var(--k)!important;outline:3px solid #d93025!important;outline-offset:1px!important}
.gatemsg{color:#d93025;font-weight:800;margin:10px 0 0;font-size:.95rem}
/* Next while not ready: light-red hint over each stop card without a valid address */
.gatehint{position:absolute;inset:-3px;z-index:6;display:flex;align-items:center;justify-content:center;text-align:center;padding:6px 12px;background:#fde8e6;border:2px solid #d93025;border-radius:inherit;color:#b3261e;font-weight:800;font-size:.9rem;line-height:1.25;opacity:0;transition:opacity .25s;cursor:pointer}
.gatehint.show{opacity:1}.gatehint.hide{opacity:0;transition:opacity .4s}
/* no long-press / drag selection on the planner UI; inputs keep normal text selection */
.qgrid,.qgrid *,.hm-modal-bg,.hm-modal-bg *,.stops-pop,.hm-toast,#qTools,#qTools *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.qgrid img,.hm-modal img{-webkit-user-drag:none;user-drag:none}
.qgrid input,.qgrid textarea,.qgrid [contenteditable="true"],.hm-modal input,.hm-modal textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
/* stop card section label (replaces the old "Property type" caption over the button) */
.infolbl{display:block;text-align:center;font-weight:800;font-size:.85rem;line-height:1.25;margin:2px 0 8px;white-space:normal;overflow-wrap:break-word;color:var(--k)}
.ptcol .ptlab{display:none!important}
/* property pop-up: in-body heading removed (kept for screen readers only), area slider + number + unit toggle */
.ptmodal h2.vh,.vh{position:absolute!important;width:1px;height:1px;margin:-1px!important;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.ptmodal .ptprev{margin-bottom:10px}
.ptarea{margin:14px 2px 2px;text-align:start}
.ptarow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ptarow label{font-weight:800;font-size:.9rem;flex:1 1 auto;min-width:0}
.ptanum{width:86px;min-height:36px;padding:4px 8px;border:2px solid var(--k);border-radius:10px;font:inherit;font-weight:800;text-align:end;background:#fff;color:#1a1a1a}
.ptau button{min-height:34px;padding:0 10px;white-space:nowrap}
.ptarng{-webkit-appearance:none;appearance:none;display:block;width:100%;height:12px;margin:14px 0 4px;border:2px solid var(--k);border-radius:999px;background:linear-gradient(90deg,var(--y) 0 var(--pct,50%),#fff var(--pct,50%));outline-offset:3px;cursor:pointer;touch-action:pan-y}
.ptarng::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:var(--y);border:3px solid var(--k);box-shadow:2px 2px 0 var(--k)}
.ptarng::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--y);border:3px solid var(--k);box-shadow:2px 2px 0 var(--k)}
.ptarng::-moz-range-track{background:transparent}
.ptalim{display:flex;justify-content:space-between;font-size:.72rem;font-weight:700;opacity:.75}
/* no long-press highlight in every pop-up / modal / menu as well (inputs keep text selection) */
.hm-modal-bg,.hm-modal-bg *,.rmenu,.rmenu *,[role=dialog],[role=dialog] *,[role=menu],[role=menu] *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.hm-modal-bg img,[role=dialog] img,.rmenu img{-webkit-user-drag:none;user-drag:none}
.hm-modal-bg input:not([type=range]),.hm-modal-bg textarea,[role=dialog] input:not([type=range]),[role=dialog] textarea,.rmenu input:not([type=range]){-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
/* expanded card: second collapse chevron bottom-left, same line as "+ Add next address" and the bin */
.stop .addslot .chevb{display:none}
.stop:not(.collapsed) .addbot .chevb{display:grid;place-items:center;position:absolute;inset-inline-start:0;top:50%;transform:translateY(-50%);margin:0;margin-inline-start:-5px;border:0;background:transparent;box-shadow:none;width:40px;height:40px;border-radius:10px;color:var(--k);cursor:pointer;padding:0}
.stop:not(.collapsed) .addbot .chevb:hover{background:transparent;transform:translateY(-50%)}
.stop:not(.collapsed) .addbot .chevb:focus-visible{outline:3px solid var(--k);outline-offset:0}
/* step bar: 4 steps spread evenly from the left edge to just left of the gear; done check next to each completed label */
#tabs [role=tab]{flex:1 1 0!important;min-width:0;justify-content:center}
@media(max-width:600px){body.mf-quote .qmain>.tabsbar{padding-right:62px}}
#tabs .swr{display:inline-flex;align-items:center;gap:.2em;line-height:inherit;max-width:100%}
#tabs .sdone{display:none;width:auto;height:1.1em;flex:none;pointer-events:none}
.qgrid[data-cur="1"] #tabs [data-go="0"] .sdone,.qgrid[data-cur="2"] #tabs :is([data-go="0"],[data-go="1"]) .sdone,.qgrid[data-cur="3"] #tabs :is([data-go="0"],[data-go="1"],[data-go="2"]) .sdone{display:inline-block}
/* move-date hint (green, over the calendar header) + 2 s light-red pulse on the calendar when Next is tapped without a date */
.stops-pop.date-pop b::after{display:none}
.stops-pop.date-pop{min-height:52px}
#mcal{position:relative}
#mcal.calpulse::after{content:"";position:absolute;inset:-4px;border-radius:14px;pointer-events:none;background:rgba(217,48,37,.14);box-shadow:0 0 0 3px #d93025;animation:calPulse 2s ease-out forwards}
@keyframes calPulse{0%{opacity:0}12%{opacity:1}35%{opacity:.55}55%{opacity:1}80%{opacity:.9}100%{opacity:0}}
/* weather note: "i" on the Next row + small pop-over */
.step[data-step="0"] .tabs.actions.wxrow{position:relative;display:flex;align-items:center;gap:10px}
.wxinfo{margin-inline-start:auto;flex:none;width:26px;height:26px;min-height:0;padding:0;border-radius:50%;border:2px solid var(--k,#111);background:var(--k,#111);color:#fff;font:italic 800 15px/1 Georgia,"Times New Roman",serif;display:grid;place-items:center;cursor:pointer;box-shadow:none}
.wxinfo:focus-visible{outline:3px solid var(--y);outline-offset:2px}
.wxpop{position:absolute;z-index:40;bottom:calc(100% + 8px);inset-inline-end:0;width:min(260px,calc(100vw - 40px));box-sizing:border-box;padding:8px 10px;border:2px solid var(--k,#111);border-radius:10px;background:#fff;color:#1a1a1a;font-size:11.5px;line-height:1.35;font-weight:600;box-shadow:3px 3px 0 var(--k,#111);text-align:start}
.wxpop[hidden]{display:none}
#wxNote[hidden]{display:none!important}
/* equal tab slots (padding for the truck included in the slot, so the selected tab is not wider) */
#tabs [role=tab]{flex:0 0 calc((100% - 12px) / 4)!important;box-sizing:border-box;max-width:calc((100% - 12px) / 4)}
/* collapsed card: unit line under the address */
.stop .cunit{display:none}
.stop.collapsed .cunit{display:block;padding-inline-start:44px;margin:-4px 0 4px;font-size:.78rem;line-height:1.2;min-width:0}
.stop.collapsed .cunit .cuv{display:block;font-weight:700;color:#4a4a4a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stop.collapsed .cunit .cuadd{appearance:none;border:0;background:none;box-shadow:none;padding:4px 4px;margin-inline-start:-4px;min-height:28px;font:inherit;font-size:.78rem;font-weight:800;color:var(--k,#111);cursor:pointer;text-decoration:underline double;text-underline-offset:3px}
.stop.collapsed .cunit .cuadd:hover{background:none;transform:none;box-shadow:none}
.stop.collapsed .cunit .cuadd:focus-visible{outline:3px solid var(--k,#111);outline-offset:2px;border-radius:4px}
/* Unit # box: same yellow focus ring as the address input (black border + outer yellow ring) */
#stops input[data-unit]{border:2px solid var(--k)}
#stops input[data-unit]:focus,#stops input[data-unit]:focus-visible{border:2px solid var(--k)!important;outline:3px solid var(--y)!important;outline-offset:1px!important;box-shadow:none}
/* Unit # hint: compact, wraps inside the card */
.stops-pop.unit-hint{padding:7px 12px;min-height:0;white-space:normal;box-sizing:border-box}
.stops-pop.unit-hint b{font-size:.92rem;line-height:1.3;overflow-wrap:anywhere}
.stops-pop.unit-hint b::after{display:none}
.ftip{box-sizing:border-box;white-space:normal;overflow-wrap:anywhere}
/* move-date summary: compact, label + date on one line, small Change pill at the end (wraps under on narrow screens / long languages) */
.clock .date-bar,.date-bar{padding:6px 8px 6px 12px;gap:6px 10px;border-radius:12px;justify-content:space-between;text-align:start;flex-wrap:wrap;margin-bottom:6px}
.clock .date-bar-txt,.date-bar-txt{flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0;flex:1 1 auto}
.date-bar-lbl{font-size:12px;letter-spacing:.02em;line-height:1.2}
.date-bar strong{font-size:17px;line-height:1.25;font-weight:900}
.date-bar #changeDate{min-height:30px;height:30px;padding:0 12px;font-size:.8rem;line-height:1;border-radius:999px;flex:none;box-shadow:2px 2px 0 var(--k)}
/* phones: cards with a 6px offset shadow must fit fully (equal visible side gaps incl. the shadow); nothing may widen the page */
@media(max-width:760px){
 .qmain>.step.card{box-sizing:border-box;max-width:100%}
 .step .clock,.step .when-grid,.step .calwrap,.step .mcal,#stops .stop,.invstop,#inv .item,.step .tabs.actions{box-sizing:border-box;max-width:calc(100% - 6px)}
 .step .clock{margin-inline-end:0}
 .step .clock svg,.step .clock-face{max-width:100%;height:auto}
 .step .when-grid>*{min-width:0}
 .date-bar strong{overflow-wrap:anywhere}
}
.qgrid{overflow-x:clip}
/* unit line sits inside the collapsed header, directly under the address text, same left edge */
.stop.collapsed .stop-h .cunit{display:block;padding:0;margin:2px 0 0;font-size:12.5px;line-height:1.2;text-align:start}
.stop.collapsed .stop-h .cunit .cuv{font-size:12.5px}
.stop.collapsed .stop-h .cunit .cuadd{font-size:12.5px;min-height:22px;padding:1px 2px;margin-inline-start:-2px;text-underline-offset:2px;text-decoration-thickness:1px}
.stop:not(.collapsed) .stop-h .cunit{display:none}
/* "Information to get you a precise estimate": one line, scales down on narrow screens, ellipsis only as a last resort */
.infolbl{font-size:clamp(11.5px,3.6vw,15px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;letter-spacing:-.005em}
/* When step: heading lives in the green pop-out; weather city = small pill */
section[data-step="0"] .when-head h2{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0}
section[data-step="0"] .when-head{justify-content:flex-end;min-height:30px;margin-bottom:6px}
.stops-pop.when-pop b{font-size:1.15rem}
.wxcity{gap:5px;font-size:12.5px}
.wxcity .wxc-l{font-size:12.5px;font-weight:800;color:var(--g)}
.wxpill{display:inline-flex;align-items:center;gap:4px;height:27px;min-height:0;padding:0 10px;border:1.5px solid var(--k);border-radius:999px;background:#fff;color:var(--k);font:inherit;font-size:12.5px;font-weight:800;line-height:1;cursor:pointer;box-shadow:none;max-width:60vw}
.wxpill span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wxpill:focus-visible{outline:3px solid var(--y);outline-offset:1px}
.wxbg .wxmodal{width:min(420px,100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;padding:14px 14px 16px}
.wxmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:800;font-size:1.02rem}
.wxmodal .pthead #wxT{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wxmodal .wxx{flex:none;width:36px;height:36px;border-radius:50%;border:2px solid var(--k);background:#fff;font:900 1.3rem/1 inherit;display:grid;place-items:center;padding:0 0 2px;cursor:pointer;box-shadow:none}
.wxfirst{margin-bottom:10px}.wxfirst .wxchip{width:100%}
.wxgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;overflow-y:auto;min-height:0;padding:2px 4px 4px 2px;overscroll-behavior:contain}
.wxchip{min-height:40px;padding:6px 10px;border:2px solid var(--k);border-radius:999px;background:#fff;color:var(--k);font:inherit;font-size:.86rem;font-weight:800;line-height:1.15;cursor:pointer;box-shadow:2px 2px 0 var(--k);overflow-wrap:anywhere}
.wxchip.on{background:var(--y);color:var(--on-y,var(--k))}
.wxchip:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.wxbg,.wxbg *{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
/* When step on phones: calendar card and clock card identical width, same left edge, equal visible gaps (12px each side incl. the offset shadow), aligned with the Next / i row */
@media(max-width:760px){
 .step[data-step="0"] .when-grid,.step[data-step="0"] .calwrap{max-width:100%;width:100%;margin-left:0;margin-right:0}
 .step[data-step="0"] .mcal,.step[data-step="0"] .clock,.step[data-step="0"] .date-bar{box-sizing:border-box;width:calc(100% - 6px);max-width:calc(100% - 6px);margin-left:0;margin-right:6px}
 .step[data-step="0"] .clock .date-bar{width:100%;max-width:100%;margin-right:0}
 .step[data-step="0"] .tabs.actions{width:calc(100% - 6px);max-width:calc(100% - 6px);margin-right:6px}
}
/* arrival clock: dial tint follows the selected time band (smooth while dragging); outline + numbers stay black */
.clock[data-band=am]{--dial-tint:#fff4c4}
.clock[data-band=pm]{--dial-tint:#ffdfbd}
.clock[data-band=eve]{--dial-tint:#d6e7fb}
.clock[data-band=night]{--dial-tint:#e4d9f6}
.clock .face{transition:fill .35s ease}
@media(prefers-reduced-motion:reduce){.clock .face{transition:none}}
/* weather city pop-up: compact pills, 3 columns (2 on very narrow), fits without scrolling */
.wxbg .wxmodal{width:min(400px,100%);max-height:calc(100dvh - 24px);padding:10px 10px 12px;box-shadow:4px 4px 0 var(--k)}
.wxmodal .pthead{margin:0 2px 8px;font-size:.88rem}
.wxmodal .wxx{width:28px;height:28px;font-size:1.05rem;border-width:2px}
.wxfirst{margin-bottom:6px}
.wxgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:1px 3px 3px 1px}
@media(max-width:340px){.wxgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.wxchip{min-height:29px;padding:3px 6px;border-width:1.5px;font-size:12.5px;font-weight:800;line-height:1.1;box-shadow:1.5px 1.5px 0 var(--k);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal}
/* Happy fab/nudge never sit over a planner modal */
html.hm-modal-open .hp-fab,html.hm-modal-open .hp-nudge{visibility:hidden!important;pointer-events:none!important}
/* collapsed stop: unit line wraps onto its own row directly under the address, same left edge */
.stop.collapsed .stop-h .htog{flex-wrap:wrap;align-content:center;row-gap:0}
.stop.collapsed .stop-h .htog .caddr{flex:1 1 0;min-width:0}
.stop.collapsed .stop-h .htog .cunit{flex:0 0 100%;order:9;margin:2px 0 0;padding:0;min-width:0;overflow:hidden}
/* move-date summary: one compact row (label over date on the left, small Change pill right), ~52px tall */
.clock .date-bar,.date-bar{flex-wrap:nowrap;align-items:center;padding:7px 8px 7px 12px;gap:8px;min-height:0;border-radius:12px}
.clock .date-bar-txt,.date-bar-txt{flex-direction:column;align-items:flex-start;gap:1px;flex:1 1 auto;min-width:0;text-align:start}
.date-bar-lbl{font-size:10.5px;line-height:1.15;letter-spacing:.05em}
.date-bar strong{font-size:14.5px;line-height:1.2;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;overflow-wrap:normal}
.date-bar #changeDate{min-height:26px;height:26px;padding:0 10px;font-size:12px;line-height:1;white-space:nowrap;flex:none;box-shadow:1.5px 1.5px 0 var(--k);border-width:2px}
/* curved "Rotate the needle…" label on the dial rim (replaces the line under the clock and the green clock hint) */
.clock .clock-face .clock-arc{position:absolute;left:-10%;top:-10%;width:120%;height:120%;pointer-events:none;overflow:visible;z-index:1}
.clock .clock-arc-t{fill:#3f8f10;font-family:Nunito,system-ui,sans-serif;font-weight:800;letter-spacing:.2px}
.clock .clock-rot,#clockRot,.clock-pop{display:none!important}
.step .clock .clock-face{margin:18px 0 10px}
.step .clock .clock-face svg.clock-arc,.clock .clock-face svg.clock-arc{max-width:none;width:120%;height:120%}
.date-bar #changeDate{flex:0 1 auto;min-width:0;max-width:48%;overflow:hidden;text-overflow:ellipsis}
.date-bar{max-width:100%;box-sizing:border-box;overflow:hidden}
/* collapsed stop with no address: the customer's red X icon instead of the red text, sized to the text line */
.stop.collapsed .stop-h .caddr .noaddr-x{display:inline-block;height:1.25em;width:auto;vertical-align:middle;-webkit-user-drag:none;user-select:none}
/* collapsed stop: '+ Unit number' moved under the badge/address row, on the same line as '+ Add next address'
   (unit link, add-next link, trash at the end); both links small, nowrap, no ellipsis; address gets the full row */
.stop.collapsed .addtop{display:flex;align-items:center;flex-wrap:nowrap;gap:12px;min-width:0}
.stop.collapsed .addtop .cunit{display:block;flex:none;margin:0;padding:0;min-width:0;font-size:12px;line-height:1.2}
.stop.collapsed .addtop .cunit .cuv{font-size:12px;white-space:nowrap}
.stop.collapsed .addtop .cunit .cuadd,.stop.collapsed .addtop .addbtn{font-size:12px;font-weight:800;white-space:nowrap;min-height:30px;padding:4px 2px;margin:0;text-decoration:underline double;text-underline-offset:2px;text-decoration-thickness:1px;overflow:visible;text-overflow:clip;max-width:none;flex:none}
.stop.collapsed .addtop .rmbin{margin-inline-start:auto}
.stop.collapsed .stop-h .cunit{display:none}
/* step-done check: larger (label height ×1.3), overlapping the end / top-right of the label (tick crosses the last letters); label stays centred */
#tabs .swr{position:relative;display:inline-block}
#tabs .swr .sdone{position:absolute;left:100%;top:50%;transform:translate(-62%,-62%);z-index:1}
[dir=rtl] #tabs .swr .sdone{left:auto;right:100%;transform:translate(62%,-62%)}
#tabs [role=tab]{overflow:visible}
/* weather city: pill above the calendar removed; the city in the ⓘ note is the link that opens the city pop-up */
.step[data-step="0"] .wxcity{display:none!important}
.wxpop .wxclink{appearance:none;border:0;background:none;box-shadow:none;padding:0 1px;margin:0;min-height:0;font:inherit;font-weight:800;color:inherit;cursor:pointer;text-decoration:underline double;text-underline-offset:2px;text-decoration-thickness:1px;display:inline}
.wxpop .wxclink:hover{background:none;transform:none;box-shadow:none}
.wxpop .wxclink:focus-visible{outline:2px solid var(--k);outline-offset:1px;border-radius:3px}
.stop.collapsed .stop-h .caddr .noaddr-t{margin-inline-start:5px;vertical-align:middle;color:var(--k);font-weight:800}
.stop.collapsed .stop-h .caddr.ph.noaddr:has(.noaddr-x){color:var(--k)}
/* expanded header title = typed address (street part), ellipsis only when truly long; "Address" when empty */
.stop:not(.collapsed) .stop-h .htog{min-width:0;flex:1 1 auto}
.stop:not(.collapsed) .stop-h .ttl{display:inline-flex;align-items:center;gap:6px;flex:0 1 auto;min-width:0;max-width:100%}
.stop:not(.collapsed) .stop-h .ttl .ttlt{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stop:not(.collapsed) .stop-h .ttl.hasaddr{font-size:1.1em}
.stop:not(.collapsed) .stop-h .ttl .rdot{flex:none}
/* expanded card: everything inside the inner padding (also with enlarged system text) */
#stops .stop .addrrow,#stops .stop .sbin,#stops .stop .det,#stops .stop .field,#stops .stop .prow{min-width:0;max-width:100%;box-sizing:border-box}
#stops .stop .addrrow{grid-template-columns:minmax(0,1fr) minmax(0,max-content)}
#stops .stop .addrrow .unitf input{max-width:100%;box-sizing:border-box}
#stops .stop .prow:has(.ptbtn) .roomsprop{min-width:0;flex:1 1 0;max-width:none}
#stops .stop .prow .ptbtn{flex:0 0 auto}
#stops .stop .evbox,#stops .stop [data-accedit]{max-width:100%;min-width:0;box-sizing:border-box}
#stops .stop .infolbl{max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* room for the Happy launcher below the last card so it never has to sit on card controls */
.qgrid{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
/* phones: collapsed stop cards scale their INNER content down (outer side margins untouched); desktop unchanged */
@media(max-width:480px){
 #stops .stop.collapsed{padding:10px 10px 8px 12px;box-shadow:3px 3px 0 var(--k)}
 #stops .stop.collapsed .stop-h{gap:6px}
 #stops .stop.collapsed .stop-h .grip{width:34px;height:34px;min-width:34px;border-radius:9px;box-shadow:1.5px 1.5px 0 var(--k)}
 #stops .stop.collapsed .stop-h .grip .gripn{font-size:.98rem}
 #stops .stop.collapsed .stop-h .htog{gap:6px}
 #stops .stop.collapsed .stop-h .caddr{font-size:14px;line-height:1.25;padding-top:0}
 #stops .stop.collapsed .stop-h .caddr .noaddr-x{height:1.2em}
 #stops .stop.collapsed .stop-h .chev{width:32px;height:32px;transform:none}
 #stops .stop.collapsed .stop-h .chev svg{width:20px;height:20px}
 #stops .stop.collapsed .addtop{margin-top:0;gap:10px;padding-inline-start:40px;margin-inline-start:0}
 #stops .stop.collapsed .addtop .cunit .cuadd,#stops .stop.collapsed .addtop .addbtn,#stops .stop.collapsed .addtop .cunit .cuv{font-size:11.5px;min-height:28px;padding-block:3px}
 #stops .stop.collapsed .addtop .rmbin{width:32px;height:32px}
 #stops .stop.collapsed .addtop .rmbin svg{width:20px;height:20px}
}
#stops .stop.collapsed .addtop .cunit .cuadd,#stops .stop.collapsed .addtop .addbtn{text-decoration-thickness:.09em;text-underline-offset:.18em}
#stops .stop.collapsed .addtop .cunit .cuadd *,#stops .stop.collapsed .addtop .addbtn *{font-size:inherit}
/* Street View thumbnail on collapsed cards: right side, between the address/links rows and the chevron/trash column */
.stop .svthumb{display:none}
.stop.collapsed .svthumb{display:block;position:absolute;inset-inline-end:52px;top:50%;transform:translateY(-50%);width:76px;height:50px;object-fit:cover;border:2px solid var(--k);border-radius:8px;background:#eee;pointer-events:none;z-index:1}
.stop.collapsed.hassv .stop-h .htog{padding-inline-end:84px}
.stop.collapsed.hassv .addtop{padding-inline-end:0}
.stop.collapsed.hassv .addtop .rmbin{position:relative;z-index:2}
@media(max-width:480px){.stop.collapsed .svthumb{width:62px;height:42px;inset-inline-end:44px}.stop.collapsed.hassv .stop-h .htog{padding-inline-end:68px}}
.stop.collapsed .svthumb{pointer-events:auto;cursor:zoom-in;box-shadow:2px 2px 0 var(--k)}
.stop.collapsed .svthumb:focus-visible{outline:3px solid var(--k);outline-offset:2px}
.svbg{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:rgba(0,0,0,.25)}
.svbg .svmodal{width:min(640px,100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;padding:12px 12px 10px;overflow:auto}
.svmodal .pthead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:800;font-size:.95rem}
.svmodal #svT{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.svmodal .svx{flex:none;width:32px;height:32px;border-radius:50%;border:2px solid var(--k);background:#fff;font:900 1.15rem/1 inherit;display:grid;place-items:center;padding:0 0 2px;cursor:pointer;box-shadow:none}
.svmodal .svbig{border:2px solid var(--k);border-radius:12px;overflow:hidden;background:#eee;aspect-ratio:16/10;min-height:0}
.svmodal .svbig img{display:block;width:100%;height:100%;object-fit:cover}
.svmodal .svbig.svfail{display:none}
.svmodal .svcopy{font-size:10.5px;color:#666;margin-top:5px;text-align:end}
.svbg,.svbg *{-webkit-user-select:none;user-select:none}
.review .revcnt{font-weight:800;opacity:.75;font-variant-numeric:tabular-nums}
.review summary.revpulse{animation:hmRevPulse 1.1s ease}
@keyframes hmRevPulse{0%{background:transparent}25%{background:var(--y)}100%{background:transparent}}
@media(prefers-reduced-motion:reduce){.review summary.revpulse{animation:none}}
/* "Your items at this stop" rows: service chips wrap (Packing never cut), qty pill stays inside, no horizontal overflow */
#review .irow,#review details,#review{box-sizing:border-box;max-width:100%;min-width:0}
#review .irow .addons,.irow .addons{flex-wrap:wrap;min-width:0;max-width:100%}
#review .irow .iname{min-width:0;overflow-wrap:anywhere}
#review .irow .pwrap,#review .irow .pchip{max-width:100%}
.step[data-step="2"]{overflow-x:clip}
/* the Setting gear scrolls away with the step bar instead of floating over cards */
.q-tools#qTools{position:absolute}
/* drop-off cards ("on the truck"): the action row wraps inside the card padding (Placement / Assemble here / Drop-off) */
#truck .item,#inv .item{box-sizing:border-box;max-width:100%;min-width:0}
.item.ontrk>span:first-child{min-width:0;flex:1 1 auto}
.item.ontrk .trkc{flex:1 1 100%;min-width:0;max-width:100%;flex-wrap:wrap;justify-content:flex-start;gap:6px}
.item.ontrk .dopts{min-width:0;max-width:100%;gap:6px}
.item.ontrk .trkc>*,.item.ontrk .dopts>*{max-width:100%;min-width:0}
.item.ontrk .dropbtn{max-width:100%;overflow:hidden;text-overflow:ellipsis}
#inv .item .ctl,#inv .item .addrow{min-width:0;max-width:100%;flex-wrap:wrap}
#truck{overflow-x:clip}
/* Boxes sub-group header: smaller than the room headers, with chevron + count */
.rsec .boxsub.bxfold{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;margin:12px 0 6px;padding:6px 4px 6px 2px;border:0;border-bottom:1.5px solid var(--line,#ddd);background:none;box-shadow:none;border-radius:0;font:inherit;font-size:.9rem;font-weight:800;color:var(--k);opacity:1;cursor:pointer;text-align:start}
.rsec .boxsub.bxfold:hover{background:none;transform:none;box-shadow:none}
.rsec .boxsub.bxfold:focus-visible{outline:3px solid var(--k);outline-offset:2px;border-radius:6px}
.rsec .boxsub .bxn{font-variant-numeric:tabular-nums;opacity:.75}
.rsec .boxitems[hidden]{display:none}
.fsum .nostreet{display:inline-block;margin-inline-start:4px;font-size:.78rem;font-weight:800;color:#b3261e}
/* expanded room header: title centred, larger, bold; chevron stays right (collapsed headers unchanged) */
.roomtog[aria-expanded="true"] .rnm{text-align:center;font-size:clamp(18px,4.6vw,20px);font-weight:800;padding-inline-start:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.roomtog[aria-expanded="true"]:has(.rcount) .rnm{padding-inline-start:60px}
/* Qty pill flush right on the top row of every item / box card (lines up with the Add button's right edge) */
#inv .item .bedline{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#inv .item .bedline>.cqw{margin-inline-start:auto;order:5}
#inv .item .bedline>.bedg{flex:1 1 100%;order:6}
#inv .item>.ctl{margin-inline-start:auto}
#inv .item .ctl .cqw{margin-inline-start:auto}
/* compact Bed card + its expand/collapse title */
#inv .item.bedmin{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#inv .item.bedmin .lbl{flex:1 1 auto;min-width:0}
#inv .item.bedmin .addrow{margin-inline-start:auto}
#inv .bedopen{appearance:none;border:0;background:none;box-shadow:none;padding:4px 2px;margin:0;min-height:32px;display:inline-flex;align-items:center;gap:4px;font:inherit;font-weight:800;color:var(--k);cursor:pointer}
#inv .bedopen:hover{background:none;transform:none;box-shadow:none}
#inv .bedopen:focus-visible{outline:3px solid var(--k);outline-offset:2px;border-radius:6px}
#inv .bedopen svg{flex:none;opacity:.7}
/* Qty pill stays on the top row even in the narrow 2-column desktop cards */
#inv .item.card:not(.bedmin):not(.bedc){display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;align-items:start}
#inv .item.card:not(.bedmin):not(.bedc)>.lbl{grid-column:1;grid-row:1;min-width:0}
#inv .item.card:not(.bedmin):not(.bedc)>.ctl{grid-column:2;grid-row:1;margin:0}
#inv .item.card:not(.bedmin):not(.bedc)>.addrow{grid-column:1/-1;grid-row:2}
#inv .item.bedc .bedline{flex-wrap:wrap}
#inv .item.bedc .bedline>.cardroomw{flex:0 1 auto;min-width:0}
#inv .item.bedc .bedline>.cardroomw .psel{max-width:100%;overflow:hidden;text-overflow:ellipsis}
#inv .item.bedc .bedline>.bedopen{flex:0 1 auto;min-width:0}
#inv .item.bedc .bedline{column-gap:5px}
#inv .item.bedc .bedline>.dupl,#inv .item.bedc .bedline>.cardroomw,#inv .item.bedc .bedline>.bedopen{margin-inline:0}
#inv .item.bedc .bedline>.bedopen{padding-inline:2px}
/* Street View thumb: ~+24% and tucked ~6px before the chevron */
.stop.collapsed .svthumb{width:94px;height:62px;inset-inline-end:var(--svend,41px)}
.stop.collapsed.hassv .stop-h .htog{padding-inline-end:104px}
@media(max-width:480px){.stop.collapsed .svthumb{width:77px;height:51px;inset-inline-end:var(--svend,38px)}.stop.collapsed.hassv .stop-h .htog{padding-inline-end:86px}}
@media(max-width:380px){.stop.collapsed .svthumb{width:68px;height:45px}.stop.collapsed.hassv .stop-h .htog{padding-inline-end:76px}}
/* Inventory: green hint above the stop tabs, arrow points at the selected tab */
.stops-pop.inv-stop-hint{box-sizing:border-box;text-align:center}
.stops-pop.top.inv-stop-hint{overflow:visible}
.stops-pop.inv-stop-hint::after{content:"";position:absolute;bottom:-8px;left:var(--ax,50%);width:12px;height:12px;margin-left:-7px;background:#e3f4e8;border-right:2px solid var(--ok);border-bottom:2px solid var(--ok);transform:rotate(45deg)}
/* Inventory search pill + slide-down bar */
#roomChips .srchpill{display:inline-flex;align-items:center;gap:5px}
#roomChips .srchpill svg{flex:none}
#roomChips .srchpill span{max-width:12em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.invsrch{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;margin:0 0 12px}
.invsrch[hidden]{display:none}
.invsrch input{flex:1 1 auto;min-width:0}
.invsrch .srchok{flex:none;min-height:40px;padding:0 16px}
.invsrch .srchx{flex:none;width:36px;height:36px;font-size:1.3rem;line-height:1;border-radius:50%}
.invsrch.slide{animation:hmSrchIn .25s ease-out}
@keyframes hmSrchIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.invsrch.slide{animation:none}}
/* CJK step labels are only 2 glyphs: the check only grazes the last glyph's top-right corner so the label stays readable */
:is(:lang(zh),:lang(ja),:lang(ko)) #tabs .swr .sdone{height:.9em;transform:translate(-6%,-92%)}
[dir=rtl]:is(:lang(zh),:lang(ja),:lang(ko)) #tabs .swr .sdone{transform:translate(6%,-92%)}
/* Phone font minimums (user-approved): visible text/chips/pills/links/labels >= 12px; form fields 16px (no iOS zoom) */
@media (max-width:600px){
  .ptbtn .ptv,.pchip>span,.pchip .plbl,.date-bar-txt .date-bar-lbl,.prop small.rpvh,.prop>b,#tabs .swr .sw,#wxPop,#wxPop .wxclink,
  .cunit .cuadd,.cunit .cuadd span,.addslot .addbtn,.addbtn>span,.stop.collapsed .addtop .cunit .cuadd,.stop.collapsed .addtop .addbtn,.stop.collapsed .addtop .cunit .cuv,
  .ptalim>span,.bedg .chip.bedb{font-size:12px!important}
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),textarea,select{font-size:max(16px,1em)}
}
/* stop tabs carousel */
.invstops.carousel{position:relative;display:block;overflow:hidden;padding:0;touch-action:pan-y;margin:6px 0 8px}
.invstops.carousel .invstop{position:absolute;top:5px;left:0;max-width:none;min-width:0;transform-origin:50% 50%;transition:transform .32s cubic-bezier(.2,.8,.3,1),box-shadow .2s,background-color .2s;box-shadow:2px 2px 0 var(--k);will-change:transform}
.invstops.carousel .invstop[aria-selected="true"]{box-shadow:4px 4px 0 var(--k)}
.invstops.carousel .invstop:not([aria-selected="true"]){background:#f4f4f4}
.invstops.carousel .invstop.cfar{background:#e9e9e9}
@media (prefers-reduced-motion:reduce){.invstops.carousel .invstop{transition:none}}
/* wide screens: bigger Street View thumb (≈3:2, up to 130×86), still 6px before the chevron */
@media (min-width:900px){
  .stop.collapsed .svthumb{width:clamp(94px,10vw,130px);height:auto;aspect-ratio:3/2}
  .stop.collapsed.hassv .stop-h .htog{padding-inline-end:clamp(104px,calc(10vw + 12px),142px)}
}
/* step hints sit in the flow under the step/progress bar (never over it), inside the card's side borders */
.stops-pop.top.stephint{position:relative;left:auto!important;top:auto!important;width:auto!important;z-index:5;margin:0 8px 10px;max-width:none;box-sizing:border-box;
  opacity:0;transform:translateY(-4px);transition:opacity .3s ease,transform .3s ease,max-height .4s ease,margin .4s ease,padding .4s ease;max-height:240px!important;overflow:visible}
.stops-pop.top.stephint.show{opacity:1;transform:none}
.stops-pop.top.stephint.hide{opacity:0;max-height:0!important;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;border-width:0;overflow:hidden}
.stops-pop.top.stephint.inv-stop-hint{margin-bottom:14px}
@media (prefers-reduced-motion:reduce){.stops-pop.top.stephint{transition:none}}
/* "Nearby view": the panorama is > 60 m from the building */
.stop.collapsed{--svw:94px;--svh:62px;--sve:41px}
@media(max-width:480px){.stop.collapsed{--svw:77px;--svh:51px;--sve:38px}}
@media(max-width:380px){.stop.collapsed{--svw:68px;--svh:45px}}
@media(min-width:900px){.stop.collapsed{--svw:clamp(94px,10vw,130px);--svh:calc(var(--svw) * 2 / 3)}}
.stop .svnear{display:none}
.stop.collapsed.hassv .svnear{display:block;position:absolute;z-index:2;inset-inline-end:calc(var(--sve) + 2px);top:50%;width:calc(var(--svw) - 4px);transform:translateY(calc(var(--svh) / 2 - 100% - 2px));box-sizing:border-box;
  background:rgba(0,0,0,.66);color:#fff;font-size:12px;font-weight:700;line-height:1.25;text-align:center;border-radius:0 0 6px 6px;padding:1px 2px;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.svmodal .svbig{position:relative}
.svmodal .svnear:not([hidden]){position:absolute;left:8px;bottom:8px;background:rgba(0,0,0,.7);color:#fff;font-size:13px;font-weight:700;padding:3px 8px;border-radius:8px}
/* loaded items (on the truck): folded by default, count + "+ Add pick-up" on the header row */
#truck .trkfold{margin-top:12px}
#truck .trkfold>summary{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
#truck .trkfold>summary .trkadd{margin-inline-start:auto;font-size:12px;font-weight:800;white-space:nowrap;text-decoration:underline double;text-underline-offset:2px;text-decoration-thickness:1px;min-height:30px;padding:4px 2px;background:none;border:0;cursor:pointer;color:inherit}
#truck .trkfold>summary{list-style:none}
#truck .trkfold>summary::-webkit-details-marker{display:none}
#truck .trkfold>summary::before{content:"▸";font-size:.9em;width:1em}
#truck .trkfold[open]>summary::before{content:"▾"}
/* wide screens (>=900px): up to 130x86, top-aligned 6px inside the card so the taller thumb never sticks out */
@media (min-width:900px){
  .stop.collapsed{--svw:clamp(110px,12.7vw,130px);--svh:calc(var(--svw) * 2 / 3)}
  .stop.collapsed .svthumb{width:var(--svw);height:var(--svh);aspect-ratio:auto;top:6px;transform:none}
  .stop.collapsed.hassv .stop-h .htog{padding-inline-end:calc(var(--svw) + 12px)}
  .stop.collapsed.hassv .svnear{top:calc(6px + var(--svh));transform:translateY(calc(-100% - 2px))}
}
@media (min-width:900px){
  .stop.collapsed{--svw:clamp(110px,12.3vw,126px)}
  .stop.collapsed .svthumb{top:-10px}
  .stop.collapsed.hassv .svnear{top:calc(-10px + var(--svh))}
}
