:root{--ap-bg:#f5f6f8;--ap-text:#18212f;--ap-muted:#667085;--ap-card:#fff;--ap-border:#e5e7eb;--ap-accent:#111827;--ap-success:#067647;--ap-danger:#b42318;--ap-warning:#9a6700}*{box-sizing:border-box}body{font-family:Inter,Arial,sans-serif;margin:0;line-height:1.5}a{color:inherit}.app-body{background:var(--ap-bg);color:var(--ap-text)}.container-fluid{width:100%;max-width:1440px;margin-inline:auto;padding-inline:1rem}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}.p-4{padding:1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.mt-3{margin-top:1rem}.mt-4{margin-top:1.5rem}.me-auto{margin-right:auto}.m-0{margin:0}.small{font-size:.875rem}.h3{font-size:1.75rem;line-height:1.2}.h5{font-size:1.15rem;line-height:1.3}.display-6{font-size:2.25rem}.fw-semibold{font-weight:650}.fw-bold{font-weight:700}.text-secondary{color:var(--ap-muted)}.text-center{text-align:center}.d-flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.justify-content-between{justify-content:space-between}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.w-100{width:100%}.row{display:flex;flex-wrap:wrap;margin-inline:-.5rem}.row>*{padding-inline:.5rem}.g-2{gap:.5rem 0}.g-3{gap:1rem 0}.col-12{width:100%}.col-lg-5,.col-lg-7,.col-md-3,.col-md-6,.col-md-9,.col-xl-3{width:100%}@media(min-width:768px){.col-md-3{width:25%}.col-md-6{width:50%}.col-md-9{width:75%}}@media(min-width:992px){.col-lg-5{width:41.666%}.col-lg-7{width:58.333%}}@media(min-width:1200px){.col-xl-3{width:25%}}.app-navbar{background:rgba(255,255,255,.94);backdrop-filter:blur(12px);position:sticky;top:0;z-index:20;border-bottom:1px solid var(--ap-border)}.navbar>.container-fluid{display:flex;align-items:center;gap:1rem;padding-block:.75rem}.navbar-brand{font-size:1.1rem;text-decoration:none}.navbar-collapse{display:flex;align-items:center;gap:1rem;flex:1}.navbar-nav{display:flex;align-items:center;gap:.25rem;list-style:none;padding:0;margin:0}.nav-link{display:block;padding:.5rem .7rem;color:#334155;text-decoration:none;border-radius:.7rem}.nav-link:hover{background:#eef2f7;color:#111827}.navbar-toggler{display:none}.border-bottom{border-bottom:1px solid var(--ap-border)}.sticky-top{position:sticky;top:0}.card{background:var(--ap-card);border:1px solid var(--ap-border);border-radius:1rem;overflow:hidden}.card-body{padding:1.25rem}.card-header{padding:1rem 1.25rem;border-bottom:1px solid var(--ap-border)}.bg-white{background:#fff}.stat-card{border:0;box-shadow:0 .5rem 1.5rem rgba(16,24,40,.06)}.table-responsive{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:.75rem;border-bottom:1px solid var(--ap-border);vertical-align:middle;text-align:left}.table-sm th,.table-sm td{padding:.45rem}.table th{font-size:.78rem;text-transform:uppercase;letter-spacing:.035em;color:var(--ap-muted);font-weight:700;background:#fafafa}.align-middle td,.align-middle th{vertical-align:middle}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid transparent;border-radius:.75rem;padding:.55rem .9rem;font-weight:650;text-decoration:none;cursor:pointer;background:#fff;color:#111827;white-space:nowrap}.btn-sm{padding:.35rem .6rem;font-size:.875rem;border-radius:.6rem}.btn-lg{padding:.8rem 1.1rem;font-size:1.05rem}.btn-dark{background:#111827;color:#fff;border-color:#111827}.btn-success{background:#067647;color:#fff;border-color:#067647}.btn-outline-dark{border-color:#111827;color:#111827;background:#fff}.btn-outline-secondary{border-color:#cbd5e1;color:#334155;background:#fff}.btn-outline-secondary.active{background:#111827;color:#fff;border-color:#111827}.btn-group{display:inline-flex}.btn-group .btn{border-radius:0}.btn-group .btn:first-child{border-top-left-radius:.65rem;border-bottom-left-radius:.65rem}.btn-group .btn:last-child{border-top-right-radius:.65rem;border-bottom-right-radius:.65rem}.form-label{display:block;margin-bottom:.4rem;font-weight:650}.form-control,.form-select{width:100%;display:block;border:1px solid #cbd5e1;border-radius:.75rem;padding:.7rem .85rem;background:#fff;color:#111827;font:inherit}.form-control-sm{padding:.35rem .55rem;border-radius:.55rem;font-size:.875rem}.form-control-lg,.form-select-lg{padding:.85rem 1rem;font-size:1.05rem}.alert{padding:1rem 1.1rem;border-radius:.9rem;border:1px solid transparent;margin-bottom:1rem}.alert-danger{background:#fef3f2;border-color:#fecdca;color:#b42318}.alert-success{background:#ecfdf3;border-color:#abefc6;color:#067647}.alert-info{background:#eff8ff;border-color:#b2ddff;color:#175cd3}.alert-warning{background:#fffaeb;border-color:#fedf89;color:#93370d}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:.25rem .55rem;font-weight:700;font-size:.78rem}.text-bg-light{background:#f1f5f9;color:#334155}.text-bg-warning{background:#fffaeb;color:#9a6700}.text-bg-danger{background:#fef3f2;color:#b42318}.login-body{min-height:100vh;margin:0;overflow-x:hidden;background:#0b1411;color:#fff}.login-bg{position:fixed;inset:0;background-image:linear-gradient(90deg,rgba(5,12,10,.86),rgba(5,12,10,.56),rgba(5,12,10,.18)),url('../images/login-bg-16x10.webp');background-size:cover;background-position:center;aspect-ratio:16/10;transform:scale(1.01)}.login-shell{position:relative;z-index:1;min-height:100vh;display:flex;align-items:center;padding:clamp(1.5rem,4vw,4rem)}.login-card{width:min(100%,29rem);padding:clamp(1.5rem,3vw,2.25rem);border-radius:1.5rem;background:rgba(255,255,255,.88);color:#141c18;backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.46)}.shadow-lg{box-shadow:0 1.25rem 3.5rem rgba(0,0,0,.25)}.login-logo{display:grid;place-items:center;width:3.25rem;height:3.25rem;border-radius:1rem;background:#111827;color:#fff;font-weight:800;letter-spacing:.06em}.login-card .form-control{background:rgba(255,255,255,.76);border-color:rgba(17,24,39,.14)}.login-card .link-light-emphasis{color:#2b4036!important;text-decoration:none}@media(max-width:768px){.navbar>.container-fluid,.navbar-collapse,.navbar-nav{align-items:flex-start;flex-direction:column}.navbar-collapse{gap:.5rem}.login-bg{background-position:center}.login-shell{align-items:flex-end}.login-card{border-radius:1.25rem}}
.btn-outline-danger{border-color:#d92d20;color:#b42318;background:#fff}.btn-outline-danger:hover{background:#fef3f2}.btn:disabled{opacity:.55;cursor:not-allowed}.justify-content-end{justify-content:flex-end}.bulk-bar{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--ap-border);background:#fff;position:sticky;top:3.75rem;z-index:10}.bulk-comment{max-width:28rem}.flags-table-wrap{max-height:70vh;overflow:auto}.flags-table{min-width:1180px}.flags-table thead th{position:sticky;top:0;z-index:7;background:#f8fafc}.flag-check{width:2.75rem;text-align:center!important}.flag-row.is-open{background:#fff}.flag-row.is-closed{background:#fcfcfd;color:#667085}.flag-row.flag-error,.flag-row.flag-critical{box-shadow:inset .25rem 0 0 #d92d20}.flag-row.flag-warning{box-shadow:inset .25rem 0 0 #fdb022}.flag-type{min-width:14rem}.flag-sku{font-weight:700;min-width:9rem}.flag-variation{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;max-width:16rem;overflow-wrap:anywhere}.flag-actions-col{min-width:22rem}.flag-actions{display:grid;grid-template-columns:minmax(8rem,1fr) auto auto;gap:.35rem;align-items:center}.flag-details-row td{background:#fffcf5;border-top:0}.flag-details{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;color:#7a2e0e}.text-bg-info{background:#eff8ff;color:#175cd3}@media(max-width:900px){.bulk-bar{position:static;align-items:stretch;flex-direction:column}.bulk-comment{max-width:100%}.flag-actions{grid-template-columns:1fr}.flag-actions-col{min-width:15rem}}
/* v3 review table refinements */
.card.review-card{overflow:visible}.review-card .bulk-bar{border-top-left-radius:1rem;border-top-right-radius:1rem}.flags-table-wrap{max-height:none;overflow-x:auto;overflow-y:visible}.flags-table{min-width:1320px;table-layout:auto}.flags-table thead th{white-space:nowrap}.flags-table td{vertical-align:top}.flag-type{min-width:15rem}.flag-sku{min-width:12rem}.flag-values{min-width:14rem;white-space:normal}.flag-source{min-width:20rem;white-space:normal}.flag-source code{white-space:normal;overflow-wrap:anywhere}.flag-actions-col{min-width:24rem}.flag-details-row td{padding:.7rem 1rem;background:#fff7ed}.flag-details{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;color:#7a2e0e}.prepared-preview-table{min-width:1050px}.prepared-preview-table th,.prepared-preview-table td{white-space:nowrap}.text-bg-info{background:#eff8ff;color:#175cd3}.py-4{padding-top:1.5rem;padding-bottom:1.5rem}@media(max-width:900px){.flags-table{min-width:1180px}.flag-actions-col{min-width:18rem}.flag-actions{grid-template-columns:1fr}.flag-values,.flag-source{min-width:13rem}}
/* v5 grouped review UI */
.approved-base-card{border-color:#d0d5dd;background:linear-gradient(180deg,#fff,#f8fafc)}.select-all-inline{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;color:#334155}.grouped-review-card{overflow:visible}.flag-group-list{padding:1rem;display:grid;gap:1rem}.flag-group-card{border:1px solid var(--ap-border);border-radius:1rem;overflow:hidden;background:#fff;box-shadow:0 .4rem 1.2rem rgba(16,24,40,.04)}.flag-group-card.has-errors{border-left:.3rem solid #d92d20}.flag-group-card.has-warnings{border-left:.3rem solid #fdb022}.flag-group-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;padding:1rem 1.1rem;background:#f8fafc;border-bottom:1px solid var(--ap-border)}.flag-group-main{display:flex;gap:.75rem;align-items:flex-start;min-width:0}.flag-group-title{font-size:1.05rem;font-weight:800;display:flex;gap:.45rem;align-items:center;flex-wrap:wrap}.flag-group-title a{color:#111827;text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.16em}.flag-group-title span{color:#667085;font-weight:650}.flag-group-meta{display:flex;gap:.6rem;flex-wrap:wrap;color:#667085;font-size:.875rem;margin-top:.2rem}.flag-group-badges{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.flag-combination-list{display:grid}.flag-combo-row{display:grid;grid-template-columns:2rem minmax(13rem,1.1fr) minmax(10rem,.9fr) minmax(12rem,1fr) minmax(16rem,1.25fr) 5.5rem minmax(20rem,1.2fr);gap:.75rem;align-items:start;padding:.85rem 1rem;border-bottom:1px solid var(--ap-border)}.flag-combo-row:last-child{border-bottom:0}.flag-combo-row.is-closed{background:#fcfcfd;color:#667085}.flag-combo-row.flag-error,.flag-combo-row.flag-critical{background:linear-gradient(90deg,#fff5f5,#fff)}.flag-combo-row.flag-warning{background:linear-gradient(90deg,#fffaf0,#fff)}.flag-combo-check{padding-top:.25rem}.flag-combo-info,.flag-combo-values,.flag-combo-source,.flag-combo-sku,.flag-combo-status,.flag-combo-actions{min-width:0}.flag-combo-variation{font-weight:800;color:#111827;word-break:break-word}.flag-combo-source code{white-space:normal;overflow-wrap:anywhere}.flag-combo-actions{display:grid;grid-template-columns:minmax(8rem,1fr) auto auto;gap:.35rem;align-items:center}.mt-1{margin-top:.25rem}@media(max-width:1200px){.flag-combo-row{grid-template-columns:2rem minmax(12rem,1fr) minmax(10rem,1fr) minmax(12rem,1fr);}.flag-combo-status{grid-column:auto}.flag-combo-actions{grid-column:2 / -1}}@media(max-width:760px){.flag-group-header{flex-direction:column}.flag-group-badges{justify-content:flex-start}.flag-combo-row{grid-template-columns:1.5rem 1fr}.flag-combo-info,.flag-combo-sku,.flag-combo-values,.flag-combo-source,.flag-combo-status,.flag-combo-actions{grid-column:2}.flag-combo-actions{grid-template-columns:1fr}.flag-group-list{padding:.5rem}.bulk-bar{position:static}}
.text-bg-success{background:#ecfdf3;color:#067647}.text-bg-secondary{background:#eef2f7;color:#334155}.btn-outline-primary{border-color:#175cd3;color:#175cd3;background:#fff}.btn-outline-primary:hover{background:#eff8ff}
/* v6 price correction, change highlighting and export UI */
.flag-group-header-v6{display:grid;grid-template-columns:minmax(18rem,1fr) minmax(22rem,.8fr);align-items:start}.flag-group-tools{display:grid;gap:.65rem;justify-items:end}.price-override-box{width:min(100%,28rem);padding:.55rem;border:1px solid #dbe4ef;border-radius:.85rem;background:#fff}.price-override-box.needs-price{border-color:#fdb022;background:#fffbeb}.input-group{display:flex;width:100%;align-items:stretch}.input-group>.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.change-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.16rem .45rem;font-size:.78rem;font-weight:750;margin-top:.25rem}.qty-change{background:#eff8ff;color:#175cd3}.price-change{background:#fff1f3;color:#c01048}.preserved-price{background:#eef2f7;color:#334155}.flag-combo-row.status-ignored{opacity:.72;background:#f8fafc}.flag-combo-row.status-fixed{background:#f6fef9}.flag-combo-row.status-approved{background:#fff}.prepared-preview-table tr.has-qty-change td{background:#f8fbff}.prepared-preview-table tr.has-price-change td{background:#fffafa}.prepared-preview-table tr.has-preserved-price td{background:#f8fafc}.static-export-path{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;overflow-wrap:anywhere}@media(max-width:1100px){.flag-group-header-v6{grid-template-columns:1fr}.flag-group-tools{justify-items:stretch}.flag-group-badges{justify-content:flex-start}.price-override-box{width:100%}}
/* v7 night mode, product diff and statistics */
.app-body[data-theme="dark"]{--ap-bg:#0b1220;--ap-text:#e5e7eb;--ap-muted:#94a3b8;--ap-card:#111827;--ap-border:#263244;--ap-accent:#f8fafc;background:var(--ap-bg);color:var(--ap-text)}
.app-body[data-theme="dark"] .app-navbar{background:rgba(15,23,42,.94);border-color:var(--ap-border)}
.app-body[data-theme="dark"] .nav-link{color:#cbd5e1}.app-body[data-theme="dark"] .nav-link:hover{background:#1f2937;color:#fff}
.app-body[data-theme="dark"] .table th{background:#0f172a;color:#cbd5e1}.app-body[data-theme="dark"] .table td{border-color:var(--ap-border)}
.app-body[data-theme="dark"] .bg-white,.app-body[data-theme="dark"] .bulk-bar,.app-body[data-theme="dark"] .flag-group-card,.app-body[data-theme="dark"] .price-override-box{background:var(--ap-card)!important;color:var(--ap-text)}
.app-body[data-theme="dark"] .form-control,.app-body[data-theme="dark"] .form-select{background:#0f172a;border-color:#334155;color:#e5e7eb}.app-body[data-theme="dark"] .form-control::placeholder{color:#64748b}
.app-body[data-theme="dark"] .btn-outline-secondary,.app-body[data-theme="dark"] .btn-outline-dark,.app-body[data-theme="dark"] .btn-outline-primary{background:#111827;color:#e5e7eb;border-color:#475569}.app-body[data-theme="dark"] .btn-outline-secondary.active{background:#e5e7eb;color:#111827}
.app-body[data-theme="dark"] .flag-group-header,.app-body[data-theme="dark"] .flag-combo-row.is-closed,.app-body[data-theme="dark"] .card-header{background:#0f172a!important}
.app-body[data-theme="dark"] .flag-combo-row.flag-warning{background:linear-gradient(90deg,rgba(154,103,0,.18),transparent)}.app-body[data-theme="dark"] .flag-combo-row.flag-error,.app-body[data-theme="dark"] .flag-combo-row.flag-critical{background:linear-gradient(90deg,rgba(180,35,24,.18),transparent)}
.theme-toggle{min-width:2.35rem;font-weight:800}.diff-card{overflow:visible}.diff-group-list{display:grid;gap:.65rem;padding:1rem}.diff-group{border:1px solid var(--ap-border);border-radius:1rem;background:var(--ap-card);overflow:hidden}.diff-group[open]{box-shadow:0 .45rem 1.2rem rgba(16,24,40,.05)}.diff-group summary{cursor:pointer;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.85rem 1rem;font-weight:700}.diff-sku{min-width:12rem}.diff-sku a{font-weight:850;text-decoration:underline;text-underline-offset:.14em}.diff-table tr.will-zero td{background:#fff5f5}.app-body[data-theme="dark"] .diff-table tr.will-zero td{background:rgba(180,35,24,.13)}.change-indicator{display:inline-flex;align-items:center;gap:.2rem;border-radius:999px;padding:.16rem .46rem;margin-left:.35rem;font-size:.8rem;font-weight:850}.change-indicator.is-up{background:#ecfdf3;color:#067647}.change-indicator.is-down{background:#fef3f2;color:#b42318}.change-indicator.is-flat{background:#f1f5f9;color:#475467}.fixed-price{background:#ecfdf3;color:#067647}.app-body[data-theme="dark"] .change-indicator.is-up{background:rgba(6,118,71,.22);color:#86efac}.app-body[data-theme="dark"] .change-indicator.is-down{background:rgba(180,35,24,.22);color:#fca5a5}.app-body[data-theme="dark"] .change-indicator.is-flat{background:#1e293b;color:#cbd5e1}
.ap-chart{min-height:320px;width:100%;overflow-x:auto}.ap-chart svg{width:100%;min-width:760px;height:320px;display:block}.chart-axis{stroke:#cbd5e1;stroke-width:1}.chart-line{fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.chart-line-0{stroke:#175cd3}.chart-line-1{stroke:#067647}.chart-line-2{stroke:#b54708}.chart-line-3{stroke:#c01048}.chart-line-4{stroke:#6941c6}.chart-line-5{stroke:#0e9384}.chart-dot{cursor:pointer;stroke:#fff;stroke-width:2}.chart-dot-0{fill:#175cd3}.chart-dot-1{fill:#067647}.chart-dot-2{fill:#b54708}.chart-dot-3{fill:#c01048}.chart-dot-4{fill:#6941c6}.chart-dot-5{fill:#0e9384}.chart-dot:hover{r:8}.chart-label{font-size:12px;fill:var(--ap-muted)}.chart-legend{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.75rem;color:var(--ap-muted)}.chart-legend span{display:inline-flex;gap:.35rem;align-items:center}.legend-dot{width:.7rem;height:.7rem;border-radius:999px;display:inline-block}.legend-0{background:#175cd3}.legend-1{background:#067647}.legend-2{background:#b54708}.legend-3{background:#c01048}.legend-4{background:#6941c6}.legend-5{background:#0e9384}.stat-chart-card{overflow:visible}.me-1{margin-right:.25rem}
.app-body[data-theme="dark"] .chart-axis{stroke:#334155}.app-body[data-theme="dark"] .chart-dot{stroke:#0f172a}.app-body[data-theme="dark"] .text-bg-light{background:#1e293b;color:#cbd5e1}.app-body[data-theme="dark"] .text-bg-info{background:rgba(23,92,211,.22);color:#93c5fd}.app-body[data-theme="dark"] .text-bg-warning{background:rgba(154,103,0,.22);color:#fbbf24}.app-body[data-theme="dark"] .text-bg-danger{background:rgba(180,35,24,.22);color:#fca5a5}.app-body[data-theme="dark"] .text-bg-success{background:rgba(6,118,71,.22);color:#86efac}
@media(max-width:768px){.diff-group summary{align-items:flex-start}.diff-sku{min-width:100%}.display-6{font-size:1.4rem}}

/* v8 login wood tetris */
.login-shell-game{display:grid;grid-template-columns:minmax(20rem,29rem) minmax(22rem,42rem);align-items:center;justify-content:space-between;gap:clamp(1.5rem,5vw,5rem)}
.login-tetris{width:min(100%,42rem);justify-self:end;border:1px solid rgba(255,255,255,.22);border-radius:1.5rem;padding:1rem;background:linear-gradient(135deg,rgba(6,12,10,.42),rgba(6,12,10,.18));box-shadow:0 1.25rem 4rem rgba(0,0,0,.33);backdrop-filter:blur(9px);color:#f8fafc}
.login-tetris__header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.85rem}
.login-tetris__eyebrow{display:inline-flex;align-items:center;border-radius:999px;padding:.2rem .55rem;background:rgba(255,255,255,.12);color:#d8e5dd;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.login-tetris h2{margin:.45rem 0 0;font-size:clamp(1.25rem,2vw,2rem);line-height:1.05;text-shadow:0 .15rem .6rem rgba(0,0,0,.35)}
.login-tetris__body{display:grid;grid-template-columns:minmax(15rem,15rem) minmax(12rem,1fr);gap:1rem;align-items:start}
.login-tetris canvas{width:240px;height:480px;max-width:100%;border-radius:1rem;border:1px solid rgba(255,255,255,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),0 .75rem 2rem rgba(0,0,0,.28);background:#0f172a}
.login-tetris__side{display:grid;gap:.75rem;min-width:0}
.login-tetris__stat{display:flex;justify-content:space-between;gap:.75rem;align-items:center;padding:.7rem .8rem;border-radius:.95rem;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.16)}
.login-tetris__stat span{color:#d3ded8;font-size:.86rem}.login-tetris__stat strong{font-size:1.15rem;color:#fff}
.login-tetris__controls{display:grid;gap:.28rem;padding:.85rem;border-radius:.95rem;background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.12);color:#e5e7eb;font-size:.86rem}
.login-tetris__controls strong{color:#fff;margin-bottom:.1rem}.login-tetris__button{display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.28);border-radius:.85rem;background:rgba(255,255,255,.14);color:#fff;font-weight:800;padding:.55rem .8rem;cursor:pointer;white-space:nowrap}.login-tetris__button:hover{background:rgba(255,255,255,.22)}.login-tetris__button--ghost{width:100%;background:rgba(0,0,0,.18)}
@media(max-width:1100px){.login-shell-game{grid-template-columns:minmax(20rem,29rem);justify-content:start}.login-tetris{display:none}}
@media(min-width:1500px){.login-shell-game{padding-inline:clamp(2rem,6vw,8rem)}}

/* v9 warmer login tetris layout */
.login-shell-game{grid-template-columns:minmax(22rem,30rem) minmax(28rem,46rem);justify-content:start;gap:clamp(4rem,8vw,9rem);padding-inline:clamp(1.25rem,5vw,5.5rem);}
.login-card{box-shadow:0 1.25rem 3.5rem rgba(0,0,0,.28),0 0 0 1px rgba(255,255,255,.22);}
.login-tetris--warm{justify-self:start;width:min(100%,46rem);padding:1.25rem;border-radius:1.75rem;border:1px solid rgba(255,236,203,.28);background:linear-gradient(140deg,rgba(51,31,18,.55),rgba(13,23,19,.40) 52%,rgba(7,16,13,.28));box-shadow:0 1.4rem 4.5rem rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.14);backdrop-filter:blur(12px);}
.login-tetris--warm:before{content:"";display:block;height:3px;width:100%;border-radius:999px;margin-bottom:1rem;background:linear-gradient(90deg,rgba(220,164,88,.15),rgba(244,202,135,.88),rgba(220,164,88,.15));}
.login-tetris__header{margin-bottom:1rem;align-items:center;}
.login-tetris__eyebrow{background:rgba(244,202,135,.16);color:#f8d9aa;border:1px solid rgba(244,202,135,.24);text-transform:none;letter-spacing:.04em;padding:.34rem .72rem;}
.login-tetris h2{font-size:clamp(1.55rem,2.3vw,2.35rem);margin:.5rem 0 .25rem;color:#fff7ed;text-shadow:0 .2rem .75rem rgba(0,0,0,.44);}
.login-tetris__header p{margin:0;color:#e8d2b4;font-size:.95rem;max-width:31rem;}
.login-tetris__button{border-radius:999px;padding:.68rem 1.05rem;background:linear-gradient(180deg,#d69a54,#9b5c27);border:1px solid rgba(255,222,171,.48);color:#fff7ed;box-shadow:0 .45rem 1.2rem rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.22);}
.login-tetris__button:hover{background:linear-gradient(180deg,#e7ac64,#a7642e);transform:translateY(-1px)}
.login-tetris__button--pause{min-width:7.25rem;}
.login-tetris__button--ghost{width:100%;background:rgba(255,255,255,.10);border-color:rgba(255,232,198,.25);color:#fff4e5;box-shadow:none;}
.login-tetris__button--ghost:hover{background:rgba(244,202,135,.18)}
.login-tetris__body{grid-template-columns:minmax(18.75rem,18.75rem) minmax(14rem,1fr);gap:1.25rem;}
.login-tetris__board-wrap{padding:.65rem;border-radius:1.35rem;background:linear-gradient(180deg,rgba(255,244,229,.14),rgba(0,0,0,.08));border:1px solid rgba(255,235,205,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
.login-tetris canvas{width:300px;height:600px;border-radius:1.05rem;border:1px solid rgba(255,235,205,.23);background:#101913;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),0 .9rem 2.4rem rgba(0,0,0,.32);}
.login-tetris__side{align-content:start;gap:.9rem;}
.login-tetris__stats-grid{display:grid;grid-template-columns:1fr;gap:.65rem;}
.login-tetris__stat{padding:.85rem .95rem;background:linear-gradient(180deg,rgba(255,250,240,.14),rgba(255,255,255,.08));border-color:rgba(255,237,213,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);}
.login-tetris__stat span{color:#f0dcc0;font-weight:650}.login-tetris__stat strong{color:#fff7ed;font-size:1.35rem;}
.login-tetris__controls{gap:.48rem;padding:1rem;background:rgba(3,8,6,.24);border-color:rgba(255,235,205,.16);color:#f6ead7;}
.login-tetris__controls strong{color:#fff7ed}.login-tetris__controls span{display:flex;align-items:center;gap:.38rem;flex-wrap:wrap}.login-tetris__controls kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.65rem;height:1.65rem;padding:0 .48rem;border-radius:.55rem;background:rgba(255,244,229,.13);border:1px solid rgba(255,235,205,.22);color:#ffe8c2;font:800 .78rem/1 Inter,Arial,sans-serif;box-shadow:0 .12rem .2rem rgba(0,0,0,.2)}
@media(max-width:1240px){.login-shell-game{gap:clamp(2.5rem,5vw,4rem);grid-template-columns:minmax(21rem,29rem) minmax(24rem,38rem)}.login-tetris__body{grid-template-columns:minmax(16.25rem,16.25rem) minmax(12rem,1fr)}.login-tetris canvas{width:260px;height:520px}.login-tetris__board-wrap{width:max-content}.login-tetris--warm{width:min(100%,38rem)}}
@media(max-width:1100px){.login-shell-game{grid-template-columns:minmax(20rem,30rem);justify-content:start}.login-tetris{display:none}}
@media(min-width:1500px){.login-shell-game{padding-inline:clamp(3rem,7vw,9rem);gap:clamp(5rem,9vw,11rem)}}

/* v10 tetris local record card */
.login-tetris__record{display:grid;gap:.55rem;padding:1rem;border-radius:1rem;background:linear-gradient(135deg,rgba(214,154,84,.22),rgba(255,244,229,.08));border:1px solid rgba(255,226,176,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.10);color:#fff4e5;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.login-tetris__record.is-new-record{transform:translateY(-2px);border-color:rgba(255,214,143,.75);box-shadow:0 .65rem 1.8rem rgba(188,115,43,.25),inset 0 1px 0 rgba(255,255,255,.16)}
.login-tetris__record-top{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.login-tetris__record-top span{font-weight:800;color:#f5d3a4}
.login-tetris__record-top strong{font-size:1.5rem;line-height:1;color:#fff7ed;text-shadow:0 .12rem .5rem rgba(0,0,0,.35)}
.login-tetris__record-date{font-size:.9rem;color:#e8d2b4}
/* v12 help modal and import summary cards */
.btn-help{width:2.25rem;height:2.25rem;border-radius:.75rem;background:linear-gradient(180deg,#fff7ed,#fed7aa);border-color:#fdba74;color:#7c2d12;font-weight:900;box-shadow:0 .35rem 1rem rgba(124,45,18,.12)}
.btn-help:hover{background:#ffedd5;color:#431407}.modal-open{overflow:hidden}.ap-modal[hidden]{display:none}.ap-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:1rem}.ap-modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.62);backdrop-filter:blur(5px)}.ap-modal__dialog{position:relative;width:min(100%,48rem);max-height:min(86vh,52rem);overflow:auto;background:var(--ap-card);color:var(--ap-text);border:1px solid var(--ap-border);border-radius:1.25rem;box-shadow:0 1.5rem 5rem rgba(2,6,23,.35)}.ap-modal__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.2rem 1.35rem;border-bottom:1px solid var(--ap-border);background:linear-gradient(180deg,rgba(255,247,237,.85),rgba(255,255,255,.25))}.ap-modal__eyebrow{font-size:.78rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em;color:#b45309}.ap-modal__title{font-size:1.35rem;line-height:1.2;margin:.15rem 0 0}.ap-modal__close{width:2.25rem;height:2.25rem;border:1px solid var(--ap-border);border-radius:.8rem;background:var(--ap-card);color:var(--ap-text);font-size:1.5rem;line-height:1;cursor:pointer}.ap-modal__body{padding:1.3rem 1.35rem;color:var(--ap-text);font-size:1rem;line-height:1.65;white-space:normal}.import-summary-card{overflow:hidden}.import-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-bottom:1px solid var(--ap-border)}.import-summary-item{padding:1rem 1.15rem;border-right:1px solid var(--ap-border);background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(248,250,252,.75))}.import-summary-item:last-child{border-right:0}.summary-label{font-size:.82rem;color:var(--ap-muted);font-weight:800;text-transform:uppercase;letter-spacing:.035em}.summary-main{font-size:1.65rem;line-height:1.2;font-weight:850;margin-top:.25rem}.summary-delta,.summary-note{margin-top:.35rem;font-size:.9rem}.summary-delta{display:inline-flex;align-items:center;border-radius:999px;padding:.16rem .5rem;font-weight:850}.summary-delta.is-up{background:#ecfdf3;color:#067647}.summary-delta.is-down{background:#fef3f2;color:#b42318}.summary-delta.is-flat{background:#f1f5f9;color:#475467}.summary-note{color:var(--ap-muted)}.summary-lengths{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;padding:.85rem 1.15rem;background:rgba(248,250,252,.72)}.app-body[data-theme="dark"] .btn-help{background:linear-gradient(180deg,#451a03,#7c2d12);border-color:#9a3412;color:#fed7aa}.app-body[data-theme="dark"] .ap-modal__header{background:linear-gradient(180deg,rgba(69,26,3,.38),rgba(15,23,42,.12))}.app-body[data-theme="dark"] .ap-modal__eyebrow{color:#fdba74}.app-body[data-theme="dark"] .ap-modal__close{background:#0f172a;border-color:#334155;color:#e5e7eb}.app-body[data-theme="dark"] .import-summary-item{background:linear-gradient(180deg,rgba(17,24,39,.96),rgba(15,23,42,.82))}.app-body[data-theme="dark"] .summary-lengths{background:rgba(15,23,42,.72)}.app-body[data-theme="dark"] .summary-delta.is-up{background:rgba(6,118,71,.22);color:#86efac}.app-body[data-theme="dark"] .summary-delta.is-down{background:rgba(180,35,24,.22);color:#fca5a5}.app-body[data-theme="dark"] .summary-delta.is-flat{background:#1e293b;color:#cbd5e1}@media(max-width:1100px){.import-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.import-summary-item:nth-child(2n){border-right:0}.import-summary-item:nth-child(n+3){border-top:1px solid var(--ap-border)}}@media(max-width:640px){.import-summary-grid{grid-template-columns:1fr}.import-summary-item{border-right:0;border-top:1px solid var(--ap-border)}.import-summary-item:first-child{border-top:0}.ap-modal{place-items:end center;padding:.75rem}.ap-modal__dialog{max-height:88vh;border-radius:1rem}.btn-help{width:2rem;height:2rem}}

/* v13 readability, team, remote imports */
.sort-link{color:inherit;text-decoration:none}.sort-link:hover{text-decoration:underline;text-underline-offset:.18em}.app-body[data-theme="dark"] .card,.app-body[data-theme="dark"] .table-responsive{background:var(--ap-card);color:var(--ap-text)}.app-body[data-theme="dark"] .table{color:var(--ap-text)}.app-body[data-theme="dark"] .table th{background:#162033!important;color:#dbeafe;border-color:#334155}.app-body[data-theme="dark"] .table td{background:#101827;color:#e5e7eb;border-color:#2f3c52}.app-body[data-theme="dark"] .table tr:nth-child(even) td{background:#0d1422}.app-body[data-theme="dark"] .prepared-preview-table tr.has-qty-change td{background:#132037!important;color:#f8fafc}.app-body[data-theme="dark"] .prepared-preview-table tr.has-price-change td{background:#201826!important;color:#f8fafc}.app-body[data-theme="dark"] .prepared-preview-table tr.has-preserved-price td{background:#152033!important;color:#f8fafc}.app-body[data-theme="dark"] .prepared-preview-table a,.app-body[data-theme="dark"] .products-table a{color:#e0f2fe;text-decoration-color:#93c5fd}.app-body[data-theme="dark"] .alert-info{background:#0b2742;border-color:#1d4ed8;color:#bfdbfe}.app-body[data-theme="dark"] .alert-warning{background:#3b2a08;border-color:#a16207;color:#fde68a}.app-body[data-theme="dark"] .approved-base-card{background:#111827;border-color:#334155;color:#e5e7eb}.app-body[data-theme="dark"] .approved-base-card .text-secondary{color:#cbd5e1}.app-body[data-theme="dark"] .approved-base-card .badge.text-bg-light{background:#1e293b;color:#e2e8f0}.app-body[data-theme="dark"] .card-header.bg-white{background:#0f172a!important;color:#f8fafc}.app-body[data-theme="dark"] .form-text{color:#b6c4d6}.app-body[data-theme="dark"] .role-item,.app-body[data-theme="dark"] .remote-card,.app-body[data-theme="dark"] .team-card,.app-body[data-theme="dark"] .team-table-card{background:#111827;color:#e5e7eb}.app-navbar .navbar-nav{gap:.12rem}.app-navbar .nav-link{white-space:nowrap}.app-navbar .container-fluid{max-width:1620px}.remote-upload-grid{display:grid;grid-template-columns:minmax(20rem,.85fr) minmax(28rem,1.15fr);gap:1rem}.remote-connection-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.remote-connection-form .remote-check,.remote-connection-form .remote-actions{grid-column:1/-1}.remote-list-form{display:grid;grid-template-columns:minmax(16rem,1fr) auto;gap:1rem;align-items:end}.remote-check{display:flex;gap:.45rem;align-items:center;font-weight:700}.remote-files-wrap{max-height:32rem;overflow:auto}.remote-files-table{min-width:860px}.remote-files-table thead th{position:sticky;top:0;z-index:1}.remote-imported td{background:#f8fafc}.remote-path{max-width:34rem;overflow-wrap:anywhere}.app-body[data-theme="dark"] .remote-imported td{background:#152033!important}.text-bg-success{background:#ecfdf3;color:#067647}.team-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.team-form-actions{display:flex;align-items:end}.role-list{display:grid;gap:.75rem}.role-item{display:grid;gap:.25rem;padding:.85rem;border:1px solid var(--ap-border);border-radius:.85rem;background:#f8fafc}.role-item span{color:var(--ap-muted)}.team-password{min-width:11rem}.team-delete-cell{width:1%;white-space:nowrap}.app-body[data-theme="dark"] .role-item{background:#0f172a;border-color:#334155}.app-body[data-theme="dark"] .role-item span{color:#cbd5e1}.app-body[data-theme="dark"] .btn-outline-danger{background:#111827;color:#fca5a5;border-color:#7f1d1d}@media(max-width:1100px){.remote-upload-grid{grid-template-columns:1fr}.remote-list-form{grid-template-columns:1fr}.remote-connection-form,.team-form-grid{grid-template-columns:1fr}}

/* v14: target-length logic notes and dark-mode readability in grouped suspicious rows */
.app-body[data-theme="dark"] .flag-combo-row{color:#e5e7eb;border-color:#334155}
.app-body[data-theme="dark"] .flag-combo-row.flag-warning{background:linear-gradient(90deg,rgba(253,176,34,.16),rgba(15,23,42,.92))!important}
.app-body[data-theme="dark"] .flag-combo-row.flag-error,.app-body[data-theme="dark"] .flag-combo-row.flag-critical{background:linear-gradient(90deg,rgba(217,45,32,.16),rgba(15,23,42,.92))!important}
.app-body[data-theme="dark"] .flag-combo-row.is-closed{background:#111827!important;color:#cbd5e1}
.app-body[data-theme="dark"] .flag-combo-variation,.app-body[data-theme="dark"] .flag-combo-sku a,.app-body[data-theme="dark"] .flag-combo-info a{color:#f8fafc!important;text-decoration-color:#93c5fd;text-underline-offset:.16em}
.app-body[data-theme="dark"] .flag-combo-variation:hover,.app-body[data-theme="dark"] .flag-combo-sku a:hover,.app-body[data-theme="dark"] .flag-combo-info a:hover{color:#bfdbfe!important}
.app-body[data-theme="dark"] .flag-combo-info .text-secondary,.app-body[data-theme="dark"] .flag-combo-values .text-secondary,.app-body[data-theme="dark"] .flag-combo-source,.app-body[data-theme="dark"] .flag-combo-source code,.app-body[data-theme="dark"] .flag-group-meta{color:#cbd5e1!important}
.app-body[data-theme="dark"] .flag-group-card{background:#0f172a;border-color:#334155;box-shadow:none}
.app-body[data-theme="dark"] .flag-group-header{background:#111c2f!important;border-color:#334155;color:#e5e7eb}
.app-body[data-theme="dark"] .flag-group-title a{color:#f8fafc!important;text-decoration-color:#93c5fd}
.app-body[data-theme="dark"] .flag-group-title span{color:#cbd5e1}
.app-body[data-theme="dark"] .flag-combo-actions .form-control{background:#0b1220;color:#f8fafc;border-color:#475569}
.app-body[data-theme="dark"] .flag-combo-actions .form-control::placeholder{color:#94a3b8}

/* v15: added/removed diff links + prepared file button */
.metric-detail{margin-top:.65rem;font-size:.86rem}.metric-detail>summary{cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--ap-border);border-radius:999px;padding:.25rem .6rem;background:rgba(255,255,255,.68);font-weight:800;color:#334155}.metric-detail[open]>summary{margin-bottom:.55rem}.metric-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.metric-detail-col{border:1px solid var(--ap-border);border-radius:.8rem;padding:.65rem;background:rgba(248,250,252,.82);min-width:0}.metric-detail-col h4{margin:0 0 .45rem;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}.metric-detail-col.is-added h4{color:#067647}.metric-detail-col.is-removed h4{color:#b42318}.diff-detail-list{display:grid;gap:.25rem;list-style:none;margin:0;padding:0;max-height:13rem;overflow:auto}.diff-detail-list li{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;border-bottom:1px dashed rgba(100,116,139,.25);padding:.18rem 0}.diff-detail-list li:last-child{border-bottom:0}.diff-detail-list a{font-weight:800;color:#0f172a;text-decoration:underline;text-underline-offset:.14em}.diff-detail-list span{font-size:.78rem;color:var(--ap-muted);text-align:right}.diff-detail-empty{color:var(--ap-muted);font-size:.84rem}.diff-detail-more{font-weight:800;color:var(--ap-muted)}.static-export-download-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.static-export-download-row .btn{box-shadow:0 .5rem 1.25rem rgba(23,92,211,.15)}.app-body[data-theme="dark"] .metric-detail>summary{background:#111827;border-color:#334155;color:#e5e7eb}.app-body[data-theme="dark"] .metric-detail-col{background:#0f172a;border-color:#334155}.app-body[data-theme="dark"] .diff-detail-list a{color:#dbeafe;text-decoration-color:#93c5fd}.app-body[data-theme="dark"] .diff-detail-list span,.app-body[data-theme="dark"] .diff-detail-empty{color:#cbd5e1}.app-body[data-theme="dark"] .diff-detail-list li{border-color:rgba(148,163,184,.22)}@media(max-width:900px){.metric-detail-grid{grid-template-columns:1fr}.static-export-download-row{align-items:stretch}.static-export-download-row .btn{width:100%}}

/* v17: preserve missing approved combinations as zero, real-source highlighting, readable detail cards */
.real-source-badge{background:#d1fae5;color:#065f46;border:1px solid rgba(6,95,70,.18);font-weight:850;margin-left:.35rem}.is-real-source-row td{box-shadow:inset .25rem 0 0 rgba(16,185,129,.75)}.is-preserved-zero-row td{box-shadow:inset .25rem 0 0 rgba(59,130,246,.75);background:#eff6ff}.metric-detail-grid,.metric-detail-grid.is-single{grid-template-columns:1fr!important}.metric-detail-col{max-width:100%;overflow:hidden}.diff-detail-list{display:grid;grid-template-columns:1fr;max-height:none;overflow:visible;gap:.5rem}.diff-detail-list li{display:grid;grid-template-columns:minmax(9rem,.55fr) minmax(12rem,1fr);align-items:start;gap:.75rem;border:1px dashed rgba(100,116,139,.28);border-radius:.7rem;padding:.55rem .65rem;background:rgba(248,250,252,.72)}.diff-detail-list span{text-align:left;overflow-wrap:anywhere}.diff-detail-list a{overflow-wrap:anywhere}.metric-detail-single .diff-detail-list{max-height:18rem;overflow:auto}.diff-table .is-real-source-row td,.prepared-preview-table .is-real-source-row td{background:rgba(209,250,229,.38)}.diff-table .is-preserved-zero-row td,.prepared-preview-table .is-preserved-zero-row td{background:rgba(239,246,255,.65)}.product-combo-table .is-real-source-row td{background:rgba(209,250,229,.38)}.product-combo-table .is-preserved-zero-row td{background:rgba(239,246,255,.65)}.app-body[data-theme="dark"] .real-source-badge{background:rgba(16,185,129,.20);color:#86efac;border-color:rgba(134,239,172,.30)}.app-body[data-theme="dark"] .is-preserved-zero-row td{background:rgba(30,64,175,.16)!important}.app-body[data-theme="dark"] .is-real-source-row td{background:rgba(6,95,70,.16)!important}.app-body[data-theme="dark"] .diff-detail-list li{background:#0f172a;border-color:#334155}.app-body[data-theme="dark"] .diff-detail-list a{color:#dbeafe}.app-body[data-theme="dark"] .diff-detail-list span{color:#cbd5e1}.app-body[data-theme="dark"] .product-combo-table .is-real-source-row td{background:rgba(6,95,70,.16)!important}.app-body[data-theme="dark"] .product-combo-table .is-preserved-zero-row td{background:rgba(30,64,175,.16)!important}@media(max-width:760px){.diff-detail-list li{grid-template-columns:1fr}.metric-detail-single .diff-detail-list{max-height:none}}

/* v18 finalize blockers quick navigation */
.finalize-blockers{border-radius:1rem;border:1px solid rgba(220,53,69,.28);background:linear-gradient(135deg,rgba(255,245,245,.98),rgba(255,250,250,.92));color:#7f1d1d;box-shadow:0 .75rem 2rem rgba(127,29,29,.08);margin-bottom:1.25rem;padding:1rem 1.15rem}.finalize-blockers-head{display:flex;gap:1rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.finalize-blockers h2{font-size:1.05rem;margin:0 0 .35rem;font-weight:800;color:#991b1b}.finalize-blockers p{margin:0;color:#7f1d1d}.finalize-blocker-counters{display:flex;gap:.45rem;flex-wrap:wrap;justify-content:flex-end}.finalize-blocker-counters span{display:inline-flex;align-items:center;gap:.25rem;border-radius:999px;background:rgba(255,255,255,.72);border:1px solid rgba(127,29,29,.14);padding:.35rem .6rem;font-weight:700}.finalize-blocker-counters .is-error{background:#fee2e2;color:#991b1b}.finalize-blocker-counters .is-warning{background:#fef3c7;color:#92400e}.finalize-blocker-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.65rem;margin-top:1rem}.finalize-blocker-chip{display:flex;flex-direction:column;gap:.25rem;text-decoration:none;border-radius:.85rem;border:1px solid rgba(127,29,29,.16);background:rgba(255,255,255,.76);padding:.75rem .85rem;color:#111827;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.finalize-blocker-chip:hover{transform:translateY(-1px);border-color:rgba(127,29,29,.35);box-shadow:0 .5rem 1.3rem rgba(127,29,29,.1);color:#111827}.finalize-blocker-chip strong{font-size:1rem;text-decoration:underline;text-underline-offset:.15em}.finalize-blocker-chip span,.finalize-blocker-chip em,.finalize-blocker-chip small{font-size:.82rem}.finalize-blocker-chip em{font-style:normal;color:#92400e;font-weight:700}.finalize-blocker-chip em.is-error{color:#b91c1c}.finalize-blocker-chip small{color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flag-group-card:target{outline:3px solid rgba(37,99,235,.65);outline-offset:4px;box-shadow:0 0 0 .35rem rgba(37,99,235,.14),0 1rem 2rem rgba(15,23,42,.12)}.flag-combo-row:target{outline:3px solid rgba(37,99,235,.65);outline-offset:-3px;background:rgba(37,99,235,.08)!important}
[data-bs-theme="dark"] .finalize-blockers,body.theme-dark .finalize-blockers{background:linear-gradient(135deg,rgba(69,10,10,.78),rgba(30,41,59,.88));border-color:rgba(248,113,113,.35);color:#fecaca}[data-bs-theme="dark"] .finalize-blockers h2,body.theme-dark .finalize-blockers h2{color:#fecaca}[data-bs-theme="dark"] .finalize-blockers p,body.theme-dark .finalize-blockers p{color:#fca5a5}[data-bs-theme="dark"] .finalize-blocker-counters span,body.theme-dark .finalize-blocker-counters span{background:rgba(15,23,42,.62);border-color:rgba(248,113,113,.22);color:#fee2e2}[data-bs-theme="dark"] .finalize-blocker-chip,body.theme-dark .finalize-blocker-chip{background:rgba(15,23,42,.72);border-color:rgba(148,163,184,.24);color:#e5e7eb}[data-bs-theme="dark"] .finalize-blocker-chip:hover,body.theme-dark .finalize-blocker-chip:hover{border-color:rgba(248,113,113,.45);color:#fff}[data-bs-theme="dark"] .finalize-blocker-chip small,body.theme-dark .finalize-blocker-chip small{color:#cbd5e1}[data-bs-theme="dark"] .flag-group-card:target,body.theme-dark .flag-group-card:target{outline-color:rgba(96,165,250,.8);box-shadow:0 0 0 .35rem rgba(96,165,250,.16),0 1rem 2rem rgba(0,0,0,.3)}
@media (max-width: 640px){.finalize-blocker-list{grid-template-columns:1fr}.finalize-blockers-head{display:block}.finalize-blocker-counters{justify-content:flex-start;margin-top:.75rem}}

/* v19 collapsed login tetris launcher: the game is not initialized until opened */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.login-tetris-launcher{justify-self:start;align-self:center;display:inline-grid;place-items:center;width:5.1rem;height:5.1rem;border-radius:1.35rem;border:1px solid rgba(255,225,175,.34);background:linear-gradient(145deg,rgba(58,35,18,.70),rgba(13,23,19,.40));box-shadow:0 1rem 2.8rem rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.16);backdrop-filter:blur(10px);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease;color:#f8d9aa}
.login-tetris-launcher:hover,.login-tetris-launcher:focus-visible{transform:translateY(-2px);border-color:rgba(255,213,145,.72);box-shadow:0 1.25rem 3.2rem rgba(0,0,0,.42),0 0 0 .22rem rgba(214,154,84,.16),inset 0 1px 0 rgba(255,255,255,.2);outline:0;background:linear-gradient(145deg,rgba(84,50,24,.76),rgba(18,33,26,.48))}
.login-tetris-launcher__icon{position:relative;display:block;width:3.1rem;height:2.45rem;filter:drop-shadow(0 .2rem .35rem rgba(0,0,0,.35))}
.login-tetris-launcher__icon i{position:absolute;width:1.02rem;height:1.02rem;border-radius:.2rem;background:linear-gradient(145deg,#e7b36c,#8a4f1f);border:1px solid rgba(255,235,205,.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.login-tetris-launcher__icon i:nth-child(1){left:.08rem;bottom:.06rem}.login-tetris-launcher__icon i:nth-child(2){left:1.08rem;bottom:.06rem}.login-tetris-launcher__icon i:nth-child(3){left:1.08rem;bottom:1.06rem}.login-tetris-launcher__icon i:nth-child(4){left:2.08rem;bottom:1.06rem}
.login-tetris[hidden],.login-tetris-launcher[hidden]{display:none!important}.login-tetris__actions{display:flex;align-items:center;gap:.55rem}.login-tetris__close{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;border-radius:999px;border:1px solid rgba(255,232,198,.26);background:rgba(255,255,255,.10);color:#fff4e5;font-size:1.55rem;line-height:1;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}.login-tetris__close:hover,.login-tetris__close:focus-visible{background:rgba(244,202,135,.18);outline:0;border-color:rgba(255,232,198,.45)}
@media(max-width:1100px){.login-tetris-launcher{display:none}}

/* v20: responsive logo header and mobile icon navigation */
.app-brand{display:inline-flex;align-items:center;gap:.65rem;text-decoration:none;min-width:0;color:var(--ap-text)}
.app-brand__logo{display:block;width:2.45rem;height:2.45rem;border-radius:.75rem;box-shadow:0 .25rem .75rem rgba(15,23,42,.14);object-fit:contain;background:#111827;flex:0 0 auto}
.app-brand__text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.nav-icon{display:none;line-height:1;font-weight:900}.nav-action-icon{display:none}.nav-actions{margin-left:auto}.theme-toggle.nav-icon-btn{min-width:2.45rem;height:2.45rem;padding:.35rem}.btn-help{min-width:2.45rem;height:2.45rem;border-color:#fed7aa;background:#fff7ed;color:#9a3412;font-weight:900}.btn-help:hover{background:#ffedd5;color:#7c2d12}.app-body[data-theme="dark"] .app-brand{color:#e5e7eb}.app-body[data-theme="dark"] .app-brand__logo{box-shadow:0 .25rem .9rem rgba(0,0,0,.34)}.app-body[data-theme="dark"] .btn-help{background:#7c2d12;border-color:#9a3412;color:#ffedd5}.app-body[data-theme="dark"] .btn-help:hover{background:#9a3412;color:#fff7ed}
.login-logo.login-logo--image{display:block;width:4rem;height:4rem;border-radius:1rem;object-fit:contain;background:#111827;box-shadow:0 .5rem 1.4rem rgba(15,23,42,.18)}
@media(max-width:860px){
  .app-navbar{position:sticky;top:0}.navbar>.container-fluid{display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:center!important;gap:.55rem;padding:.55rem .75rem}.app-brand{order:1}.app-brand__logo{width:2.25rem;height:2.25rem;border-radius:.68rem}.navbar-toggler{display:none!important}.navbar-collapse{order:3;display:grid!important;grid-template-columns:1fr;gap:.55rem;width:100%;flex:0 0 100%;align-items:stretch!important}.navbar-nav{display:grid!important;grid-auto-flow:column;grid-auto-columns:minmax(3rem,1fr);gap:.45rem;width:100%;margin:0!important;padding:.25rem 0;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;align-items:stretch!important}.navbar-nav .nav-item{min-width:3rem}.nav-link{height:3rem;min-width:3rem;padding:.35rem!important;border:1px solid rgba(148,163,184,.34);border-radius:.95rem;background:rgba(255,255,255,.82);box-shadow:0 .35rem .9rem rgba(15,23,42,.05);display:flex!important;align-items:center;justify-content:center;color:#1e293b!important}.nav-link:hover,.nav-link:focus-visible{background:#eef2ff;border-color:#93c5fd;outline:0}.nav-icon{display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;width:1.4rem;height:1.4rem}.nav-text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.nav-actions{order:2;margin-left:auto!important;display:flex!important;align-items:center!important;justify-content:flex-end;gap:.4rem!important;flex-wrap:nowrap}.nav-actions .btn-group .btn{min-width:2.65rem;height:2.45rem;padding:.35rem .5rem}.nav-actions form{display:inline-flex}.logout-btn{width:2.45rem;height:2.45rem;padding:.35rem!important;border-radius:.75rem!important}.nav-action-icon{display:inline-flex;font-size:1.05rem}.nav-action-text{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.theme-toggle.nav-icon-btn,.btn-help{width:2.45rem;min-width:2.45rem;height:2.45rem;padding:.35rem!important;border-radius:.75rem}.app-main{padding-top:1rem!important}.container-fluid{padding-inline:.75rem}.app-body[data-theme="dark"] .nav-link{background:rgba(30,41,59,.86);border-color:rgba(148,163,184,.24);color:#e5e7eb!important;box-shadow:0 .35rem 1rem rgba(0,0,0,.16)}.app-body[data-theme="dark"] .nav-link:hover,.app-body[data-theme="dark"] .nav-link:focus-visible{background:#1e293b;border-color:#60a5fa;color:#fff!important}}
@media(max-width:430px){.navbar>.container-fluid{gap:.45rem}.app-brand__logo{width:2.05rem;height:2.05rem}.nav-actions .btn-group .btn{min-width:2.25rem;padding:.3rem .42rem;font-size:.82rem}.theme-toggle.nav-icon-btn,.btn-help,.logout-btn{width:2.25rem;min-width:2.25rem;height:2.25rem}.navbar-nav{grid-auto-columns:2.75rem}.nav-link{height:2.75rem;min-width:2.75rem;border-radius:.82rem}.nav-icon{font-size:1.12rem}}

/* v21 source-order sorting, compact filters and collapsed algorithm note */
.algorithm-details{border-radius:1rem;padding:0;overflow:hidden}.algorithm-details>summary{display:flex;align-items:center;gap:.75rem;justify-content:space-between;cursor:pointer;padding:1rem 1.25rem;list-style:none}.algorithm-details>summary::-webkit-details-marker{display:none}.algorithm-details>summary::after{content:'+';display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:999px;border:1px solid rgba(23,92,211,.25);font-weight:900;background:rgba(255,255,255,.55)}.algorithm-details[open]>summary::after{content:'−'}.algorithm-details>summary span{font-size:.9rem;color:var(--ap-muted);font-weight:650}.algorithm-details-body{padding:0 1.25rem 1.15rem}.diff-filter-bar{padding:1rem 1.15rem;border-bottom:1px solid var(--ap-border);background:rgba(248,250,252,.70)}.diff-filter-bar .form-label{font-size:.82rem;font-weight:800;color:var(--ap-muted);text-transform:uppercase;letter-spacing:.03em}.app-body[data-theme="dark"] .algorithm-details{background:#0b2742;border-color:#1d4ed8;color:#bfdbfe}.app-body[data-theme="dark"] .algorithm-details>summary::after{background:#0f172a;border-color:#334155;color:#dbeafe}.app-body[data-theme="dark"] .algorithm-details>summary span{color:#93c5fd}.app-body[data-theme="dark"] .diff-filter-bar{background:#0f172a;border-color:#263244}.app-body[data-theme="dark"] .diff-filter-bar .form-label{color:#cbd5e1}.app-body[data-theme="dark"] .diff-group summary{background:#121d31}.app-body[data-theme="dark"] .diff-sku a{color:#e0f2fe;text-decoration-color:#93c5fd}@media(max-width:760px){.algorithm-details>summary{align-items:flex-start}.algorithm-details>summary span{display:none}.diff-filter-bar .d-flex.gap-2{flex-direction:column}.diff-filter-bar .btn{width:100%}}
.import-summary-filter{border-top:1px solid var(--ap-border);border-bottom:0;border-radius:0 0 1rem 1rem}.import-summary-filter .fw-semibold{text-transform:uppercase;letter-spacing:.03em}

/* v22: readable user identity and human labels */
.user-identity{font-weight:600;color:var(--bs-body-color)}
.user-identity small{display:block;font-weight:400;color:var(--bs-secondary-color);word-break:break-all}
.badge.text-bg-light{white-space:normal;line-height:1.2}
