/* 🎫 Sự kiện & Bán vé — giao diện dùng chung (27/10/2026). Cùng bộ màu với app.css (tím Aladyn). */
:root{color-scheme:light;--primary:#6C3CE1;--primary-light:#8B5CF6;--primary-dark:#4C1D95;--accent:#F59E0B;--pink:#EC4899;--blue:#3B82F6;
  --bg:#ffffff;--soft:#F4F0FC;--soft2:#EEE7FB;--tx:#1E1533;--tx2:#6B6488;--bd:#E7DEF7;--green:#10B981;--red:#E11D48;--amber:#D97706;
  --r:14px;--sh:0 6px 24px rgba(76,29,149,.08)}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;color:var(--tx);background:#FBF9FF;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;min-height:100vh;min-height:100dvh;overflow-x:hidden}
button,input,select,textarea{font-family:inherit;font-size:16px;color:inherit}
input:not([type=checkbox]):not([type=radio]):not([type=file]),textarea,select{-webkit-appearance:none;appearance:none}
a{color:var(--primary)}
img{max-width:100%;display:block}
.hide{display:none!important}
:focus-visible{outline:3px solid rgba(108,60,225,.45);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* thanh trên */
.top{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--bd);
  display:flex;align-items:center;gap:10px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top))}
.top .logo{width:34px;height:34px;border-radius:10px;background:url('/logo-mark.png') center/cover no-repeat;flex:0 0 auto}
.top h1{font-size:16px;font-weight:800;color:var(--primary-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top .sp{flex:1}
.top a.tl,.top button.tl{font-size:13px;font-weight:600;color:var(--tx2);text-decoration:none;background:none;border:1px solid var(--bd);border-radius:30px;padding:7px 12px;cursor:pointer;white-space:nowrap}
.top a.tl:hover,.top button.tl:hover{color:var(--primary);border-color:var(--primary-light)}
.wrap{max-width:980px;margin:0 auto;padding:16px}
.narrow{max-width:640px}

/* khối */
.card{background:#fff;border:1px solid var(--bd);border-radius:var(--r);padding:16px;margin-bottom:14px;box-shadow:var(--sh)}
.card h2,.h2{font-size:16px;font-weight:800;color:var(--primary-dark);margin-bottom:10px}
.card h3{font-size:14px;font-weight:700;margin:12px 0 6px}
.muted{color:var(--tx2);font-size:13px}
.small{font-size:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.row.between{justify-content:space-between}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:560px){.grid2{grid-template-columns:1fr}}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.stat{background:var(--soft);border-radius:12px;padding:12px}
.stat .n{font-size:20px;font-weight:800;color:var(--primary-dark);word-break:break-word}
.stat .l{font-size:12px;color:var(--tx2);margin-top:2px}
.pill{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:30px;background:var(--soft2);color:var(--primary-dark);white-space:nowrap}
.pill.ok{background:#DCFCE7;color:#166534}.pill.warn{background:#FEF3C7;color:#92400E}.pill.bad{background:#FFE4E6;color:#9F1239}.pill.gray{background:#F1F5F9;color:#475569}

/* nút + form */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:linear-gradient(135deg,var(--primary-light),var(--primary));color:#fff;border:none;border-radius:12px;padding:12px 18px;font-weight:700;font-size:15px;cursor:pointer;text-decoration:none;min-height:44px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.block{width:100%}
.btn.ghost{background:#fff;color:var(--primary);border:1.5px solid var(--primary-light)}
.btn.soft{background:var(--soft);color:var(--primary-dark)}
.btn.danger{background:#fff;color:var(--red);border:1.5px solid #FDA4AF}
.btn.sm{padding:7px 12px;font-size:13px;min-height:34px;border-radius:10px}
label.f{display:block;font-size:13px;font-weight:600;color:var(--tx2);margin:12px 0 5px}
.in,select.in,textarea.in{width:100%;background:#fff;border:1.5px solid var(--bd);border-radius:12px;padding:11px 13px;outline:none;font-size:16px}
.in:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px rgba(139,92,246,.15)}
textarea.in{min-height:90px;resize:vertical;line-height:1.45}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin:10px 0;cursor:pointer}
.chk input{width:20px;height:20px;margin-top:1px;flex:0 0 auto;accent-color:var(--primary)}
.hint{font-size:12px;color:var(--tx2);margin-top:4px}
.err{color:var(--red);font-size:13px;margin-top:8px}
.okm{color:#047857;font-size:13px;margin-top:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:9px 8px;border-bottom:1px solid var(--bd);text-align:left;vertical-align:top}
th{color:var(--tx2);font-weight:600;font-size:12px}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* thẻ sự kiện */
.evc{display:flex;flex-direction:column;background:#fff;border:1px solid var(--bd);border-radius:16px;overflow:hidden;text-decoration:none;color:inherit;box-shadow:var(--sh);transition:transform .15s}
.evc:hover{transform:translateY(-2px)}
.evc .im{aspect-ratio:16/9;background:var(--soft2) center/cover no-repeat;position:relative}
.evc .im .pill{position:absolute;left:10px;top:10px}
.evc .bd{padding:12px 14px 14px;display:flex;flex-direction:column;gap:5px}
.evc .t{font-weight:800;font-size:15.5px;line-height:1.3}
.evc .m{font-size:13px;color:var(--tx2)}
.evc .p{font-weight:800;color:var(--primary)}

/* trang chi tiết */
.hero{position:relative;background:var(--primary-dark) center/cover no-repeat;aspect-ratio:16/8;max-height:440px;width:100%}
@media (max-width:640px){.hero{aspect-ratio:4/3}}
.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(20,8,48,.75))}
.hero .ht{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px;color:#fff;max-width:980px;margin:0 auto}
.hero .ht h1{font-size:clamp(22px,4.5vw,36px);line-height:1.15;font-weight:900;text-shadow:0 2px 12px rgba(0,0,0,.4)}
.facts{display:grid;gap:10px}
.fact{display:flex;gap:12px;align-items:flex-start}
.fact .i{width:38px;height:38px;border-radius:12px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:18px;flex:0 0 auto}
.fact .v{font-weight:700}
.fact .s{font-size:13px;color:var(--tx2)}
.prose{font-size:15px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.tt{border:1.5px solid var(--bd);border-radius:14px;padding:14px;margin-bottom:10px;display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.tt.sel{border-color:var(--primary-light);background:#FBF8FF}
.tt.off{opacity:.6}
.tt .nm{font-weight:800}
.tt .pr{font-weight:800;color:var(--primary);margin-top:2px}
.tt .bn{font-size:13px;color:var(--tx2);white-space:pre-wrap;margin-top:4px}
.step{display:flex;align-items:center;border:1.5px solid var(--bd);border-radius:12px;overflow:hidden;flex:0 0 auto}
.step button{width:40px;height:40px;border:none;background:#fff;font-size:20px;font-weight:700;color:var(--primary);cursor:pointer}
.step button:disabled{color:#cbd5e1;cursor:not-allowed}
.step span{min-width:30px;text-align:center;font-weight:800}
.buybar{position:sticky;bottom:0;z-index:25;background:rgba(255,255,255,.97);border-top:1px solid var(--bd);padding:10px 16px;padding-bottom:max(10px,env(safe-area-inset-bottom));display:flex;gap:12px;align-items:center;box-shadow:0 -8px 24px rgba(76,29,149,.08)}
.buybar .sum{flex:1;min-width:0}
.buybar .sum b{font-size:18px;color:var(--primary-dark)}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.gal img{aspect-ratio:1;object-fit:cover;border-radius:10px;width:100%}
.guest{display:flex;gap:10px;align-items:center}
.guest .av{width:48px;height:48px;border-radius:50%;background:var(--soft2) center/cover;flex:0 0 auto}
details.faq{border-bottom:1px solid var(--bd);padding:10px 0}
details.faq summary{font-weight:700;cursor:pointer;list-style:none}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary:before{content:'＋ ';color:var(--primary)}
details.faq[open] summary:before{content:'－ '}
.banner{border-radius:12px;padding:12px 14px;font-size:14px;margin-bottom:12px}
.banner.warn{background:#FEF3C7;color:#78350F}.banner.bad{background:#FFE4E6;color:#881337}.banner.info{background:var(--soft);color:var(--primary-dark)}.banner.ok{background:#DCFCE7;color:#14532D}

/* sơ đồ ghế */
.seatwrap{overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--bd);border-radius:12px;padding:12px;background:#fff;max-height:70vh}
.stage{margin:0 auto 14px;max-width:320px;text-align:center;font-size:12px;font-weight:800;letter-spacing:3px;color:#fff;background:linear-gradient(90deg,var(--primary-dark),var(--primary));border-radius:0 0 40px 40px;padding:6px}
.sec{margin-bottom:16px}
.sec h4{font-size:13px;margin-bottom:6px;color:var(--tx2)}
.srow{display:flex;gap:4px;align-items:center;margin-bottom:4px;white-space:nowrap}
.srow .rl{width:24px;font-size:11px;font-weight:700;color:var(--tx2);text-align:center;flex:0 0 auto}
.seat{width:28px;height:28px;border-radius:7px 7px 4px 4px;border:none;font-size:10px;font-weight:700;cursor:pointer;color:#fff;flex:0 0 auto;padding:0}
.seat.open{background:var(--c,#8B5CF6)}
.seat.mine,.seat.pick{background:var(--green);box-shadow:0 0 0 2px #065F46 inset}
.seat.held{background:#FCD34D;color:#78350F;cursor:not-allowed}
.seat.sold{background:#CBD5E1;color:#64748B;cursor:not-allowed}
.seat.na,.seat.blocked{background:#F1F5F9;color:#CBD5E1;cursor:not-allowed}
.seat.sponsor{background:#FBCFE8;color:#9D174D}
.seat.sel{outline:3px solid var(--accent);outline-offset:1px}
.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--tx2);margin:8px 0}
.legend i{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px;margin-right:4px}

/* sheet / modal */
.modal{position:fixed;inset:0;background:rgba(20,8,48,.55);display:none;align-items:flex-end;justify-content:center;z-index:60}
.modal.on{display:flex}
@media (min-width:700px){.modal{align-items:center}}
.sheet{width:100%;max-width:560px;background:#fff;border-radius:22px 22px 0 0;padding:18px;max-height:92vh;max-height:92dvh;overflow:auto;padding-bottom:max(18px,env(safe-area-inset-bottom))}
@media (min-width:700px){.sheet{border-radius:22px}}
.sheet h3{font-size:17px;font-weight:800;color:var(--primary-dark);margin-bottom:10px;padding-right:36px}
.sheet .x{float:right;width:34px;height:34px;border-radius:50%;border:none;background:var(--soft);font-size:18px;cursor:pointer;margin:-4px -4px 0 0}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--tx);color:#fff;padding:11px 16px;border-radius:12px;font-size:14px;z-index:90;max-width:92vw;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.state{text-align:center;padding:36px 16px;color:var(--tx2)}
.state .ic{font-size:36px;margin-bottom:8px}
.spin{width:28px;height:28px;border:3px solid var(--soft2);border-top-color:var(--primary);border-radius:50%;animation:sp 0.8s linear infinite;margin:0 auto 10px}
@keyframes sp{to{transform:rotate(360deg)}}

/* vé QR */
.ticket{background:#fff;border:1px solid var(--bd);border-radius:18px;overflow:hidden;box-shadow:var(--sh);margin-bottom:14px}
.ticket .th{background:linear-gradient(135deg,var(--primary-dark),var(--primary));color:#fff;padding:14px 16px}
.ticket .th b{font-size:16px}
.ticket .tb{padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}
@media (max-width:480px){.ticket .tb{grid-template-columns:1fr}}
.qrbox{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:8px;width:min(240px,70vw);margin:0 auto}
.qrbox canvas,.qrbox img{width:100%;height:auto;image-rendering:pixelated}
.code{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;letter-spacing:1px}

/* tab */
.tabs{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;margin-bottom:12px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{flex:0 0 auto;border:1.5px solid var(--bd);background:#fff;border-radius:30px;padding:8px 14px;font-weight:700;font-size:13.5px;color:var(--tx2);cursor:pointer}
.tabs button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.wiz{display:flex;gap:4px;margin-bottom:14px}
.wiz div{flex:1;height:5px;border-radius:4px;background:var(--soft2)}
.wiz div.on{background:var(--primary)}

/* quét vé */
.scan{background:#000;border-radius:16px;overflow:hidden;position:relative;aspect-ratio:4/3;max-height:46vh;margin:0 auto}
.scan video{width:100%;height:100%;object-fit:cover}
.scan .aim{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.85);border-radius:18px;box-shadow:0 0 0 2000px rgba(0,0,0,.25)}
.res{border-radius:18px;padding:18px;color:#fff;text-align:center;margin:12px 0}
.res .big{font-size:30px;font-weight:900;letter-spacing:1px}
.res .g{font-size:14px;margin-top:6px;opacity:.95}
.res.VALID{background:#059669}
.res.ALREADY_USED,.res.WRONG_ZONE,.res.EXPIRED{background:#D97706}
.res.INVALID,.res.REFUNDED,.res.CANCELLED,.res.REVOKED,.res.WRONG_EVENT,.res.UNPAID,.res.OFFLINE{background:#E11D48}
.bar{height:10px;border-radius:6px;background:var(--soft2);overflow:hidden}
.bar i{display:block;height:100%;background:var(--primary)}
.chart{display:flex;align-items:flex-end;gap:3px;height:120px;padding-top:8px}
.chart div{flex:1;max-width:44px;background:var(--primary-light);border-radius:4px 4px 0 0;min-height:2px;position:relative}
.chart div:hover{background:var(--primary)}

/* ===== 27/10/2026 đợt 2: chống vé giả ===== */
/* Vé "sống": nền chạy + chấm nhấp nháy + đồng hồ giây -> nhân viên phân biệt được với ảnh chụp màn hình */
.ticket.live .th{background:linear-gradient(120deg,var(--primary-dark),var(--primary),var(--pink),var(--primary-dark));background-size:300% 300%;animation:evlive 7s linear infinite}
@keyframes evlive{0%{background-position:0% 50%}100%{background-position:300% 50%}}
.livebar{display:flex;align-items:center;justify-content:center;gap:6px;font-weight:800;font-size:14px;margin:8px 0 2px;font-variant-numeric:tabular-nums}
.livebar .dot{width:10px;height:10px;border-radius:50%;background:#10B981;animation:evdot 1s ease-in-out infinite}
@keyframes evdot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.7)}}
@media (prefers-reduced-motion:reduce){.ticket.live .th{animation:none}.livebar .dot{animation:none}}
.seatbig{display:flex;gap:8px;margin-top:10px}
.seatbig div{flex:1;background:var(--soft);border-radius:12px;padding:8px;text-align:center;min-width:0}
.seatbig small{display:block;font-size:11px;color:var(--tx2);text-transform:uppercase;letter-spacing:1px}
.seatbig b{display:block;font-size:24px;color:var(--primary-dark);line-height:1.2;word-break:break-word}
.res .seatbig div{background:rgba(255,255,255,.18)}.res .seatbig small{color:#fff;opacity:.85}.res .seatbig b{color:#fff;font-size:30px}
.res.QR_EXPIRED,.res.STATIC_QR,.res.WRONG_SEAT,.res.NOT_CHECKED_IN{background:#E11D48}
.res.ID_CHECK{background:#2563EB}
.res.EXIT_OK{background:#0D9488}
.res.NOT_INSIDE{background:#D97706}
.res.SEAT_OK{background:#059669}
.res .btn{background:#fff;color:#1E1533}
.modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:6px;margin-top:10px}
.modes button{border:1.5px solid var(--bd);background:#fff;border-radius:12px;padding:10px 6px;font-weight:800;font-size:13.5px;color:var(--tx2);cursor:pointer}
.modes button.on{background:var(--primary);border-color:var(--primary);color:#fff}
.sev-high{border-left:4px solid var(--red)}.sev-warn{border-left:4px solid var(--amber)}

/* Liên kết nhanh (27/10/2026) */
.qlinks .qgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.qlinks .ql{display:flex;align-items:stretch;border:1px solid var(--bd);border-radius:12px;background:#fff;overflow:hidden}
.qlinks .ql a{flex:1;display:flex;gap:10px;align-items:center;padding:10px 12px;color:inherit;text-decoration:none;min-width:0}
.qlinks .ql a:hover{background:var(--soft)}
.qlinks .qi{font-size:22px;line-height:1}
.qlinks .qt{display:flex;flex-direction:column;min-width:0}
.qlinks .qt b{font-size:14px;color:var(--primary-dark)}
.qlinks .qt small{font-size:12px;color:var(--primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qlinks .qt small.qd{color:var(--mut,#6B7280)}
.qlinks .qc{border:0;border-left:1px solid var(--bd);background:var(--soft);color:var(--primary-dark);width:44px;font-size:17px;cursor:pointer}
.qlinks .qc:hover{background:var(--soft2)}
/* Sơ đồ lớn: danh sách khu + chọn nhanh ghế tốt nhất (27/10/2026) */
.quick{background:var(--soft);border:1px solid var(--bd);border-radius:12px;padding:10px 12px;margin-bottom:10px}
.quick .hint{margin-top:6px}
.seclist{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.secc{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;background:#fff;border:1.5px solid var(--bd);border-radius:12px;padding:10px 12px;cursor:pointer;color:inherit;font:inherit}
.secc:hover{border-color:var(--primary-light)}
.secc b{font-size:15px;color:var(--primary-dark)}
.secc .pill{display:inline-flex;align-items:center;gap:4px;margin:2px 2px 0 0}
.secc .pill i{width:8px;height:8px;border-radius:50%;display:inline-block}
.secc.full{opacity:.55}

/* 27/10/2026 — phân loại 3 tầng */
.taxl{font-size:13px;font-weight:700;color:var(--primary-dark)}.taxl a{color:inherit;text-decoration:none}.taxl a:hover{text-decoration:underline}.taxl .sep{opacity:.5;margin:0 2px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:30px;background:#F1F5F9;color:#334155;text-decoration:none;white-space:nowrap;border:1px solid transparent;cursor:pointer;font-family:inherit}
.chip.tag{background:var(--soft2);color:var(--primary-dark)}
.chip.on{background:var(--primary);color:#fff}
button.chip{min-height:32px}
.catbox2{margin-top:12px}
.cathead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.cathead b{font-size:15px;color:var(--tx)}.cathead .cnum{font-size:12px;font-weight:700;color:var(--primary-dark);background:var(--soft2);border-radius:20px;padding:2px 9px;margin-left:4px;white-space:nowrap}
.catall{border:1.5px solid var(--bd);background:#fff;border-radius:30px;padding:6px 14px;font:inherit;font-size:13px;font-weight:600;color:var(--tx);cursor:pointer;white-space:nowrap}
.catall b{margin-left:4px;color:var(--primary-dark)}.catall.on{background:var(--primary);border-color:var(--primary);color:#fff}.catall.on b{color:#fff}
.catgrid{--th:64px;--gap:8px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--gap);max-height:calc(var(--th) * 2 + var(--gap));overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;scrollbar-width:thin;padding:2px;margin:-2px}
.catgrid.full{max-height:none;overflow:visible}
@media (max-width:760px){.catgrid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:calc(var(--th) * 5 + var(--gap) * 4)}}
.cattile{scroll-snap-align:start;display:flex;align-items:center;gap:10px;height:var(--th);padding:0 10px;border:1.5px solid var(--bd);border-radius:14px;background:#fff;font:inherit;text-align:left;cursor:pointer;color:var(--tx);transition:border-color .15s,box-shadow .15s,transform .1s;min-width:0}
.cattile:hover{border-color:var(--primary-light);box-shadow:0 4px 14px rgba(108,60,225,.12)}
.cattile:active{transform:scale(.98)}
.cattile:focus-visible{outline:3px solid var(--primary-light);outline-offset:1px}
.cattile.on{border-color:var(--primary);background:var(--soft);box-shadow:0 0 0 2px var(--primary) inset}
.cattile .ti{flex:0 0 38px;width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:19px;background:#F1F5F9}
.cattile .tx{display:flex;flex-direction:column;min-width:0;gap:2px}
.cattile .tn{font-size:13px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cattile .tc{font-size:11.5px;font-weight:700;color:var(--primary)}
.cattile.zero .tc{color:#94A3B8;font-weight:600}
.cattile.c0 .ti{background:#EDE9FE}.cattile.c1 .ti{background:#FCE7F3}.cattile.c2 .ti{background:#DBEAFE}.cattile.c3 .ti{background:#FEF3C7}
.cattile.c4 .ti{background:#DCFCE7}.cattile.c5 .ti{background:#E0F2FE}.cattile.c6 .ti{background:#FFE4E6}.cattile.c7 .ti{background:#F3E8FF}
.catfoot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;font-size:12px;color:var(--tx2)}
.catmore{border:0;background:none;color:var(--primary);font:inherit;font-size:13px;font-weight:700;cursor:pointer;padding:6px 4px}
.typechips{display:none;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px;padding:10px;border-radius:12px;background:var(--soft)}
.typechips.show{display:flex}.typechips .tl{font-size:12.5px;font-weight:700;color:var(--primary-dark);margin-right:2px}
.typechips .chip{background:#fff;border-color:var(--bd)}.typechips .chip.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.filt{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:10px}
.filt label{font-size:12px;font-weight:600;color:var(--tx2);display:block;margin-bottom:3px}
.evc .taxl{display:block;font-size:12px;margin-bottom:2px}
.tplbox{border:1px dashed var(--bd);border-radius:12px;padding:12px;margin-top:10px;background:#FAFAFF}
.tplbox .feat{display:inline-flex;align-items:center;gap:4px;font-size:12px;margin:3px 6px 3px 0}
.tplbox .feat.g{color:var(--tx2)}
.taxgrid{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:12px;align-items:start}
@media (max-width:760px){.taxgrid{grid-template-columns:1fr}}
.catlist{display:grid;gap:4px;max-height:70vh;overflow:auto}
.catlist button{display:flex;align-items:center;gap:8px;text-align:left;border:1px solid transparent;background:none;border-radius:10px;padding:8px;font:inherit;cursor:pointer;width:100%}
.catlist button.on{background:var(--soft2);border-color:var(--primary)}
.catlist button .n{margin-left:auto;font-size:11px;color:var(--tx2)}
.catlist button.off{opacity:.55}
.tkrow{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr auto;gap:6px;align-items:center;margin:4px 0}
@media (max-width:640px){.tkrow{grid-template-columns:1fr 1fr}}

/* ===== 11/11/2026 — Trang /events sinh động theo tone Aladyn (chỉ áp cho body.evx) ===== */
.evx{background:radial-gradient(1200px 500px at 50% -120px,#EDE4FF 0,rgba(237,228,255,0) 70%),#FBF9FF}
.evx .top{background:rgba(255,255,255,.86)}
.evx .top h1{background:linear-gradient(90deg,var(--primary-dark),var(--primary),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}
.evhero{position:relative;overflow:hidden;border-radius:22px;padding:26px 26px 22px;margin-bottom:14px;color:#fff;
  background:linear-gradient(125deg,#3B1A8F 0%,#6C3CE1 42%,#A855F7 70%,#EC4899 100%);box-shadow:0 14px 40px rgba(76,29,149,.28);isolation:isolate}
.evhero:before{content:"";position:absolute;inset:0;z-index:-1;opacity:.5;
  background:radial-gradient(circle at 12% 18%,rgba(255,255,255,.22) 0 2px,transparent 3px) 0 0/38px 38px,radial-gradient(circle at 70% 60%,rgba(255,255,255,.14) 0 1.5px,transparent 2.5px) 0 0/27px 27px}
.evhero .hb{position:absolute;border-radius:50%;filter:blur(2px);z-index:-1}
.evhero .hb1{width:260px;height:260px;right:-60px;top:-90px;background:radial-gradient(circle,rgba(255,255,255,.28),rgba(255,255,255,0) 70%)}
.evhero .hb2{width:200px;height:200px;left:-70px;bottom:-110px;background:radial-gradient(circle,rgba(245,158,11,.45),rgba(245,158,11,0) 70%)}
.evhero .hb3{width:140px;height:140px;right:28%;bottom:-70px;background:radial-gradient(circle,rgba(236,72,153,.55),rgba(236,72,153,0) 70%)}
.evhero .hx{max-width:600px;position:relative}
.evhero .kick{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);padding:5px 11px;border-radius:30px}
.evhero h2{font-size:clamp(24px,4.2vw,34px);line-height:1.15;font-weight:900;margin:12px 0 8px;letter-spacing:-.3px;text-shadow:0 2px 14px rgba(40,10,90,.35)}
.evhero .hs{font-size:14.5px;line-height:1.5;opacity:.92;max-width:520px}
.evhero .hsearch{display:flex;align-items:center;gap:8px;margin-top:16px;background:#fff;border-radius:16px;padding:6px 6px 6px 14px;box-shadow:0 10px 30px rgba(30,10,70,.25)}
.evhero .hsearch .hq{color:var(--primary);font-size:18px;flex:0 0 auto}
.evhero .hsearch .in{border:0;box-shadow:none;padding:10px 4px;flex:1;min-width:0;color:var(--tx);background:transparent}
.evhero .hsearch .in:focus{box-shadow:none}
.evhero .hsearch .btn{flex:0 0 auto;border-radius:12px;min-height:40px;padding:8px 14px}
.evhero .hstats{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.evhero .hst{font-size:12.5px;font-weight:700;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.26);border-radius:30px;padding:6px 11px;backdrop-filter:blur(4px)}
.evhero .hst b{font-size:14px}
.evhero .hcta{position:absolute;right:22px;bottom:20px;color:#fff;font-weight:800;font-size:13.5px;text-decoration:none;background:rgba(20,6,50,.28);border:1px solid rgba(255,255,255,.35);padding:9px 14px;border-radius:30px;transition:background .15s}
.evhero .hcta:hover{background:rgba(20,6,50,.45)}
.evhero .hart{position:absolute;right:30px;top:24px;width:262px;height:170px;pointer-events:none}
.evhero .tk{position:absolute;width:134px;height:64px;border-radius:14px;background:rgba(255,255,255,.95);color:var(--primary-dark);display:flex;align-items:center;gap:8px;padding:0 14px;
  box-shadow:0 12px 26px rgba(30,10,70,.3);animation:evfloat 6s ease-in-out infinite}
.evhero .tk:before,.evhero .tk:after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;background:#8B4FE8;top:25px}
.evhero .tk:before{left:-7px}.evhero .tk:after{right:-7px}
.evhero .tk i{position:absolute;right:30px;top:10px;bottom:10px;border-left:2px dashed #D9CCF5}
.evhero .tk .ti{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px}
.evhero .tk b{font-size:15px;font-weight:900}
.evhero .tk1{left:0;top:6px;transform:rotate(-10deg)}.evhero .tk1 .ti{background:linear-gradient(135deg,#F59E0B,#EC4899)}
.evhero .tk2{left:122px;top:0;transform:rotate(8deg);animation-delay:-2s}.evhero .tk2 .ti{background:linear-gradient(135deg,#8B5CF6,#6C3CE1)}
.evhero .tk3{left:56px;top:88px;transform:rotate(-3deg);animation-delay:-4s}.evhero .tk3 .ti{background:linear-gradient(135deg,#10B981,#3B82F6)}
@keyframes evfloat{0%,100%{translate:0 0}50%{translate:0 -7px}}
@media (prefers-reduced-motion:reduce){.evhero .tk{animation:none}}
@media (max-width:860px){.evhero .hart{display:none}}
@media (max-width:560px){.evhero{padding:20px 16px 64px;border-radius:18px}.evhero .hcta{left:16px;right:auto;bottom:16px}.evhero .hsearch .btn{padding:8px 11px}}
.evx .evpanel{padding:14px 16px}
.evx .evpanel .catbox2{margin-top:2px}
.evx .cattile{transition:border-color .15s,box-shadow .2s,transform .15s}
.evx .cattile:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(108,60,225,.14)}
.evx .cattile .ti{color:#fff;box-shadow:0 4px 10px rgba(76,29,149,.18)}
.evx .cattile.c0 .ti{background:linear-gradient(135deg,#8B5CF6,#6C3CE1)}.evx .cattile.c1 .ti{background:linear-gradient(135deg,#F472B6,#EC4899)}
.evx .cattile.c2 .ti{background:linear-gradient(135deg,#60A5FA,#3B82F6)}.evx .cattile.c3 .ti{background:linear-gradient(135deg,#FBBF24,#F59E0B)}
.evx .cattile.c4 .ti{background:linear-gradient(135deg,#34D399,#10B981)}.evx .cattile.c5 .ti{background:linear-gradient(135deg,#22D3EE,#0EA5E9)}
.evx .cattile.c6 .ti{background:linear-gradient(135deg,#FB7185,#E11D48)}.evx .cattile.c7 .ti{background:linear-gradient(135deg,#C084FC,#A855F7)}
.evx .cattile.on{background:linear-gradient(135deg,#F4F0FC,#FDF2F8)}
.evx .catall{background:linear-gradient(135deg,var(--primary-light),var(--primary));border-color:transparent;color:#fff}
.evx .catall b{color:#fff}
.evx .tabs{background:var(--soft);border-radius:30px;padding:4px;display:inline-flex;gap:2px;max-width:100%}
.evx .tabs button{border:0;background:transparent;padding:8px 16px}
.evx .tabs button.on{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(76,29,149,.15)}
/* thẻ sự kiện */
.evx .grid{gap:16px}
.evx .evc{border-radius:18px;transition:transform .18s,box-shadow .18s}
.evx .evc:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(76,29,149,.18)}
.evx .evc .im{background-size:cover;transition:background-size .3s}
.evx .evc .im:after{content:"";position:absolute;inset:auto 0 0 0;height:55%;background:linear-gradient(180deg,rgba(30,10,70,0),rgba(30,10,70,.45))}
.evx .evc .im .pill{z-index:1}
.evx .evc .dbx{position:absolute;right:10px;top:10px;z-index:1;background:#fff;border-radius:12px;min-width:48px;text-align:center;padding:5px 6px 4px;box-shadow:0 6px 16px rgba(30,10,70,.25);line-height:1}
.evx .evc .dbx b{display:block;font-size:20px;font-weight:900;color:var(--primary-dark)}
.evx .evc .dbx small{display:block;font-size:10.5px;font-weight:800;text-transform:uppercase;color:var(--pink);margin-top:2px}
.evx .evc .t{font-size:16px}
.evx .evc .ft{display:flex;align-items:center;gap:8px;margin-top:6px;padding-top:10px;border-top:1px dashed var(--bd)}
.evx .evc .p{background:var(--soft);padding:4px 10px;border-radius:30px;font-size:13.5px}
.evx .evc .sv{color:var(--primary)}
.evx .evc .go{margin-left:auto;font-size:13px;font-weight:800;color:var(--pink);opacity:.85;transition:opacity .15s,translate .15s}
.evx .evc:hover .go{opacity:1;translate:3px 0}
/* trạng thái trống */
.evx .evempty{grid-column:1/-1;text-align:center;background:#fff;border:1px solid var(--bd);border-radius:22px;padding:30px 20px 26px;box-shadow:var(--sh)}
.evx .evempty .eart{position:relative;width:120px;height:120px;margin:0 auto 14px}
.evx .evempty .eart .c{position:absolute;border-radius:50%}
.evx .evempty .eart .c1{inset:0;background:linear-gradient(135deg,#EDE4FF,#FCE7F3)}
.evx .evempty .eart .c2{width:22px;height:22px;right:4px;top:8px;background:linear-gradient(135deg,#FBBF24,#F59E0B)}
.evx .evempty .eart .c3{width:14px;height:14px;left:10px;bottom:16px;background:linear-gradient(135deg,#F472B6,#EC4899)}
.evx .evempty .eart .ei{position:absolute;inset:26px;border-radius:22px;display:flex;align-items:center;justify-content:center;font-size:36px;color:#fff;background:linear-gradient(135deg,var(--primary-light),var(--primary),var(--pink));box-shadow:0 10px 24px rgba(108,60,225,.35);transform:rotate(-8deg)}
.evx .evempty h3{font-size:18px;font-weight:900;color:var(--primary-dark)}
.evx .evempty p{color:var(--tx2);font-size:14px;margin:6px auto 16px;max-width:440px;line-height:1.5}
/* liên kết nhanh */
.evx .qlinks .ql{border-radius:14px;transition:box-shadow .15s,transform .15s}
.evx .qlinks .ql:hover{box-shadow:0 8px 20px rgba(108,60,225,.12);transform:translateY(-1px)}
.evx .qlinks .qi{width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:19px;color:#fff;background:linear-gradient(135deg,var(--primary-light),var(--primary))}
.evx .qlinks .ql:nth-child(6n+2) .qi{background:linear-gradient(135deg,#60A5FA,#3B82F6)}
.evx .qlinks .ql:nth-child(6n+3) .qi{background:linear-gradient(135deg,#F472B6,#EC4899)}
.evx .qlinks .ql:nth-child(6n+4) .qi{background:linear-gradient(135deg,#34D399,#10B981)}
.evx .qlinks .ql:nth-child(6n+5) .qi{background:linear-gradient(135deg,#FBBF24,#F59E0B)}
.evx .qlinks .ql:nth-child(6n+6) .qi{background:linear-gradient(135deg,#C084FC,#A855F7)}
