/* Shared sizing and touch controls for storefront and product manager. */
.size-label { display:block; color:var(--green-mid); font-size:.82rem; font-weight:500; margin-top:8px; }
.size-label .variant-select { display:block; width:100%; margin-top:6px; min-height:44px; }
.card, .card-body, .field, .field-row > *, .checkout .wrap > * { min-width:0; }
.card-body h3, .desc, .drawer-item-body, .order-line .name, .prow .info { overflow-wrap:anywhere; }
.card-foot { flex-wrap:wrap; gap:12px; }
.qty-picker-btn, .qty-btn { min-width:44px; min-height:44px; }
.qty-picker-input { min-height:44px; }
button:focus-visible, a:focus-visible, select:focus-visible { outline:2px solid var(--gold); outline-offset:3px; }
.variant-row input { min-width:0; width:100%; }
.weight-presets { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.weight-presets button { flex:1 1 auto; min-height:44px; }
.drawer { height:100dvh; max-height:100dvh; }
.drawer-foot { padding-bottom:max(20px, env(safe-area-inset-bottom)); }
@media (max-width:860px) {
  input, select, textarea, .variant-row input, .field input, .field select, .field textarea { font-size:16px; }
  .menu-toggle { min-width:44px; min-height:44px; }
  .nav { gap:12px; }
  .brand { align-items:center; gap:6px; min-width:0; }
  .brand-name { font-size:1.1rem; }
  .slider-dot { width:44px; height:44px; background:transparent; display:grid; place-items:center; }
  .slider-dot::after { content:''; width:8px; height:8px; border-radius:50%; background:var(--line); }
  .slider-dot.active { background:transparent; }
  .slider-dot.active::after { background:var(--gold); }
  .slide { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:520px) {
  .nav.wrap { padding:12px; }
  .brand .mark { height:34px; }
  .brand-name { font-size:1rem; }
  .cart-btn { padding:10px; min-height:44px; gap:5px; }
  .nav > div:last-child { gap:6px !important; }
  .grid, .slide { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  .section { padding:40px 0; }
  .why, .checkout { padding:48px 0; }
  .card-media { aspect-ratio:1; }
  .card-body { padding:10px; gap:6px; }
  .card-foot .add-btn { flex:1; min-height:44px; }
  .qty-row { flex-wrap:wrap; }
  .order-line { gap:12px; }
  .order-line > :last-child { flex-shrink:0; }
  .submit-btn { width:100%; }
  .field-row { grid-template-columns:minmax(0,1fr); }
  .modal-overlay { padding:12px 8px; }
  .modal { padding:20px 14px; margin:0; }
  .variant-row { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 44px; gap:6px; }
  .variant-row input { padding:10px 8px; }
  .variant-row .v-remove { min-height:44px; }
  .prow { flex-wrap:wrap; gap:10px; }
  .prow .acts { width:100%; justify-content:flex-end; }
  .icon-btn { min-height:44px; }
  header:has(#logoutBtn) { flex-wrap:wrap; gap:10px; padding:12px; }
  .toast { width:max-content; max-width:calc(100vw - 24px); border-radius:8px; text-align:center; }
}

.product-media-link { display:block; text-decoration:none; }
.card h3 a { text-decoration:none; }
.card h3 a:hover, .details-link:hover { color:var(--clay); }
.details-link { display:inline-block; margin:8px 0; font-size:.85rem; color:var(--green-mid); text-underline-offset:4px; }
.grid.product-detail-grid { display:block; }
.product-detail { padding-bottom:32px; }
.detail-back { display:inline-block; margin-bottom:24px; text-underline-offset:5px; }
.detail-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px; align-items:start; }
.detail-image { background:var(--ivory-card); aspect-ratio:1; display:grid; place-items:center; overflow:hidden; border:1px solid var(--line); }
.detail-image img { width:100%; height:100%; object-fit:contain; }
.detail-placeholder { font-family:'Fraunces',serif; color:var(--green-mid); font-size:2rem; }
.detail-category { text-transform:uppercase; letter-spacing:.12em; font-size:.75rem; color:var(--clay); }
.detail-copy h2 { font-size:clamp(1.8rem,4vw,2.8rem); margin:10px 0 18px; }
.detail-text { white-space:pre-wrap; overflow-wrap:anywhere; }
.detail-price { font-size:1.5rem; color:var(--green-deep); }
.detail-copy select, .detail-copy input { padding:12px; border:1px solid var(--line); background:var(--ivory-card); font:inherit; width:100%; margin:6px 0 14px; }
.detail-add { width:100%; min-height:48px; margin-top:8px; }
.detail-section { border-top:1px solid var(--line); padding-top:24px; margin-top:24px; }
.detail-section h3 { font-size:1.4rem; }
@media(max-width:760px) { .detail-layout { grid-template-columns:minmax(0,1fr); gap:24px; } }

/* Compact storefront cards keep more products in view on phones. */
@media (max-width:860px) {
  .drawer-close, .remove-btn { min-width:44px; min-height:44px; }
  .drawer-items { min-height:0; overscroll-behavior:contain; }
  .cat-tab { min-height:44px; }
  .nav-links-mobile { max-height:calc(100dvh - 72px); overflow-y:auto; }
}
@media (max-width:520px) {
  .wrap { padding-left:12px; padding-right:12px; }
  .brand { flex:1; }
  .brand-name { white-space:nowrap; }
  .brand .mark { height:30px; }
  .featured, .new-arrivals { padding:32px 0; }
  .section-head { gap:12px; margin-bottom:20px; align-items:start; }
  .section-head h2, .checkout h2, .why h2 { font-size:1.6rem; }
  .section-head p { margin-bottom:0; font-size:.88rem; }
  .page-head { padding:28px 0 20px; }
  .page-head h1 { font-size:1.8rem; }
  .page-head p { font-size:.9rem; }
  .cat-tabs { flex-wrap:nowrap; overflow-x:auto; gap:8px; margin-bottom:20px; padding-bottom:8px; }
  .cat-tab { flex-shrink:0; padding:8px 14px; }
  .catalog { padding-bottom:48px; }
  .card-media .glyph { font-size:1.8rem; }
  .card-media .tag { top:6px; left:6px; max-width:calc(100% - 12px); font-size:.65rem; padding:3px 7px; }
  .card-body h3 { font-size:1rem; line-height:1.3; }
  .card-body .desc { font-size:.8rem; line-height:1.45; margin:0; }
  .details-link { margin:0; min-height:44px; display:flex; align-items:center; font-size:.8rem; }
  .size-label { margin-top:2px; font-size:.75rem; }
  .size-label .variant-select { margin-top:4px; padding:8px 4px; }
  .qty-picker { display:grid; grid-template-columns:44px minmax(0,1fr) 44px; gap:2px; margin-top:4px; }
  .qty-picker-input { width:100%; min-width:0; padding:4px 0; appearance:textfield; }
  .qty-picker-input::-webkit-inner-spin-button,
  .qty-picker-input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
  .card-foot { flex-direction:column; align-items:stretch; gap:8px; margin-top:4px; }
  .price { font-size:1.05rem; }
  .card-foot .add-btn { flex:auto; width:100%; padding:10px 6px; font-size:.82rem; }
  .slider-dots { gap:0; flex-wrap:wrap; margin-top:12px; }
  .view-all-row { margin-top:24px; }
  .hero-banner-cta { position:static; padding:12px; gap:8px; }
  .hero-banner-cta a { flex:1 1 auto; text-align:center; justify-content:center; font-size:.82rem; padding:12px; min-height:44px; }
  .strip { padding:14px 0; }
  .strip .wrap { gap:8px 16px; font-size:.78rem; }
  .checkout .wrap { gap:24px; }
  .order-summary { padding:16px; }
  .detail-back { min-height:44px; margin-bottom:12px; }
  .detail-image { width:100%; max-width:300px; margin:0 auto; }
  .detail-copy h2 { font-size:1.7rem; }
  .wa-float { width:44px; height:44px; right:10px; bottom:max(10px,env(safe-area-inset-bottom)); }
  .wa-float svg { width:24px; height:24px; }
  footer { padding-bottom:72px; }
}
@media (max-width:359px) {
  .grid, .slide { grid-template-columns:minmax(0,1fr); }
  .card-media { aspect-ratio:auto; height:140px; }
  .card-body { padding:14px; }
  .qty-picker { grid-template-columns:44px 48px 44px; gap:6px; }
  .brand-name { font-size:.9rem; }
  .nav { gap:6px; }
}

/* Home showcases use smaller cards, with three arrivals on every slide. */
.compact-showcase > .wrap { max-width:940px; }
.compact-showcase { padding:36px 0; }
.compact-showcase .grid, .compact-showcase .slide { gap:16px; }
.compact-showcase .slide { grid-template-columns:repeat(3,minmax(0,1fr)); }
.compact-showcase .card-media { aspect-ratio:4/3; }
.compact-showcase .card-body { padding:12px; gap:4px; }
.compact-showcase .card-body h3 { font-size:1rem; }
.compact-showcase .card-foot { flex-direction:column; align-items:stretch; gap:8px; }
.compact-showcase .add-btn { min-height:44px; }
.compact-showcase .details-link { margin:0; }
.arrival-controls { display:flex; align-items:center; justify-content:center; gap:12px; flex-wrap:wrap; margin-top:12px; }
.arrival-controls .slider-dots { margin:0; }
.rotation-toggle { background:transparent; border:1px solid var(--line); color:var(--green-mid); border-radius:var(--radius); padding:8px 12px; min-height:44px; font:inherit; font-size:.8rem; }
.rotation-toggle[hidden] { display:none; }
@media(max-width:600px) {
  .compact-showcase { padding:24px 0; }
  .compact-showcase .grid { gap:12px; }
  .compact-showcase .slide { grid-template-columns:minmax(0,1fr); gap:10px; }
  .compact-showcase .slide .card { display:grid; grid-template-columns:96px minmax(0,1fr); align-items:start; }
  .compact-showcase .slide .card-media { height:112px; aspect-ratio:auto; }
  .compact-showcase .slide .card-media .tag { display:none; }
  .compact-showcase .slide .card-body { padding:10px; }
  .compact-showcase .slide .card-foot { flex-direction:row; flex-wrap:wrap; align-items:center; margin:0; }
  .compact-showcase .slide .card-foot .add-btn { width:auto; flex:1; }
  .compact-showcase .slide .size-label { margin:0; }
  .compact-showcase .slide .details-link { min-height:36px; }
  .compact-showcase .grid .card-media { height:auto; aspect-ratio:4/3; }
}

.arrival-controls .slider-dot { width:44px; height:44px; background:transparent; display:grid; place-items:center; }
.arrival-controls .slider-dot::after { content:''; width:8px; height:8px; border-radius:50%; background:var(--line); }
.arrival-controls .slider-dot.active::after { background:var(--gold); }

/* Promotions follow the storefront's green, gold and ivory palette. */
.price { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px; }
.price .was { color:var(--clay); text-decoration:line-through; font-size:.8rem; margin:0; }
.sale-label { display:inline-block; background:#edf1e6; color:var(--green-deep); border:1px solid var(--line); border-radius:3px; padding:2px 6px; font-family:'Work Sans',sans-serif; font-size:.7rem; font-weight:600; white-space:nowrap; }
.promotion-banner { position:fixed; z-index:56; left:50%; bottom:max(16px,env(safe-area-inset-bottom)); transform:translateX(-50%); width:min(500px,calc(100% - 150px)); display:flex; align-items:flex-start; gap:16px; padding:18px 18px 18px 22px; border:1px solid var(--gold); border-radius:8px; color:var(--ivory); background:var(--green-deep); box-shadow:0 6px 26px rgba(30,51,36,.22); }
.promotion-banner p { margin:5px 0 8px; overflow-wrap:anywhere; font-size:.95rem; }
.promotion-banner a { display:inline-flex; align-items:center; min-height:44px; color:var(--gold-bright); text-underline-offset:4px; font-size:.85rem; }
.promotion-eyebrow { text-transform:uppercase; letter-spacing:.1em; font-size:.65rem; color:var(--gold-bright); }
.promotion-close { flex-shrink:0; margin-left:auto; min-width:44px; min-height:44px; background:transparent; color:var(--ivory); border:1px solid rgba(246,241,228,.25); border-radius:4px; font-size:1.5rem; cursor:pointer; }
.promotion-admin { margin:48px 0; padding-top:28px; border-top:1px solid var(--line); }
.promotion-admin > p { color:var(--clay); }
.promotion-panels { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:20px; }
.promotion-panels[hidden] { display:none; }
.promotion-panel { min-width:0; background:var(--ivory-card,#fffdf7); border:1px solid var(--line); border-radius:6px; padding:22px; align-self:start; }
.promotion-panel h3 { margin-bottom:16px; }
.promotion-panel .field { margin:14px 0; }
.promotion-panel input, .promotion-panel textarea, .promotion-panel select { max-width:100%; }
.promotion-panel .check-label { display:flex; gap:10px; align-items:center; font-size:.9rem; margin:16px 0; min-height:44px; }
.promotion-panel .check-label input { width:20px; height:20px; accent-color:var(--green-deep); }
.promotion-help { color:var(--clay); font-size:.8rem; line-height:1.5; }
.promotion-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.promotion-actions button { min-height:44px; }
.coupon-admin-list { margin-top:24px; }
.coupon-admin-row { padding:16px 0; border-top:1px solid var(--line); overflow-wrap:anywhere; }
.coupon-admin-row p { font-size:.8rem; color:var(--clay); }
.sale-tools { padding:14px; border:1px solid var(--line); border-radius:4px; margin:12px 0 20px; }
.sale-tools > label { display:block; font-size:.85rem; margin-bottom:8px; }
.sale-tools input { width:90px; min-height:44px; padding:8px; border:1px solid var(--line); }
.coupon-form { margin:20px 0 12px; padding-top:16px; border-top:1px solid var(--line); }
.coupon-form label { font-size:.85rem; display:block; margin-bottom:8px; color:var(--green-mid); }
.coupon-entry { display:flex; gap:8px; }
.coupon-entry input { min-width:0; flex:1; width:100%; font:inherit; padding:10px; border:1px solid var(--line); border-radius:3px; text-transform:uppercase; background:var(--ivory-card); }
.coupon-entry button { min-height:44px; padding:10px 16px; background:var(--green-deep); color:var(--ivory); border:0; border-radius:3px; }
.coupon-form > p[role=status] { font-size:.85rem; color:var(--clay); }
#couponRemove { background:transparent; border:0; color:var(--clay); text-decoration:underline; min-height:44px; padding:4px 0; }
.coupon-discount-row { color:var(--green-mid); font-weight:500; }
.coupon-discount-row[hidden], #couponRemove[hidden] { display:none; }
@media(max-width:760px) {
  .promotion-panels { grid-template-columns:minmax(0,1fr); gap:16px; }
  .promotion-panel { padding:16px; }
  .promotion-banner { left:12px; right:66px; bottom:max(12px,env(safe-area-inset-bottom)); width:auto; transform:none; padding:12px; gap:8px; }
  .promotion-banner p { font-size:.85rem; }
  .promotion-banner .promotion-eyebrow { font-size:.6rem; }
  .coupon-entry input { font-size:16px; }
}

/* Custom floating ad images retain their full artwork on small screens. */
.promotion-banner { max-height:calc(100dvh - 100px); overflow-y:auto; }
.promotion-content { min-width:0; flex:1; }
.promotion-ad-image { display:block; width:100%; max-height: min(50dvh, 400px); object-fit:contain; border-radius:4px; margin-bottom:12px; }
.promotion-image-preview { display:block; width:100%; max-height:280px; object-fit:contain; margin:12px 0; border:1px solid var(--line); border-radius:4px; }
.promotion-image-preview[hidden] { display:none; }
.promotion-close { position:sticky; top:0; }

/* Product photographs stay fully visible, with honest fallbacks for missing images. */
.card-media { position:relative; overflow:hidden; background:#f0ecdf; }
.card-media img { width:100%; height:100%; object-fit:contain; padding:12px; }
.image-placeholder { display:grid; place-content:center; height:100%; width:100%; text-align:center; color:var(--green-mid); font-size:.85rem; line-height:1.7; }
.card-body .desc { color:var(--clay); font-size:.85rem; line-height:1.55; overflow-wrap:anywhere; }
.shop-assurance { display:flex; justify-content:space-between; gap:20px; padding:18px 22px; margin:0 0 24px; background:#eeefe4; border:1px solid var(--line); border-left:3px solid var(--gold); border-radius:4px; font-size:.82rem; line-height:1.7; }
.shop-assurance p { margin:0; }
.shop-assurance a { text-underline-offset:3px; }
.shop-assurance strong { color:var(--green-deep); }
@media(max-width:600px) { .shop-assurance { flex-direction:column; gap:10px; padding:14px; } }

/* Shared catalog layout: compact cards, readable packs and in-place details. */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
[hidden] { display:none !important; }
.card-body h3 { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; line-height:1.3; min-height:2.6em; }
.card-body .desc { display:none; }
.pack-line { font-size:14px; line-height:1.3; color:var(--green-mid); }
.card-foot { margin-top:auto !important; }
.card .price { flex-wrap:nowrap; gap:5px; white-space:nowrap; font-weight:700; }
.card .price > span:not(.was):not(.sale-label) { order:-1; }
.card .price .was { font-weight:400; font-size:12px; }
.card .price .sale-label { display:none; }
.image-discount { position:absolute; right:6px; top:6px; padding:3px 6px; background:var(--green-deep); color:var(--ivory); border-radius:3px; font:600 12px 'Work Sans',sans-serif; }
.card-media .tag { top:auto; bottom:6px; left:6px; font-size:12px; }
.shop-toolbar { position:sticky; top:var(--shop-header-height,72px); z-index:35; background:var(--ivory); border-bottom:1px solid var(--line); padding:8px 0 0; }
.shop-toolbar > .wrap { max-width:1200px; }
.shop-toolbar input { width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--line); border-radius:4px; background:var(--ivory-card); font:16px 'Work Sans',sans-serif; color:var(--green-deep); }
.shop-categories { display:flex; gap:8px; overflow-x:auto; padding:4px 0; }
.shop-categories button { flex-shrink:0; min-height:44px; padding:6px 14px; border:0; background:transparent; color:var(--green-mid); font:14px 'Work Sans',sans-serif; border-bottom:2px solid transparent; }
.shop-categories button[aria-pressed=true] { color:var(--green-deep); border-color:var(--gold); font-weight:600; }
.product-sheet { position:fixed; inset:0; margin:auto; width:min(620px,calc(100% - 32px)); max-height:85dvh; overflow-y:auto; overscroll-behavior:contain; padding:22px; border:1px solid var(--gold); border-radius:12px; background:var(--ivory); color:var(--green-deep); font-size:14px; }
.product-sheet::backdrop { background:rgba(15,35,22,.6); }
.sheet-head { display:flex; align-items:start; gap:12px; }
.sheet-head h2 { flex:1; font-size:1.5rem; overflow-wrap:anywhere; }
.sheet-close { position:sticky; top:0; flex-shrink:0; width:44px; height:44px; border:1px solid var(--line); background:var(--ivory); color:var(--green-deep); border-radius:50%; font-size:26px; cursor:pointer; }
.product-sheet p { line-height:1.6; }
.sheet-order .card { border:0; background:transparent; }
.sheet-order .product-media-link, .sheet-order h3, .sheet-order .details-link { display:none; }
.sheet-order .card-body { padding:8px 0; }
.sheet-order .add-btn { min-height:44px; }
.sheet-quantity { display:flex; gap:12px; align-items:center; font-size:14px; }
.sheet-quantity input { width:80px; min-height:44px; padding:8px; font:16px 'Work Sans',sans-serif; border:1px solid var(--line); background:var(--ivory-card); }
@media(max-width:480px) {
  body { font-size:14px; }
  .grid, .slide, .compact-showcase .grid, .compact-showcase .slide { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .compact-showcase .slide .card { display:flex; flex-direction:column; align-items:stretch; }
  .card .product-media-link { background:#f0ecdf; }
  .card .card-media, .compact-showcase .slide .card-media, .compact-showcase .grid .card-media { width:100%; max-width:140px; height:auto; aspect-ratio:1; margin:0 auto; }
  .card .card-media img { padding:6px; }
  .card .card-media .tag, .compact-showcase .slide .card-media .tag { display:block; max-width:calc(100% - 12px); padding:2px 5px; font-size:11px; }
  .card .card-body, .compact-showcase .slide .card-body, .compact-showcase .card-body { padding:8px; gap:3px; }
  .card .card-body h3 { font-size:14px; line-height:1.25; min-height:2.5em; }
  .card .details-link, .compact-showcase .slide .details-link { min-height:28px; font-size:14px; margin:0; }
  .card .size-label { margin:0; }
  .card .size-label .variant-select { min-height:44px; margin:0; font-size:16px; padding:4px; }
  .card:has(.variant-select) .pack-line { display:none; }
  .card .card-foot, .compact-showcase .slide .card-foot { flex-direction:column; align-items:stretch; gap:3px; padding-top:2px; }
  .card .price { font-size:16px; letter-spacing:-.4px; gap:4px; }
  .card .price .was { font-size:11px; }
  .card .card-foot .add-btn, .compact-showcase .slide .card-foot .add-btn { width:100%; flex:none; min-height:44px; height:44px; font-size:14px; padding:2px 4px; border-top:3px solid var(--ivory-card); border-bottom:3px solid var(--ivory-card); }
  .featured, .new-arrivals, .compact-showcase { padding:16px 0; }
  .section-head { margin-bottom:12px; }
  .hero-banner > img { max-height:145px; object-fit:contain; }
  .hero-banner-cta { padding:6px 12px; }
  .strip { padding:6px 0; }
  .strip .wrap { display:flex; flex-wrap:nowrap; justify-content:flex-start; overflow-x:auto; gap:20px; font-size:14px; }
  .strip span { flex-shrink:0; white-space:nowrap; }
  .shop-assurance { font-size:14px; padding:10px; margin-bottom:12px; }
  .shop-toolbar { padding-top:6px; }
  .product-sheet { inset:auto 0 0; margin:0; width:100%; max-height:88dvh; border-radius:16px 16px 0 0; padding:16px 16px max(16px,env(safe-area-inset-bottom)); }
  .sheet-order .card .card-body { padding:8px 0; }
  .catalog { padding-bottom:80px; }
}
