﻿/* Edit dialogs: a bounded shell with a scrolling body and persistent actions. */
:is(.catalog-modal,.dashboard-modal)[role=dialog]:has(.edit-modal-body){
 display:flex!important;flex-direction:column;overflow:hidden!important;
 height:min(820px,calc(100dvh - 48px));max-height:calc(100dvh - 48px)!important;min-height:0;box-sizing:border-box;
}
:is(.catalog-modal,.dashboard-modal):has(.edit-modal-body)>:not(form){flex-shrink:0}
:is(.catalog-modal,.dashboard-modal):has(.edit-modal-body)>form{
 display:flex;flex-direction:column;flex:1 1 auto;min-height:0;overflow:hidden;
}
:is(.catalog-modal,.dashboard-modal) .submission-fields:has(.edit-modal-body){
 display:block;position:relative;flex:1 1 0;min-height:0;min-inline-size:0;overflow:hidden;
}
/* Fieldsets have a special internal layout; use an ordinary flex container
   inside their allocated space so the fields, rather than the dialog, scroll. */
:is(.catalog-modal,.dashboard-modal) .submission-content:has(.edit-modal-body){
 position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;overflow:hidden;
}
.edit-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:4px 8px 8px 4px}
.edit-modal-footer{flex:0 0 auto;margin-top:16px!important;padding-top:16px;border-top:1px solid #ead8d1;background:#fffdfb;flex-wrap:wrap}
:is(.catalog-modal,.dashboard-modal) :is(.submission-status,.submission-error){flex-shrink:0;margin:8px 0 0}
@media(max-width:600px){
 :is(.catalog-modal,.dashboard-modal)[role=dialog]:has(.edit-modal-body){height:calc(100dvh - 48px);max-height:calc(100dvh - 48px)!important;padding:24px 20px!important}
 :is(.catalog-modal,.dashboard-modal):has(.edit-modal-body) h2{font-size:clamp(1.6rem,6vw,2.4rem);margin-bottom:12px}
 .dashboard-modal:has(.edit-modal-body) .dashboard-modal-intro{font-size:.8rem;margin:6px 0 12px}
}
.product-management-grid{grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start;width:min(1440px,calc(100% - 40px))}
.product-management-grid>.catalog-list{width:100%;margin:0;min-width:0;padding:28px}
.product-management-grid .category-manager{min-width:0;padding:28px}
.product-management-grid .category-manager h2{font-size:clamp(2rem,3vw,2.7rem);overflow-wrap:anywhere;margin-bottom:22px;line-height:1.08}
.product-management-grid .category-manager .category-open{background:#711a38;color:#fff;padding:12px 18px;border:0;font-size:.8rem}
.product-management-grid .category-list>div{gap:12px}
.product-management-grid .category-list>div>span{min-width:0;overflow-wrap:anywhere}
.product-management-grid .catalog-list-head{gap:20px;flex-wrap:wrap;margin-bottom:20px}
.product-list-tools{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.product-list-tools>span{font-size:.8rem;color:#765e66}
.product-edit-modal{width:min(900px,100%)}
.catalog-import-modal{width:min(900px,100%)}
.catalog-import-modal .import-heading{padding-right:32px}
.product-edit-modal h2{padding-right:38px;overflow-wrap:anywhere}
.catalog-feedback{width:min(1440px,calc(100% - 40px));margin:24px auto;color:#711a38}
@media(max-width:1075px){.product-management-grid{grid-template-columns:1fr}.product-management-grid .category-manager{width:100%}.product-management-grid .category-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));column-gap:24px}}

.product-loading{display:flex;align-items:center;justify-content:center;gap:18px;padding:30px 16px;color:#711a38}
.product-loading strong{font:600 1.15rem var(--sans)}
.product-loading p,.product-load-more p,.product-list-end{font-size:.85rem;color:#765e66;margin:7px 0}
.product-loading-orbit{width:34px;height:34px;flex-shrink:0;border:3px solid #f1ded7;border-top-color:#711a38;border-right-color:#d89d89;border-radius:50%;animation:product-orbit 1s linear infinite}
.product-skeletons{display:grid;gap:12px}
.product-skeletons>div{height:82px;border-radius:14px;background:linear-gradient(105deg,#f7ece6 25%,#fffaf7 45%,#f7ece6 65%);background-size:220% 100%;animation:product-shimmer 1.6s ease-in-out infinite}
.product-load-more{text-align:center;padding:28px 12px 8px;border-top:1px solid #ead8d1;margin-top:20px}
.product-list-end{text-align:center;padding:24px 12px 0}
@keyframes product-orbit{to{transform:rotate(360deg)}}
@keyframes product-shimmer{from{background-position:200% 0}to{background-position:-20% 0}}
@media(prefers-reduced-motion:reduce){.product-loading-orbit,.product-skeletons>div{animation:none}}
/* Consistent switches for all boolean form fields, including keyboard focus. */
label.remember-switch{position:relative;min-height:44px;cursor:pointer}
label.remember-switch input[type=checkbox]{position:absolute;width:1px!important;height:1px!important;min-height:0!important;padding:0!important;margin:0;border:0;opacity:0;clip-path:inset(50%)}
label.remember-switch .switch-track{width:46px;height:26px;flex:0 0 46px}
label.remember-switch input:focus-visible+.switch-track{outline:2px solid #711a38;outline-offset:5px}
label.remember-switch:has(input:disabled){cursor:not-allowed;opacity:.65}
.catalog-fields label.remember-switch{display:flex;align-items:center;gap:12px;margin:0;text-transform:none;letter-spacing:normal;font-size:.85rem;line-height:1.5}
@media(prefers-reduced-motion:reduce){.remember-switch .switch-track,.remember-switch .switch-track i{transition:none}}
.product-save-footer .product-save-message{flex-basis:100%;margin:0;padding:12px 16px;border-radius:12px;font-size:.85rem;line-height:1.5}
.product-save-message.success{background:#edf5ed;color:#285735;border:1px solid #c5dcc7}
.product-save-message.error{background:#fff0ef;color:#8a203b;border:1px solid #eac1c7}
.catalog-search{padding:20px;margin:8px 0 24px;border:1px solid #ead8d1;border-radius:18px;background:#fff8f4}
.catalog-search label{display:block;font-weight:600;color:#711a38;margin-bottom:10px}
.catalog-search>div{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.catalog-search input{flex:1 1 240px;min-width:0;padding:14px 16px;border:1px solid #d9bdb5;border-radius:12px;background:#fff;font:inherit}
.catalog-search input:focus-visible{outline:2px solid #711a38;outline-offset:2px}
.catalog-search p{font-size:.8rem;color:#765e66;margin:10px 0 0}
.gallery-management-list{margin:40px auto 0}
.gallery-management-list .catalog-list-head{gap:20px;flex-wrap:wrap;margin-bottom:24px}
.gallery-management-list .catalog-table article{grid-template-columns:64px minmax(0,1fr) auto auto}
.gallery-management-list .gallery-admin-thumb{width:64px;height:80px;object-fit:cover;object-position:center top;border-radius:12px}
@media(max-width:760px){.gallery-management-list .catalog-table article{grid-template-columns:64px minmax(0,1fr)}.gallery-management-list .catalog-state,.gallery-management-list .catalog-row-actions{grid-column:2}}
