/* ============================================================
   33 Designs — B2B Portal + Admin — single design system
   ============================================================ */
:root{
  --brand:#F7941D; --brand-2:#EE5A1E; --brand-grad:linear-gradient(135deg,#F9A21B 0%,#EE5A1E 100%);
  --ink:#0B0B0B; --ink-2:#17171B; --text:#1B1B1F; --muted:#6B6B78; --muted-2:#9A9AA6;
  --bg:#F4F4F6; --card:#FFFFFF; --line:#E6E6EB; --line-2:#F0F0F3; --soft:#FAFAFB;
  --ok:#16A34A; --ok-bg:#ECFDF3; --warn:#D97706; --warn-bg:#FFF7ED; --danger:#DC2626; --danger-bg:#FEF2F2; --info:#2563EB; --info-bg:#EFF6FF;
  --r:14px; --r-sm:9px; --shadow:0 1px 2px rgba(11,11,11,.04),0 8px 24px -12px rgba(11,11,11,.12);
  --font:'Cairo','Segoe UI',Tahoma,Arial,sans-serif;
  --side-w:250px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:14.5px;line-height:1.6;color:var(--text);background:var(--bg);min-height:100vh}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3;font-weight:700}
h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem}
p{margin:0 0 .8em}
.muted{color:var(--muted)}.small{font-size:.85em}.tiny{font-size:.78em}
.mono{font-family:ui-monospace,Consolas,monospace;direction:ltr;unicode-bidi:embed}
.num{font-variant-numeric:tabular-nums}
.center{text-align:center}
.flex{display:flex;gap:.6rem;align-items:center}.between{justify-content:space-between}.wrap-row{flex-wrap:wrap}
.grow{flex:1}
.mt{margin-top:1rem}.mb{margin-bottom:1rem}.mt-2{margin-top:2rem}
.hidden,[hidden]{display:none!important}
.wrap{width:min(1240px,100% - 2rem);margin-inline:auto}
.brand-text{color:var(--brand-2)}
.grad-text{background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ── Buttons ─────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.6rem 1.1rem;border-radius:var(--r-sm);border:1px solid transparent;font:inherit;font-weight:600;cursor:pointer;transition:.18s;white-space:nowrap;line-height:1.3}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--brand-grad);color:#fff;box-shadow:0 6px 16px -8px rgba(238,90,30,.7)}
.btn-primary:hover{filter:brightness(1.05);transform:translateY(-1px)}
.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{background:#222}
.btn-ghost{background:var(--card);border-color:var(--line);color:var(--text)}.btn-ghost:hover{border-color:#cfcfd6;background:var(--soft)}
.btn-ghost-light{background:transparent;border-color:rgba(255,255,255,.25);color:#fff}.btn-ghost-light:hover{background:rgba(255,255,255,.08)}
.btn-ok{background:var(--ok);color:#fff}.btn-ok:hover{background:#15803d}
.btn-warn{background:var(--warn);color:#fff}.btn-warn:hover{background:#b45309}
.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#b91c1c}
.btn-danger-ghost{background:var(--danger-bg);color:var(--danger);border-color:#fecaca}
.btn-sm{padding:.38rem .75rem;font-size:.86em;border-radius:7px}
.btn-lg{padding:.8rem 1.5rem;font-size:1.05em}
.btn-block{width:100%}
.btn-icon{padding:.45rem;width:36px;height:36px}

/* ── Forms ───────────────────────────────────────────────── */
label{display:block;font-weight:600;font-size:.9em;margin-bottom:.3rem;color:var(--ink-2)}
label .req{color:var(--danger)}
.input,input:not([type]),input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=tel],input[type=url],input[type=date],select,textarea{
  width:100%;padding:.6rem .8rem;border:1px solid var(--line);border-radius:var(--r-sm);font:inherit;background:#fff;color:var(--text);transition:.15s;min-height:42px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(247,148,29,.18)}
input[type=number]{direction:ltr;text-align:right}
textarea{min-height:100px;resize:vertical}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236B6B78' stroke-width='1.8' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left .8rem center;padding-left:2rem}
.field{margin-bottom:1rem}
.help{font-size:.8em;color:var(--muted);margin-top:.3rem}
.grid{display:grid;gap:1rem}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.check{display:flex;align-items:center;gap:.5rem;font-weight:500;cursor:pointer}
.check input{width:18px;height:18px;min-height:0;accent-color:var(--brand-2)}
.input-group{display:flex}.input-group input{border-radius:0 var(--r-sm) var(--r-sm) 0}.input-group .addon{display:flex;align-items:center;padding:0 .8rem;background:var(--soft);border:1px solid var(--line);border-right:0;border-radius:var(--r-sm) 0 0 var(--r-sm);color:var(--muted);font-size:.9em;white-space:nowrap}
.qty-ctrl{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:#fff}
.qty-ctrl button{width:40px;border:0;background:var(--soft);font:inherit;font-size:1.2em;cursor:pointer;color:var(--ink)}
.qty-ctrl button:hover{background:#eee}
.qty-ctrl input{width:90px;border:0;border-inline:1px solid var(--line);border-radius:0;text-align:center;min-height:40px;font-weight:700}
.qty-ctrl input:focus{box-shadow:none}

/* ── Cards / panels ──────────────────────────────────────── */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card-body{padding:1.25rem}
.card-head{padding:.9rem 1.25rem;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.card-head h2,.card-head h3{margin:0}
.card-foot{padding:.9rem 1.25rem;border-top:1px solid var(--line-2);background:var(--soft);border-radius:0 0 var(--r) var(--r)}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:.25rem 0 1.25rem}
.page-head h1{margin:0}
.page-head .sub{color:var(--muted);margin:0}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

/* ── Badges / tags ───────────────────────────────────────── */
.tag{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .6rem;border-radius:999px;font-size:.78em;font-weight:700;line-height:1.6;white-space:nowrap}
.tag.ok{background:var(--ok-bg);color:#15803d}.tag.warn{background:var(--warn-bg);color:#b45309}.tag.danger{background:var(--danger-bg);color:#b91c1c}.tag.info{background:var(--info-bg);color:#1d4ed8}.tag.muted{background:#EEEEF2;color:#55555f}.tag.brand{background:#FFF1E4;color:#c2410c}
.tag.dot::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.pill{display:inline-block;min-width:20px;padding:0 .4rem;border-radius:999px;background:var(--brand-2);color:#fff;font-size:.72em;font-weight:700;text-align:center;line-height:1.7}
.pill.warn{background:var(--warn)}

/* ── Tables ──────────────────────────────────────────────── */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.tbl{width:100%;border-collapse:collapse;font-size:.92em}
.tbl th{font-weight:700;text-align:right;padding:.7rem .9rem;background:var(--soft);color:var(--muted);font-size:.85em;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:.7rem .9rem;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr:hover{background:#fcfcfd}
.tbl .thumb{width:44px;height:44px;border-radius:8px;object-fit:cover;background:var(--soft);border:1px solid var(--line-2)}
.tbl .c{text-align:center}.tbl .l{text-align:left;direction:ltr}
.tbl .row-link{color:var(--ink);font-weight:700}
.tbl .row-link:hover{color:var(--brand-2)}
.tbl .sub{display:block;color:var(--muted);font-size:.85em;font-weight:400}
.empty{padding:3rem 1rem;text-align:center;color:var(--muted)}
.empty .ico{font-size:2.4rem;opacity:.35;margin-bottom:.5rem}
.pager{display:flex;gap:.3rem;justify-content:center;padding:1rem;flex-wrap:wrap}
.pager a,.pager span{min-width:34px;padding:.3rem .5rem;border-radius:7px;border:1px solid var(--line);text-align:center;font-size:.9em;background:#fff}
.pager a.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.filters{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.filters input,.filters select{width:auto;min-width:160px}
.filters .chips{display:flex;gap:.35rem;flex-wrap:wrap}
.chip{padding:.3rem .8rem;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:.86em;font-weight:600;color:var(--muted)}
.chip.on,.chip:hover{border-color:var(--ink);color:var(--ink);background:#fff}
.chip.on{background:var(--ink);color:#fff}

/* ── Toasts / alerts ─────────────────────────────────────── */
.toasts{position:fixed;top:1rem;left:50%;transform:translateX(-50%);z-index:999;display:flex;flex-direction:column;gap:.5rem;width:min(520px,92vw);pointer-events:none}
.toasts.static{position:static;transform:none;width:100%;margin-bottom:1rem;pointer-events:auto}
.toast{padding:.8rem 1rem;border-radius:var(--r-sm);background:var(--ink);color:#fff;box-shadow:0 10px 30px -10px rgba(0,0,0,.4);font-weight:600;animation:pop .25s ease;pointer-events:auto;border-right:4px solid var(--brand)}
.toast.success{border-right-color:#22c55e}.toast.error{border-right-color:#ef4444}.toast.warn{border-right-color:#f59e0b}.toast.info{border-right-color:#3b82f6}
.toast.hide{opacity:0;transform:translateY(-6px);transition:.3s}
@keyframes pop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.alert{padding:.9rem 1rem;border-radius:var(--r-sm);border:1px solid;font-size:.95em;line-height:1.7}
.alert.warn{background:var(--warn-bg);border-color:#fed7aa;color:#9a3412}.alert.info{background:var(--info-bg);border-color:#bfdbfe;color:#1e40af}.alert.ok{background:var(--ok-bg);border-color:#bbf7d0;color:#166534}.alert.danger{background:var(--danger-bg);border-color:#fecaca;color:#991b1b}
.alert b{font-weight:800}

/* ── Menus ───────────────────────────────────────────────── */
.usermenu{position:relative}
.user-chip{display:flex;align-items:center;gap:.55rem;background:transparent;border:0;font:inherit;cursor:pointer;color:#fff;padding:.25rem .4rem;border-radius:10px}
.user-chip.dark{color:var(--text)}
.user-chip:hover{background:rgba(255,255,255,.08)}.user-chip.dark:hover{background:var(--soft)}
.user-chip .avatar{width:34px;height:34px;border-radius:50%;background:var(--brand-grad);color:#fff;display:grid;place-items:center;font-weight:800}
.user-txt{display:flex;flex-direction:column;line-height:1.15;text-align:right}.user-txt b{font-size:.9em}.user-txt small{font-size:.72em;opacity:.7}
.menu{position:absolute;top:calc(100% + 6px);left:0;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 30px -10px rgba(0,0,0,.25);padding:.35rem;z-index:50;color:var(--text)}
.menu a{display:block;padding:.55rem .8rem;border-radius:7px;font-weight:600;font-size:.92em}
.menu a:hover{background:var(--soft)}.menu a.danger{color:var(--danger)}

/* ============================================================
   PORTAL
   ============================================================ */
.topbar{background:var(--ink);color:#fff;position:sticky;top:0;z-index:40}
.topbar-in{display:flex;align-items:center;gap:1.5rem;height:68px}
.logo{display:flex;align-items:center;gap:.7rem}
.logo img{height:38px;width:auto}
.logo-tag{font-size:.75em;color:var(--brand);font-weight:700;border-right:1px solid rgba(255,255,255,.2);padding-right:.7rem}
.mainnav{display:flex;gap:.25rem}
.mainnav a{padding:.45rem .85rem;border-radius:8px;font-weight:600;color:rgba(255,255,255,.75)}
.mainnav a:hover{color:#fff;background:rgba(255,255,255,.07)}
.mainnav a.on{color:#fff;background:rgba(255,255,255,.1);box-shadow:inset 0 -2px 0 var(--brand)}
.topbar-actions{margin-right:auto;display:flex;align-items:center;gap:.6rem}
.search-mini input{width:220px;min-height:38px;padding:.4rem .8rem;border-radius:999px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.08);color:#fff}
.search-mini input::placeholder{color:rgba(255,255,255,.5)}
.search-mini input:focus{background:rgba(255,255,255,.14);border-color:var(--brand);box-shadow:none}
.admin .search-mini input{background:var(--soft);border-color:var(--line);color:var(--text)}
.admin .search-mini input::placeholder{color:var(--muted-2)}
.cart-btn{position:relative;display:grid;place-items:center;width:42px;height:42px;border-radius:10px;color:#fff;background:rgba(255,255,255,.07)}
.cart-btn:hover{background:rgba(255,255,255,.14)}
.cart-btn .badge{position:absolute;top:-5px;left:-5px;background:var(--brand-grad);color:#fff;font-size:.7em;font-weight:800;min-width:20px;height:20px;border-radius:999px;display:grid;place-items:center;padding:0 .3rem}
.policy-bar{background:#FFF4E5;color:#7c2d12;border-bottom:1px solid #fed7aa;font-size:.86em;padding:.45rem 0}
.page{padding:1.5rem 0 3rem;min-height:60vh}
.footer{background:#fff;border-top:1px solid var(--line);padding:2rem 0;margin-top:2rem}
.footer-in{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center}
.footer-logo{height:28px;width:auto;filter:invert(1);margin-bottom:.4rem}

/* Catalog */
.catalog-layout{display:grid;grid-template-columns:240px 1fr;gap:1.5rem;align-items:start}
.side-cats{position:sticky;top:84px}
.side-cats a{display:flex;justify-content:space-between;padding:.5rem .8rem;border-radius:8px;font-weight:600;color:var(--muted)}
.side-cats a:hover{background:#fff;color:var(--ink)}
.side-cats a.on{background:var(--ink);color:#fff}
.side-cats a span{font-size:.8em;opacity:.7}
.products{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}
.pcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column;transition:.2s}
.pcard:hover{box-shadow:0 14px 34px -16px rgba(11,11,11,.25);transform:translateY(-2px);border-color:#d9d9e0}
.pcard .pimg{aspect-ratio:1;background:var(--soft);display:grid;place-items:center;overflow:hidden;position:relative}
.pcard .pimg img{width:100%;height:100%;object-fit:cover}
.pcard .pbody{padding:.9rem 1rem 1rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.pcard .sku{font-size:.75em;color:var(--muted-2)}
.pcard h3{font-size:1em;margin:0;line-height:1.4;min-height:2.8em}
.pcard .price{font-weight:800;font-size:1.1em;color:var(--ink)}
.pcard .price small{color:var(--muted);font-weight:500;font-size:.75em}
.pcard .avail{font-size:.82em;font-weight:600}
.pcard .pfoot{margin-top:auto;display:flex;gap:.5rem;align-items:center;padding-top:.5rem}
.avail.ok{color:var(--ok)}.avail.low{color:var(--warn)}.avail.out{color:var(--danger)}
.ribbon{position:absolute;top:.6rem;right:.6rem}

/* Product page */
.product-layout{display:grid;grid-template-columns:1.05fr 1fr;gap:2rem;align-items:start}
.gallery .main{aspect-ratio:1;border-radius:var(--r);background:#fff;border:1px solid var(--line);overflow:hidden;display:grid;place-items:center}
.gallery .main img{width:100%;height:100%;object-fit:contain}
.gallery .thumbs{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}
.gallery .thumbs img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:2px solid var(--line);cursor:pointer;background:#fff}
.gallery .thumbs img.on{border-color:var(--brand-2)}
.pinfo h1{font-size:1.5rem}
.pinfo .sku{color:var(--muted);font-size:.9em}
.avail-box{display:flex;align-items:center;gap:.8rem;padding:.75rem 1rem;border-radius:var(--r-sm);background:var(--soft);border:1px solid var(--line);margin:1rem 0}
.avail-box .big{font-size:1.5rem;font-weight:800;line-height:1}
.tiers{width:100%;border-collapse:collapse;font-size:.9em;margin:.5rem 0 1rem}
.tiers th,.tiers td{padding:.5rem .7rem;border-bottom:1px solid var(--line-2);text-align:center}
.tiers th{background:var(--soft);color:var(--muted);font-size:.85em}
.tiers tr.on td{background:#FFF4E5;font-weight:800;color:#9a3412}
.order-box{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.25rem;box-shadow:var(--shadow)}
.order-box .calc{display:flex;justify-content:space-between;align-items:baseline;padding:.6rem 0;border-top:1px dashed var(--line)}
.order-box .calc .total{font-size:1.4rem;font-weight:800;color:var(--brand-2)}
.specs{width:100%;border-collapse:collapse;font-size:.92em}
.specs th{text-align:right;width:36%;padding:.55rem .8rem;background:var(--soft);color:var(--muted);font-weight:600;border-bottom:1px solid var(--line-2)}
.specs td{padding:.55rem .8rem;border-bottom:1px solid var(--line-2)}
.desc{line-height:1.9}

/* Cart / checkout */
.cart-layout{display:grid;grid-template-columns:1fr 360px;gap:1.5rem;align-items:start}
.summary{position:sticky;top:84px}
.summary .line{display:flex;justify-content:space-between;padding:.45rem 0;border-bottom:1px solid var(--line-2)}
.summary .line.total{font-size:1.15em;font-weight:800;border:0;padding-top:.8rem}
.paths{display:grid;gap:.75rem}
.path{display:flex;gap:.9rem;padding:1rem;border:2px solid var(--line);border-radius:var(--r);cursor:pointer;background:#fff;transition:.15s}
.path:hover{border-color:#cfcfd6}
.path input{margin-top:.25rem;accent-color:var(--brand-2)}
.path.on{border-color:var(--brand-2);background:#FFF9F3}
.path b{display:block;margin-bottom:.15rem}
.path p{margin:0;color:var(--muted);font-size:.88em}
.steps{display:flex;gap:.5rem;margin-bottom:1.5rem;font-size:.9em}
.steps span{flex:1;padding:.5rem;border-radius:8px;text-align:center;background:#fff;border:1px solid var(--line);color:var(--muted);font-weight:600}
.steps span.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.steps span.done{color:var(--ok);border-color:#bbf7d0;background:var(--ok-bg)}

/* Countdown */
.countdown{font-family:ui-monospace,Consolas,monospace;font-weight:800;font-variant-numeric:tabular-nums;direction:ltr;display:inline-block}
.countdown.big{font-size:2rem;letter-spacing:1px}
.countdown.urgent{color:var(--danger)}
.countdown.soon{color:var(--warn)}
.hold-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1rem 1.25rem;border-radius:var(--r);background:var(--ink);color:#fff}
.hold-banner .lbl{opacity:.75;font-size:.85em}
.hold-banner .countdown{color:var(--brand)}
.hold-banner .countdown.urgent{color:#f87171}

/* Timeline */
.timeline{list-style:none;margin:0;padding:0;position:relative}
.timeline::before{content:"";position:absolute;right:9px;top:6px;bottom:6px;width:2px;background:var(--line)}
.timeline li{position:relative;padding:0 1.8rem .9rem 0;font-size:.92em}
.timeline li::before{content:"";position:absolute;right:3px;top:.45em;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--muted-2)}
.timeline li.created::before{border-color:var(--info)}.timeline li.confirmed::before,.timeline li.paid::before{border-color:var(--ok)}.timeline li.extended::before{border-color:var(--warn)}.timeline li.expired::before,.timeline li.cancelled::before{border-color:var(--danger)}
.timeline .when{color:var(--muted);font-size:.85em}
.timeline .who{font-weight:700}

/* Status stepper (order lifecycle) */
.stepper{display:flex;gap:.25rem;margin:.5rem 0 1rem}
.stepper span{flex:1;text-align:center;font-size:.78em;padding:.4rem .2rem;background:#fff;border:1px solid var(--line);color:var(--muted);font-weight:600}
.stepper span:first-child{border-radius:0 8px 8px 0}.stepper span:last-child{border-radius:8px 0 0 8px}
.stepper span.done{background:var(--ok-bg);color:#166534;border-color:#bbf7d0}
.stepper span.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* ============================================================
   AUTH
   ============================================================ */
.authpage{background:var(--ink);color:#fff;display:grid;place-items:center;padding:2rem 1rem;position:relative;overflow:hidden}
.auth-bg{position:fixed;inset:0;pointer-events:none;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(40px);opacity:.75}
.blob.b1{width:520px;height:520px;background:radial-gradient(circle at 30% 30%,#F9A21B,#EE5A1E 60%,transparent 70%);top:-160px;left:-120px}
.blob.b2{width:380px;height:380px;background:radial-gradient(circle,#EE5A1E,transparent 68%);bottom:-140px;right:-100px;opacity:.55}
.blob.b3{width:16px;height:16px;background:#ff2d55;top:22%;right:18%;filter:none;opacity:.9}
.auth-wrap{position:relative;width:min(440px,100%);z-index:1}
.auth-logo img{height:44px;width:auto;margin:0 auto 1.5rem}
.auth-card{background:#fff;color:var(--text);border-radius:18px;padding:2rem;box-shadow:0 30px 80px -30px rgba(0,0,0,.7)}
.auth-card h1{font-size:1.35rem;margin-bottom:.25rem}
.auth-card .lead{color:var(--muted);margin-bottom:1.25rem}
.auth-card.wide{width:min(720px,100%)}
.auth-wrap:has(.auth-card.wide){width:min(760px,100%)}
.auth-foot{text-align:center;color:rgba(255,255,255,.5);font-size:.82em;margin-top:1.5rem}
.auth-links{display:flex;justify-content:space-between;gap:1rem;margin-top:1rem;font-size:.9em}
.auth-links a{color:var(--brand-2);font-weight:600}
.err-code{font-size:4rem;font-weight:900;line-height:1;background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ============================================================
   ADMIN
   ============================================================ */
body.admin{display:flex;min-height:100vh}
.sidebar{width:var(--side-w);background:var(--ink);color:#fff;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;flex-shrink:0;z-index:45}
.side-logo{padding:1.1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08)}
.side-logo img{height:34px;width:auto}
.sidenav{padding:.75rem;display:flex;flex-direction:column;gap:.15rem;overflow-y:auto;flex:1}
.sidenav a{display:flex;align-items:center;gap:.65rem;padding:.6rem .8rem;border-radius:9px;color:rgba(255,255,255,.72);font-weight:600;font-size:.94em}
.sidenav a i{font-style:normal;width:22px;text-align:center;opacity:.8;font-size:1.05em}
.sidenav a:hover{background:rgba(255,255,255,.07);color:#fff}
.sidenav a.on{background:var(--brand-grad);color:#fff;box-shadow:0 8px 20px -10px rgba(238,90,30,.8)}
.sidenav a .pill{margin-right:auto}
.sidenav a.on .pill{background:#fff;color:var(--brand-2)}
.side-foot{padding:.9rem 1.25rem;border-top:1px solid rgba(255,255,255,.08);font-size:.85em;display:flex;justify-content:space-between;color:rgba(255,255,255,.6)}
.side-foot a:hover{color:#fff}
.admin-body{flex:1;min-width:0;display:flex;flex-direction:column}
.adminbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1rem;padding:0 1.5rem;position:sticky;top:0;z-index:40}
.adminbar-title{font-size:1.15rem;margin:0}
.adminbar-actions{margin-right:auto;display:flex;align-items:center;gap:.8rem}
.burger{display:none;border:0;background:var(--soft);width:40px;height:40px;border-radius:8px;font-size:1.2rem;cursor:pointer}
.admin-main{padding:1.5rem;flex:1}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.15rem;display:flex;flex-direction:column;gap:.2rem;position:relative;overflow:hidden}
.kpi .k{font-size:.85em;color:var(--muted);font-weight:600}
.kpi .v{font-size:1.8rem;font-weight:800;line-height:1.2}
.kpi .d{font-size:.8em;color:var(--muted)}
.kpi.accent{background:var(--ink);color:#fff;border-color:var(--ink)}
.kpi.accent .k,.kpi.accent .d{color:rgba(255,255,255,.65)}
.kpi.accent .v{color:var(--brand)}
.kpi.warn .v{color:var(--warn)}.kpi.danger .v{color:var(--danger)}.kpi.ok .v{color:var(--ok)}
.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:1.25rem;align-items:start}
.three-col{display:grid;grid-template-columns:2fr 1fr;gap:1.25rem;align-items:start}
.sticky-side{position:sticky;top:84px}
.dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;font-size:.93em}
.dl dt{color:var(--muted);font-weight:600}.dl dd{margin:0;font-weight:600}
.action-list{display:grid;gap:.6rem}
.action-list form{margin:0}
.inline-form{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}
.inline-form .field{margin:0;flex:1;min-width:120px}
.spec-rows{display:grid;gap:.5rem}
.spec-row{display:grid;grid-template-columns:1fr 1.4fr auto;gap:.5rem}
.tier-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:.5rem;align-items:end}
.img-grid{display:flex;gap:.6rem;flex-wrap:wrap}
.img-grid .im{position:relative;width:96px;height:96px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:#fff}
.img-grid .im img{width:100%;height:100%;object-fit:cover}
.img-grid .im .del{position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:rgba(220,38,38,.9);color:#fff;border:0;cursor:pointer;font-size:.8em;line-height:1}
.img-grid .im.main::after{content:"رئيسية";position:absolute;bottom:0;right:0;left:0;background:rgba(11,11,11,.7);color:#fff;font-size:.7em;text-align:center;padding:2px}
.dropzone{border:2px dashed var(--line);border-radius:var(--r-sm);padding:1.25rem;text-align:center;color:var(--muted);background:var(--soft);cursor:pointer}
.dropzone:hover{border-color:var(--brand)}
.progress{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--brand-grad)}
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1rem}
.tabs button{border:0;background:transparent;padding:.6rem 1rem;font:inherit;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs button.on{color:var(--ink);border-bottom-color:var(--brand-2)}
.tabpane[hidden]{display:none}
.stock-cell{display:flex;flex-direction:column;line-height:1.3}
.stock-cell b{font-size:1.05em}
.stock-cell small{color:var(--muted)}
code.k{background:var(--soft);border:1px solid var(--line);padding:.05rem .4rem;border-radius:5px;font-size:.85em;direction:ltr;display:inline-block}
.list-plain{list-style:none;margin:0;padding:0}
.list-plain li{padding:.6rem 0;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between;gap:.75rem;align-items:center}
.list-plain li:last-child{border:0}
.avatar-sm{width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:inline-grid;place-items:center;font-weight:800;font-size:.8em}
.print-only{display:none}

/* ── Modal ───────────────────────────────────────────────── */
.modal{position:fixed;inset:0;background:rgba(11,11,11,.55);display:grid;place-items:center;z-index:100;padding:1rem}
.modal .box{background:#fff;border-radius:var(--r);width:min(520px,100%);padding:1.5rem;box-shadow:0 30px 80px -30px rgba(0,0,0,.6);animation:pop .2s}
.modal .box h3{margin-bottom:.75rem}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width:1100px){.product-layout{grid-template-columns:1fr}.two-col,.three-col{grid-template-columns:1fr}.catalog-layout{grid-template-columns:1fr}.side-cats{position:static;display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.5rem}.side-cats a{white-space:nowrap;border:1px solid var(--line);background:#fff}}
@media (max-width:900px){
  .sidebar{position:fixed;right:0;top:0;transform:translateX(100%);transition:.25s;box-shadow:0 0 0 100vw rgba(0,0,0,0)}
  .sidebar.open{transform:none;box-shadow:0 0 0 100vw rgba(0,0,0,.4)}
  .burger{display:block}
  .adminbar .search-mini{display:none}
  .admin-main{padding:1rem}
  .cart-layout{grid-template-columns:1fr}.summary{position:static}
  .g3,.g4{grid-template-columns:repeat(2,1fr)}
  .mainnav{display:none}
  .topbar-in{gap:.75rem}
  .search-mini input{width:150px}
  .logo-tag{display:none}
  .user-txt{display:none}
  .tier-row{grid-template-columns:1fr 1fr;}
}
@media (max-width:600px){
  .g2,.g3,.g4{grid-template-columns:1fr}
  .page-head{flex-direction:column;align-items:stretch}
  .products{grid-template-columns:repeat(2,1fr);gap:.6rem}
  .pcard .pbody{padding:.7rem}
  .search-mini{display:none}
  .stepper span{font-size:.65em}
  .spec-row{grid-template-columns:1fr}
  .hold-banner{text-align:center;justify-content:center}
}
@media print{
  .sidebar,.adminbar,.topbar,.policy-bar,.footer,.toasts,.no-print,.btn{display:none!important}
  body,.admin-main,.page{background:#fff;padding:0}
  .card{box-shadow:none;border-color:#ccc}
  .print-only{display:block}
  .two-col,.three-col{grid-template-columns:1fr}
}

/* ============================================================
   LTR support (English is the default UI language)
   ============================================================ */
html[dir=ltr] body{--font:'Inter','Cairo','Segoe UI',sans-serif}
html[dir=ltr] input[type=number]{text-align:left}
html[dir=ltr] select{background-position:right .8rem center;padding-left:.8rem;padding-right:2rem}
html[dir=ltr] .input-group input{border-radius:var(--r-sm) 0 0 var(--r-sm)}
html[dir=ltr] .input-group .addon{border-right:1px solid var(--line);border-left:0;border-radius:0 var(--r-sm) var(--r-sm) 0}
html[dir=ltr] .tbl th{text-align:left}
html[dir=ltr] .tbl .l{text-align:right}
html[dir=ltr] .toast{border-right:0;border-left:4px solid var(--brand)}
html[dir=ltr] .toast.success{border-left-color:#22c55e}html[dir=ltr] .toast.error{border-left-color:#ef4444}html[dir=ltr] .toast.warn{border-left-color:#f59e0b}html[dir=ltr] .toast.info{border-left-color:#3b82f6}
html[dir=ltr] .user-txt{text-align:left}
html[dir=ltr] .menu{left:auto;right:0}
html[dir=ltr] .logo-tag{border-right:0;border-left:1px solid rgba(255,255,255,.2);padding-right:0;padding-left:.7rem}
html[dir=ltr] .topbar-actions,html[dir=ltr] .adminbar-actions{margin-right:0;margin-left:auto}
html[dir=ltr] .cart-btn .badge{left:auto;right:-5px}
html[dir=ltr] .ribbon{right:auto;left:.6rem}
html[dir=ltr] .specs th{text-align:left}
html[dir=ltr] .timeline::before{right:auto;left:9px}
html[dir=ltr] .timeline li{padding:0 0 .9rem 1.8rem}
html[dir=ltr] .timeline li::before{right:auto;left:3px}
html[dir=ltr] .stepper span:first-child{border-radius:8px 0 0 8px}html[dir=ltr] .stepper span:last-child{border-radius:0 8px 8px 0}
html[dir=ltr] .sidenav a .pill{margin-right:0;margin-left:auto}
html[dir=ltr] .img-grid .im .del{left:auto;right:4px}
html[dir=ltr] .sidebar{border-left:0;border-right:1px solid rgba(255,255,255,.08)}
@media (max-width:900px){html[dir=ltr] .sidebar{right:auto;left:0;transform:translateX(-100%)}html[dir=ltr] .sidebar.open{transform:none}}

/* icon buttons used by theme / language switches */
.icon-btn{width:38px;height:38px;border-radius:10px;display:inline-grid;place-items:center;border:1px solid var(--line);background:var(--card);color:var(--muted);transition:.2s;font-weight:800;font-size:.8em}
.icon-btn:hover{color:var(--brand-2);border-color:var(--brand)}
.icon-btn i,.cart-btn i,.auth-switch i{display:inline-grid;width:18px;height:18px}
.icon-btn svg,.cart-btn svg,.auth-switch svg{width:18px;height:18px}
.cart-btn.lang-btn{font-weight:800;font-size:.85em}
.auth-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}
.auth-top .auth-logo img{margin:0}
.auth-switch{display:flex;gap:.4rem}
.auth-switch a{display:inline-grid;place-items:center;min-width:38px;height:38px;padding:0 .7rem;border-radius:10px;border:1px solid rgba(255,255,255,.18);color:#fff;font-weight:700;font-size:.85em;background:rgba(255,255,255,.06)}
.auth-switch a:hover{border-color:var(--brand);color:var(--brand)}

/* ============================================================
   DARK MODE — portal + auth  (html[data-theme=dark])
   ============================================================ */
html[data-theme=dark] body.portal{
  --bg:#0F0F12;--card:#17171C;--line:#2A2A31;--line-2:#222228;--soft:#1D1D23;--text:#ECEAE6;--muted:#A6A29B;--muted-2:#6F6B65;--ink-2:#ECEAE6;
  --ok:#4ADE80;--ok-bg:rgba(34,197,94,.16);--warn:#FBBF24;--warn-bg:rgba(245,158,11,.16);--danger:#F87171;--danger-bg:rgba(239,68,68,.16);--info:#60A5FA;--info-bg:rgba(59,130,246,.16);
  --shadow:0 1px 2px rgba(0,0,0,.3),0 12px 30px -12px rgba(0,0,0,.6)}
html[data-theme=dark] body.portal .tag.ok{color:#86efac}html[data-theme=dark] body.portal .tag.warn{color:#fcd34d}html[data-theme=dark] body.portal .tag.danger{color:#fca5a5}html[data-theme=dark] body.portal .tag.info{color:#93c5fd}html[data-theme=dark] body.portal .tag.muted{background:var(--soft);color:var(--muted)}html[data-theme=dark] body.portal .tag.brand{background:rgba(247,148,29,.18);color:#ffb454}
html[data-theme=dark] body.portal .btn-dark{background:#fff;color:#000}html[data-theme=dark] body.portal .btn-dark:hover{background:#e8e8e8}
html[data-theme=dark] body.portal .btn-ghost{background:var(--card);border-color:var(--line);color:var(--text)}html[data-theme=dark] body.portal .btn-ghost:hover{background:var(--soft);border-color:#3a3a42}
html[data-theme=dark] body.portal .btn-danger-ghost{border-color:rgba(239,68,68,.35)}
html[data-theme=dark] body.portal input,html[data-theme=dark] body.portal select,html[data-theme=dark] body.portal textarea{background:var(--soft);color:var(--text);border-color:var(--line)}
html[data-theme=dark] body.portal select option{background:#17171c}
html[data-theme=dark] body.portal .qty-ctrl{background:var(--soft)}html[data-theme=dark] body.portal .qty-ctrl button{background:var(--card);color:var(--text)}html[data-theme=dark] body.portal .qty-ctrl button:hover{background:#2a2a31}
html[data-theme=dark] body.portal .policy-bar{background:#2a1a0a;color:#ffd7ad;border-color:#4a2c10}
html[data-theme=dark] body.portal .footer{background:var(--card);border-color:var(--line)}
html[data-theme=dark] body.portal .footer-logo{filter:none}
html[data-theme=dark] body.portal .pcard,html[data-theme=dark] body.portal .order-box,html[data-theme=dark] body.portal .path,html[data-theme=dark] body.portal .gallery .main,html[data-theme=dark] body.portal .steps span,html[data-theme=dark] body.portal .chip,html[data-theme=dark] body.portal .pager a,html[data-theme=dark] body.portal .pager span,html[data-theme=dark] body.portal .gallery .thumbs img{background:var(--card);border-color:var(--line);color:var(--text)}
html[data-theme=dark] body.portal .pcard .pimg{background:#111114}
html[data-theme=dark] body.portal .pcard:hover{border-color:#3a3a42}
html[data-theme=dark] body.portal .path.on{border-color:var(--brand-2);background:#241a10}
html[data-theme=dark] body.portal .side-cats a:hover{background:var(--card)}html[data-theme=dark] body.portal .side-cats a.on{background:#fff;color:#000}
html[data-theme=dark] body.portal .tbl tbody tr:hover{background:#1a1a20}
html[data-theme=dark] body.portal .tiers tr.on td{background:#2a1a0a;color:#ffb454}
html[data-theme=dark] body.portal .chip.on{background:#fff;color:#000;border-color:#fff}
html[data-theme=dark] body.portal .pager a.on{background:#fff;color:#000}
html[data-theme=dark] body.portal .steps span.on{background:#fff;color:#000;border-color:#fff}
html[data-theme=dark] body.portal .stepper span{background:var(--card);border-color:var(--line);color:var(--muted)}html[data-theme=dark] body.portal .stepper span.on{background:#fff;color:#000;border-color:#fff}
html[data-theme=dark] body.portal .alert.warn{background:#2a1a0a;border-color:#4a2c10;color:#ffd7ad}html[data-theme=dark] body.portal .alert.info{background:#0f1a2e;border-color:#1e3a5f;color:#bfdbfe}html[data-theme=dark] body.portal .alert.ok{background:#0c2416;border-color:#14532d;color:#bbf7d0}html[data-theme=dark] body.portal .alert.danger{background:#2a0f0f;border-color:#7f1d1d;color:#fecaca}
html[data-theme=dark] body.portal .timeline li::before{background:var(--card)}
html[data-theme=dark] body.portal .hold-banner{background:#000}
html[data-theme=dark] body.portal .tbl .thumb{background:#111114}
html[data-theme=dark] body.portal .avail-box{background:var(--soft)}
html[data-theme=dark] body.portal .tiers th,html[data-theme=dark] body.portal .specs th{background:var(--soft)}
html[data-theme=dark] body.authpage:not(.staff) .auth-card{background:#17171C;color:#ECEAE6}
html[data-theme=dark] body.authpage:not(.staff) .auth-card input{background:#1D1D23;border-color:#2A2A31;color:#ECEAE6}
html[data-theme=dark] body.authpage:not(.staff) .auth-card label{color:#ECEAE6}
html[data-theme=dark] body.authpage:not(.staff) .auth-card .lead,html[data-theme=dark] body.authpage:not(.staff) .auth-card .muted{color:#A6A29B}
html[data-theme=dark] body.authpage:not(.staff) .auth-card .card{background:#1D1D23;border-color:#2A2A31}
html[data-theme=dark] body.authpage:not(.staff) .auth-card .btn-ghost{background:#1D1D23;border-color:#2A2A31;color:#ECEAE6}

/* select arrow must never tile (portal, both themes) */
select,html[data-theme=dark] body.portal select{background-repeat:no-repeat!important}
html[data-theme=dark] body.portal select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23A6A29B' stroke-width='1.8' fill='none'/%3E%3C/svg%3E");background-position:left .8rem center}
html[dir=ltr][data-theme=dark] body.portal select{background-position:right .8rem center}

/* ------------------------------------------------------------
   DARK MODE FIX — `--ink` doubles as a dark BACKGROUND and as the
   darkest TEXT colour. In dark mode the background uses must stay
   dark, so only the text uses are re-pointed at the light text token.
   ------------------------------------------------------------ */
html[data-theme=dark] body.portal .tbl .row-link{color:var(--text)}
html[data-theme=dark] body.portal .tbl .row-link:hover{color:var(--brand)}
html[data-theme=dark] body.portal .pcard .price{color:var(--text)}
html[data-theme=dark] body.portal .qty-ctrl button{color:var(--text)}
html[data-theme=dark] body.portal .tabs button.on{color:var(--text)}
html[data-theme=dark] body.portal .side-cats a:hover{background:var(--soft);color:var(--text)}
html[data-theme=dark] body.portal .side-cats a.on{background:var(--brand-grad);color:#fff}
html[data-theme=dark] body.portal .chip:hover{background:var(--soft);color:var(--text);border-color:var(--brand)}
html[data-theme=dark] body.portal .chip.on{background:var(--brand-grad);color:#fff;border-color:transparent}
html[data-theme=dark] body.portal .pager a.on{background:var(--brand-grad);color:#fff;border-color:transparent}
html[data-theme=dark] body.portal .steps span.on,
html[data-theme=dark] body.portal .stepper span.on{background:var(--brand-grad);color:#fff;border-color:transparent}
/* the auth card is a light surface even in dark mode — keep its text dark */
html[data-theme=dark] body.authpage:not(.staff) .auth-card .row-link,
html[data-theme=dark] body.authpage:not(.staff) .auth-card .price{color:var(--text)}

/* Under 1100px the category list becomes a horizontal chip row with a hardcoded
   white background — give it the dark surface too, and keep the label readable. */
@media (max-width:1100px){
  html[data-theme=dark] body.portal .side-cats a{background:var(--card);border-color:var(--line);color:var(--text)}
  html[data-theme=dark] body.portal .side-cats a:hover{background:var(--soft);border-color:#3a3a42;color:var(--text)}
  html[data-theme=dark] body.portal .side-cats a.on{background:var(--brand-grad);border-color:transparent;color:#fff}
}
/* the count badge next to each category needs to follow the label colour */
.side-cats a span{color:inherit}

/* The "featured" ribbon sits on top of a product image, so it needs its own
   solid background rather than a translucent tint that muddies against art. */
.pcard .ribbon{background:var(--brand-grad);color:#fff;box-shadow:0 4px 12px -4px rgba(0,0,0,.5)}
html[data-theme=dark] body.portal .pcard .ribbon{background:var(--brand-grad);color:#fff}
