/* admin.css — minimal monochrome admin UI. Self-contained, no bootstrap needed. */
:root{
  --bg:#101113; --panel:#17181b; --panel-2:#1d1f23; --line:#26282c; --line-2:#33363b;
  --ink:#e8e6e1; --ink-2:#a7a49d; --ink-3:#6e6c66;
  --accent:#f2f0ea; --accent-ink:#101113; --danger:#e5654f; --ok:#7fb069;
  --radius:10px; --radius-sm:7px; --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 -apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,.h2,.h3,.h4{margin:0 0 .6rem;font-weight:650;letter-spacing:-.01em;color:var(--ink)}
.h3{font-size:1.35rem}.h2{font-size:1.6rem}
p{margin:.35rem 0}
small,.small{font-size:.78rem;color:var(--ink-2)}
.fs-6{font-size:.85rem}
.text-muted{color:var(--ink-2)}
.fw-semibold{font-weight:600}
.m-0{margin:0}.mb-3{margin-bottom:1rem}.mt-4{margin-top:1.4rem}.py-2{padding:.5rem 0}.py-4{padding:1.5rem 0}
.w-100{width:100%}
.d-flex{display:flex}.d-grid{display:grid}.gap-2{gap:.5rem}.gap-3{gap:.75rem}
.align-items-center{align-items:center}.justify-content-between{justify-content:space-between}
.row{display:flex;flex-wrap:wrap;margin:0 -.5rem}
.row>*{padding:0 .5rem}
.g-3{gap:.75rem}
.col-12{flex:0 0 100%;max-width:100%}.col-6{flex:0 0 50%;max-width:50%}
.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.333%;max-width:33.333%}
.col-md-6{flex:0 0 50%;max-width:50%}.col-md-9{flex:0 0 75%;max-width:75%}
.col-lg-2{flex:0 0 16.6%;max-width:16.6%}.col-lg-10{flex:0 0 83.3%;max-width:83.3%}
@media(max-width:991px){.col-md-3,.col-md-4,.col-md-6,.col-md-9{flex:0 0 100%;max-width:100%}.col-lg-2,.col-lg-10{flex:0 0 100%;max-width:100%}}

