/* 元寶HK — 共用樣式（沿用 Grocery HK Pro 參考設計：深綠 + 橙 + 米色） */
:root{
  --green:#123C35;--green-2:#1C534A;--green-3:#0C2A25;--green-light:#E8F0ED;
  --orange:#F26B38;--orange-deep:#E05522;--orange-light:#FCE7D8;
  --gold:#C9A227;--gold-light:#FBF4E0;
  --cream:#F7F4EE;--gray-50:#F1F3F2;--gray-100:#E5E8E6;--gray-200:#CFD5D2;--gray-400:#8A9491;--gray-600:#5A6663;
  --ink:#1E2523;--line:rgba(18,60,53,.10);--white:#fff;
  --success:#10B981;--success-bg:#D1FAE5;--warn:#F59E0B;--warn-bg:#FEF3C7;--danger:#DC2626;--danger-bg:#FEE2E2;
  --shadow-sm:0 1px 2px rgba(18,60,53,.06),0 2px 8px rgba(18,60,53,.04);
  --shadow-md:0 4px 16px rgba(18,60,53,.10);--shadow-lg:0 12px 40px rgba(18,60,53,.16);
  --radius:14px;--radius-lg:20px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter','Noto Sans TC',sans-serif;color:var(--ink);background:var(--cream);font-size:14.5px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink)}
.container{max-width:1240px;margin:0 auto;padding:0 24px}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--orange)}
.muted{color:var(--gray-600)}
.small{font-size:12.5px}
.hidden{display:none!important}
section.block{padding:44px 0}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px;flex-wrap:wrap}
.section-head h2{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.25}
.section-head .sub{color:var(--gray-600);font-size:13.5px;margin-top:4px}
.section-head .link{font-size:13px;font-weight:600;color:var(--green)}
.section-head .link:hover{color:var(--orange)}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13.5px;font-weight:700;border-radius:999px;padding:9px 18px;transition:.2s;white-space:nowrap;border:1.5px solid transparent;cursor:pointer}
.btn-primary{background:var(--green);color:#fff}.btn-primary:hover{background:var(--green-2)}
.btn-orange{background:var(--orange);color:#fff}.btn-orange:hover{background:var(--orange-deep)}
.btn-ghost{color:var(--green)}.btn-ghost:hover{background:var(--gray-50)}
.btn-line{border-color:var(--green);color:var(--green);background:#fff}.btn-line:hover{background:var(--green);color:#fff}
.btn-danger{background:var(--danger-bg);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* ---------- Badges / tags ---------- */
.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}
.b-green{background:var(--success-bg);color:#065F46}.b-gray{background:var(--gray-50);color:var(--gray-600)}
.b-orange{background:var(--orange-light);color:var(--orange-deep)}.b-gold{background:var(--gold-light);color:#8A6D10}
.b-warn{background:var(--warn-bg);color:#92400E}.b-red{background:var(--danger-bg);color:var(--danger)}
.b-blue{background:#DBEAFE;color:#1E40AF}
.cert-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.cert-tag{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--gold);color:#7A5E08;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700}
.cert-tag img{width:16px;height:16px;object-fit:contain;border-radius:3px}
.cert-tag .ic{width:16px;height:16px;border-radius:50%;background:var(--gold);color:#fff;display:grid;place-items:center;font-size:9px}

/* ---------- Top bar + header ---------- */
.topbar{background:var(--green-3);color:#C7D4D1;font-size:12.5px}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;min-height:34px;gap:12px;flex-wrap:wrap}
.topbar a:hover{color:#fff}
.topbar b{color:#fff}
header.site{position:sticky;top:0;z-index:60;background:rgba(247,244,238,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;gap:20px;height:68px}
.logo{display:flex;align-items:center;gap:10px;flex-shrink:0}
.logo-mark{width:38px;height:38px;border-radius:10px;background:var(--green);display:grid;place-items:center;color:#fff;font-weight:900;font-size:16px;letter-spacing:-.03em;font-family:Inter,sans-serif;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.logo-mark.gold{background:linear-gradient(135deg,#E7B93C,#C9A227);color:var(--green-3)}
.logo-text{display:flex;flex-direction:column;line-height:1.1}
.logo-text strong{font-size:17px;font-weight:800;color:var(--green)}
.logo-text small{font-size:10.5px;color:var(--gray-400);letter-spacing:.1em}
.search{flex:1;display:flex;align-items:center;background:#fff;border:1.5px solid var(--line);border-radius:999px;padding:5px 5px 5px 16px;gap:8px;transition:.2s;min-width:0}
.search:focus-within{border-color:var(--green);box-shadow:0 0 0 4px rgba(18,60,53,.08)}
.search input{flex:1;border:none;outline:none;background:transparent;min-width:0}
.search select{border:none;outline:none;background:var(--gray-50);border-radius:999px;font-size:12.5px;font-weight:600;color:var(--green);padding:6px 10px;width:auto;max-width:130px;min-width:0;flex-shrink:1;text-overflow:ellipsis}
.search-btn{background:var(--orange);color:#fff;font-weight:700;font-size:13.5px;padding:8px 18px;border-radius:999px;flex-shrink:0;white-space:nowrap}
.search-btn:hover{background:var(--orange-deep)}
.nav{display:flex;gap:2px;flex-shrink:0}
/* 英文版：文字較長，頁頭最闊 1240px，收起 LOGO 副標題同分類下拉、搜尋框保留最少闊度，避免同導航重疊 */
.search{min-width:220px}
html[lang=en] .logo-text small,html[lang=en] .search select{display:none}html[lang=en] .nav a{padding:8px 8px}
@media (max-width:1240px){html[lang=en] .nav{display:none}}
.nav a{font-size:13.5px;font-weight:600;padding:8px 10px;border-radius:8px;white-space:nowrap}
.nav a:hover,.nav a.active{background:var(--gray-50);color:var(--green)}
.user-chip{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--green);padding:4px 10px 4px 4px;border-radius:999px;background:#fff;border:1px solid var(--line)}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--orange);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800}
.cats-wrap{border-bottom:1px solid var(--line);background:var(--cream)}
/* 類別多過一行放得落就自動轉第 2 行（手機：固定 2 行，左右滑） */
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:2px 4px;padding:4px 0;scrollbar-width:none}
.cats .cat-chip{min-width:0}
@media(max-width:760px){.cats{grid-auto-flow:column;grid-template-rows:repeat(2,auto);grid-template-columns:none;grid-auto-columns:76px;overflow-x:auto}}
.cats::-webkit-scrollbar{display:none}
.cat-chip{display:flex;flex-direction:column;align-items:center;gap:3px;flex-shrink:0;padding:12px 14px 10px;min-width:84px;border-radius:12px 12px 0 0;color:var(--gray-600);border-bottom:3px solid transparent;transition:.2s}
.cat-chip .em{font-size:21px;line-height:1}
.cat-chip .lb{font-size:12px;font-weight:600}
.cat-chip:hover{color:var(--green);background:var(--gray-50)}
.cat-chip.on{color:var(--green);border-bottom-color:var(--orange);background:rgba(18,60,53,.04)}

/* ---------- Keyword ad rows ---------- */
.kw-rows{background:#fff;border-bottom:1px solid var(--line)}
.kw-row{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:12.5px;overflow-x:auto;scrollbar-width:none}
.kw-row+.kw-row{border-top:1px dashed var(--line)}
.kw-row .lb{flex-shrink:0;font-weight:800;color:var(--orange);min-width:76px}
.kw-row .lb.brand{color:var(--green)}
.kw-row a{flex-shrink:0;padding:3px 12px;border-radius:999px;background:var(--gray-50);color:var(--gray-600);font-weight:600}
.kw-row a:hover{background:var(--orange-light);color:var(--orange-deep)}
.kw-row a.hot::after{content:'HOT';margin-left:4px;font-size:9px;color:var(--orange);font-weight:900}

/* ---------- Carousel ---------- */
.carousel{position:relative;margin:22px auto 0;max-width:1200px;overflow:hidden;border-radius:var(--radius-lg)}
.carousel .track{display:flex;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.carousel .slide{flex:0 0 100%;position:relative;overflow:hidden;color:#fff;display:flex;align-items:center;padding:0 56px;background-size:cover;background-position:center}
.carousel .slide .txt{position:relative;z-index:2;max-width:560px}
.carousel .slide h2{font-size:40px;font-weight:900;line-height:1.15;letter-spacing:-.02em}
.carousel .slide p{font-size:16px;margin-top:10px;opacity:.9}
.carousel .slide .btn{margin-top:20px}
.carousel .slide .art{position:absolute;right:6%;top:50%;transform:translateY(-50%);font-size:150px;opacity:.9;z-index:1;filter:drop-shadow(0 12px 30px rgba(0,0,0,.3))}
.carousel .size-tag{position:absolute;top:12px;right:14px;z-index:3;background:rgba(0,0,0,.35);color:#fff;font-size:11px;padding:2px 8px;border-radius:6px}
.carousel .dots{position:absolute;bottom:14px;left:0;right:0;display:flex;justify-content:center;gap:6px;z-index:4}
.carousel .dots button{width:8px;height:8px;border-radius:999px;background:rgba(255,255,255,.5);transition:.3s}
.carousel .dots button.on{width:26px;background:#fff}
.carousel .arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.9);color:var(--green);font-size:18px;font-weight:900;box-shadow:var(--shadow-md)}
.carousel .arrow.l{left:12px}.carousel .arrow.r{right:12px}
/* 0.5 + 1 + 0.5 顯示（左右露出半張） */
.carousel.peek{max-width:none;border-radius:0;padding:0}
.carousel.peek .slide{flex:0 0 50%;margin:0 8px;border-radius:var(--radius-lg);opacity:.55;transition:opacity .5s, transform .5s;transform:scale(.94)}
.carousel.peek .slide.cur{opacity:1;transform:scale(1)}
.carousel.peek .slide h2{font-size:32px}
.carousel.peek .slide .art{font-size:110px}

/* ---------- Floating side ads + popup ---------- */
.float-ad{position:fixed;top:190px;width:120px;z-index:50;background:#fff;border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden;text-align:center;font-size:12px}
.float-ad.left{left:12px}.float-ad.right{right:12px}
.float-ad .fa-img{height:240px;display:grid;place-items:center;font-size:54px;color:#fff;background-size:cover;background-position:center}
.float-ad .fa-txt{padding:8px;font-weight:700;color:var(--green)}
.float-ad .x{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.4);color:#fff;font-size:12px;line-height:20px}
.float-ad .ad-lb{position:absolute;top:4px;left:4px;background:rgba(0,0,0,.4);color:#fff;font-size:9px;padding:0 5px;border-radius:4px}
@media (max-width:1560px){.float-ad{display:none}}
.popup-mask{position:fixed;inset:0;background:rgba(12,42,37,.6);z-index:200;display:grid;place-items:center;padding:16px;animation:fade .25s}
.popup-ad{position:relative;width:min(440px,100%);border-radius:var(--radius-lg);overflow:hidden;background:#fff;box-shadow:var(--shadow-lg)}
.popup-ad .pa-img{height:300px;display:grid;place-items:center;font-size:110px;color:#fff;background-size:cover;background-position:center}
.popup-ad .pa-body{padding:18px 20px}
.popup-ad .pa-body h3{font-size:19px;font-weight:800}
.popup-ad .close{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.95);font-size:18px;font-weight:900;color:var(--green);box-shadow:var(--shadow-md)}
@keyframes fade{from{opacity:0}to{opacity:1}}

/* ---------- Logo marquee ---------- */
.marquee{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding:18px 0}
.marquee .mq-track{display:flex;gap:16px;width:max-content;animation:mq 40s linear infinite}
.marquee:hover .mq-track{animation-play-state:paused}
.marquee a{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:10px 22px;border-radius:12px;border:1px solid var(--line);font-weight:800;color:var(--gray-600);background:var(--cream);font-size:15px}
.marquee a:hover{color:var(--green);border-color:var(--orange)}
.marquee a .lm{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:12px}
@keyframes mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- Cards ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm)}
.card+.card{margin-top:18px}
.card h3{font-size:16px;font-weight:800;margin-bottom:12px;color:var(--green)}
.grid>.card+.card{margin-top:0}.grid{display:grid;gap:18px}.grid>*{min-width:0}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.g5{grid-template-columns:repeat(5,1fr)}.g6{grid-template-columns:repeat(6,1fr)}
.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.p-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.2s;display:flex;flex-direction:column;position:relative}
.p-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.p-img{height:170px;display:grid;place-items:center;font-size:64px;position:relative;background-size:cover;background-position:center}
.p-img .tl{position:absolute;top:10px;left:10px;display:flex;gap:4px}
.p-img .tl span{background:rgba(255,255,255,.92);color:var(--green);font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:6px}
.p-img .rebate{position:absolute;bottom:10px;right:10px;background:linear-gradient(135deg,#E7B93C,#C9A227);color:var(--green-3);font-size:11px;font-weight:900;padding:3px 9px;border-radius:999px;box-shadow:var(--shadow-sm)}
.p-body{padding:14px;display:flex;flex-direction:column;gap:6px;flex:1}
.p-brand{font-size:11.5px;color:var(--orange);font-weight:700}
.p-body h4{font-size:14px;font-weight:700;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:39px}
.p-meta{display:flex;gap:6px;flex-wrap:wrap;font-size:11px;color:var(--gray-600)}
.p-meta span{background:var(--gray-50);padding:1px 7px;border-radius:5px}
.p-rate{font-size:12px;color:var(--gold);font-weight:700}
.p-price{display:flex;align-items:flex-end;justify-content:space-between;margin-top:auto;padding-top:6px;border-top:1px dashed var(--line)}
.p-price .v{font-size:17px;font-weight:800;color:var(--green)}
.p-price .v small{font-size:11px;color:var(--gray-400);font-weight:600}
.p-price .rb{font-size:11px;color:#8A6D10;background:var(--gold-light);padding:2px 7px;border-radius:6px;font-weight:700}
.fav-btn{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.95);display:grid;place-items:center;font-size:15px;z-index:2;box-shadow:var(--shadow-sm)}
.fav-btn.on{color:#E11D48}
.sponsor-flag{position:absolute;top:0;left:0;z-index:3;background:var(--orange);color:#fff;font-size:10.5px;font-weight:800;padding:3px 10px;border-radius:0 0 10px 0}

/* gradient placeholders */
.pi-1{background:linear-gradient(135deg,#FDE7D6,#F9C9A8)}.pi-2{background:linear-gradient(135deg,#DDEFE7,#B6DCCB)}
.pi-3{background:linear-gradient(135deg,#E3E9FB,#C2CFF5)}.pi-4{background:linear-gradient(135deg,#FCF1D0,#F5DD93)}
.pi-5{background:linear-gradient(135deg,#F7DDE6,#EDB6C9)}.pi-6{background:linear-gradient(135deg,#E6E1F5,#C9BEEB)}
.pi-7{background:linear-gradient(135deg,#DFF3F4,#ABDFE2)}.pi-8{background:linear-gradient(135deg,#EDEDED,#D2D6D4)}

/* supplier card */
.s-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;transition:.2s;display:block}
.s-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.s-head{display:flex;gap:12px;align-items:center}
.s-logo{width:52px;height:52px;border-radius:12px;display:grid;place-items:center;font-weight:900;font-size:20px;color:#fff;flex-shrink:0}
.s-head h4{font-size:14.5px;font-weight:800}
.s-head p{font-size:11.5px;color:var(--gray-600)}

/* event cards — 經典主題 */
.ev-list{display:flex;flex-direction:column;gap:12px}
.ev-classic{display:flex;gap:18px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;transition:.2s;position:relative;overflow:hidden}
.ev-classic:hover{box-shadow:var(--shadow-md)}
.ev-date{width:70px;flex-shrink:0;text-align:center;background:var(--green);color:#fff;border-radius:12px;padding:8px 0}
.ev-date .m{font-size:11px;opacity:.8}.ev-date .d{font-size:20px;font-weight:900;line-height:1.1}
.ev-classic .info{flex:1;min-width:0}
.ev-classic h4{font-size:15px;font-weight:800}
.ev-classic .venue{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--gray-600);margin-top:4px}
/* event cards — 圖卡主題（參考 playwhat 搜尋結果卡） */
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}
.ev-card{background:#fff;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);transition:.2s;position:relative;display:flex;flex-direction:column}
.ev-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.ev-card .cover{height:150px;display:grid;place-items:center;font-size:62px;position:relative}
.ev-card .cover .pill{position:absolute;bottom:10px;left:10px;background:#fff;color:var(--green);font-weight:800;font-size:11.5px;padding:3px 10px;border-radius:999px}
.ev-card .cover .price{position:absolute;bottom:10px;right:10px;background:var(--orange);color:#fff;font-weight:800;font-size:11.5px;padding:3px 10px;border-radius:999px}
.ev-card .body{padding:14px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.ev-card h4{font-size:15px;font-weight:800;line-height:1.4}
.ev-card .meta{font-size:12px;color:var(--gray-600);display:flex;flex-direction:column;gap:2px}
.ev-card .foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px;border-top:1px dashed var(--line);font-size:12px}

/* article card */
.a-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:.2s;display:flex;flex-direction:column}
.a-card:hover{box-shadow:var(--shadow-md)}
.a-card .cover{height:140px;display:grid;place-items:center;font-size:52px}
.a-card .body{padding:14px 16px}
.a-card h4{font-size:15px;font-weight:800;line-height:1.45;color:var(--green)}
.a-card p{font-size:12.5px;color:var(--gray-600);margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* coupon card (參考 haanga.hk 優惠牆) */
.cp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}
.cp-card{background:#fff;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);display:flex;flex-direction:column;transition:.2s}
.cp-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.cp-img{aspect-ratio:1/1;display:grid;place-items:center;font-size:72px;background-size:cover;background-position:center;position:relative}
.cp-img .exp{position:absolute;left:10px;bottom:10px;background:rgba(12,42,37,.85);color:#fff;font-size:11px;padding:2px 8px;border-radius:6px;font-weight:700}
.cp-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:6px;flex:1;border-top:2px dashed var(--line);position:relative}
.cp-body::before,.cp-body::after{content:'';position:absolute;top:-9px;width:16px;height:16px;border-radius:50%;background:var(--cream)}
.cp-body::before{left:-9px}.cp-body::after{right:-9px}
.cp-merchant{font-size:11.5px;color:var(--orange);font-weight:700;display:flex;align-items:center;gap:6px}
.cp-title{font-size:14px;font-weight:800;line-height:1.4}

/* ---------- Forms ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 18px}
.form-grid .full{grid-column:1/-1}
.field label{display:block;font-size:12.5px;font-weight:700;color:var(--green);margin-bottom:5px}
.field label .req{color:var(--danger);margin-left:2px}
.field .hint{font-size:11.5px;color:var(--gray-400);margin-top:4px}
.inp,.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=number],.field input[type=date],.field input[type=time],.field input[type=url],.field input[type=tel],.field input[type=datetime-local],.field select,.field textarea{width:100%;padding:10px 12px;border:1.5px solid var(--gray-100);border-radius:10px;background:#fff;outline:none;transition:.2s}
.inp:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(18,60,53,.08)}
.field textarea{min-height:90px;resize:vertical}
.field.err input,.field.err select,.field.err textarea,.field.err .checks{border-color:var(--danger)!important}
.field .errmsg{color:var(--danger);font-size:11.5px;margin-top:4px;display:none}
.field.err .errmsg{display:block}
.checks{display:flex;flex-wrap:wrap;gap:8px;padding:6px;border:1.5px solid transparent;border-radius:10px}
.check{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1.5px solid var(--gray-100);border-radius:999px;font-size:13px;cursor:pointer;background:#fff;user-select:none}
.check:has(input:checked){border-color:var(--orange);background:var(--orange-light);color:var(--orange-deep);font-weight:700}
.check input{accent-color:var(--orange)}
.switch{position:relative;display:inline-block;width:42px;height:24px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.switch span{position:absolute;inset:0;background:var(--gray-200);border-radius:999px;transition:.2s;cursor:pointer}
.switch span::before{content:'';position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}
.switch input:checked+span{background:var(--success)}
.switch input:checked+span::before{transform:translateX(18px)}
.radio-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.radio-card{border:2px solid var(--gray-100);border-radius:12px;padding:12px;cursor:pointer;background:#fff;transition:.2s}
.radio-card:has(input:checked){border-color:var(--orange);background:#FFF8F4}
.radio-card input{accent-color:var(--orange)}
.radio-card b{display:block;font-size:13.5px}
.radio-card small{color:var(--gray-600);font-size:11.5px}

/* ---------- Tables ---------- */
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{background:var(--gray-50);text-align:left;padding:10px 12px;font-size:12px;color:var(--gray-600);font-weight:700;white-space:nowrap;border-bottom:1px solid var(--line)}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:#FBFAF7}
.tbl .acts{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- Tabs ---------- */
.tabs{display:flex;gap:2px;border-bottom:2px solid var(--gray-100);overflow-x:auto;scrollbar-width:none}
.tabs button,.tabs a{padding:12px 18px;font-size:14px;font-weight:700;color:var(--gray-600);border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}
.tabs button.on,.tabs a.on{color:var(--green);border-bottom-color:var(--orange)}
.tabs button:hover,.tabs a:hover{color:var(--green)}

/* ---------- Modal / toast ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(12,42,37,.55);z-index:300;display:grid;place-items:center;padding:16px;animation:fade .2s;overflow:auto}
.modal{background:#fff;border-radius:var(--radius-lg);width:min(560px,100%);max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg)}
.modal.wide{width:min(860px,100%)}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:1}
.modal-head h3{font-size:17px;font-weight:800;color:var(--green)}
.modal-head .x{font-size:22px;color:var(--gray-400);width:32px;height:32px;border-radius:50%}
.modal-head .x:hover{background:var(--gray-50)}
.modal-body{padding:20px 22px}
.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:0;background:#fff}
#toasts{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:500;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--green-3);color:#fff;padding:11px 20px;border-radius:999px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-lg);animation:fade .2s;max-width:90vw}
.toast.err{background:var(--danger)}
.toast.ok{background:#065F46}
.sim-note{display:flex;gap:8px;align-items:flex-start;background:var(--warn-bg);color:#92400E;border-radius:10px;padding:10px 12px;font-size:12.5px;line-height:1.55}
.sim-note::before{content:'🧪';flex-shrink:0}
.info-note{display:flex;gap:8px;background:var(--green-light);color:var(--green);border-radius:10px;padding:10px 12px;font-size:12.5px}
.info-note::before{content:'ℹ️';flex-shrink:0}

/* ---------- Pager / sort ---------- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.toolbar .grow{flex:1}
.sort-pills{display:flex;gap:6px;flex-wrap:wrap}
.sort-pills button{padding:7px 14px;border-radius:999px;background:#fff;border:1.5px solid var(--gray-100);font-size:12.5px;font-weight:700;color:var(--gray-600)}
.sort-pills button.on{background:var(--green);border-color:var(--green);color:#fff}
.pager{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:24px}
.pager button{min-width:36px;height:36px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:700}
.pager button.on{background:var(--green);color:#fff}

/* ---------- Footer ---------- */
footer.site{background:var(--green-3);color:#A9BDB9;padding:46px 0 24px;margin-top:40px;font-size:13px}
.foot-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:30px}
footer.site h5{color:#fff;font-size:13.5px;margin-bottom:10px}
footer.site li{list-style:none;margin:6px 0}
footer.site a:hover{color:#fff}
footer.site .logo-text strong{color:#fff}
.foot-bottom{border-top:1px solid rgba(255,255,255,.1);margin-top:30px;padding-top:18px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px}

/* ---------- Demo bar ---------- */
.demo-fab{position:fixed;left:16px;bottom:16px;z-index:400;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.demo-fab .tgl{background:var(--gold);color:var(--green-3);font-weight:900;font-size:12px;padding:8px 14px;border-radius:999px;box-shadow:var(--shadow-lg)}
.demo-fab .menu{background:#fff;border-radius:14px;box-shadow:var(--shadow-lg);padding:8px;display:none;min-width:220px;max-height:70vh;overflow:auto}
.demo-fab.open .menu{display:block}
.demo-fab .menu a,.demo-fab .menu button{display:block;width:100%;text-align:left;padding:7px 10px;border-radius:8px;font-size:12.5px;font-weight:600}
.demo-fab .menu a:hover,.demo-fab .menu button:hover{background:var(--gray-50)}
.demo-fab .menu .sep{font-size:10.5px;color:var(--gray-400);font-weight:800;letter-spacing:.1em;padding:8px 10px 2px}

/* ---------- Admin layout ---------- */
.adm{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.adm-side{background:var(--green-3);color:#C7D4D1;position:sticky;top:0;height:100vh;overflow-y:auto;padding:16px 10px}
.adm-side .logo{padding:6px 8px 18px}
.adm-side .logo-text strong{color:#fff}
.adm-side .grp{font-size:10.5px;font-weight:800;letter-spacing:.12em;color:#6F8A85;padding:14px 12px 6px}
.adm-side a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer}
.adm-side a:hover{background:rgba(255,255,255,.06);color:#fff}
.adm-side a.on{background:var(--orange);color:#fff}
.adm-side a .cnt{margin-left:auto;background:var(--orange);color:#fff;border-radius:999px;font-size:10.5px;padding:0 7px}
.adm-side a.on .cnt{background:#fff;color:var(--orange)}
.adm-main{min-width:0}
.adm-top{background:#fff;border-bottom:1px solid var(--line);height:60px;display:flex;align-items:center;gap:14px;padding:0 26px;position:sticky;top:0;z-index:20}
.adm-top h1{font-size:18px;font-weight:800;color:var(--green);flex:1}
.adm-content{padding:24px 26px 60px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.kpi .lb{font-size:12px;color:var(--gray-600);font-weight:600}
.kpi .v{font-size:26px;font-weight:900;color:var(--green);line-height:1.2;margin-top:4px}
.kpi .d{font-size:11.5px;color:var(--success);font-weight:700}
.kpi.live .v{color:var(--orange)}
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--orange);margin-right:6px;animation:pulse 1.2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(242,107,56,.6)}100%{box-shadow:0 0 0 8px rgba(242,107,56,0)}}
.chart{width:100%;display:block}
.chart text{font-family:inherit}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--gray-600);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:10px}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.thumb{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;border:2px solid var(--gray-100);background:var(--gray-50) center/cover;display:grid;place-items:center;font-size:36px}
.thumb.main{border-color:var(--orange)}
.thumb .mainlb{position:absolute;top:4px;left:4px;background:var(--orange);color:#fff;font-size:10px;font-weight:800;padding:1px 6px;border-radius:5px}
.thumb .ops{position:absolute;bottom:0;left:0;right:0;display:flex;background:rgba(12,42,37,.8)}
.thumb .ops button{flex:1;color:#fff;font-size:10.5px;padding:4px 0;font-weight:700}
.thumb .ops button:hover{background:rgba(255,255,255,.15)}
.dropzone{border:2px dashed var(--gray-200);border-radius:12px;padding:20px;text-align:center;color:var(--gray-600);cursor:pointer;background:#FCFBF8;transition:.2s}
.dropzone:hover,.dropzone.over{border-color:var(--orange);background:#FFF8F4}
.empty{text-align:center;color:var(--gray-400);padding:40px 0;font-size:13px}

@media (max-width:1100px){.nav{display:none}.g5,.g6{grid-template-columns:repeat(3,1fr)}.foot-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:860px){
  .g3,.g4{grid-template-columns:repeat(2,1fr)}.g2,.form-grid{grid-template-columns:1fr}
  .adm{grid-template-columns:minmax(0,1fr)}
  .adm-top{height:auto;min-height:56px;flex-wrap:wrap;padding:10px 16px;gap:8px}.adm-top h1{flex-basis:100%;font-size:16px}.adm-side{position:static;height:auto;display:flex;flex-wrap:nowrap;overflow-x:auto;gap:4px;padding:8px 10px;scrollbar-width:thin}.adm-side .grp{display:none}.adm-side .logo{flex-shrink:0;padding:0 8px 0 0}.adm-side .logo-text{display:none}.adm-side a{flex-shrink:0;white-space:nowrap}
  .carousel .slide{padding:0 22px}.carousel .slide h2{font-size:24px!important}.carousel .slide .art{font-size:70px!important;right:4%}
  .carousel.peek .slide{flex-basis:76%}
  .grid[style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
  .header-inner{height:auto;padding:10px 0;flex-wrap:wrap}.search{order:3;flex-basis:100%}
}
@media (max-width:560px){.container{padding:0 16px}.g3,.g4,.g5,.g6{grid-template-columns:1fr 1fr}.product-grid{grid-template-columns:1fr 1fr;gap:10px}.p-img{height:130px;font-size:48px}.adm-content{padding:16px}}
/* 顯示 / 隱藏 分段掣 */
.seg{display:inline-flex;border:1.5px solid var(--line);border-radius:999px;overflow:hidden;background:#fff}
.seg button{padding:5px 10px;font-size:12px;font-weight:700;color:var(--gray-400)}
.seg button.on{background:var(--green);color:#fff}
.seg button[data-v=hide].on{background:#B42318}
/* 大主類列（分類列上面） */
.sec-wrap{background:#fff;border-bottom:1px solid var(--line)}
.sec-row{display:flex;gap:8px;padding:10px 24px;overflow-x:auto;scrollbar-width:none}
.sec-row::-webkit-scrollbar{display:none}
.sec-tab{flex-shrink:0;padding:8px 18px;border-radius:999px;font-size:14px;font-weight:700;color:var(--green);background:var(--gray-50);border:1.5px solid transparent;transition:.2s;white-space:nowrap}
.sec-tab:hover{border-color:var(--green)}
.sec-tab.on{background:var(--green);color:#fff}
/* 雜誌入口：靠右，用金色分開大主類 */
.sec-tab.sec-mag{margin-left:auto;background:linear-gradient(135deg,#E7B93C,#C9A227);color:var(--green-3)}
.sec-tab.sec-mag:hover{border-color:var(--green-3)}
.sec-tab.sec-mag.on{box-shadow:0 0 0 2px var(--green-3)}
/* 直度海報 1080×1350：文字放底，圖示放上面 */
.carousel.portrait .slide{align-items:flex-end;padding:0 26px 56px}
.carousel.portrait .slide .art{top:32%;right:50%;transform:translate(50%,-50%);font-size:120px}
.carousel.portrait .slide h2{font-size:26px!important}
.carousel.portrait .slide p{font-size:14px}
/* 前台主題配色（管理員後台 → 系統設定） */
html[data-theme=ocean]{--green:#12355B;--green-2:#1E4E7E;--green-3:#0B2340;--green-light:#E6EEF7;--orange:#E8A33A;--orange-deep:#C9861C;--orange-light:#FBEFD9;--cream:#F3F6FA;--line:rgba(18,53,91,.12)}
html[data-theme=ruby]{--green:#7A1F2B;--green-2:#9B2C3B;--green-3:#5A121D;--green-light:#F7E8EA;--orange:#C9A227;--orange-deep:#A8851A;--orange-light:#FBF4DC;--cream:#FBF6F1;--line:rgba(122,31,43,.12)}
.theme-sw{display:flex;gap:4px;margin-top:8px}.theme-sw i{flex:1;height:18px;border-radius:5px}
[data-theme-prev=classic] i:nth-child(1){background:#123C35}[data-theme-prev=classic] i:nth-child(2){background:#F26B38}[data-theme-prev=classic] i:nth-child(3){background:#F7F4EE}
[data-theme-prev=ocean] i:nth-child(1){background:#12355B}[data-theme-prev=ocean] i:nth-child(2){background:#E8A33A}[data-theme-prev=ocean] i:nth-child(3){background:#F3F6FA}
[data-theme-prev=ruby] i:nth-child(1){background:#7A1F2B}[data-theme-prev=ruby] i:nth-child(2){background:#C9A227}[data-theme-prev=ruby] i:nth-child(3){background:#FBF6F1}
/* 產品標籤 */
.p-tags{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}
.p-tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:5px;background:var(--green-light);color:var(--green)}
.p-tag.t-ex{background:#EDE9FE;color:#6D28D9}.p-tag.t-sea{background:#FFEDD5;color:#C2410C}.p-tag.t-exp{background:#DBEAFE;color:#1D4ED8}.p-tag.t-rex{background:#E0F2FE;color:#0369A1}
/* 語言切換 */
.lang-sw{display:inline-flex;border:1.5px solid currentColor;border-radius:999px;overflow:hidden;font-size:12px;font-weight:700;opacity:.9}
.lang-sw button{padding:2px 9px;color:inherit}.lang-sw button.on{background:#fff;color:var(--green-3)}
.adm-top .lang-sw{color:var(--green)}.adm-top .lang-sw button.on{background:var(--green);color:#fff}

/* ========== 手機 App 式介面 ========== */
.m-tabs,.m-lang,.m-filter-btn,.m-sheet-head,.m-sheet-bg{display:none}
@media (max-width:1100px){
  .m-tabs{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fff;border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 18px rgba(18,60,53,.07)}
  .m-tabs a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 0;font-size:11px;font-weight:600;color:var(--gray-600);min-height:44px;justify-content:center}
  .m-tabs svg{width:23px;height:23px}
  .m-tabs a.on{color:var(--orange);font-weight:800}
  body.has-tabs{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
  body.has-tabs #toasts{bottom:calc(80px + env(safe-area-inset-bottom))}
  .demo-fab{display:none}
}
@media (max-width:1240px){html[lang=en] .m-tabs{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fff;border-top:1px solid var(--line);padding:6px 4px}html[lang=en] .m-tabs a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--gray-600)}html[lang=en] .m-tabs svg{width:23px;height:23px}html[lang=en] .m-tabs a.on{color:var(--orange)}html[lang=en] body.has-tabs{padding-bottom:68px}}
@media (max-width:760px){
  /* 頂部：品牌色 App 列 + 白色搜尋框；登入同導航交俾底部分頁列 */
  .topbar{display:none}
  header.site{background:var(--green);border-bottom:none;backdrop-filter:none}
  .header-inner{display:grid;grid-template-columns:1fr auto;gap:10px;padding:10px 16px 12px;height:auto}
  header.site .logo-text strong{color:#fff}
  header.site .logo-text small{display:none}
  header.site .logo-mark{width:32px;height:32px;border-radius:9px;font-size:14px;box-shadow:none}
  .m-lang{display:block}
  .m-lang .lang-sw{color:#fff}
  header.site .btn,header.site .user-chip{display:none}
  .search{grid-column:1/-1;grid-row:2;order:0;flex-basis:auto;min-width:0;border:none;padding:4px 4px 4px 14px;height:42px}
  .search select{display:none}
  .search input{font-size:16px}
  .search-btn{padding:7px 14px}
  .carousel .size-tag{display:none}
  /* 內頁唔使再顯示大主類同分類，等內容一開就睇到 */
  body.m-sub .sec-wrap,body.m-sub .cats-wrap{display:none}
  body.m-mag .sec-wrap{display:block}
  /* 大主類：分段切換 */
  .sec-wrap{background:var(--green-light);border-bottom:none}
  .sec-row{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding:8px 16px;background:none}
  .sec-row::-webkit-scrollbar{display:none}
  .sec-tab{flex-shrink:0;padding:7px 14px;font-size:13px;border-radius:9px;background:transparent;color:var(--gray-600);box-shadow:none;white-space:nowrap}
  .sec-tab.on{background:#fff;color:var(--green);font-weight:800;box-shadow:0 1px 4px rgba(18,60,53,.16)}
  .sec-tab.sec-mag{order:-1;margin:0 6px 0 0;background:linear-gradient(135deg,#E7B93C,#C9A227);color:var(--green-3);font-weight:800}
  /* 分類：一行橫向卡片 */
  .cats-wrap{background:#fff}
  .cats{display:flex;gap:10px;overflow-x:auto;padding:12px 16px;margin:0 -16px}
  .kw-row{margin-right:-16px;padding-right:16px}
  .carousel.peek .slide{flex-basis:86%}
  .carousel .slide .art{opacity:.28}
  .cats .cat-chip{flex:0 0 66px;min-width:66px;padding:0;gap:5px;border:none;border-radius:0;background:none}
  .cat-chip .em{width:56px;height:56px;display:grid;place-items:center;font-size:25px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 1px 3px rgba(18,60,53,.06)}
  .cat-chip .lb{font-size:11.5px;line-height:1.25;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .cat-chip.on{background:none;border:none}
  .cat-chip.on .em{border:2px solid var(--orange)}
  .cat-chip.on .lb{color:var(--orange-deep);font-weight:800}
  .kw-row .lb{min-width:auto}
  /* 內容 */
  .card{border-radius:16px;padding:16px;box-shadow:none}
  .btn,.sort-pills button{min-height:40px}
  .btn-sm{min-height:34px}
  input,select,textarea{font-size:16px}
  .form-grid{grid-template-columns:minmax(0,1fr)}
  input[type=file]{width:100%;max-width:100%;min-width:0}
  .sort-pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .sort-pills button{flex-shrink:0}
  .marquee{display:none}
  footer.site{padding-top:24px}
  footer.site .foot-grid>div:nth-child(5){display:none}
  /* 搜尋篩選：底部抽屜 */
  .m-filter-btn{display:inline-flex}
  .m-sheet{position:fixed;left:0;right:0;bottom:0;z-index:120;max-height:82vh;background:#fff;border-radius:20px 20px 0 0;transform:translateY(105%);transition:transform .22s;display:flex;flex-direction:column;visibility:hidden}
  .m-sheet.open{transform:none;visibility:visible}
  .m-sheet-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
  .m-sheet .filters{position:static;overflow-y:auto;border:none;border-radius:0;padding-bottom:24px;margin:0}
  .m-sheet .filters>h3:first-child{display:none}
  .m-sheet-bg.open{display:block;position:fixed;inset:0;z-index:110;background:rgba(12,42,37,.45)}
  body.sheet-open{overflow:hidden}
}

/* 打字搜尋選單（品牌） */
.combo{position:relative}
.combo-list{position:absolute;left:0;right:0;z-index:40;margin-top:4px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);max-height:280px;overflow-y:auto;padding:4px}
.combo-item{padding:9px 12px;border-radius:8px;font-size:14px;cursor:pointer}
.combo-item:hover,.combo-item.on{background:var(--orange-light)}
.combo-note{padding:9px 12px;font-size:12.5px;color:var(--gray-600)}
.combo .errmsg{display:none}.combo.err .errmsg{display:block}

/* 前台圖片保護 */
.img-protect img{-webkit-user-drag:none;user-drag:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
/* 雜誌頁：直度 4:5，闊屏一次兩頁好似打開本書，手機一次一頁 */
.mag-theme+.mag-theme{margin-top:34px}
.mag-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.mag-head h3{font-size:19px;font-weight:800;color:var(--green)}
.mag-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%}
.mag-tabs button{flex-shrink:0}
.mag-title{min-height:18px;margin-bottom:10px}
.mag-book{position:relative;max-width:980px;margin:0 auto}
.mag-track{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;border-radius:14px;outline:none}
.mag-track::-webkit-scrollbar{display:none}
.mag-page{position:relative;display:block;flex:0 0 calc(50% - 4px);aspect-ratio:var(--mag-ratio,4 / 5);scroll-snap-align:start;overflow:hidden;background:#fff;border-radius:6px;box-shadow:inset -14px 0 18px -14px rgba(0,0,0,.28)}
.mag-page:nth-child(even){box-shadow:inset 14px 0 18px -14px rgba(0,0,0,.28)}
.mag-page img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.mag-no{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:rgba(12,42,37,.72);color:#fff;font-size:12px;font-weight:700;padding:3px 12px;border-radius:999px}
.mag-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:50%;background:#fff;box-shadow:var(--shadow-lg);font-size:24px;font-weight:700;color:var(--green)}
.mag-arrow.l{left:-14px}.mag-arrow.r{right:-14px}
@media (max-width:760px){.mag-page{flex-basis:100%;box-shadow:none}.mag-page:nth-child(even){box-shadow:none}.mag-arrow.l{left:4px}.mag-arrow.r{right:4px}.mag-arrow{width:36px;height:36px;font-size:20px;opacity:.9}}
/* 後台雜誌頁面 */
.mg-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-top:12px}
.mg-card{border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff;display:flex;flex-direction:column;gap:7px;font-size:12.5px;min-width:0}
.mg-card.off{opacity:.62}
.mg-thumb{position:relative;aspect-ratio:4/5;border-radius:8px;overflow:hidden;background:var(--gray-50)}
.mg-thumb img{width:100%;height:100%;object-fit:contain}
.mg-card input[type=text],.mg-card input[type=date]{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:8px;font-size:12.5px}

.mag-theme{scroll-margin-top:90px}
@media (max-width:760px){.mag-theme{scroll-margin-top:124px}}

/* 雜誌全屏觀看 */
.mag-head h3{margin-right:auto}
.mag-full{flex-shrink:0;padding:7px 14px;border-radius:999px;border:1.5px solid var(--green);color:var(--green);font-size:13px;font-weight:700;background:#fff;transition:.2s}
.mag-full:hover{background:var(--green);color:#fff}
.mag-view{position:fixed;inset:0;z-index:1000;background:#0b1412;display:flex;flex-direction:column;color:#fff;width:100%;height:100%}
.mv-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;user-select:none}
.mv-stage.can-drag{cursor:grab}.mv-stage.can-drag:active{cursor:grabbing}
.mv-stage img{width:100%;height:100%;object-fit:contain;transform-origin:center;pointer-events:none;will-change:transform}
.mv-bar{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));background:rgba(0,0,0,.65);flex-wrap:wrap}
.mv-bar button{min-width:44px;height:44px;padding:0 8px;border-radius:10px;color:#fff;font-size:20px;font-weight:700;background:rgba(255,255,255,.1)}
.mv-bar button:hover:not(:disabled){background:rgba(255,255,255,.25)}
.mv-bar button:disabled{opacity:.3;cursor:default}
.mv-bar .mv-pct{font-size:13px;min-width:62px}
.mv-no{font-size:14px;font-weight:700;min-width:62px;text-align:center}
.mv-sep{width:1px;height:26px;background:rgba(255,255,255,.2);margin:0 4px}
.mv-bar .mv-close{background:rgba(242,107,56,.9)}
@media (max-width:760px){.mag-full{padding:6px 11px;font-size:12px;order:1}.mag-head>.sort-pills,.mag-head>span{order:2;flex-basis:100%}.mv-bar{gap:3px;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.mv-bar button{min-width:40px}.mv-bar .mv-pct{min-width:52px}.mv-no{min-width:48px;font-size:13px}.mv-sep{margin:0 1px}}
@media (max-width:480px){.mv-sep{display:none}.mv-bar button{min-width:36px;padding:0 4px}.mv-bar .mv-pct{min-width:46px}.mv-no{min-width:40px}}

/* 聊天室入口 */
.sec-tab.sec-chat{margin-left:auto;background:var(--green-light);color:var(--green)}
.sec-tab.sec-chat+.sec-mag{margin-left:0}
/* 聊天室 */
.chat-list{height:min(58vh,520px);overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px;background:var(--cream)}
.chat-msg{align-self:flex-start;max-width:82%}
.chat-msg.mine{align-self:flex-end;text-align:right}
.chat-meta{font-size:11.5px;color:var(--gray-600);margin-bottom:3px}
.chat-body{display:inline-block;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 12px;font-size:14px;white-space:pre-wrap;word-break:break-word}
.chat-msg.mine .chat-body{background:var(--green);color:#fff;border-color:var(--green)}
.chat-form{display:flex;gap:8px;margin-top:10px;align-items:flex-end}
.chat-form textarea{flex:1;min-width:0;padding:9px 12px;border:1.5px solid var(--line);border-radius:12px;font:inherit;resize:vertical}
/* 商戶影片系列：闊屏一行 10 格，窄屏左右滑 */
.vs-row+.vs-row{margin-top:24px}
.vs-title{font-size:16px;font-weight:800;color:var(--green);margin-bottom:8px}
.vs-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px}
.vs-item{display:block;text-align:left;min-width:0;font-size:11.5px}
button.vs-item{cursor:pointer}
.vs-thumb{position:relative;display:block;aspect-ratio:16/9;border-radius:8px;overflow:hidden;background:#000}
.vs-thumb img{width:100%;height:100%;object-fit:cover}
.vs-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:16px;background:rgba(0,0,0,.2)}
.vs-name{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:4px;font-weight:600;color:var(--ink)}
@media (max-width:1000px){.vs-grid{display:flex;overflow-x:auto;scrollbar-width:none}.vs-grid::-webkit-scrollbar{display:none}.vs-item{flex:0 0 140px}}
@media (max-width:760px){.sec-tab.sec-chat{order:-1;margin:0 6px 0 0;background:#fff;font-weight:800}}
/* 手機：發送欄唔使捲先見到 */
@media (max-width:760px){.chat-list{height:calc(100dvh - 450px);min-height:220px}}
.vs-edit{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}

/* 批量建立商戶：檢查結果放大 */
.bm-list{max-height:300px;overflow:auto}
.bm-list th{position:sticky;top:0;z-index:1;background:var(--gray-50)}
.modal.bm-full{width:min(1400px,100%);height:calc(100dvh - 32px);max-height:none;display:flex;flex-direction:column}
.modal.bm-full .modal-body{flex:1;min-height:0;display:flex;flex-direction:column}
.bm-full .bm-stack,.bm-full #bmOut{flex:1;min-height:0;display:flex;flex-direction:column}
.bm-full .bm-intro{display:none}
.bm-full .bm-list{flex:1;min-height:0;max-height:none}

/* 商戶名單：頁碼同每頁數量 */
.m-foot{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-top:16px}
.m-foot .pager{margin-top:0;justify-content:flex-start;align-items:center}
.m-foot .pager button{padding:0 10px}
.m-foot .pager button:disabled{opacity:.4;cursor:default}
.pager-gap{padding:0 2px;color:var(--gray-400)}

/* 商店頁商品類：左邊分類欄 */
.mg-wrap{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px;align-items:start}
.mg-side{position:sticky;top:84px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;max-height:calc(100vh - 100px);overflow:auto}
.mg-side h3{font-size:14px;font-weight:800;color:var(--green);margin:2px 6px 8px}
.mg-list{display:flex;flex-direction:column;gap:2px}
.mg-cat{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 10px;border-radius:10px;font-size:13.5px;font-weight:600;color:var(--gray-600);text-align:left;background:none}
.mg-cat:hover{background:var(--gray-50)}
.mg-cat.on{background:var(--green);color:#fff}
.mg-name{min-width:0;overflow-wrap:anywhere}
.mg-n{flex-shrink:0;min-width:26px;padding:1px 7px;border-radius:999px;background:var(--gray-100);color:var(--gray-600);font-size:12px;font-weight:700;text-align:center}
.mg-cat.on .mg-n{background:rgba(255,255,255,.25);color:#fff}
@media (max-width:760px){.mg-wrap{grid-template-columns:minmax(0,1fr);gap:14px}.mg-side{position:static;max-height:none;padding:0;border:0;background:none;overflow:visible}.mg-side h3{display:none}.mg-list{flex-direction:row;gap:6px;overflow-x:auto;padding-bottom:6px}.mg-cat{width:auto;flex-shrink:0;white-space:nowrap;background:#fff;border:1.5px solid var(--gray-100)}.mg-cat.on{border-color:var(--green)}}

/* 優惠碼二維碼 */
.cp-qr{display:flex;justify-content:center;min-height:150px}
.cp-qr img,.cp-qr canvas{background:#fff;padding:8px;border:1px solid var(--line);border-radius:10px;box-sizing:content-box}
/* 訊息 */
.msg-list{display:flex;flex-direction:column;gap:8px}
.msg-item{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.msg-item.unread{border-color:var(--orange);background:#FFF9F5}
.msg-item.unread .msg-title{font-weight:800}
.msg-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%;padding:12px;text-align:left;background:none}
.msg-title{flex:1;min-width:160px;overflow-wrap:anywhere;font-weight:600}
.msg-body{padding:0 12px 12px;font-size:14px}
.msg-dot{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:6px;border-radius:999px;background:var(--danger);color:#fff;font-size:11px;font-weight:800}
.msg-dot[hidden]{display:none}
.mc-side a{align-items:center}
.m-tabs a{position:relative}.m-tabs .msg-dot{position:absolute;top:2px;right:calc(50% - 22px);margin:0}
.ui-switches{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 16px}


/* 手機版 */
@media (max-width:760px){
  .m-hide-sup{display:none}
  .sup-rows{grid-template-columns:minmax(0,1fr);gap:8px}
  .sup-rows .s-card{padding:10px 12px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:10px}
  .sup-rows .s-card:hover{transform:none}
  .sup-rows .s-head{margin:0;min-width:0;gap:10px}
  .sup-rows .s-logo{width:40px;height:40px;font-size:16px;flex-shrink:0}
  .sup-rows .s-head>div:last-child{min-width:0}
  .sup-rows .s-head h4{font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .sup-rows .s-head p{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sup-rows .s-card>.row{grid-column:2;grid-row:1;margin:0!important;display:block;text-align:right;font-size:11px;max-width:92px}
  .sup-rows .s-card>.row span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .sup-rows .s-card>:not(.s-head):not(.row){grid-column:1/-1;margin-top:6px}
  .cp-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .cp-img{aspect-ratio:4/3;font-size:44px}
  .cp-img .exp{left:6px;bottom:6px;font-size:10px;padding:1px 6px}
  .cp-body{padding:9px 10px 10px;gap:4px;font-size:12px}
  .cp-title{font-size:13px}
  .cp-card .cp-merchant{font-size:11px}
  .cp-card .row{gap:4px}
  .cp-card .row .btn-sm{padding:5px 8px;font-size:11.5px}
  .cp-card .row .btn-orange{flex:1 0 100%;justify-content:center}
}

/* 大主類邊框顏色（管理員設定） */
.sec-tab[style*="--sc"]{border:2px solid var(--sc)}
.sec-tab[style*="--sc"]:hover{border-color:var(--sc);box-shadow:0 0 0 1px var(--sc)}

/* 精選雜誌掣：加長、字體加大；顏色可以由管理員設定 */
.sec-row{align-items:center}
.sec-tab.sec-mag{min-width:200px;padding:11px 36px;font-size:17px;font-weight:900;text-align:center;box-shadow:0 3px 10px rgba(201,162,39,.4)}
.sec-tab.sec-mag[style]{background:var(--mag);color:var(--magt);box-shadow:0 3px 10px rgba(18,60,53,.22)}
.sec-tab.sec-mag.on{box-shadow:0 0 0 2px var(--green-3)}
@media (max-width:760px){
  .sec-tab.sec-mag{min-width:0;padding:8px 18px;font-size:15px}
}
/* 電腦 / 平板：大主類一行排唔晒就換行，精選雜誌永遠唔會被切走 */
@media (min-width:761px){.sec-row{flex-wrap:wrap;overflow-x:visible}}
@media (min-width:761px){.sec-tab.sec-chat+.sec-mag{margin-left:auto}}
