:root{color-scheme:dark;--bg:#090d16;--card:#141b29;--muted:#9aa8bc;--line:#293448;--yellow:#ffd629;--red:#ed3434;--ink:#f7f9fc;--green:#34d399}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top,#192239 0,#090d16 38%);font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);min-height:100vh}main{width:min(100%,620px);margin:auto;padding:calc(18px + env(safe-area-inset-top)) 14px calc(30px + env(safe-area-inset-bottom))}header{display:flex;align-items:center;gap:14px;margin:2px 4px 18px}h1,h2,p{margin:0}h1{font-size:1.65rem}h2{font-size:1.08rem}header p,.card>p{color:var(--muted);font-size:.9rem;margin-top:3px}.brand-icon{width:52px;height:52px;flex:0 0 52px;display:block;object-fit:contain;filter:drop-shadow(0 5px 10px #0008)}.brick{width:46px;height:34px;border-radius:5px;background:var(--red);display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:7px;box-shadow:0 5px 14px #0008}.brick i{background:#ff6868;border-radius:50%;box-shadow:inset 0 -2px 2px #9e1414}.card{background:color-mix(in srgb,var(--card) 96%,transparent);border:1px solid var(--line);border-radius:18px;padding:13px;margin:12px 0;box-shadow:0 12px 28px #0004}.camera-card{padding:8px}.stage{position:relative;overflow:hidden;border-radius:13px;background:#03050a;aspect-ratio:3/4;touch-action:none}.stage video,.stage canvas{width:100%;height:100%;object-fit:cover;display:block}.stage canvas{display:none}.stage.frozen video{display:none}.stage.frozen canvas{display:block}.camera-hint{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);white-space:nowrap;background:#070b12c9;border:1px solid #ffffff24;border-radius:999px;padding:7px 11px;color:#dce4ef;font-size:.78rem}.boxes{position:absolute;inset:0}.box{position:absolute;border:3px solid var(--yellow);border-radius:10px;background:#ffd62915;box-shadow:0 0 0 1px #0008}.box::after{content:attr(data-number);position:absolute;top:-12px;left:-10px;background:var(--yellow);color:#111827;font-weight:800;font-size:.72rem;width:23px;height:23px;border-radius:50%;display:grid;place-items:center}.box.off{border-color:#7b8799;background:#11182766;opacity:.56}.box.off::after{background:#7b8799}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:9px 2px 1px}.actions button:only-child{grid-column:1/-1}button{border:0;border-radius:13px;padding:13px 16px;font:inherit;font-weight:750;cursor:pointer}.primary{background:var(--yellow);color:#111827}.secondary{background:#273247;color:var(--ink)}.wide{width:100%;margin-top:13px}.status{min-height:20px;text-align:center;padding:6px 4px 0;color:var(--muted);font-size:.85rem}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.pill{font-size:.72rem;background:#253047;color:#dce4ef;border-radius:99px;padding:5px 9px}.part-list,.match-list{display:grid;gap:9px;margin-top:12px}.part{display:grid;grid-template-columns:58px 1fr;gap:11px;align-items:center;padding:9px;background:#0d1320;border:1px solid var(--line);border-radius:13px}.part img{width:58px;height:58px;object-fit:contain;background:white;border-radius:9px}.part strong{display:block;font-size:.92rem}.part small{color:var(--muted)}select{width:100%;margin-top:6px;background:#202a3c;color:var(--ink);border:1px solid #3a4861;border-radius:8px;padding:7px}.match{padding:11px;background:#0d1320;border:1px solid var(--line);border-radius:13px;display:grid;grid-template-columns:76px 1fr;gap:11px}.match img{width:76px;height:65px;object-fit:contain;background:white;border-radius:8px}.match .score{color:var(--green);font-weight:800}.hidden{display:none!important}@media (orientation:landscape) and (max-height:600px){main{max-width:900px}.stage{aspect-ratio:16/9}}

body.picker-open{overflow:hidden}.part{display:block;padding:12px}.part-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.part-head strong{font-size:1rem}.part-head span{color:var(--green);font-size:.76rem;font-weight:800}.part-visuals{display:grid;grid-template-columns:1fr 22px 1fr;gap:6px;align-items:center;margin-bottom:10px}.part-visuals figure{margin:0;min-width:0;text-align:center}.part-visuals img{width:100%;height:92px;display:block;object-fit:contain;background:#fff;border-radius:11px}.part-visuals figcaption{margin-top:4px;color:var(--muted);font-size:.68rem}.compare-arrow{text-align:center;color:var(--muted);font-weight:900}.choice-button,.colour-button{width:100%;display:flex;align-items:center;text-align:left;background:#202a3c;color:var(--ink);border:1px solid #3a4861;border-radius:11px;padding:10px 12px}.choice-button span,.colour-button span:not(.swatch){min-width:0;flex:1}.choice-button b,.colour-button b{display:block;white-space:normal;line-height:1.18}.choice-button small,.colour-button small{display:block;margin-top:3px;color:var(--muted)}.choice-button i,.colour-button i{font-style:normal;font-size:1.6rem;color:#b7c2d4;margin-left:8px}.part-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch;margin-top:8px}.colour-button{gap:9px;padding:9px}.swatch{--swatch:#94a3b8;width:26px;height:26px;flex:0 0 26px;display:inline-block;border-radius:50%;background:var(--swatch);border:2px solid #ffffff80;box-shadow:0 0 0 1px #0007}.swatch.trans{background:linear-gradient(135deg,transparent 33%,#fff9 48%,transparent 63%),var(--swatch)}.swatch.large{width:44px;height:44px;flex-basis:44px}.quantity-block{display:flex;flex-direction:column;justify-content:center;gap:4px}.quantity-block>small{color:var(--muted);font-size:.65rem;text-align:center}.stepper{display:grid;grid-template-columns:36px 42px 36px;height:42px}.stepper button,.stepper input{margin:0;border:1px solid #3a4861;background:#202a3c;color:var(--ink);text-align:center;font:inherit;font-weight:800}.stepper button{padding:0;border-radius:9px}.stepper button:first-child{border-radius:9px 0 0 9px}.stepper button:last-child{border-radius:0 9px 9px 0}.stepper input{width:42px;border-left:0;border-right:0;border-radius:0;-moz-appearance:textfield}.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.colour-uncertain{display:flex;align-items:center;color:var(--muted);font-size:.78rem}.part-error{display:grid;grid-template-columns:72px 1fr;gap:10px;align-items:center}.part-error img{width:72px;height:72px}.catalogue-img.image-missing{background:#202a3c}.picker{position:fixed;z-index:50;inset:0;display:flex;align-items:flex-end;justify-content:center}.picker-shade{position:absolute;inset:0;width:100%;height:100%;padding:0;border-radius:0;background:#030712c9}.picker-sheet{position:relative;width:min(100%,620px);max-height:min(78dvh,720px);overflow:auto;background:#141b29;border:1px solid #344158;border-radius:22px 22px 0 0;padding:8px 14px calc(16px + env(safe-area-inset-bottom));box-shadow:0 -18px 55px #0009}.picker-handle{width:45px;height:5px;border-radius:99px;background:#64748b;margin:0 auto 10px}.picker-head{position:sticky;top:-8px;z-index:2;display:flex;align-items:center;justify-content:space-between;background:#141b29;padding:4px 0 10px}.icon-button{width:40px;height:40px;padding:0;border-radius:50%;background:#273247;color:var(--ink);font-size:1.45rem}.picker-list{display:grid;gap:9px}.picker-option{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;padding:10px;text-align:left;background:#0d1320;color:var(--ink);border:2px solid var(--line);border-radius:13px}.picker-option.selected{border-color:var(--yellow);background:#202517}.picker-option img,.picker-image-missing{width:64px;height:64px;object-fit:contain;display:grid;place-items:center;background:white;color:#475569;border-radius:9px}.picker-copy{min-width:0}.picker-copy b{display:block;line-height:1.2}.picker-copy small{display:block;color:var(--muted);margin-top:4px}.confidence{color:var(--green);font-weight:850;font-size:.82rem}.quantity-result{display:block;margin:3px 0;color:#fbbf24}.quantity-result.complete{color:var(--green)}@media(max-width:390px){.part-controls{grid-template-columns:1fr}.quantity-block{align-items:flex-start}.quantity-block>small{text-align:left}.part-visuals img{height:82px}}
.match-warning{padding:11px;background:#2a2111;border:1px solid #7c5e19;border-radius:12px;color:#fde68a}.match-warning strong,.match-warning small{display:block}.match-warning small{margin-top:5px;color:#f5d98d;line-height:1.3}
.actions .full-action{grid-column:1/-1}button:disabled{opacity:.68;cursor:wait}.working-bar{position:fixed;z-index:80;top:calc(10px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(calc(100% - 24px),590px);display:flex;align-items:center;gap:11px;padding:10px 13px;background:#0b1220ee;border:1px solid #3b4a64;border-radius:14px;box-shadow:0 12px 34px #000a;color:#f8fafc;font-size:.84rem;font-weight:750;pointer-events:none}.loading-brick{width:38px;height:28px;flex:0 0 38px;display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:6px;border-radius:5px;background:var(--red);box-shadow:0 3px 9px #0008;animation:brickPulse 1.05s ease-in-out infinite}.loading-brick i{border-radius:50%;background:#ff7777;box-shadow:inset 0 -2px 2px #9e1414}@keyframes brickPulse{0%,100%{transform:scale(.9);opacity:.68}50%{transform:scale(1.06);opacity:1}}.picker-group-title{margin:5px 2px 0;color:#dbe4f1;font-size:.82rem;text-transform:uppercase;letter-spacing:.055em}.catalogue-title{margin-top:12px;padding-top:13px;border-top:1px solid var(--line)}.picker-note{color:var(--muted);font-size:.8rem;padding:7px 2px}.colour-search{position:sticky;top:48px;z-index:1;width:100%;padding:11px 13px;border:1px solid #485873;border-radius:11px;background:#202a3c;color:var(--ink);font:inherit;outline:none}.colour-search:focus{border-color:var(--yellow);box-shadow:0 0 0 2px #ffd62928}.catalogue-colour-list{display:grid;gap:9px}.manual-tag{color:#cbd5e1;font-size:.72rem;font-weight:800}@media(prefers-reduced-motion:reduce){.loading-brick{animation:none}}
.working-bar{opacity:0;transform:translateX(-50%) translateY(-10px);transition:opacity .24s ease,transform .24s ease}.working-bar.visible{opacity:1;transform:translateX(-50%) translateY(0)}.colour-jumps{display:flex;gap:7px;overflow-x:auto;padding:2px 1px 7px;scrollbar-width:none}.colour-jumps::-webkit-scrollbar{display:none}.colour-jump{flex:0 0 auto;padding:8px 10px;border:1px solid #465570;border-radius:999px;background:#202a3c;color:#e2e8f0;font-size:.72rem}.colour-jump:active{background:var(--yellow);color:#111827}.colour-category{display:grid;gap:9px;scroll-margin-top:70px}.colour-category h4{margin:9px 2px 0;padding:9px 2px 3px;color:#f1f5f9;border-top:1px solid #2b374c;font-size:.86rem}.colour-category h4 span{color:var(--muted);font-size:.7rem;margin-left:4px}@media(prefers-reduced-motion:reduce){.working-bar{transition:none}.colour-category{scroll-behavior:auto}}

/* v2: calmer type, progressive steps and compact editable part summaries */
:root{--ink:#e8edf5;--soft:#111827;--control:#1d2738}body{font-weight:400;line-height:1.35}h1{font-weight:680}h2,.step-copy b,.subheading span:first-child{font-weight:650}button{font-weight:620}.primary{font-weight:680}.card{box-shadow:0 9px 22px #0003}.step{padding:0;overflow:hidden;scroll-margin-top:calc(68px + env(safe-area-inset-top))}.step-heading{width:100%;display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:13px 14px;background:transparent;color:var(--ink);text-align:left;border-radius:0}.step-number{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#273247;color:#dce4ef;font-size:.82rem}.step-copy{min-width:0}.step-copy b,.step-copy small{display:block}.step-copy b{font-size:1rem}.step-copy small{margin-top:2px;color:var(--muted);font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-check{display:none;width:22px;height:22px;place-items:center;border-radius:50%;background:#14392e;color:var(--green);font-size:.78rem}.step-complete .step-check{display:grid}.step-complete .step-number{background:#14392e;color:var(--green)}.step-chevron{color:#93a2b7;font-size:1.25rem;transition:transform .2s ease}.step-open .step-chevron{transform:rotate(180deg)}.step-body{display:none;padding:0 13px 14px}.step-open .step-body{display:block}.step-subsection>p{color:var(--muted);font-size:.84rem}.subheading{display:flex;align-items:center;justify-content:space-between;margin:13px 1px 7px}.subheading span:first-child{font-size:.92rem}.section-title{margin-top:2px}.step .wide{margin-top:10px}

.part-list{gap:7px}.part{display:block;padding:0;background:#0e1522;border:0;border-radius:13px;overflow:hidden}.part-summary{width:100%;display:grid;grid-template-columns:54px minmax(0,1fr) 24px;gap:10px;align-items:center;padding:9px;background:transparent;color:var(--ink);text-align:left;border-radius:0}.part-summary>img{width:54px;height:54px;object-fit:contain;background:#fff;border-radius:9px}.part-summary-copy{min-width:0}.part-summary-copy small,.part-summary-copy b,.part-summary-copy span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.part-summary-copy small{color:#8492a6;font-size:.68rem}.part-summary-copy b{font-weight:640;font-size:.88rem;margin:1px 0}.part-summary-copy span{color:var(--muted);font-size:.74rem}.part-disclosure{color:#91a0b5;font-size:1.3rem;text-align:center;transition:transform .2s ease}.part.expanded .part-disclosure{transform:rotate(180deg)}.part-details{display:none;padding:2px 9px 10px}.part.expanded .part-details{display:block}.part-visuals{margin:2px 0 8px}.choice-button,.colour-button{background:var(--control);border:0}.choice-button b,.colour-button b{font-weight:620}.part-controls{height:58px}.colour-button{height:58px;min-width:0}.colour-value{min-width:0;overflow:hidden}.colour-value>span{display:flex!important;align-items:baseline;gap:5px;min-width:0}.colour-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}.colour-value em{flex:0 0 auto;color:var(--muted);font-size:.72rem;font-style:normal}.quantity-block{height:58px}.stepper{height:38px}.stepper button,.stepper input{border-color:#344158;font-weight:650}.part-error{display:block;padding:5px 8px 10px}.match{border:0;background:#0e1522}.match strong{font-weight:630}.match .score{font-weight:680}.pill{font-weight:500}.confidence{color:var(--muted);font-weight:620}.manual-tag{font-weight:570}.picker-copy b{font-weight:620}

/* Swipeable colour catalogue: the tabs stay put while each page scrolls itself. */
.picker-sheet.colour-mode{height:min(88dvh,780px);max-height:none;overflow:hidden;display:flex;flex-direction:column}.picker-sheet.colour-mode .picker-head{position:static;flex:0 0 auto}.picker-sheet.colour-mode .picker-list{display:flex;flex:1;min-height:0;flex-direction:column;gap:7px}.ai-colour-strip{display:flex;flex:0 0 auto;gap:7px;overflow-x:auto;padding:1px 1px 3px;scrollbar-width:none}.ai-colour-strip::-webkit-scrollbar{display:none}.ai-colour-strip .picker-option{flex:0 0 min(82%,270px);grid-template-columns:42px minmax(0,1fr) auto;padding:7px;border-width:1px}.ai-colour-strip .swatch.large{width:36px;height:36px;flex-basis:36px}.picker-sheet.colour-mode .catalogue-title{margin-top:3px;padding-top:7px}.picker-sheet.colour-mode .colour-search{position:static;flex:0 0 auto;padding:9px 12px}.colour-jumps{flex:0 0 auto;padding-bottom:3px}.colour-jump{border:0;background:#222d40;color:#c9d3e2;font-weight:540}.colour-jump.active{background:var(--yellow);color:#111827}.colour-carousel{display:flex;flex:1;min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:none}.colour-carousel::-webkit-scrollbar{display:none}.colour-page{flex:0 0 100%;width:100%;min-height:0;overflow-y:auto;scroll-snap-align:start;scroll-snap-stop:always;padding:0 2px 8px;overscroll-behavior-y:contain}.colour-category{gap:6px}.colour-category h4,.colour-page-heading{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;margin:7px 0 5px;padding:8px 10px;background:#253047;color:#eef3f9;border:0;border-left:4px solid var(--yellow);border-radius:7px;font-size:.78rem;text-transform:uppercase;letter-spacing:.045em}.colour-category h4 span{color:inherit;font-size:inherit;margin:0}.colour-category h4 em,.colour-page-heading em{color:#aebacc;font-size:.7rem;font-style:normal;font-weight:500}.colour-page>.picker-option,.colour-category>.picker-option{margin-bottom:6px;border-width:1px}.colour-page-heading{margin-top:2px}.picker-option{font-weight:500}

@media(max-width:390px){.part-controls{grid-template-columns:minmax(0,1fr) auto;height:58px}.quantity-block{align-items:stretch}.quantity-block>small{text-align:center}.stepper{grid-template-columns:32px 38px 32px}.stepper input{width:38px}.colour-button{padding:7px}.colour-button i{margin-left:2px}.colour-name{max-width:140px}}
@media(prefers-reduced-motion:reduce){.step-chevron,.part-disclosure{transition:none}.colour-carousel{scroll-behavior:auto}}
.working-bar{transition-duration:.3s}

/* v2.1: lighter, roomier and squarer */
:root{--ink:#dce3ec}b,strong{font-weight:520}h1{font-weight:590}h2,.step-copy b,.subheading span:first-child{font-weight:540}.part-summary-copy b,.choice-button b,.colour-button b,.picker-copy b,.match strong{font-weight:520}.primary{font-weight:590}button{font-weight:540}.stepper button,.stepper input{font-weight:560}.match .score{font-weight:590}.working-bar{font-weight:540}
.card{border-radius:12px;margin:15px 0}.stage{border-radius:8px}.box{border-radius:6px}button,.choice-button,.colour-button,.picker-option,.match,.match-warning,.colour-search{border-radius:8px}.part{border-radius:9px}.part-summary>img,.part-summary-images img,.part-visuals img,.match img,.picker-option img,.picker-image-missing{border-radius:6px}.working-bar{border-radius:8px}.picker-sheet{border-radius:12px 12px 0 0}.icon-button,.step-number,.step-check,.swatch{border-radius:50%}.pill,.colour-jump,.camera-hint{border-radius:999px}
.step-heading{padding:15px 16px;gap:11px}.step-body{padding:1px 16px 17px}.actions{gap:10px;padding-top:11px}.step-subsection>p{line-height:1.48}.section-title{margin-bottom:9px}.subheading{margin:16px 1px 9px}.step .wide{margin-top:13px}.part-list,.match-list{gap:10px;margin-top:13px}.part-summary{grid-template-columns:94px minmax(0,1fr) 22px;gap:11px;padding:11px}.part-summary-images{display:grid;grid-template-columns:1fr 1fr;gap:5px}.part-summary-images img{width:44px!important;height:52px!important;object-fit:contain;background:#fff}.part-details{padding:4px 11px 12px}.part-visuals{margin:4px 0 11px}.part-controls{gap:10px;margin-top:10px}.choice-button,.colour-button{padding:11px}.colour-value>span{align-items:center}.picker-list{gap:11px}.picker-option{gap:12px;padding:11px}.colour-category{gap:8px}.colour-page>.picker-option,.colour-category>.picker-option{margin-bottom:8px}
@media(max-width:390px){.part-summary{grid-template-columns:88px minmax(0,1fr) 20px}.part-summary-images img{width:41px!important;height:50px!important}.colour-name{max-width:130px}}

.part-summary-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch}.part-card-actions{display:flex;width:68px;flex-direction:column;gap:5px;margin:7px 7px 7px 0}.part-card-actions.single{width:32px}.quick-sticker-search{flex:1;padding:5px 3px;background:#3d3211;color:#f6d968;border-radius:6px;font-size:.62rem;font-weight:540}.quick-sticker-search:active{background:#564817}.delete-part{display:grid;min-height:32px;flex:1;place-items:center;padding:0;background:#1a2332;color:#9caabd;border-radius:7px}.delete-part:active{background:#3a1f29;color:#ff9aaa}.delete-part svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.sticker-result{display:block;width:max-content;margin:3px 0 4px;padding:3px 6px;border-radius:5px;background:#403513;color:#f8d86a;font-size:.68rem}
.subheading-actions{display:flex!important;align-items:center;gap:7px}.add-manual-part{display:flex;align-items:center;gap:4px;height:31px;padding:0 10px;background:#243149;color:var(--ink);border:1px solid #3a4861;border-radius:7px;font-size:.72rem}.add-manual-part span{color:var(--green);font-size:1.15rem;line-height:1}.add-manual-part:active{background:#31415f}.manual-summary-images{grid-template-columns:1fr;justify-items:center}.manual-part-visual{display:block;max-width:260px;margin:4px auto 11px}.manual-part-visual figure{width:100%}.manual-part-empty{display:grid;gap:10px}.manual-part-empty .choice-button{margin-top:2px}
.part-search-form{position:sticky;top:48px;z-index:2;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;padding:4px 0 9px;background:#141b29}.part-search-form .colour-search{position:static;min-width:0}.part-search-form button{min-width:86px;padding:8px 13px;background:var(--yellow);color:#111827}.part-search-results{display:grid;gap:9px}.part-search-results:not(:empty){margin-bottom:9px;padding-bottom:11px;border-bottom:1px solid var(--line)}.part-search-feedback{display:flex;align-items:center;gap:9px;padding:7px 2px}.part-search-feedback.loading::before{content:'';width:17px;height:17px;flex:0 0 auto;border:2px solid #617089;border-top-color:var(--yellow);border-radius:50%;animation:partSearchSpin .8s linear infinite}.part-search-results .picker-group-title{margin-top:3px}.part-search-results .confidence{max-width:88px;font-size:.68rem;line-height:1.15;text-align:right;color:#aab5c6}@keyframes partSearchSpin{to{transform:rotate(360deg)}}
.colour-system{margin:11px 0 17px}.colour-system-heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;padding:9px 10px;background:#202b3e;border-left:4px solid #34d399;border-radius:6px;color:#f1f5f9;font-size:.82rem;letter-spacing:.025em}.colour-system-heading em{color:#aebacc;font-size:.7rem;font-style:normal;font-weight:500}.colour-family{margin:9px 0 14px}.colour-family h5{margin:0 3px 6px;padding:5px 7px;border-bottom:1px solid #344158;color:#bbc7d7;font-size:.7rem;font-weight:560;text-transform:uppercase;letter-spacing:.055em}.colour-family>.picker-option{margin-bottom:6px}

/* v2.7: saved photos, compact part choice, strict clues and match details */
.part-catalogue-choice{min-width:0;width:100%;align-self:stretch;display:grid;grid-template-columns:72px minmax(0,1fr) 15px;gap:8px;align-items:center;padding:7px;background:var(--control);color:var(--ink);text-align:left}.part-catalogue-choice img{width:72px!important;height:82px!important;object-fit:contain;background:#fff}.part-catalogue-choice span{min-width:0}.part-catalogue-choice b,.part-catalogue-choice small{display:block}.part-catalogue-choice b{font-size:.78rem;font-weight:520;line-height:1.18}.part-catalogue-choice small{margin-top:4px;color:var(--muted);font-size:.65rem;line-height:1.2}.part-catalogue-choice i{color:#9dacbf;font-size:1.35rem;font-style:normal}.manual-part-visual{max-width:none}.manual-part-visual .part-catalogue-choice{max-width:390px;margin:auto;grid-template-columns:92px minmax(0,1fr) 18px}.manual-part-visual .part-catalogue-choice img{width:92px!important;height:92px!important}
.important-toggle{width:100%;display:grid;grid-template-columns:27px auto minmax(0,1fr);gap:8px;align-items:center;margin-top:10px;padding:9px 10px;background:#182131;color:#c5cfdd;text-align:left;border:1px solid #344158}.important-toggle>span{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#2a3548;color:#aeb9c9;font-weight:700}.important-toggle b{font-weight:540}.important-toggle small{color:#8998ad;text-align:right}.important-toggle.active{background:#322711;border-color:#a77a13;color:#ffe58a}.important-toggle.active>span{background:var(--yellow);color:#111827}.important-toggle.active small{color:#efd47d}
.match-detail-trigger{display:inline-flex;align-items:center;gap:4px;margin:0;padding:0;background:transparent;border:0;color:var(--green);font:inherit;font-weight:590;text-decoration:underline;text-decoration-color:#34d39966;text-underline-offset:3px}.match-detail-trigger span{font-size:1.05em}.match-details{position:fixed;z-index:95;inset:0;display:flex;align-items:flex-end;justify-content:center}.match-details-shade{position:absolute;inset:0;width:100%;height:100%;padding:0;border-radius:0;background:#020611d9}.match-details-sheet{position:relative;width:min(100%,620px);max-height:min(82dvh,760px);overflow:auto;padding:8px 14px calc(16px + env(safe-area-inset-bottom));background:#141b29;border:1px solid #344158;border-radius:12px 12px 0 0;box-shadow:0 -18px 55px #0009}.match-details-head{position:sticky;top:-8px;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:4px 0 11px;background:#141b29}.match-details-head h2{font-size:1rem}.match-details-head small{display:block;margin-top:3px;color:var(--muted);font-size:.72rem}.match-details-list{display:grid;gap:8px}.match-piece{display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px;background:#0e1522;border-left:4px solid #64748b;border-radius:8px}.match-piece img{width:54px;height:54px;object-fit:contain;background:#fff;border-radius:6px}.match-piece span{min-width:0}.match-piece b,.match-piece small{display:block}.match-piece b{font-size:.78rem;font-weight:520;line-height:1.2}.match-piece small{margin-top:3px;color:var(--muted);font-size:.66rem}.match-piece>strong{font-size:.7rem;font-weight:560;text-align:right}.match-piece.matched{border-color:var(--green)}.match-piece.matched>strong{color:var(--green)}.match-piece.missed{border-color:#f87171}.match-piece.missed>strong{color:#fca5a5}.match-piece.not-used{opacity:.66}.match-piece.not-used>strong{color:#aab4c2}body.match-details-open{overflow:hidden}
@media(max-width:390px){.part-catalogue-choice{grid-template-columns:58px minmax(0,1fr) 12px}.part-catalogue-choice img{width:58px!important;height:76px!important}.part-catalogue-choice b{font-size:.72rem}.important-toggle{grid-template-columns:27px auto}.important-toggle small{grid-column:2;text-align:left}.match-piece{grid-template-columns:48px minmax(0,1fr)}.match-piece img{width:48px;height:48px}.match-piece>strong{grid-column:2;text-align:left}}

/* v2.8: genuine Any colour and a cleaner photo-to-catalogue comparison */
.any-colour-option{margin-bottom:5px;background:#17243a;border-color:#4c6385}.any-colour-swatch{background:conic-gradient(#ef4444 0 16%,#facc15 0 33%,#22c55e 0 50%,#38bdf8 0 67%,#a855f7 0 84%,#f8fafc 0)!important}.part-visuals{grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:start;gap:7px}.part-visuals figure{min-width:0;margin:0}.part-visuals figure>img,.catalogue-image-button{width:100%;aspect-ratio:4/3;height:auto!important;border-radius:6px}.photo-figure>img{display:block;object-fit:cover;background:#0a0f19}.catalogue-image-button{position:relative;display:block;padding:0;overflow:hidden;background:#fff;border:0}.catalogue-image-button img{display:block;width:100%!important;height:100%!important;object-fit:contain;background:#fff;border-radius:0}.catalogue-change{position:absolute;right:6px;bottom:6px;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#111827d9;color:#fff;font-size:1.2rem}.part-visuals figcaption{min-height:34px;margin-top:5px;color:var(--muted);font-size:.68rem;line-height:1.25}.photo-figure figcaption{text-align:center}.catalogue-figure figcaption{text-align:left}.catalogue-figure figcaption b,.catalogue-figure figcaption small{display:block}.catalogue-figure figcaption b{color:var(--ink);font-weight:520}.catalogue-figure figcaption small{margin-top:2px}.compare-arrow{align-self:center;margin-top:calc(50% - 8px)}.manual-part-visual{display:block;max-width:240px;margin:4px auto 11px}.manual-part-visual .catalogue-figure{width:100%}
@media(max-width:390px){.part-visuals{grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);gap:5px}.catalogue-figure figcaption b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}}
.picker-sheet.colour-mode .any-colour-option{flex:0 0 auto}

/* v2.8.1: progress lives on the button that started the work. */
button.is-working{display:flex;align-items:center;justify-content:center;gap:9px;cursor:wait}.button-spinner{width:18px;height:18px;flex:0 0 18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:buttonSpin .72s linear infinite}.button-status-label{min-width:0}.button-status-label.changing{animation:buttonStatusChange .32s ease both}.next-step-button{margin-top:16px}@keyframes buttonSpin{to{transform:rotate(360deg)}}@keyframes buttonStatusChange{0%{opacity:.15;transform:translateY(2px)}45%{opacity:.35}100%{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.button-spinner{animation:none}.button-status-label.changing{animation:none}}

/* v2.8.2: destination-step progress and compact part/colour controls. */
.step-working{min-height:86px;display:flex;align-items:center;justify-content:center;gap:11px;color:#dbe5f2;text-align:center;opacity:0;transform:translateY(3px);transition:opacity .18s ease,transform .18s ease}.step-working.visible{opacity:1;transform:none}.step-working-spinner{width:21px;height:21px;flex:0 0 21px;border:2px solid #93a4ba;border-right-color:var(--yellow);border-radius:50%;animation:buttonSpin .72s linear infinite}.step-working span:last-child.changing{animation:buttonStatusChange .32s ease both}.quantity-block{justify-content:center}.quantity-block .stepper{height:58px}.part-card-actions,.part-card-actions.single{width:70px;display:grid;grid-template-columns:32px 32px;grid-template-rows:1fr;gap:6px;margin:7px 7px 7px 0}.part-card-actions.has-sticker{grid-template-rows:minmax(25px,auto) 32px}.quick-sticker-search{grid-column:1/-1}.important-quick,.delete-part{width:32px;min-height:32px;height:100%;padding:0}.important-quick{display:grid;place-items:center;background:#1a2332;color:#9caabd;border-radius:7px;font-size:1rem}.important-quick.active{background:#4a3810;color:#ffe276;box-shadow:inset 0 0 0 1px #c89418}.any-colour-row{display:flex;flex:0 0 auto}.any-colour-option{width:auto;display:flex;align-items:center;gap:8px;padding:6px 10px 6px 7px;background:#17243a;color:var(--ink);border:1px solid #4c6385;border-radius:9px}.any-colour-option.selected{border-color:var(--yellow);background:#202517}.any-colour-option .swatch{width:32px;height:32px;flex-basis:32px}.any-colour-option b{font-size:.78rem;font-weight:570}.colour-system-standard{margin-top:2px}.colour-page-heading{display:none}@media(prefers-reduced-motion:reduce){.step-working{transition:none}.step-working-spinner,.step-working span:last-child.changing{animation:none}}

/* v2.9: swipe actions, focused colour pages and softer image fallbacks. */
.part-summary-row{position:relative;display:block;overflow:hidden;touch-action:pan-y;background:#111a29}.part-summary{position:relative;z-index:2;width:100%;background:#0e1522;transition:transform .22s cubic-bezier(.2,.75,.25,1);will-change:transform}.part-summary-row.actions-open .part-summary{transform:translate3d(calc(-1 * var(--part-actions-width,82px)),0,0)}.part-summary-row.no-action-animation .part-summary{transition:none}.part-card-actions,.part-card-actions.single{position:absolute;z-index:1;top:0;right:0;bottom:0;width:82px;display:flex;flex-direction:row;align-items:stretch;gap:5px;margin:0;padding:7px;background:#111a29}.part-card-actions.has-sticker{width:126px;display:flex}.part-card-actions .quick-sticker-search{width:40px;min-width:40px;grid-column:auto}.part-card-actions .important-quick,.part-card-actions .delete-part{width:31px;min-width:31px;height:auto;min-height:0}.part.expanded .part-card-actions{opacity:0;pointer-events:none}.part-summary-copy small .summary-important{display:inline;color:#f5c842;font-weight:620;margin-left:4px}.part-summary-images img.summary-photo,.part-summary>img.summary-photo{object-fit:cover!important;background:#101827!important}.part-summary-images img.summary-diagram,.part-summary>img.summary-diagram{object-fit:contain!important;background:#182538!important}.image-missing{background:#182538!important}.any-colour-page{display:flex;align-items:center;justify-content:center;padding:24px 14px}.any-colour-page-choice{width:min(100%,330px);display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 20px;background:#152136;color:var(--ink);border:1px solid #40516b;border-radius:12px;text-align:center}.any-colour-page-choice.selected{border-color:var(--yellow);background:#202517}.any-colour-page-choice .any-colour-swatch{width:82px;height:82px;flex:0 0 82px;border-width:3px}.any-colour-page-choice b{font-size:1.05rem;font-weight:620}.any-colour-page-choice small{max-width:260px;color:var(--muted);line-height:1.4}.any-colour-page-choice>span:last-child{margin-top:4px;padding:7px 12px;border-radius:7px;background:#2a3850;color:#e6edf6;font-size:.72rem}.colour-search-page{padding-top:6px}.search-colour-hint{text-align:center;padding:30px 12px}.search-colour-count{margin:3px 2px 9px}.colour-jump[data-colour-tab="any"]{padding-inline:11px}.colour-system-standard{margin-top:2px}@media(prefers-reduced-motion:reduce){.part-summary{transition:none}}

/* v2.10: calmer drawers, clearer cards and photo viewing */
.picker-shade{transition:opacity .17s ease}.picker-sheet{transition:transform .18s cubic-bezier(.4,0,1,1)}.picker.closing .picker-shade{opacity:0}.picker-sheet.closing{transform:translateY(105%)}.picker.keyboard-open .picker-sheet{max-height:calc(100% - 4px)}.picker.keyboard-open .picker-sheet.colour-mode{height:calc(100% - 4px)}.picker-feedback{position:absolute;z-index:8;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;max-width:calc(100% - 28px);padding:9px 13px;border-radius:999px;background:#123b31;color:#b9f7dc;box-shadow:0 6px 24px #0009;opacity:0;transform:translate(-50%,10px);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.picker-feedback.visible{opacity:1;transform:translate(-50%,0)}.picker-feedback span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#20c997;color:#071711}.picker-feedback b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.76rem;font-weight:570}.picker-sheet.selection-made .picker-list{opacity:.72}.colour-carousel{position:relative}.colour-carousel.instant-scroll{scroll-behavior:auto!important;scroll-snap-type:none!important}.colour-search-page{display:none;position:absolute;z-index:4;inset:0;width:100%;overflow-y:auto;background:#141b29}.colour-carousel.searching{overflow:hidden;scroll-snap-type:none}.colour-carousel.searching .colour-search-page{display:block}.colour-carousel.searching>.colour-page:not(.colour-search-page){visibility:hidden}
.part.expanded{background:#172235;box-shadow:inset 0 0 0 1px #31415b}.part.expanded .part-summary,.part.expanded .part-summary-row{background:#172235}.part.expanded .part-details{background:#172235}.part-summary-images img.summary-diagram,.part-summary>img.summary-diagram,.catalogue-image-button:not(.image-missing),.catalogue-image-button:not(.image-missing) img{background:#fff!important}.part-summary-images img.image-missing,.part-summary>img.image-missing,.catalogue-image-button.image-missing,.catalogue-image-button img.image-missing{background:#182538!important}.summary-photo,[data-part-photo]{cursor:zoom-in}
.part-photo-lightbox{position:fixed;z-index:110;inset:0;display:grid;place-items:center;padding:calc(12px + env(safe-area-inset-top)) 10px calc(12px + env(safe-area-inset-bottom))}.part-photo-shade{position:absolute;inset:0;width:100%;height:100%;padding:0;border-radius:0;background:#030712ed}.part-photo-dialog{position:relative;width:min(100%,720px);height:min(84dvh,760px);display:flex;flex-direction:column;overflow:hidden;border:1px solid #344158;border-radius:10px;background:#111827;box-shadow:0 18px 70px #000}.part-photo-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:#141b29}.part-photo-head h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:540}.part-photo-stage{flex:1;min-height:0;display:grid;place-items:center;padding:10px;background:#05070c}.part-photo-stage img{display:block;max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}body.part-photo-open{overflow:hidden}
@media(prefers-reduced-motion:reduce){.picker-shade,.picker-sheet,.picker-feedback{transition:none}}

/* v2.11: resilient images, a calmer first step and persistent match results */
#cameraCard .actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#cameraCard .actions #identifyBtn{grid-column:1/-1}
#cameraCard .actions>button{min-width:0}
#identifyBtn.detector-working{display:flex!important;align-items:center;justify-content:center;gap:12px;cursor:pointer}
#identifyBtn.detector-working .button-spinner{display:block;width:20px;height:20px;flex:0 0 20px;border-width:2px}
#identifyBtn.detector-working>span:last-child{display:grid;gap:1px;text-align:left}
#identifyBtn.detector-working b{font:inherit;font-weight:590}
#identifyBtn.detector-working small{font-size:.62rem;font-weight:500;opacity:.72}
.stage.manual-mode::after{content:'Manual selection · tap each piece';position:absolute;z-index:6;top:10px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 20px);padding:7px 10px;border:1px solid #f0c329;border-radius:999px;background:#2d260eea;color:#ffe68a;font-size:.7rem;font-weight:590;box-shadow:0 5px 18px #0008;pointer-events:none}
.stage.manual-mode{box-shadow:inset 0 0 0 2px #e9bd24}
.part-card-actions,.part-card-actions.single{width:108px;padding:7px;gap:7px}
.part-card-actions.has-sticker{width:154px}
.part-card-actions .important-quick,.part-card-actions .delete-part{width:44px;min-width:44px}
.part-card-actions .delete-part{background:#421d28;color:#ff9aa8}
.part-card-actions .delete-part:active{background:#642536;color:#ffd1d7}
.part-summary-row.actions-open .part-summary{transform:translate3d(calc(-1 * var(--part-actions-width,108px)),0,0)}
.colour-search-results{display:grid;gap:8px;min-height:260px;padding-top:7px;overflow-y:auto}
.colour-search-results .picker-option{margin:0}
.dirty-match-refresh{width:100%;display:flex;align-items:center;gap:10px;margin:0 0 11px;padding:9px 11px;border:1px solid #8b691b;border-radius:8px;background:#302612;color:#f8dd8a;text-align:left}
.dirty-match-refresh:active{background:#443515}
.dirty-refresh-icon{width:30px;height:30px;display:grid;flex:0 0 30px;place-items:center;border-radius:50%;background:#574317;color:#ffe68a;font-size:1.25rem;line-height:1}
.dirty-match-refresh>span:last-child{display:grid;gap:1px}.dirty-match-refresh b{font-size:.76rem;font-weight:590}.dirty-match-refresh small{color:#e4ca7d;font-size:.66rem;font-weight:500}
.quantity-pass{display:flex;align-items:center;gap:9px;margin:0 0 10px;padding:8px 10px;border-radius:8px;background:#17243a;color:#cdd8e7;font-size:.7rem}
.quantity-pass .step-working-spinner{width:17px;height:17px;flex:0 0 17px}
.set-gallery,.part-photo-lightbox{opacity:1;transition:opacity .17s ease}
.gallery-dialog,.part-photo-dialog{opacity:1;transform:scale(1);transition:opacity .17s ease,transform .17s cubic-bezier(.2,.7,.3,1)}
.set-gallery.lightbox-opening,.set-gallery.lightbox-closing,.part-photo-lightbox.lightbox-opening,.part-photo-lightbox.lightbox-closing{opacity:0}
.set-gallery.lightbox-opening .gallery-dialog,.set-gallery.lightbox-closing .gallery-dialog,.part-photo-lightbox.lightbox-opening .part-photo-dialog,.part-photo-lightbox.lightbox-closing .part-photo-dialog{opacity:.72;transform:scale(.976)}
@media(max-width:390px){#cameraCard .actions{gap:8px}#cameraCard .actions>button{padding-inline:8px;font-size:.75rem}}
@media(prefers-reduced-motion:reduce){.set-gallery,.part-photo-lightbox,.gallery-dialog,.part-photo-dialog{transition:none}}

/* v2.12: editable photo-selection boxes */
.photo-layer{--inverse-photo-zoom:1;position:absolute;inset:0;transform-origin:center;will-change:transform}.photo-layer canvas{position:absolute;inset:0}.boxes{touch-action:none}.box.editable{padding:0;border-width:calc(3px * var(--inverse-photo-zoom));touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}.box.editable::after{transform:scale(var(--inverse-photo-zoom));transform-origin:center}.box.editable.selected{z-index:5;background:#ffd62924;box-shadow:0 0 0 1px #0008,0 0 0 3px #ffd62955}.box.editable.selected::after{top:5px;left:5px}.box.editable:active{cursor:grabbing}.box-handle{position:absolute;z-index:4;width:28px;height:28px;padding:0;border:3px solid #111827;border-radius:50%;background:var(--yellow);box-shadow:0 2px 7px #0009;touch-action:none}.box-handle.nw{left:0;top:0;transform:translate(-50%,-50%) scale(var(--inverse-photo-zoom));cursor:nwse-resize}.box-handle.ne{right:0;top:0;transform:translate(50%,-50%) scale(var(--inverse-photo-zoom));cursor:nesw-resize}.box-handle.sw{left:0;bottom:0;transform:translate(-50%,50%) scale(var(--inverse-photo-zoom));cursor:nesw-resize}.box-handle.se{right:0;bottom:0;transform:translate(50%,50%) scale(var(--inverse-photo-zoom));cursor:nwse-resize}.box-delete{position:absolute;z-index:6;right:calc(-18px * var(--inverse-photo-zoom));top:calc(-42px * var(--inverse-photo-zoom));width:38px;height:38px;display:grid;place-items:center;padding:0;border:2px solid #ffb0b9;border-radius:50%;background:#8f2434;color:#fff;box-shadow:0 3px 10px #000b;transform:scale(var(--inverse-photo-zoom));touch-action:manipulation}.box-delete svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.box.near-top .box-delete{top:calc(5px * var(--inverse-photo-zoom))}.box.near-right .box-delete{right:calc(5px * var(--inverse-photo-zoom))}.stage.manual-mode::after{content:'Edit boxes · pinch to zoom · drag empty space to pan'}
.stage.frozen canvas{object-fit:contain}
.photo-zoom-controls{position:absolute;z-index:8;right:8px;bottom:8px;display:none;align-items:stretch;overflow:hidden;border:1px solid #52627a;border-radius:8px;background:#101827e8;box-shadow:0 4px 14px #0009}.stage.frozen .photo-zoom-controls{display:flex}.photo-zoom-controls button{min-width:38px;height:38px;padding:0;border-radius:0;background:transparent;color:#f1f5f9;font-size:1.25rem}.photo-zoom-controls button+button{border-left:1px solid #52627a}.photo-zoom-controls button:active{background:#334158}.photo-zoom-controls button:disabled{opacity:.35;cursor:default}.photo-zoom-controls #zoomFit{min-width:54px;display:grid;place-content:center;font-size:.66rem;line-height:1.05}.photo-zoom-controls #zoomFit span,.photo-zoom-controls #zoomFit small{display:block}.photo-zoom-controls #zoomFit small{margin-top:2px;color:#aeb9c9;font-size:.55rem}
@media(max-width:390px){.box-handle{width:30px;height:30px}.box-delete{width:40px;height:40px}}

/* v2.14: near-full-screen cover editor */
#cameraCard.step-open{height:calc(100dvh - 76px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:520px;display:flex;flex-direction:column}
#cameraCard.step-open>.step-heading{flex:0 0 auto}
#cameraCard.step-open #step1Body{display:flex;flex:1;min-height:0;flex-direction:column}
#cameraCard.step-open .stage{flex:1;min-height:260px;width:100%;aspect-ratio:auto!important}
#cameraCard.step-open .actions,#cameraCard.step-open .status{flex:0 0 auto}
.photo-layer{inset:auto}
.photo-layer canvas{width:100%;height:100%;object-fit:fill!important}
@media(orientation:landscape) and (max-height:600px){#cameraCard.step-open{height:calc(100dvh - 18px - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:0}#cameraCard.step-open>.step-heading{padding-block:8px}#cameraCard.step-open .actions{padding-top:7px}#cameraCard.step-open .status{font-size:.7rem;padding-top:2px}}

/* v2.15: deliberate selection, overlap cycling and remote corner resizing */
.box.editable.selected{border-color:#38bdf8;background:#38bdf826;box-shadow:0 0 0 1px #00131dcc,0 0 0 3px #38bdf84d}
.box.editable.selected::after{background:#38bdf8;color:#06131d}
.box.editable.selected .box-handle{background:#38bdf8;border-color:#062033}
.box.editable.selected .box-handle.armed{background:#f8fafc;border-color:#38bdf8;box-shadow:0 0 0 5px #38bdf859,0 3px 12px #000b;animation:armedHandlePulse 1s ease-in-out infinite}
.stage.remote-resize-mode::after{content:'Corner armed · drag anywhere to resize'}
@keyframes armedHandlePulse{50%{box-shadow:0 0 0 8px #38bdf82e,0 3px 12px #000b}}
@media(prefers-reduced-motion:reduce){.box.editable.selected .box-handle.armed{animation:none}}

/* v2.15.1: fingertip-sized handle targets with quieter resting dots */
.box-handle{width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;box-shadow:none}
.box-handle::before{content:'';display:block;width:17px;height:17px;border:2px solid #062033;border-radius:50%;background:#38bdf8;box-shadow:0 2px 6px #0009;transition:width .11s ease,height .11s ease,background-color .11s ease,box-shadow .11s ease}
.box.editable.selected .box-handle,.box.editable.selected .box-handle.armed{border:0;background:transparent;box-shadow:none;animation:none}
.box.editable.selected .box-handle.held::before,.box.editable.selected .box-handle.armed::before{width:32px;height:32px;border-color:#38bdf8;background:#e8f7ff;box-shadow:0 0 0 5px #38bdf859,0 3px 12px #000b}
.box.editable.selected .box-handle.armed::before{animation:armedHandleDotPulse 1s ease-in-out infinite}
@keyframes armedHandleDotPulse{50%{box-shadow:0 0 0 8px #38bdf82e,0 3px 12px #000b}}
@media(prefers-reduced-motion:reduce){.box-handle::before{transition:none}.box.editable.selected .box-handle.armed::before{animation:none}}

/* v2.15.2: handles accept their full hit area; only an actively dragged dot grows */
.box.editable.selected .box-handle.armed::before{width:17px;height:17px;border-color:#38bdf8;background:#fff;box-shadow:0 0 0 3px #38bdf840,0 2px 6px #0009;animation:none}
.box.editable.selected .box-handle.held::before{width:32px;height:32px;border-color:#38bdf8;background:#e8f7ff;box-shadow:0 0 0 5px #38bdf859,0 3px 12px #000b;animation:none}

/* v2.16: two-finger viewport navigation and an unobtrusive editor toolbar */
.stage.manual-mode::after{display:none!important}
.photo-editor-toolbar{display:none;flex:0 0 auto;align-items:center;gap:8px;min-height:46px;margin-top:7px;padding:4px 5px;border-radius:8px;background:#0d1523}
.stage.frozen+.photo-editor-toolbar{display:flex}
.photo-editor-toolbar .photo-zoom-controls{position:static;z-index:auto;display:flex;flex:0 0 auto;border-radius:7px;box-shadow:none}
.selected-box-label{min-width:0;flex:1;overflow:hidden;color:#aeb9c9;font-size:.68rem;text-align:center;text-overflow:ellipsis;white-space:nowrap}
.toolbar-delete{width:40px;height:38px;display:grid;flex:0 0 40px;place-items:center;padding:0;border:1px solid #743344;border-radius:7px;background:#421d28;color:#ff9aa8}
.toolbar-delete svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.toolbar-delete:disabled{border-color:#2e394b;background:#182130;color:#64748b;cursor:default;opacity:.55}
@media(max-width:390px){.photo-editor-toolbar{gap:5px}.selected-box-label{font-size:.62rem}.photo-editor-toolbar .photo-zoom-controls button{min-width:36px}.photo-editor-toolbar .photo-zoom-controls #zoomFit{min-width:49px}}

/* v2.17: faster part editing, thumb-reachable search and quieter box chrome */
.part-summary [data-summary-picker]{cursor:pointer;outline-offset:2px}
.box-handle::before{width:11px;height:11px}
.box.editable.selected .box-handle.armed::before{width:11px;height:11px}
.box.editable.selected .box-handle.held::before{width:32px;height:32px}
.box.editable.selected.compact-number::after{top:0;left:50%;transform:translate(-50%,-125%) scale(var(--inverse-photo-zoom));transform-origin:center}
.box.editable.selected.compact-number.near-top::after{top:100%;transform:translate(-50%,25%) scale(var(--inverse-photo-zoom))}
.picker.keyboard-open .part-search-form:focus-within{position:absolute;z-index:9;left:14px;right:14px;bottom:calc(6px + env(safe-area-inset-bottom));top:auto;margin:0;padding:7px;background:#141b29;border-top:1px solid #344158;box-shadow:0 -8px 20px #07101ecc}
.picker.keyboard-open .picker-sheet:not(.colour-mode) .picker-list{padding-bottom:76px}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search:focus{position:absolute;z-index:9;left:14px;right:14px;bottom:calc(6px + env(safe-area-inset-bottom));width:auto;margin:0;box-shadow:0 -8px 20px #07101ecc,0 0 0 2px #ffd62928}
.picker.keyboard-open .picker-sheet.colour-mode .picker-list{padding-bottom:60px}
@media(prefers-reduced-motion:reduce){.part{scroll-behavior:auto}}

/* v2.18: one part/colour drawer, similar-part shortcuts and stable searches */
.picker-sheet{touch-action:pan-y;overflow:hidden;display:flex;max-height:min(78dvh,720px);flex-direction:column;background:#141b29}
.picker-head{position:static;z-index:6;flex:0 0 auto;margin:0 -14px;padding:4px 14px 10px;background:#141b29}
.picker-mode-tabs{position:sticky;z-index:4;top:48px;display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:0 0 9px;padding:4px;border-radius:8px;background:#202a3c}
.picker-mode-tabs button{padding:8px 10px;border-radius:6px;background:transparent;color:#aeb9c9;font-size:.78rem}
.picker-mode-tabs button.active{background:#ffd629;color:#111827}
.picker-mode-tabs,.picker-sheet.colour-mode .picker-mode-tabs{position:static;z-index:6;flex:0 0 auto}
.picker-list{min-width:0;min-height:0;flex:1;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;will-change:auto}
.picker-sheet:not(.colour-mode) .part-search-form{position:sticky;top:0;z-index:7;margin-top:0;padding-top:4px;background:#141b29;box-shadow:0 7px 10px #141b29}
.part-picker-option{grid-template-columns:64px minmax(0,1fr) auto}
.picker-trailing{display:grid;justify-items:end;gap:5px;min-width:42px}
.similar-part-search{width:34px;height:34px;display:grid;place-items:center;border-radius:7px;background:#253047;color:#dce6f4}
.similar-part-search:active{background:#3a4962;color:#fff}
.similar-part-search svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.part-controls.quantity-only{display:flex;height:auto;justify-content:flex-end}
.part-controls.quantity-only .quantity-block{height:auto}
.picker.keyboard-open .part-search-form:focus-within{position:fixed;z-index:70;left:50%;right:auto;top:auto;width:min(calc(100% - 28px),592px);bottom:calc(var(--keyboard-offset,0px) + 6px + env(safe-area-inset-bottom));transform:translateX(-50%);margin:0}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search:focus{position:fixed;z-index:70;left:50%;right:auto;top:auto!important;bottom:calc(var(--keyboard-offset,0px) + 6px + env(safe-area-inset-bottom));width:min(calc(100% - 28px),592px);height:46px!important;min-height:46px!important;max-height:46px!important;flex:none!important;transform:translateX(-50%);margin:0;padding:10px 12px}
#cameraCard.step-open{height:var(--camera-card-height,calc(100svh - 142px - env(safe-area-inset-top) - env(safe-area-inset-bottom)))}
@media(max-width:390px){.part-picker-option{grid-template-columns:58px minmax(0,1fr) auto}.picker-trailing .confidence{max-width:74px;text-align:right}.similar-part-search{width:32px;height:32px}}

/* v2.18.2: stable editor height and one keyboard-aware drawer coordinate system */
#cameraCard.step-open .status{height:36px;min-height:36px;display:grid;place-items:center;overflow:hidden;padding-top:4px}
.picker-sheet,.picker-sheet.colour-mode{height:min(88svh,780px)!important;max-height:calc(100svh - 4px)!important}
.picker-list{touch-action:pan-y}
.picker.keyboard-open .picker-sheet,.picker.keyboard-open .picker-sheet.colour-mode{height:calc(100% - 4px)!important;max-height:calc(100% - 4px)!important}
.picker.keyboard-open .part-search-form:focus-within{position:fixed;z-index:70;left:50%;right:auto;top:calc(var(--keyboard-top) - 62px);bottom:auto;width:min(calc(100% - 28px),592px);transform:translateX(-50%);margin:0;padding:7px;background:#141b29;border-top:1px solid #344158;box-shadow:0 -8px 20px #07101ecc}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search:focus{position:fixed;z-index:70;left:50%;right:auto;top:calc(var(--keyboard-top) - 52px)!important;bottom:auto;width:min(calc(100% - 28px),592px);height:46px!important;min-height:46px!important;max-height:46px!important;transform:translateX(-50%);margin:0;padding:10px 12px;background:#202a3c;box-shadow:0 -8px 20px #07101ecc,0 0 0 2px #ffd62928}

/* v2.18.4: keep the keyboard search layer stable while its result list scrolls */
.picker.keyboard-open .part-search-form:focus-within,.picker.keyboard-open .picker-sheet.colour-mode .colour-search:focus{-webkit-backface-visibility:hidden;backface-visibility:hidden;will-change:transform;transform:translate3d(-50%,0,0);isolation:isolate}

/* v2.18.5: dock search outside the scroller and remove delayed Android tap paint */
html,*{-webkit-tap-highlight-color:transparent}
.picker-keyboard-dock{display:none}
.picker-keyboard-dock.active{position:fixed;z-index:80;left:50%;display:block;width:min(calc(100% - 28px),592px);transform:translate3d(-50%,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden;isolation:isolate}
.picker-keyboard-dock.part{top:calc(var(--keyboard-top,100svh) - 62px)}
.picker-keyboard-dock.colour{top:calc(var(--keyboard-top,100svh) - 52px)}
#pickerKeyboardDock .part-search-form{position:static!important;display:grid!important;width:100%!important;transform:none!important;margin:0!important;padding:7px!important;background:#141b29!important;border-top:1px solid #344158;box-shadow:0 -8px 20px #07101ecc}
#pickerKeyboardDock .colour-search{position:static!important;display:block!important;width:100%!important;height:46px!important;min-height:46px!important;max-height:46px!important;transform:none!important;margin:0!important;padding:10px 12px!important;background:#202a3c!important;box-shadow:0 -8px 20px #07101ecc,0 0 0 2px #ffd62928}
.picker-search-placeholder{flex:0 0 auto;width:100%;visibility:hidden;pointer-events:none}
.part-search-results{transition:opacity .16s ease}
.part-search-results.refreshing{opacity:.64;pointer-events:none}
.colour-loading-skeleton{display:grid;gap:9px;padding:8px 2px}
.colour-loading-skeleton i{display:block;height:82px;border-radius:8px;background:linear-gradient(100deg,#111a29 25%,#202c3f 42%,#111a29 60%);background-size:240% 100%;animation:colourSkeleton 1.15s ease-in-out infinite}
.colour-load-note{margin:0;padding:3px 2px 6px}
@keyframes colourSkeleton{to{background-position:-140% 0}}
@media(prefers-reduced-motion:reduce){.colour-loading-skeleton i{animation:none}}

/* v2.18.6: swipe-linked mode highlight, reliable clear controls and keyboard docking */
.picker-mode-tabs{position:relative!important;isolation:isolate}
.picker-mode-highlight{position:absolute;z-index:0;top:4px;bottom:4px;left:0;width:0;border-radius:6px;background:var(--yellow);pointer-events:none;will-change:transform,width}
.picker-mode-tabs button{position:relative;z-index:1;background:transparent!important;transition:color .12s ease}
.picker-mode-tabs button.active{background:transparent!important;color:#111827}
.picker-search-field{position:relative;display:block;min-width:0;width:100%}
.picker-search-field .colour-search{padding-right:44px}
.colour-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none}
.picker-search-clear,.part-search-form .picker-search-clear{position:absolute;z-index:3;right:6px;top:50%;width:32px;min-width:32px;height:32px;min-height:32px;display:grid;place-items:center;transform:translateY(-50%);margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:#aeb9c9;font-size:1.35rem;font-weight:430;line-height:1}
.picker-search-clear:active,.part-search-form .picker-search-clear:active{background:#344158;color:#fff}
.colour-search-wrap{position:sticky;top:48px;z-index:7;width:100%;background:#141b29}
.colour-search-wrap .colour-search{position:static!important;top:auto!important}
#pickerKeyboardDock .colour-search-wrap{position:static!important;width:100%!important;margin:0!important;background:transparent!important}
#pickerKeyboardDock .colour-search-wrap .colour-search{padding-right:44px!important}
.stage.manual-mode{box-shadow:none!important}
.stage.manual-mode::before{content:'';position:absolute;z-index:30;inset:1px;border:2px solid var(--yellow);border-radius:7px;pointer-events:none;box-shadow:inset 0 0 0 1px #11182766}
@media(prefers-reduced-motion:reduce){.picker-mode-tabs button{transition:none}}

/* v2.18.7: keep mode tabs in normal layout flow; keep focused searches in the same DOM node on Android */
.picker-mode-tabs{position:relative!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;z-index:10!important;flex:0 0 auto;align-self:stretch;transform:none!important}
.colour-search-wrap{top:0!important}
.picker-keyboard-dock,.picker-keyboard-dock.active{display:none!important}
.picker.keyboard-open .picker-sheet:not(.colour-mode) .part-search-form:focus-within{position:fixed!important;z-index:80!important;left:50%!important;right:auto!important;top:calc(var(--keyboard-top,100svh) - 62px)!important;bottom:auto!important;width:min(calc(100% - 28px),592px)!important;transform:translate3d(-50%,0,0)!important;margin:0!important;padding:7px!important;background:#141b29!important;border-top:1px solid #344158!important;box-shadow:0 -8px 20px #07101ecc!important}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search-wrap:focus-within{position:fixed!important;z-index:80!important;left:50%!important;right:auto!important;top:calc(var(--keyboard-top,100svh) - 52px)!important;bottom:auto!important;width:min(calc(100% - 28px),592px)!important;transform:translate3d(-50%,0,0)!important;margin:0!important;background:#141b29!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;isolation:isolate}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search-wrap:focus-within .colour-search{position:static!important;display:block!important;width:100%!important;height:46px!important;min-height:46px!important;max-height:46px!important;transform:none!important;margin:0!important;padding:10px 44px 10px 12px!important;background:#202a3c!important;box-shadow:0 -8px 20px #07101ecc,0 0 0 2px #ffd62928!important}
.picker.keyboard-open .picker-sheet.colour-mode .colour-search-wrap:focus-within .picker-search-clear{position:absolute!important;right:6px!important;top:50%!important;transform:translateY(-50%)!important}