/* layout shell */
.admin-page{min-height:100vh}
.admin-shell{max-width:1500px;margin:0 auto;padding:0 18px;display:flex;gap:22px;align-items:flex-start}
.admin-shell>aside{flex:0 0 218px;position:sticky;top:14px}
.admin-shell>.admin-content{flex:1;min-width:0}
@media(max-width:991px){.admin-shell{flex-direction:column}.admin-shell>aside{position:static;flex:auto;width:100%}}
.admin-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1500px;margin:0 auto;padding:16px 18px;border-bottom:1px solid var(--line)}
.admin-brand{font:700 1.05rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.admin-domain{font:400 .72rem/1.4 var(--mono);color:var(--ink-3);letter-spacing:.06em}

/* nav */
.list-group{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:0;list-style:none}
.list-group-item{display:block;padding:8px 12px;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--ink-2);font-size:.85rem;letter-spacing:.02em}
.list-group-item:hover{color:var(--ink);background:var(--panel)}
.list-group-item.active{color:var(--accent-ink);background:var(--accent);font-weight:600}
.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.card-header{padding:8px 12px;border-bottom:1px solid var(--line);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}
.card-body{padding:12px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:transparent;color:var(--ink);font-size:.85rem;font-weight:500;cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.btn:hover{border-color:var(--ink-2)}
.btn-sm{padding:5px 10px;font-size:.78rem}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn-primary:hover{background:#fff;border-color:#fff}
.btn-outline-secondary{color:var(--ink-2)}
.btn-outline-secondary:hover{color:var(--ink);border-color:var(--ink-2)}
.btn-outline-danger{color:var(--danger);border-color:transparent}
.btn-outline-danger:hover{border-color:var(--danger)}
.btn-link{border:none;color:var(--ink-2);text-decoration:underline;background:none}

/* forms */
label,.form-label{display:block;margin:0 0 4px;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.form-control,.form-select{width:100%;min-height:40px;padding:8px 12px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink);font-size:.9rem}
.form-control:focus,.form-select:focus{outline:2px solid var(--ink-3);outline-offset:-1px;border-color:var(--ink-3)}
textarea.form-control{min-height:120px;resize:vertical;font-family:var(--mono);font-size:.83rem;line-height:1.6}
select.form-select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-size:5px 5px;background-repeat:no-repeat}
.form-control-sm,.form-select-sm{min-height:32px;padding:4px 10px;font-size:.82rem}
.form-check{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.form-check-input{width:16px;height:16px;accent-color:var(--accent);background:var(--panel-2);border:1px solid var(--line-2)}
.form-check-label{margin:0;font-size:.85rem;text-transform:none;letter-spacing:0;color:var(--ink)}
.form-switch .form-check-input{width:30px;height:16px;border-radius:999px}
.form-text{font-size:.75rem;color:var(--ink-3)}
input[type=color].form-control{padding:3px;min-height:34px;width:52px}

/* tables */
.table-responsive{overflow-x:auto}
table,.table{width:100%;border-collapse:collapse;font-size:.87rem}
th{padding:8px 10px;text-align:left;font:600 .7rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);border-bottom:1px solid var(--line-2)}
td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:hover td{background:var(--panel)}
.align-middle{vertical-align:middle}

/* alerts / badges */
.alert{padding:10px 14px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:.85rem;margin:0 0 12px}
.alert-danger{border-color:var(--danger);color:var(--danger)}
.badge,.hidden-record-badge{display:inline-block;padding:2px 8px;border:1px solid var(--line-2);border-radius:999px;font:500 .68rem/1.5 var(--mono);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em}
.hidden-record-badge{border-color:var(--danger);color:var(--danger)}

/* rich editor + widgets (dark restyle) */
.rt-shell{border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel-2)}
.rt-toolbar{display:flex;align-items:flex-end;gap:5px;flex-wrap:wrap;padding:8px;background:var(--panel);border-bottom:1px solid var(--line-2)}
.rt-button{min-height:34px;padding:5px 9px;border:1px solid var(--line-2);border-radius:6px;background:transparent;color:var(--ink-2);font-size:.78rem;cursor:pointer}
.rt-button span{margin-left:4px}
.rt-button:hover,.rt-button:focus{border-color:var(--ink-2);color:var(--ink);outline:none}
.rt-control{display:flex;flex-direction:column;gap:2px;font-size:.68rem;color:var(--ink-3);text-transform:none}
.rt-control .form-select{min-width:105px;padding:4px 24px 4px 7px;font-size:.76rem}
.rt-color input{width:42px;height:34px;padding:2px;border:1px solid var(--line-2);border-radius:6px;background:var(--panel-2)}
.rt-separator{width:1px;height:32px;background:var(--line-2);margin:0 3px}
.rt-editor{min-height:260px;padding:16px;overflow:auto;line-height:1.65;color:var(--ink)}
.rt-editor:focus{outline:2px solid var(--ink-3);outline-offset:-3px}
.rt-editor table{border-collapse:collapse;margin:12px 0}
.rt-editor th,.rt-editor td{min-width:80px;padding:7px 9px;border:1px solid var(--line-2)}
.rt-editor img{max-width:100%;height:auto}
.rt-shell>.form-text{padding:0 12px 8px;margin:0}
@media(max-width:991px){.rt-button span{display:none}}
@media(max-width:767px){.rt-separator{display:none}.rt-control{width:48%}.rt-control .form-select{width:100%}}

