:root{--aqua:#1496a5;--aqua-dark:#0e7180;--navy:#0b3a53;--navy-dark:#062a3c;--ice:#eaf7fa;--ice-2:#f4fafc;--surface:#ffffff;--ink:#18323d;--muted:#657982;--line:#dbe7eb;--danger:#e5484d;--danger-dark:#c9343e;--orange:var(--aqua);--orange-dark:var(--navy-dark);--orange-soft:var(--ice);--green:var(--navy);--green-dark:var(--navy-dark);--green-soft:var(--ice-2);--shadow:0 16px 42px rgba(7,50,70,.11)}*{box-sizing:border-box}body{margin:0;font-family:Arial,"Helvetica Neue",sans-serif;color:var(--ink);background:linear-gradient(180deg,#fbfeff 0%,#f3f8fa 100%)}button,input,select,textarea{font:inherit}button{cursor:pointer}.wrap{width:min(1180px,calc(100% - 22px));margin:auto}.top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.topin{min-height:68px;display:flex;align-items:center;gap:12px}.logo{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:#fff;font-weight:900;background:linear-gradient(135deg,var(--orange),var(--green))}.brand strong{display:block;font-size:14px}.brand span{display:block;margin-top:3px;color:var(--muted);font-size:9px}.search{margin-left:auto;width:min(580px,60%);height:44px;border:1px solid var(--line);border-radius:14px;padding:0 14px;background:#fff}.hero{padding:18px 0 4px}.banner{position:relative;overflow:hidden;border-radius:24px;aspect-ratio:8/3;background:linear-gradient(120deg,var(--orange),var(--green));box-shadow:var(--shadow)}.slide{position:absolute;inset:0;opacity:0;transition:.55s}.slide.active{opacity:1}.slide picture,.slide img{width:100%;height:100%;display:block}.slide img{object-fit:cover}.dots{position:absolute;left:50%;bottom:12px;display:flex;gap:6px;transform:translateX(-50%);z-index:4}.dot{width:8px;height:8px;border:0;border-radius:99px;background:#ffffffa0}.dot.active{width:26px;background:#fff}.chips{display:flex;gap:7px;overflow:auto;padding:14px 0 5px}.chip{white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:9px 13px;background:#fff;font-size:9px;font-weight:900}.chip.active{color:#fff;border-color:transparent;background:linear-gradient(110deg,var(--orange),var(--green))}.head{display:flex;align-items:end;justify-content:space-between;margin:17px 0 11px}.head h1{margin:0;font-size:28px}.count{font-size:9px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding-bottom:70px}.product{overflow:hidden;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 7px 20px rgba(7,50,70,.06)}.media{aspect-ratio:1/1;display:grid;place-items:center;background:linear-gradient(145deg,#ffffff,#eaf7fa)}.media img{width:100%;height:100%;object-fit:contain;padding:7px}.placeholder{font-size:36px;color:#b7cbd2}.body{padding:11px}.name{min-height:39px;margin:0;font-size:11px;line-height:1.45}.spec{margin:5px 0 0;color:var(--muted);font-size:8px}.add{width:100%;min-height:35px;margin-top:9px;border:0;border-radius:10px;color:#fff;background:linear-gradient(110deg,var(--orange),var(--green));font-size:8px;font-weight:900}.cartbtn{position:fixed;right:16px;bottom:16px;z-index:80;min-height:52px;padding:0 16px;border:0;border-radius:17px;color:#fff;background:linear-gradient(110deg,var(--orange),var(--green));box-shadow:0 17px 40px rgba(6,42,60,.27);font-weight:900}.badge{display:inline-grid;place-items:center;min-width:24px;height:24px;margin-left:7px;border-radius:99px;background:#fff;color:var(--orange-dark)}.overlay{position:fixed;inset:0;z-index:100;display:none;background:rgba(4,31,45,.68);backdrop-filter:blur(5px)}.overlay.show{display:block}.drawer{position:absolute;right:0;top:0;width:min(470px,100%);height:100%;display:flex;flex-direction:column;background:#fff}.drawerhead{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid var(--line);background:linear-gradient(110deg,var(--orange-soft),var(--green-soft))}.drawerhead h2{margin:0;font-size:19px}.close{width:38px;height:38px;border:0;border-radius:11px;background:#fff;font-size:20px}.scroll{flex:1;overflow:auto;padding:14px}.item{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.item h4{margin:0;font-size:10px}.item p{margin:4px 0;color:var(--muted);font-size:8px}.qty{display:flex;align-items:center;gap:5px}.qty button{width:30px;height:30px;border:0;border-radius:8px}.qty input{width:43px;height:30px;text-align:center;border:1px solid var(--line);border-radius:8px}.remove{border:0;background:none;color:var(--danger);font-size:7px;font-weight:900}.sales{display:grid;gap:8px;margin-top:16px}.sale{width:100%;display:flex;align-items:center;gap:9px;padding:11px;border:1px solid var(--line);border-radius:13px;background:#fff;text-align:left}.sale.selected{border-color:var(--green);background:linear-gradient(110deg,var(--green-soft),var(--orange-soft))}.avatar{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--orange),var(--green));font-weight:900}.summary{padding:14px;border-top:1px solid var(--line)}.send{width:100%;min-height:46px;border:0;border-radius:12px;color:#fff;background:linear-gradient(110deg,var(--orange),var(--green));font-weight:900}.toast{position:fixed;left:50%;bottom:82px;z-index:160;display:none;transform:translateX(-50%);padding:11px 15px;border-radius:12px;background:var(--green-dark);color:#fff;font-size:9px}.toast.show{display:block}.success{position:fixed;inset:0;z-index:180;display:none;place-items:center;padding:18px;background:rgba(4,31,45,.68)}.success.show{display:grid}.successcard{width:min(390px,100%);padding:24px;border-radius:22px;background:#fff;text-align:center}.code{margin:14px 0;padding:13px;border:1px dashed var(--orange);border-radius:12px;background:var(--orange-soft);font-size:20px;font-weight:900}.successcard button,.successcard a{width:100%;min-height:43px;margin-top:8px;border:0;border-radius:11px;display:grid;place-items:center;text-decoration:none}.zalo{background:linear-gradient(110deg,var(--orange),var(--green));color:#fff}.continue{background:var(--green-soft);color:var(--green-dark)}@media(max-width:900px){.grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:650px){.wrap{width:min(100% - 12px,1180px)}.topin{min-height:58px}.logo{width:38px;height:38px}.brand span{display:none}.search{width:auto;flex:1;height:42px}.hero{padding-top:10px}.banner{border-radius:16px;aspect-ratio:4/5}.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.product{border-radius:13px}.body{padding:7px 6px}.name{min-height:29px;font-size:9px}.spec{font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.add{min-height:28px;margin-top:5px;font-size:6.5px}.head h1{font-size:20px}.chip{padding:8px 10px}.cartbtn{right:9px;bottom:9px;min-height:46px;font-size:9px}.drawerhead h2{font-size:17px}}@media(max-width:330px){.grid{grid-template-columns:repeat(2,1fr)}}

/* ===== Hoàng Long Foods: interaction and banner motion patch ===== */
.slide{
  opacity:0;
  transform:scale(1.018);
  transition:opacity .72s cubic-bezier(.22,.61,.36,1),
             transform 1.05s cubic-bezier(.22,.61,.36,1);
  will-change:opacity,transform;
  pointer-events:none;
}
.slide.active{
  opacity:1;
  transform:scale(1);
  pointer-events:auto;
}
.dot{
  transition:width .28s ease,background-color .28s ease,transform .28s ease;
}
.dot:hover{transform:scale(1.15)}
.product,.media img,.add{
  transition:transform .28s cubic-bezier(.22,.61,.36,1),
             box-shadow .28s ease,
             border-color .28s ease,
             filter .28s ease;
}
@media (hover:hover) and (pointer:fine){
  .product:hover{
    transform:translateY(-7px);
    border-color:rgba(20,150,165,.38);
    box-shadow:0 18px 38px rgba(7,50,70,.16);
  }
  .product:hover .media img{
    transform:scale(1.055);
  }
  .product:hover .add{
    transform:translateY(-1px);
    filter:saturate(1.12) brightness(1.03);
    box-shadow:0 9px 20px rgba(20,150,165,.22);
  }
}
@media (prefers-reduced-motion:reduce){
  .slide,.dot,.product,.media img,.add{
    transition:none!important;
  }
}

/* ===== Hoàng Long Foods: Ocean Ice commercial theme ===== */
.top{box-shadow:0 8px 28px rgba(7,50,70,.06)}
.logo{background:linear-gradient(135deg,var(--aqua),var(--navy));box-shadow:0 8px 20px rgba(11,58,83,.18)}
.search:focus{outline:none;border-color:rgba(20,150,165,.65);box-shadow:0 0 0 4px rgba(20,150,165,.10)}
.banner{background:linear-gradient(120deg,var(--aqua),var(--navy))}
.chip.active,.add,.cartbtn,.send,.zalo,.avatar{background:linear-gradient(110deg,var(--aqua),var(--navy))}
.chip{transition:transform .22s ease,border-color .22s ease,background-color .22s ease,color .22s ease}
.chip:hover{transform:translateY(-1px);border-color:rgba(20,150,165,.45)}
.media{position:relative;overflow:hidden}
.drawerhead{background:linear-gradient(110deg,#eef9fb,#edf4f7)}
.sale.selected{border-color:var(--aqua);background:linear-gradient(110deg,#eaf8fa,#eef4f7)}
.code{border-color:var(--aqua);background:#eef9fb}
.continue{background:#edf6f8;color:var(--navy)}

/* ===== HOT product system ===== */
.product{position:relative}
.product.is-hot{border-color:rgba(229,72,77,.72)}
.product.is-hot::after{content:"";position:absolute;inset:0;z-index:5;border:3px solid var(--danger);border-radius:inherit;pointer-events:none;animation:hotFramePulse 1.05s ease-in-out infinite}
.hot-badge{position:absolute;top:9px;left:9px;z-index:6;min-width:48px;padding:7px 10px;border-radius:999px;background:linear-gradient(135deg,#ff5a61,var(--danger-dark));color:#fff;font-size:9px;font-weight:900;letter-spacing:.9px;text-align:center;box-shadow:0 7px 18px rgba(229,72,77,.34);animation:hotBadgePulse .78s ease-in-out infinite}
@keyframes hotFramePulse{0%,100%{opacity:.42;box-shadow:0 0 0 0 rgba(229,72,77,.08),0 0 0 rgba(229,72,77,0)}50%{opacity:1;box-shadow:0 0 0 5px rgba(229,72,77,.16),0 0 25px rgba(229,72,77,.58)}}
@keyframes hotBadgePulse{0%,100%{transform:scale(.96);filter:brightness(.93)}50%{transform:scale(1.08);filter:brightness(1.18)}}
@media(max-width:650px){.hot-badge{top:6px;left:6px;min-width:38px;padding:5px 7px;font-size:7px}.product.is-hot::after{border-width:2px}}
@media(prefers-reduced-motion:reduce){.product.is-hot::after,.hot-badge{animation:none!important}}


/* ===== Selected product: subtle running light border ===== */
@property --selected-ring-angle{
  syntax:"<angle>";
  initial-value:0deg;
  inherits:false;
}
.product.is-selected{
  border-color:rgba(35,190,211,.72);
  box-shadow:
    0 10px 28px rgba(11,58,83,.13),
    0 0 0 1px rgba(92,226,241,.12);
}
.product.is-selected::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:7;
  padding:2px;
  border-radius:inherit;
  pointer-events:none;
  background:conic-gradient(
    from var(--selected-ring-angle),
    transparent 0deg 262deg,
    rgba(81,222,239,.06) 282deg,
    rgba(101,235,249,.58) 306deg,
    #ffffff 322deg,
    #45d7e8 338deg,
    transparent 360deg
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  filter:drop-shadow(0 0 4px rgba(56,210,228,.82));
  animation:selectedRingRun 1.7s linear infinite;
}
.product.is-selected .add{
  background:linear-gradient(110deg,#17a8b8,var(--navy));
  box-shadow:0 7px 17px rgba(20,150,165,.20);
}
.product.is-selected .media::after{
  content:"✓ ĐÃ CHỌN";
  position:absolute;
  right:7px;
  bottom:7px;
  z-index:6;
  padding:4px 7px;
  border:1px solid rgba(255,255,255,.78);
  border-radius:999px;
  background:rgba(8,67,88,.84);
  color:#fff;
  font-size:6.5px;
  font-weight:900;
  letter-spacing:.35px;
  box-shadow:0 5px 13px rgba(5,47,65,.16);
  backdrop-filter:blur(6px);
}
.product.is-hot.is-selected::before{
  z-index:7;
}
.product.is-hot .hot-badge{
  z-index:8;
}
@keyframes selectedRingRun{
  to{--selected-ring-angle:360deg}
}
@media(max-width:650px){
  .product.is-selected::before{padding:1.5px}
  .product.is-selected .media::after{
    right:5px;
    bottom:5px;
    padding:3px 5px;
    font-size:5.5px;
  }
}
@media(prefers-reduced-motion:reduce){
  .product.is-selected::before{animation:none!important}
}


/* ===== V3.3 refinements: brand logo + yellow hover ring + media protection ===== */
.logo{
  overflow:hidden;
  background:linear-gradient(135deg,#eaf7fa,#ffffff);
  border:1px solid rgba(20,150,165,.14);
}
.logo img{
  width:100%;
  height:100%;
  display:block;
  object-fit:contain;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  -webkit-touch-callout:none;
}
@media (hover:hover) and (pointer:fine){
  .product:not(.is-selected):hover{
    border-color:rgba(245,200,90,.92);
    box-shadow:
      0 18px 38px rgba(7,50,70,.14),
      0 0 0 1px rgba(245,200,90,.42),
      0 0 16px rgba(245,200,90,.24);
  }
  .product:not(.is-selected):hover .add{
    box-shadow:0 9px 20px rgba(245,200,90,.16);
  }
}
img{
  user-select:none;
  -webkit-user-drag:none;
  -webkit-touch-callout:none;
}
.media,.slide picture,.slide img{
  -webkit-user-select:none;
  user-select:none;
}


/* ===== V3.4: true running snake border + official logo ===== */
@property --snake-angle{
  syntax:"<angle>";
  initial-value:0deg;
  inherits:false;
}
.logo{
  width:56px;
  height:56px;
  padding:2px;
  border:0;
  border-radius:15px;
  overflow:visible;
  background:transparent;
  box-shadow:none;
}
.logo img{
  width:100%;
  height:100%;
  object-fit:contain;
  filter:drop-shadow(0 5px 10px rgba(6,42,60,.15));
}

/* Ghi đè viền tĩnh cũ: trước khi chọn chỉ xuất hiện một đoạn sáng chạy. */
.product:not(.is-selected)::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:7;
  padding:2px;
  border-radius:inherit;
  pointer-events:none;
  opacity:0;
  background:conic-gradient(
    from var(--snake-angle),
    transparent 0deg 292deg,
    rgba(245,200,90,.02) 304deg,
    rgba(245,200,90,.22) 314deg,
    #ffe991 326deg,
    #fffbe2 334deg,
    #ffd24d 342deg,
    #f3ad00 350deg,
    transparent 360deg
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  filter:drop-shadow(0 0 5px rgba(244,183,23,.92));
}

/* Đã chọn: đầu sáng xanh băng chạy liên tục. */
.product.is-selected::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:7;
  padding:2px;
  border-radius:inherit;
  pointer-events:none;
  opacity:1;
  background:conic-gradient(
    from var(--snake-angle),
    transparent 0deg 292deg,
    rgba(69,215,232,.02) 304deg,
    rgba(69,215,232,.24) 314deg,
    #88eff8 326deg,
    #ffffff 334deg,
    #45d7e8 342deg,
    #1496a5 350deg,
    transparent 360deg
  ) !important;
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  filter:drop-shadow(0 0 5px rgba(56,210,228,.88));
  animation:selectedSnakeRun 1.25s linear infinite !important;
}

@media (hover:hover) and (pointer:fine){
  .product:not(.is-selected):hover::before{
    opacity:1;
    animation:hoverSnakeRun .92s linear infinite;
  }
  .product:not(.is-selected):hover{
    border-color:rgba(245,200,90,.46);
    box-shadow:
      0 18px 38px rgba(7,50,70,.14),
      0 0 13px rgba(245,200,90,.16);
  }
}

@keyframes hoverSnakeRun{
  to{--snake-angle:360deg}
}
@keyframes selectedSnakeRun{
  to{--snake-angle:360deg}
}

@media(max-width:650px){
  .logo{
    width:46px;
    height:46px;
  }
  .product:not(.is-selected)::before,
  .product.is-selected::before{
    padding:1.5px;
  }
}

@media(prefers-reduced-motion:reduce){
  .product:not(.is-selected):hover::before,
  .product.is-selected::before{
    animation:none!important;
  }
}


/* ===== V3.4.1: product typography ratio ===== */
/* Desktop: tên 13px, đơn vị 9.1px = đúng 70% */
.name{
  min-height:42px;
  font-size:13px;
  line-height:1.42;
}
.spec{
  margin-top:7px;
  font-size:9.1px;
  line-height:1.4;
  font-weight:700;
  color:#506873;
  letter-spacing:.01em;
}

/* Mobile: tên 12px, đơn vị 8.4px = đúng 70% */
@media(max-width:650px){
  .name{
    min-height:35px;
    font-size:12px;
    line-height:1.42;
  }
  .spec{
    margin-top:6px;
    font-size:8.4px;
    line-height:1.4;
    font-weight:700;
    color:#506873;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}


/* ===== V3.6: product gallery like marketplace ===== */
.gallery-trigger{cursor:zoom-in}
.image-count{
  position:absolute;
  right:8px;
  top:8px;
  z-index:6;
  padding:5px 8px;
  border-radius:999px;
  background:rgba(6,42,60,.80);
  color:#fff;
  font-size:7px;
  font-weight:900;
  letter-spacing:.05em;
  backdrop-filter:blur(6px);
}
body.gallery-open{overflow:hidden}
.product-gallery{
  position:fixed;
  inset:0;
  z-index:260;
  display:none;
  place-items:center;
  padding:20px;
  background:rgba(4,25,36,.78);
  backdrop-filter:blur(9px);
}
.product-gallery.show{display:grid}
.product-gallery-dialog{
  position:relative;
  width:min(860px,100%);
  max-height:calc(100vh - 40px);
  overflow:auto;
  padding:20px;
  border:1px solid rgba(255,255,255,.55);
  border-radius:28px;
  background:linear-gradient(180deg,#fff,#f7fbfc);
  box-shadow:0 28px 80px rgba(1,23,34,.34);
}
.gallery-close{
  position:absolute;
  right:14px;
  top:14px;
  z-index:10;
  width:42px;
  height:42px;
  border:0;
  border-radius:14px;
  background:rgba(255,255,255,.94);
  color:var(--navy);
  font-size:25px;
  box-shadow:0 10px 25px rgba(6,42,60,.12);
}
.gallery-view{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) 48px;
  align-items:center;
  gap:10px;
}
.gallery-main{
  position:relative;
  aspect-ratio:1/1;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:22px;
  background:linear-gradient(145deg,#fff,#edf7f9);
}
.gallery-main img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:12px;
}
.gallery-position{
  position:absolute;
  right:12px;
  bottom:12px;
  padding:6px 10px;
  border-radius:999px;
  background:rgba(6,42,60,.80);
  color:#fff;
  font-size:11px;
  font-weight:800;
}
.gallery-arrow{
  width:48px;
  height:64px;
  border:0;
  border-radius:16px;
  place-items:center;
  background:linear-gradient(180deg,#f4fafb,#e8f2f5);
  color:var(--navy);
  font-size:34px;
  box-shadow:0 8px 20px rgba(6,42,60,.08);
}
.gallery-thumbs{
  display:flex;
  justify-content:center;
  gap:10px;
  margin-top:14px;
}
.gallery-thumb{
  width:78px;
  height:78px;
  padding:4px;
  overflow:hidden;
  border:2px solid transparent;
  border-radius:16px;
  background:#fff;
  box-shadow:0 6px 16px rgba(6,42,60,.06);
}
.gallery-thumb.active{
  border-color:var(--aqua);
  box-shadow:0 0 0 4px rgba(20,150,165,.10);
}
.gallery-thumb img{
  width:100%;
  height:100%;
  object-fit:contain;
}
.gallery-info{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-top:18px;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.gallery-info h2{
  margin:0;
  font-size:22px;
  line-height:1.25;
}
.gallery-info p{
  margin:6px 0 0;
  color:var(--muted);
  font-size:14px;
  font-weight:700;
}
.gallery-add{
  min-width:220px;
  min-height:48px;
  border:0;
  border-radius:15px;
  background:linear-gradient(110deg,var(--aqua),var(--navy));
  color:#fff;
  font-size:12px;
  font-weight:900;
  box-shadow:0 14px 28px rgba(11,58,83,.18);
}
@media(max-width:650px){
  .product-gallery{padding:8px}
  .product-gallery-dialog{
    max-height:calc(100vh - 16px);
    padding:12px;
    border-radius:20px;
  }
  .gallery-view{
    grid-template-columns:36px minmax(0,1fr) 36px;
    gap:5px;
  }
  .gallery-arrow{
    width:36px;
    height:52px;
    border-radius:12px;
    font-size:28px;
  }
  .gallery-main{border-radius:16px}
  .gallery-thumb{
    width:62px;
    height:62px;
    border-radius:12px;
  }
  .gallery-info{
    align-items:stretch;
    flex-direction:column;
  }
  .gallery-info h2{font-size:17px}
  .gallery-add{width:100%;min-width:0}
}
