/* ==========================================================================
   Megakhan UX layer  (V2.9.23)
   Loaded AFTER site.css. Purely additive: nothing here removes or renames an
   existing rule, and every new component is created by mk-ux.js (progressive
   enhancement), so every page still works if this file or the script is missing.

   Sections
    1  Foundations      (text-size, viewport units, grid blow-out, safe areas)
    2  Focus + skip link
    3  Cross-browser fallbacks (backdrop-filter, color-mix, dvh, :has)
    4  Forms            (touch size, iOS zoom, RTL numeric fields, errors, required)
    5  Error summary, counters, password reveal
    6  Busy buttons + page progress bar
    7  Mobile bottom navigation + sticky buy bar + sticky form actions
    8  Back-to-top, network banner, toasts
    9  Dark-theme (midnight) adjustments for the new components
   10  Accessibility modes (reduced motion, forced colours, print)
   ========================================================================== */

/* ---------- design tokens for the new layer ---------- */
:root{
  --mk-focus:#2563eb;
  --mk-focus-soft:rgba(37,99,235,.28);
  --mk-danger:#b42318;
  --mk-danger-soft:rgba(180,35,24,.16);
  --mk-ok:#067647;
  --mk-ctl-h:44px;                 /* minimum height of a tappable control */
  --mk-bn-h:60px;                  /* bottom navigation bar height */
  --mk-layer-nav:900;              /* below the sticky header (1000), above page content */
}
html[data-theme="midnight"]{
  --mk-focus:#7dd3fc;
  --mk-focus-soft:rgba(125,211,252,.35);
  --mk-danger:#fda29b;
  --mk-danger-soft:rgba(253,162,155,.22);
  --mk-ok:#6ce9a6;
}
html[data-theme="amazon"]{--mk-focus:#007185;--mk-focus-soft:rgba(0,113,133,.3)}
html[data-theme="sunset"]{--mk-focus:#c2410c;--mk-focus-soft:rgba(194,65,12,.3)}
html[data-theme="emerald"]{--mk-focus:#047857;--mk-focus-soft:rgba(4,120,87,.3)}
html[data-theme="shopify"]{--mk-focus:#2c6ecb;--mk-focus-soft:rgba(44,110,203,.3)}

/* ==========================================================================
   1  Foundations
   ========================================================================== */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;                    /* stop iOS/Android inflating text on rotate */
  -webkit-tap-highlight-color:transparent;
  scroll-padding-top:calc(var(--nav-h,68px) + 64px);   /* anchors are not hidden under the sticky header */
}
body{
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
@supports (min-height:100dvh){ body{min-height:100dvh} }   /* mobile browser toolbars no longer cut the page */
main{overflow-wrap:break-word}
img,video,canvas{max-width:100%}
img{height:auto}                                         /* attribute sizes never distort an image */
/* grid / flex children may shrink: long words, tables and URLs can no longer push the page sideways */
.cat-main,.cat-layout>*,.cart-layout>*,.product-detail>*,.hero-grid>*,.support-layout>*,.form-grid>*,.footergrid>*{min-width:0}
/* iPhone notch / Android gesture bar */
@supports (padding:env(safe-area-inset-top)){
  .topbar{padding-top:env(safe-area-inset-top)}
  body{padding-inline:env(safe-area-inset-left) env(safe-area-inset-right)}
}
/* 300 ms tap delay + accidental double-tap zoom on controls */
a,button,summary,label,select,input,textarea,[role=button]{touch-action:manipulation}
/* opt-in helper for a wide table: scrolls inside itself instead of widening the page (existing .table-card rules are left alone) */
.mk-table-scroll{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ==========================================================================
   2  Focus + skip link
   ========================================================================== */
:focus-visible{outline:2px solid var(--mk-focus);outline-offset:2px}
.mk-search:focus-within{box-shadow:0 0 0 3px var(--mk-focus-soft)}
.mk-skip{
  position:fixed;inset-block-start:8px;inset-inline-start:8px;z-index:100000;
  padding:11px 18px;border-radius:10px;background:var(--primary,#4f46e5);color:var(--on-primary,#fff);
  font-weight:800;text-decoration:none;transform:translateY(-250%);transition:transform .15s ease
}
.mk-skip:focus{transform:none}
main:focus{outline:none}                                  /* target of the skip link, not an interactive control */

/* ==========================================================================
   3  Cross-browser fallbacks
   ========================================================================== */
.topbar{-webkit-backdrop-filter:blur(14px)}               /* Safari < 18 only understands the prefixed property */
.floating-card{-webkit-backdrop-filter:blur(14px)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .topbar{background:var(--header-bg,var(--surface,#fff))}
  .portal-modal-backdrop,.mk-modal{background:rgba(2,6,23,.82)}
}
/* browsers without color-mix() (Chrome < 111, Safari < 16.2, Firefox < 113) keep solid, readable surfaces */
@supports not (color:color-mix(in srgb,red,blue)){
  .mk-search{border-color:var(--primary,#4f46e5)}
  .mk-search-row{border-top:1px solid var(--border,#e6e8ef)}
}
/* Firefox draws a second dotted focus border inside buttons */
button::-moz-focus-inner{border:0;padding:0}
/* Safari draws inner shadows and its own radius on text fields */
input[type=text],input[type=email],input[type=tel],input[type=url],input[type=search],input[type=password],textarea{-webkit-appearance:none;appearance:none}
input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}
/* empty date fields collapse to a few pixels in iOS Safari */
input[type=date],input[type=time],input[type=datetime-local],input[type=month]{min-height:var(--mk-ctl-h);line-height:1.2}
input[type=date]::-webkit-date-and-time-value{text-align:start;min-height:1.2em}

/* ==========================================================================
   4  Forms
   ========================================================================== */
/* RTL: e-mail, phone, URL, numbers and passwords are always typed left-to-right.
   Leaving them RTL scrambles "+20 101 234 5678" and "name@shop.com" for Arabic users. */
html[dir=rtl] :is(input[type=email],input[type=tel],input[type=url],input[type=number],input[type=password],input[inputmode=numeric],input[inputmode=decimal],input[inputmode=tel],input[data-digits]){
  direction:ltr;text-align:right
}
html[dir=rtl] :is(input[type=email],input[type=tel],input[type=url],input[type=number],input[inputmode=numeric],input[inputmode=decimal],input[inputmode=tel],input[data-digits])::placeholder{direction:rtl}
/* invalid state, the same in every theme */
.mk-invalid,.input-validation-error,input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{
  border-color:var(--mk-danger)!important;
  box-shadow:0 0 0 3px var(--mk-danger-soft)
}
.mk-field-error,.field-validation-error{color:var(--mk-danger)}
.mk-field-error::before{content:"\26A0\FE0E\00a0";font-weight:700}      /* icon + text: colour is never the only signal */
.mk-field-error:empty::before{content:none}
/* required marker, added by mk-ux.js */
.mk-req{color:var(--mk-danger);font-weight:800;margin-inline-start:.2em;text-decoration:none}
.mk-req-note{display:block;box-sizing:border-box;width:100%;flex:0 0 100%;grid-column:1/-1;order:-1;font-size:12.5px;line-height:1.5;color:var(--muted,#667085);margin:0 0 18px;padding:0 0 12px;border-bottom:1px dashed var(--border,#e3e6ef);text-align:start}
.mk-req-note .mk-req{margin-inline-start:0;margin-inline-end:.25em}
/* product-card rating: nothing is drawn when a product has no approved review yet */
.mk-rate:empty{display:none}
/* helper text under a field, one look everywhere */
.field-help,label>small,.mk-help{color:var(--muted,#667085);font-size:12.5px;line-height:1.4}
/* read-only / disabled controls are visibly different (not only greyed text) */
input:disabled,select:disabled,textarea:disabled{opacity:.65;cursor:not-allowed}
input[readonly]:not([type=checkbox]):not([type=radio]){background-image:none}

/* ----- touch devices: every control is a comfortable target and never triggers iOS zoom ----- */
@media (pointer:coarse){
  html[lang] body :is(.btn,button:not(.mk-pw-toggle),.nav-cart,.nav-group>summary,.pager a,.chips a){min-height:var(--mk-ctl-h)}
  html[lang] body main :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]):not([type=hidden]),select,textarea){
    font-size:16px!important;                                  /* below 16px iOS Safari zooms the page on focus */
    min-height:var(--mk-ctl-h)!important
  }
  html[lang] body .topbar select,html[lang] body .mk-search input[type=search]{font-size:16px!important;min-height:var(--mk-ctl-h)}
  html[lang] body :is(input[type=checkbox],input[type=radio]){width:22px;height:22px;flex:0 0 auto}
  html[lang] body :is(label.check-row,.cat-checks label,.cat-list a){min-height:var(--mk-ctl-h);display:flex;align-items:center}
  .mk-density-btn{min-height:var(--mk-ctl-h)}
}

/* ==========================================================================
   5  Error summary, counters, password reveal
   ========================================================================== */
.mk-error-summary{
  margin:0 0 16px;padding:14px 16px;border-radius:12px;
  border:1px solid var(--mk-danger);background:var(--mk-danger-soft);color:var(--text,#101828)
}
.mk-error-summary:focus{outline:2px solid var(--mk-focus);outline-offset:2px}
.mk-error-summary strong{display:block;margin-bottom:6px;color:var(--mk-danger)}
.mk-error-summary ul{margin:0;padding-inline-start:20px}
.mk-error-summary a{color:var(--text,#101828)!important;text-decoration:underline;font-weight:650}   /* theme link colours do not reach 4.5:1 on the tinted summary */
.mk-count{display:block;position:static;clear:both;width:100%;margin-top:3px;font-size:12px;color:var(--muted,#667085);text-align:end}
.mk-count.is-near{color:#b54708}
.mk-count.is-over{color:var(--mk-danger);font-weight:700}
html[data-theme="midnight"] .mk-count.is-near{color:#fec84b}
.mk-pw{position:relative;display:block;width:100%;min-width:0;max-width:100%}      /* min-width:0 lets a grid/flex parent shrink the wrapper */
.mk-pw>input{padding-inline-end:48px!important;width:100%;min-width:0;max-width:100%}
.mk-pw-toggle{
  position:absolute;inset-block-start:0;inset-inline-end:0;height:var(--mk-ctl-h);min-width:44px;padding:0 10px;
  display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--muted,#667085);
  border-radius:0 10px 10px 0;cursor:pointer;font-size:12.5px;font-weight:700
}
html[dir=rtl] .mk-pw-toggle{border-radius:10px 0 0 10px}
.mk-pw-toggle:hover{color:var(--primary,#4f46e5)}
.mk-pw-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ==========================================================================
   6  Busy buttons + page progress bar
   ========================================================================== */
@keyframes mk-spin{to{transform:rotate(360deg)}}
button[aria-busy=true],.btn[aria-busy=true]{pointer-events:none;opacity:.85}
button[aria-busy=true]::after,.btn[aria-busy=true]::after{
  content:"";display:inline-block;width:1em;height:1em;margin-inline-start:.6em;vertical-align:-.15em;
  border:2px solid currentColor;border-inline-end-color:transparent;border-radius:50%;animation:mk-spin .7s linear infinite
}
.mk-progress{
  position:fixed;inset-block-start:0;inset-inline:0;height:3px;z-index:100002;pointer-events:none;
  background:linear-gradient(90deg,var(--primary,#4f46e5),var(--accent,var(--primary2,#7c3aed)));
  transform:scaleX(0);transform-origin:left center;opacity:0;transition:transform .4s ease,opacity .2s
}
html[dir=rtl] .mk-progress{transform-origin:right center}
html.mk-loading .mk-progress{opacity:1;transform:scaleX(.82);transition:transform 6s cubic-bezier(.1,.7,.2,1),opacity .1s}

/* ==========================================================================
   7  Mobile bottom navigation, sticky buy bar, sticky form actions
   ========================================================================== */
.mk-bottomnav,.mk-buybar{display:none}
@media (max-width:700px){
  html.mk-has-bottomnav body{padding-bottom:calc(var(--mk-bn-h) + env(safe-area-inset-bottom,0px))}
  .mk-bottomnav{
    display:grid;grid-template-columns:repeat(5,1fr);position:fixed;inset-inline:0;bottom:0;z-index:var(--mk-layer-nav);
    height:calc(var(--mk-bn-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);
    background:var(--surface,#fff);color:var(--text,#101828);border-top:1px solid var(--border,#e6e8ef);
    box-shadow:0 -6px 20px rgba(16,24,40,.08)
  }
  .mk-bottomnav a,.mk-bottomnav button{
    position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    min-width:0;padding:6px 2px;border:0;background:transparent;color:var(--muted,#667085);
    font:inherit;font-size:11px;font-weight:650;line-height:1.1;text-decoration:none;cursor:pointer
  }
  .mk-bottomnav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .mk-bottomnav span.lbl{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mk-bottomnav [aria-current=page]{color:var(--primary,#4f46e5)}
  .mk-bottomnav [aria-current=page] svg{stroke-width:2.3}
  .mk-bottomnav .mk-bn-badge{
    position:absolute;inset-block-start:4px;inset-inline-start:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;
    border-radius:99px;background:var(--mk-danger-solid,#d92d20);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center
  }
  .mk-bottomnav .mk-bn-badge[hidden]{display:none}
  /* toasts and the back-to-top button sit above the bar */
  html.mk-has-bottomnav .mk-toast-host,html.mk-has-bottomnav .mk-toast,html.mk-has-bottomnav #mkToast{bottom:calc(var(--mk-bn-h) + 12px + env(safe-area-inset-bottom,0px))}
  html.mk-has-bottomnav .mk-totop{bottom:calc(var(--mk-bn-h) + 16px + env(safe-area-inset-bottom,0px))}

  /* sticky "Add to cart" on the product page: price + button, shown once the real button has scrolled away */
  html.mk-has-buybar body{padding-bottom:calc(var(--mk-bn-h) + 64px + env(safe-area-inset-bottom,0px))}
  .mk-buybar{
    position:fixed;inset-inline:0;bottom:calc(var(--mk-bn-h) + env(safe-area-inset-bottom,0px));z-index:calc(var(--mk-layer-nav) - 1);
    display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--surface,#fff);border-top:1px solid var(--border,#e6e8ef);
    box-shadow:0 -6px 20px rgba(16,24,40,.08);transform:translateY(130%);transition:transform .22s ease;visibility:hidden
  }
  .mk-buybar.is-on{transform:none;visibility:visible}
  .mk-buybar .mk-bb-price{flex:1;min-width:0;font-weight:900;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mk-buybar .mk-bb-price small{display:block;font-size:11.5px;font-weight:600;color:var(--muted,#667085)}
  .mk-buybar .mk-bb-priceinner{margin:0!important;font-size:20px!important;line-height:1.1!important;display:inline-flex;align-items:baseline;gap:3px}
  .mk-buybar .mk-bb-priceinner .az-int{font-size:1em!important}
  .mk-buybar .mk-bb-priceinner .az-cur,.mk-buybar .mk-bb-priceinner .az-dec{font-size:.6em!important}
  .mk-buybar .btn{flex:0 0 auto;min-width:150px}
  html:not(.mk-has-bottomnav) .mk-buybar{bottom:env(safe-area-inset-bottom,0px)}

  /* long forms: the Save / Submit row stays reachable (opt-in, set by mk-ux.js on forms with many fields) */
  form.mk-long .form-actions.mk-sticky-actions{
    position:sticky;bottom:calc(var(--mk-bn-h) * 0 + env(safe-area-inset-bottom,0px));z-index:30;margin-top:14px;padding:10px 0;
    background:linear-gradient(180deg,transparent,var(--surface,#fff) 32%)
  }
}
/* bottom nav is a storefront pattern: never on admin / vendor workspaces; hidden while the on-screen keyboard is open */
html[data-admin="1"] .mk-bottomnav{display:none!important}
html.mk-kb .mk-bottomnav,html.mk-kb .mk-buybar{display:none!important}
@media (max-width:700px){
  /* the sticky "Place order" button must clear the bar when both exist */
  html.mk-has-bottomnav #placeOrderBtn{bottom:calc(var(--mk-bn-h) + 12px + env(safe-area-inset-bottom,0px))}
}

/* ==========================================================================
   8  Back-to-top, network banner
   ========================================================================== */
.mk-totop{
  position:fixed;inset-inline-end:16px;bottom:20px;z-index:var(--mk-layer-nav);width:44px;height:44px;border-radius:50%;
  border:1px solid var(--border,#e6e8ef);background:var(--surface,#fff);color:var(--text,#101828);
  box-shadow:0 6px 18px rgba(16,24,40,.18);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .18s,transform .18s,visibility .18s
}
.mk-totop.is-on{opacity:1;visibility:visible;transform:none}
.mk-totop svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.mk-net{
  position:fixed;inset-inline:0;top:0;z-index:100001;padding:8px 14px;text-align:center;font-size:13.5px;font-weight:700;
  background:#b54708;color:#fff;transform:translateY(-110%);transition:transform .2s
}
.mk-net.is-on{transform:none}
.mk-net.is-ok{background:#067647}

/* ==========================================================================
   9  Midnight (dark) theme: the new components use the dark surface tokens
   ========================================================================== */
/* native controls (scrollbars, date pickers, autofill, select popups) follow the theme instead of staying white in the dark theme */
:root{color-scheme:light}
html[data-theme="midnight"]{color-scheme:dark}
html[data-theme="midnight"] .mk-bottomnav,
html[data-theme="midnight"] .mk-buybar,
html[data-theme="midnight"] .mk-totop{background:var(--surface,#101827);color:var(--text,#f8fafc);border-color:var(--border,#263449);box-shadow:0 -6px 20px rgba(0,0,0,.45)}
html[data-theme="midnight"] .mk-bottomnav a,
html[data-theme="midnight"] .mk-bottomnav button{color:var(--muted,#a5b4c7)}
html[data-theme="midnight"] .mk-bottomnav [aria-current=page]{color:var(--primary,#38bdf8)}

/* ==========================================================================
   10  Accessibility modes + print
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
@media (forced-colors:active){
  .btn,button,.mk-bottomnav,.mk-buybar,.mk-totop,.mk-error-summary{border:1px solid ButtonText}
  .mk-bottomnav [aria-current=page]{text-decoration:underline}
  .mk-invalid,.input-validation-error{border:2px solid Mark!important}
}
@media print{
  .mk-bottomnav,.mk-buybar,.mk-totop,.mk-net,.mk-progress,.mk-skip,.mk-pw-toggle,.mk-count,.mk-error-summary{display:none!important}
  html.mk-has-bottomnav body{padding-bottom:0}
}

/* V2.9.24: plan badges sit in the top inline-end corner (right in LTR, left in RTL) */
.sv-step-card{position:relative}
.sv-step-card .sv-flags{position:absolute;inset-block-start:8px;inset-inline-end:8px;display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;max-width:70%;z-index:1}
.sv-step-card .sv-flags .badge{font-size:10px;letter-spacing:.04em;padding:2px 8px;white-space:nowrap}
.sv-step-card:has(.sv-flags) header{padding-inline-end:0;margin-block-start:14px}

/* V2.9.24: chart type switcher (bar / line / pie / horizontal bar) */
.mk-chart-switch{display:inline-flex;flex-wrap:wrap;gap:4px;margin:0 0 8px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.mk-chart-switch button{border:0;background:transparent;color:var(--muted);font:600 12px/1 inherit;padding:7px 12px;border-radius:7px;cursor:pointer;min-height:30px}
.mk-chart-switch button[aria-pressed=true]{background:var(--primary);color:var(--on-primary,#fff)}
.mk-chart-switch button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}
@media (pointer:coarse){.mk-chart-switch button{min-height:40px;padding:10px 14px}}

/* V2.9.24: form alignment + spacing */
.form-grid{align-items:start}
.form-grid>label,.form-grid>.field,.form-grid>div:not(.form-actions){align-content:start;min-width:0}
.form-grid .form-actions,.form-card .form-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-block-start:8px}
.mk-btn-gap{margin-inline-start:10px}
.mk-btn-top{margin-block-start:14px}
@media (max-width:640px){.form-actions .btn,.form-actions button{flex:1 1 140px}}

/* V2.9.24: localization hub */
.lh-table .lh-c{text-align:center;white-space:nowrap}
.lh-cell{display:inline-block;min-width:56px;padding:3px 8px;border-radius:8px;font-weight:700;font-size:12px}
.lh-ok{background:#e6f6ef;color:#0b6b49}.lh-warn{background:#fef3e2;color:#8a4a06}.lh-bad{background:#fdecec;color:#a11d24}.lh-na{background:var(--border);color:var(--muted)}
.lh-miss{display:block;font-size:11.5px;margin-block-start:3px}
html[data-theme="midnight"] .lh-ok{background:#12372b;color:#7ee2b8}html[data-theme="midnight"] .lh-warn{background:#3b2a10;color:#f5c47a}html[data-theme="midnight"] .lh-bad{background:#3d1a1d;color:#f5a3a8}
.lh-review{color:#8a4a06;font-weight:700}
html[data-theme="midnight"] .lh-review{color:#f5c47a}

/* V2.9.27: language chips (one field, many languages) */
.mk-lang-off{display:none!important}
.mk-lang-bar{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-block:2px -4px}
.mk-lang-tabs{display:flex;flex-wrap:wrap;gap:6px}
.mk-lang-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:5px 12px;font:700 12px/1.2 inherit;cursor:pointer;min-height:30px}
.mk-lang-chip[aria-selected=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary,#fff)}
.mk-lang-chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.mk-lang-dot{width:9px;height:9px;border-radius:50%;background:#c0262d;flex:none;box-shadow:0 0 0 2px var(--surface)}
.mk-lang-chip[data-state=ok] .mk-lang-dot{background:#0f8a5f}
.mk-lang-chip[data-state=machine] .mk-lang-dot{background:#e08a00}
.mk-lang-chip[aria-selected=true] .mk-lang-dot{box-shadow:0 0 0 2px #fff}
.mk-lang-meter{font-size:12px;color:var(--muted)}
@media (pointer:coarse){.mk-lang-chip{min-height:40px;padding:8px 14px}}
.mk-lang-meter{unicode-bidi:plaintext}

/* V2.9.28: review queue */
.mk-rq-title{margin:0 0 14px;font-size:1.15rem}
.mk-rq-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-block-end:16px}
.mk-rq-lbl{display:block;font-weight:700;font-size:12.5px;color:var(--muted);margin-block-end:6px}
.mk-rq-src{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:color-mix(in srgb,var(--surface) 92%,var(--border));white-space:pre-wrap;min-height:44px;overflow-wrap:anywhere}
.mk-rq input:not([type=hidden]),.mk-rq textarea{width:100%}
.mk-rq-hint{font-size:12px}
@media (max-width:760px){.mk-rq-row{grid-template-columns:1fr}}

/* V2.9.30 — #1 Best Seller badge: top-left (LTR) / top-right (RTL) of the card image; the SALE badge is pushed below it */
.mk-bs-corner{position:absolute;top:8px;inset-inline-start:8px;z-index:3;background:#c45500;color:#fff;font-size:.72rem;font-weight:800;line-height:1.2;padding:3px 9px;border-radius:6px;box-shadow:0 3px 10px rgba(196,85,0,.35);pointer-events:none;white-space:nowrap}
.product-card .product-image:has(.mk-bs-corner) .discount-badge{top:40px!important}
.mk-best-badge{display:inline-block;background:#c45500;color:#fff;font-size:.8rem;font-weight:800;padding:3px 10px;border-radius:6px;margin:4px 0}

/* V2.9.30 — portal font: Noto Sans (Latin) + Noto Sans Arabic, served from /fonts so every device shows the same letterforms (SIL Open Font License) */
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:500 600;font-display:swap;src:url(/fonts/noto-sans-latin-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans";font-style:normal;font-weight:700 900;font-display:swap;src:url(/fonts/noto-sans-latin-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-arabic-400.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:500 600;font-display:swap;src:url(/fonts/noto-sans-arabic-600.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
@font-face{font-family:"Noto Sans Arabic";font-style:normal;font-weight:700 900;font-display:swap;src:url(/fonts/noto-sans-arabic-700.woff2) format("woff2");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0898-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC}
:root:root:root{--mk-font:"Noto Sans","Noto Sans Arabic",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
:root:root:root[lang^="ar"]{--mk-font:"Noto Sans Arabic","Noto Sans",Tahoma,"Segoe UI",ui-sans-serif,system-ui,Arial,sans-serif}
:root:root:root[lang^="zh"]{--mk-font:"Noto Sans","PingFang SC","Microsoft YaHei","Noto Sans SC","Hiragino Sans GB",ui-sans-serif,system-ui,sans-serif}
html body{font-family:var(--mk-font)}

/* V2.9.30 — header "Sign in" / "Create account" and every other header link use one size that follows the density: 14px (expand) / 12px (compact) */
html{--mk-nav-fs:14px}html[data-density=compact]{--mk-nav-fs:12px}
html body .topbar :is(.actions>a,.nav-group summary,.nav-dropdown a,.auth-nav a,.auth-nav .nav-link,.nav-register,.nav-cart,.account-trigger,.account-dropdown a){font-size:var(--mk-nav-fs)!important;font-family:var(--mk-font)}

/* V2.9.30 — ChangeApprovals preview (live now / after approval) */
.mk-pv-tools{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.mk-pv-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.mk-pv-grid.v-live,.mk-pv-grid.v-after{grid-template-columns:minmax(0,760px)}
.mk-pv-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px;min-width:0}
.mk-pv-card.side-after{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 18%,transparent)}
.mk-pv-tag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:3px 10px;border-radius:99px;background:var(--surface-2,#eef0f6);color:var(--muted)}.mk-pv-tag.t-after{background:var(--primary);color:var(--on-primary,#fff)}
.mk-pv-main{display:block;width:100%;max-height:300px;object-fit:contain;background:var(--surface-2,#f3f4f8);border-radius:12px;margin-top:10px}.mk-pv-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.mk-pv-thumbs img{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}
.mk-pv-noimg{height:140px;display:grid;place-items:center;border:1px dashed var(--border);border-radius:12px;color:var(--muted);margin-top:10px}
.mk-pv-price{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.mk-pv-price strong{font-size:1.4rem}.mk-pv-price s{color:var(--muted)}.mk-pv-off{background:#dc2626;color:#fff;border-radius:6px;padding:1px 8px;font-size:.8rem;font-weight:800}
.mk-pv-desc{width:100%;min-height:170px;border:1px solid var(--border);border-radius:10px;background:#fff}
.mk-pv-facts{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px}.mk-pv-facts li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--border);padding:4px 0}
.mk-pv-card .is-new,.mk-pv-thumbs img.is-new{background:color-mix(in srgb,#16a34a 18%,transparent);outline:2px solid color-mix(in srgb,#16a34a 55%,transparent);border-radius:6px}
.mk-pv-banner{width:100%;max-height:160px;object-fit:cover;border-radius:12px;margin-top:10px}.mk-pv-storehead{display:flex;gap:10px;align-items:center;margin:10px 0}.mk-pv-logo{width:56px;height:56px;border-radius:50%;object-fit:cover;border:1px solid var(--border)}
.mk-pv-list{margin:10px 0 0;display:grid;gap:6px}.mk-pv-list div{display:grid;grid-template-columns:minmax(110px,35%) 1fr;gap:8px}.mk-pv-list dt{color:var(--muted);font-weight:700}.mk-pv-list dd{margin:0;white-space:pre-line}
.mk-pv-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:16px}
@media(max-width:860px){.mk-pv-grid{grid-template-columns:1fr}}
.mk-together-note{flex-basis:100%;margin:8px 0 0;color:#b42318;font-size:.85rem}

/* V2.9.30 — print language picker next to print / PDF links */
.mk-print-lang{font:inherit;font-size:12px;padding:3px 6px;margin-inline-start:4px;border:1px solid var(--border,#d7dbe6);border-radius:8px;background:var(--surface,#fff);color:var(--text,#101828);max-width:120px;vertical-align:middle}
.mk-print-lang-row{margin:0 0 10px;font-size:13px;color:var(--muted,#667085)}.mk-print-lang-row label{display:inline-flex;gap:6px;align-items:center}

/* V2.9.30 — Page Management content (header / body / footer) sits directly on the page: no white rounded box, in every theme */
html body :is(.cms-page-header,.cms-page-footer,.cms-page-body){background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding-inline:0!important}
html body .cms-page-body-slot{margin-block:14px}

/* V2.9.32 — My Account tabs: on phones the tabs become a dropdown (Option B) */
.acct-tab-select-wrap{display:none}
@media(max-width:700px){html body .acct-tabs{display:none!important}html body .acct-tab-select-wrap{display:block;margin:0 0 14px}html body .acct-tab-select{width:100%;min-height:46px;font-weight:700}}

/* V2.9.30 — zoom-proof layouts: browser zoom shrinks the CSS viewport, so layouts must degrade gradually, never jump or overflow */
@media (max-width:1100px) and (min-width:821px){html body .editor-grid{grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr)!important}}
html body .preview-panel{top:84px}
html body .preview-panel iframe{height:min(620px,calc(100vh - 220px));min-height:320px}
@media (max-width:820px){html body .preview-panel{position:static}html body .preview-panel iframe{height:480px}}
html body .table-card{overflow-x:auto;max-width:100%}
html body .inline-edit-input{min-width:min(240px,100%);max-width:100%}
html body :is(.form-card,.table-card,.admin-panel,.page-shell) :is(img,video,iframe,canvas,svg){max-width:100%}
html body .row-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
html body .form-grid>*{min-width:0}
html body :is(.page-head,.sectionhead,.admin-heading){flex-wrap:wrap}

/* V2_9_30 home sections admin */
.hb-head{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}.hb-head h2{margin:0 0 4px}
.hb-preview{display:flex;gap:10px;overflow-x:auto;padding:12px;margin:10px 0;border:1px dashed var(--border);border-radius:12px;background:var(--surface-2,transparent)}
.hb-pv-tile{flex:0 0 96px;display:grid;gap:4px;text-align:center;font-size:12px}.hb-pv-tile img,.hb-pv-ph{width:96px;height:72px;object-fit:cover;border-radius:10px;background:var(--border);display:block}
.hb-pv-ph{display:block}
.hb-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:8px 0}
.hb-tile{border:1px solid var(--border);border-radius:12px;padding:10px;display:grid;gap:6px;align-content:start}.hb-tile img,.hb-tile .hb-pv-ph{width:100%;height:96px;object-fit:cover;border-radius:8px}.hb-tile small{overflow-wrap:anywhere;color:var(--muted)}
.hb-edit{margin:10px 0}.hb-edit>summary{cursor:pointer;font-weight:600}.hb-edit[open]>summary{margin-bottom:10px}

/* V2_9_32 header spacing + clear, direction-independent menu arrows */
html body .topbar .hdr-user .auth-nav,html body .topbar .auth-nav{gap:20px!important}
html body .topbar .auth-nav a+a,html body .topbar .hdr-user a+a{margin-inline-start:10px}
html body .topbar .nav-group>summary,html body .topbar .nav-subgroup>summary,html body .topbar .account-trigger{list-style:none;display:inline-flex;align-items:center;gap:0}
html body .topbar summary::-webkit-details-marker{display:none}
html body .topbar summary::marker{content:''}
html body .topbar :is(.nav-group>summary,.nav-subgroup>summary)::after{content:''!important;display:inline-block;flex:0 0 auto;width:7px;height:7px;box-sizing:border-box;border:0 solid currentColor;border-right-width:2px;border-bottom-width:2px;transform:rotate(45deg)!important;margin:0 0 3px!important;margin-inline-start:10px!important;font-size:0!important;opacity:.95;transition:transform .15s}
html body .topbar :is(.nav-group,.nav-subgroup)[open]>summary::after{transform:rotate(225deg)!important;margin-bottom:-3px!important}
html body .topbar .nav-dropdown .nav-subgroup>summary{display:flex;justify-content:space-between;width:100%}
/* one-line notice when a page is opened from a red badge */
.mk-need-note{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border:1px solid #fecaca;background:#fef2f2;color:#7f1d1d;border-radius:10px;font-size:13.5px}
#themeSelect[hidden]{display:none!important}
.mk-chart-table{max-height:420px;overflow:auto;margin:6px 0}.mk-chart-table table{width:100%;border-collapse:collapse}.mk-chart-table th,.mk-chart-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:start;vertical-align:top}
@media print{.mk-chart-switch{display:none}}
/* the SALE badge used the physical left edge, so in Arabic (heart on the left) it slid under the wishlist heart: both sit on the logical start edge now, the heart stays on the end edge */
.product-card .product-image .discount-badge{left:auto!important;right:auto!important;inset-inline-start:10px!important;inset-inline-end:auto!important;top:10px}
.product-card .product-image .mk-heart{z-index:4}
/* home sections admin (card per section, drag tiles) */
.hb-section.is-off{opacity:.8;border-style:dashed}
.hb-titleform{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}.hb-title-fields{flex:1 1 360px;display:grid;gap:6px;min-width:0}.hb-title-cap{color:var(--muted);font-size:13px}
.hb-title-fields input{font-weight:700;font-size:17px;width:100%}.hb-order{display:flex;flex-direction:column;gap:4px}.hb-order form{margin:0}
.hb-actions-row{margin:10px 0;align-items:center}
.hb-tile{position:relative;cursor:grab}.hb-tile.is-drag{opacity:.4}.hb-tile.is-off{opacity:.65}
.hb-tile-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}.hb-grip{cursor:grab;color:var(--muted);font-size:18px}
.hb-x{border:0;background:transparent;color:#b42318;font-size:16px;cursor:pointer;padding:2px 6px}
.hb-add{border:2px dashed var(--border);align-content:center;cursor:default;background:transparent}.hb-add>summary{cursor:pointer;display:grid;justify-items:center;gap:6px;font-weight:700;padding:26px 0;list-style:none}.hb-plus{font-size:28px;color:var(--primary,#4f46e5)}
.hb-add[open]{grid-column:1/-1}
.hb-pv-cap{align-self:center;font-size:12px;color:var(--muted);text-transform:uppercase;flex:0 0 auto}
.hb-titlerow{display:flex;gap:12px;align-items:flex-start}
/* chips: translate menu + preview */
.mk-tr{position:relative;display:inline-flex;gap:8px;align-items:center;margin-inline-start:10px}
.mk-tr-menu{position:absolute;top:calc(100% + 6px);inset-inline-start:0;z-index:30;min-width:280px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 30px rgba(16,24,40,.18);padding:6px}
.mk-tr-opt{display:grid;gap:2px;width:100%;text-align:start;border:0;background:transparent;padding:10px 12px;border-radius:9px;cursor:pointer;color:inherit}.mk-tr-opt:hover{background:var(--surface-2,#eef2ff)}.mk-tr-opt small{color:var(--muted)}
.mk-tr-prev{margin-top:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.mk-tr-head{font-weight:700;margin-bottom:8px}
.mk-tr-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px}@media(max-width:700px){.mk-tr-row{grid-template-columns:1fr}}
.mk-tr-cell{border:1px solid var(--border);border-radius:10px;padding:8px;min-width:0}.mk-tr-cell small{display:block;color:var(--muted);margin-bottom:4px}.mk-tr-cell textarea{width:100%}
.mk-tr-acts{display:flex;gap:8px;margin-top:6px}.mk-tr-note{color:var(--muted);font-size:12.5px;margin-top:8px}