.media-picker{position:fixed;inset:0;z-index:1080;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(8,9,10,.78)}
.media-picker[hidden]{display:none}
.media-picker-dialog{width:min(940px,100%);max-height:88vh;overflow:auto;padding:16px;border-radius:12px;background:var(--panel);border:1px solid var(--line-2)}
.media-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.media-picker-upload{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.media-picker-upload .form-control{max-width:420px}
.media-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.media-picker-item{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:0;padding:8px;border:1px solid var(--line-2);border-radius:8px;background:var(--panel-2);text-align:left;cursor:pointer;color:var(--ink)}
.media-picker-item:hover,.media-picker-item:focus{border-color:var(--ink-2);outline:none}
.media-picker-item img{width:100%;height:105px;object-fit:contain;background:var(--bg)}
.media-picker-item span{overflow:hidden;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}

.product-gallery-file{max-width:360px}
.product-gallery-list{display:flex;align-items:stretch;gap:12px;flex-wrap:wrap}
.product-gallery-item{width:165px;margin:0;padding:8px;border:1px solid var(--line-2);border-radius:9px;background:var(--panel-2)}
.product-gallery-item img{width:100%;height:125px;object-fit:contain;background:var(--bg);border-radius:6px}
.product-gallery-item figcaption{margin-top:5px;font-weight:700;font-size:.78rem}
.product-gallery-url{overflow:hidden;margin:4px 0;font-size:.68rem;color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap}
.product-gallery-actions{display:flex;gap:4px;flex-wrap:wrap}
.visibility-toggle-form .form-check-label{min-width:88px;font-size:.78rem;font-weight:650}

/* admin page widgets */
.admin-products-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:14px}
.admin-products-hint{color:var(--ink-3);font-size:.78rem}
.admin-products-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.admin-filter{display:flex;flex-direction:column;gap:4px;min-width:150px}
.admin-filter-search{flex:1}
.admin-media-preview img{max-width:220px;max-height:150px;border-radius:var(--radius-sm)}
.skip-link{position:absolute;left:-9999px}

/* extra utilities used by admin templates */
.h-100{height:100%}.h5{font-size:1.05rem}.fs-3{font-size:1.7rem}.fw-bold{font-weight:700}
.d-inline{display:inline-block}.flex-wrap{flex-wrap:wrap}
.align-items-end{align-items:flex-end}
.text-center{text-align:center}.text-end{text-align:right}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.p-2{padding:.5rem}.pb-2{padding-bottom:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:1rem}
.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1.4rem}
.my-2{margin-top:.5rem;margin-bottom:.5rem}.ms-2{margin-left:.5rem}.ms-auto{margin-left:auto}
.g-2{gap:.5rem}.g-4{gap:1.25rem}.gap-1{gap:.25rem}.gap-4{gap:1.25rem}
.col-2{flex:0 0 16.6%;max-width:16.6%}.col-5{flex:0 0 41.6%;max-width:41.6%}.col-auto{flex:0 0 auto}
.col-md-2{flex:0 0 16.6%;max-width:16.6%}.col-md-7{flex:0 0 58.3%;max-width:58.3%}.col-md-8{flex:0 0 66.6%;max-width:66.6%}
.col-lg-8{flex:0 0 66.6%;max-width:66.6%}
@media(max-width:991px){.col-md-2,.col-md-7,.col-md-8{flex:0 0 100%;max-width:100%}.col-lg-8{flex:0 0 100%;max-width:100%}}
.alert-light,.alert-success{border-color:var(--ok);color:var(--ok)}
.alert-warning{border-color:var(--line-2);color:var(--ink)}
.btn-outline-dark,.btn-outline-primary{color:var(--ink)}
.btn-close{background:none;border:none;color:var(--ink-2);cursor:pointer;font-size:1rem}
.table-hover tr:hover td{background:var(--panel)}
.table-secondary td{background:var(--panel-2)}
.pagination{display:flex;gap:4px;list-style:none;padding:0;margin:14px 0 0}
.page-item .page-link{display:block;padding:4px 10px;border:1px solid var(--line-2);border-radius:var(--radius-sm);font-size:.8rem;color:var(--ink-2)}
.page-item.active .page-link{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.required-mark{color:var(--danger)}

/* ported admin widgets (dark-restyled from site.css) */
:root{--surface:var(--panel);--brand:var(--accent);--brand-600:#fff;--brand-800:var(--ink-2);--brand-900:var(--ink);--green-soft:#17251c;--shadow:0 6px 24px rgba(0,0,0,.4);--shadow-sm:0 3px 10px rgba(0,0,0,.35)}
.subsections{padding:18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.subsection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.subsection-link{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink)}
.subsection-link:hover{border-color:var(--ink-2)}
.subsection-parent{font-size:.72rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}
.subsection-name{font-weight:700;color:var(--ink)}
.subsection-count{font-size:.78rem;color:var(--ink-3)}
@media(max-width:991px){.subsection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.subsection-grid{grid-template-columns:1fr}}
.badge-pinned{position:absolute;top:12px;right:12px;z-index:2;background:#3a2f14;color:#e9c46a;border:1px solid #8a6d1d;font-size:.7rem;font-weight:750;padding:4px 9px;border-radius:999px}
.pinned-note{display:inline-block;margin:0 0 10px;padding:4px 10px;border:1px solid #8a6d1d;border-radius:999px;background:#3a2f14;color:#e9c46a;font-size:.78rem;font-weight:700}
.review-rating{margin:4px 0;color:#e9c46a;font-size:.84rem;font-weight:700}
.hidden-record-badge,.pinned-admin-badge{display:inline-block;padding:2px 7px;border-radius:999px;font-size:.7rem;font-weight:750;vertical-align:middle}
.hidden-record-badge{background:var(--panel-2);color:var(--ink-2)}
.pinned-admin-badge{background:#3a2f14;color:#e9c46a}
.status-visible{color:var(--ok);font-weight:700}.status-hidden{color:var(--ink-3);font-weight:700}
.category-depth{display:inline-block;padding-left:calc(var(--depth,0) * 18px)}
.review-admin-card{padding:16px;margin-bottom:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2)}
.review-admin-card.is-hidden{background:var(--panel);border-style:dashed}
.visibility-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:.88rem;font-weight:650}
.visibility-switch input{width:1.1rem;height:1.1rem}
.image-preview-list{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.image-preview{position:relative;width:82px;margin:0}
.image-preview img{width:82px;height:82px;object-fit:contain;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}
.image-preview figcaption{position:absolute;right:4px;bottom:4px;min-width:20px;padding:1px 5px;border-radius:999px;background:var(--ink);color:var(--bg);font-size:.7rem;text-align:center}
.admin-media-preview{max-width:100%;height:90px;object-fit:contain}
.admin-login{max-width:520px}

.admin-products-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.admin-products-head>.btn{flex:0 0 auto;white-space:nowrap}
.admin-products-hint{margin:5px 0 0;color:var(--ink-3);font-size:.82rem}
.admin-products-filters{display:grid;grid-template-columns:minmax(170px,1.25fr) repeat(5,minmax(125px,1fr)) auto;gap:8px;align-items:end;margin-bottom:16px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel)}
.admin-filter{display:flex;flex-direction:column;gap:4px;min-width:0;color:var(--ink-3);font-size:.7rem;font-weight:750;text-transform:uppercase;letter-spacing:.035em}
.admin-filter .form-control,.admin-filter .form-select{width:100%;min-width:0;color:var(--ink);font-size:.78rem;text-transform:none;letter-spacing:normal}
.admin-filter-submit{height:31px;white-space:nowrap}
.admin-products-list{width:100%;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--panel)}
.admin-product-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.25fr) minmax(0,1fr) minmax(72px,.62fr) minmax(106px,.86fr) 86px 34px;gap:10px;align-items:center;padding:11px 12px;border-bottom:1px solid var(--line)}
.admin-product-row:last-child{border-bottom:0}
.admin-product-row:not(.admin-product-row-head):hover{background:var(--panel-2)}
.admin-product-row.is-hidden{background:var(--bg)}
.admin-product-row-head{padding-top:8px;padding-bottom:8px;background:var(--panel);color:var(--ink-3);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.admin-product-main,.admin-product-catalog,.admin-product-mfr{min-width:0}
.admin-product-name{display:block;color:var(--ink);font-size:.88rem;font-weight:750;line-height:1.35;overflow-wrap:anywhere}
.admin-product-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px;color:var(--ink-3);font-size:.68rem}
.admin-product-catalog{display:flex;flex-direction:column;gap:2px;color:var(--ink-2);font-size:.76rem;line-height:1.35;overflow-wrap:anywhere}
.admin-product-catalog small{color:var(--ink-3);font-size:.7rem}
.admin-product-mfr,.admin-product-price{font-size:.76rem;line-height:1.35;overflow-wrap:anywhere}
.admin-product-price{font-weight:700}
.admin-product-status{font-size:.74rem}
.admin-product-status .form-check{padding-left:2.05em}
.admin-product-status .form-check-input{margin-left:-2.05em}
.admin-product-order{display:flex;align-items:center;gap:6px}
.admin-product-position{min-width:21px;color:var(--ink-3);font-size:.7rem;text-align:center}
.admin-product-move{display:flex;gap:3px}
.admin-product-move .btn,.admin-product-action .btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;padding:0;font-weight:750}
.admin-product-action{text-align:right}
.admin-products-empty{padding:32px;text-align:center;color:var(--ink-3)}
@media(max-width:1199px){.admin-products-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-filter-search{grid-column:span 2}.admin-filter-submit{width:100%}.admin-product-row{grid-template-columns:minmax(0,1.8fr) minmax(0,1.15fr) minmax(0,.9fr) minmax(68px,.55fr) minmax(102px,.85fr) 82px 34px;gap:8px;padding-left:9px;padding-right:9px}.admin-product-row-head{font-size:.63rem}.admin-product-name{font-size:.82rem}.visibility-toggle-form .form-check-label{min-width:0}}
@media(max-width:991px){.admin-products-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-filter-search{grid-column:1/-1}.admin-product-row-head{display:none}.admin-product-row{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;gap:10px}.admin-product-main{grid-column:1/3}.admin-product-catalog{grid-column:1/2}.admin-product-mfr{grid-column:2/3}.admin-product-price,.admin-product-status,.admin-product-order{display:flex;align-items:center;gap:8px}.admin-product-price:before,.admin-product-status:before,.admin-product-order:before{content:attr(data-label);color:var(--ink-3);font-size:.66rem;font-weight:750;text-transform:uppercase}.admin-product-price{grid-column:1/2}.admin-product-status{grid-column:2/3}.admin-product-order{grid-column:1/3}.admin-product-action{grid-column:3;grid-row:1/4;align-self:stretch;display:flex;align-items:center}.admin-product-action .btn{height:100%;min-height:42px}}
@media(max-width:575px){.admin-products-head{align-items:stretch;flex-direction:column}.admin-products-head>.btn{width:100%}.admin-products-filters{grid-template-columns:1fr}.admin-filter-search{grid-column:auto}.admin-product-row{grid-template-columns:minmax(0,1fr) 38px;padding:12px}.admin-product-main,.admin-product-catalog,.admin-product-mfr,.admin-product-price,.admin-product-status,.admin-product-order{grid-column:1}.admin-product-action{grid-column:2;grid-row:1/7}.admin-product-mfr:before{content:attr(data-label);display:block;margin-bottom:2px;color:var(--ink-3);font-size:.66rem;font-weight:750;text-transform:uppercase}.admin-product-status{align-items:flex-start;flex-direction:column}.admin-product-order{justify-content:flex-start}}
