/* 活動頁風格系統：所有顏色由 themes.js 產生的 CSS 變數決定 */
body.evp{font-family:var(--font);color:var(--ink);background:transparent!important}
body.evp::before{content:"";position:fixed;inset:-48px;z-index:-2;background:var(--bgimg) center/cover no-repeat;filter:blur(var(--bgblur));pointer-events:none}
body.evp::after{content:"";position:fixed;inset:0;z-index:-1;background:var(--bgpat);pointer-events:none}
.evp{--r:16px;--r2:12px;--r3:11px}
.evp.rad-sharp{--r:4px;--r2:4px;--r3:3px}
.evp.rad-round{--r:26px;--r2:999px;--r3:16px}
.evp a{color:var(--acc)}
.evp .muted{color:var(--muted)}

/* 按鈕 */
.evp .btn{background:var(--grad);color:var(--on-brand);border-radius:var(--r2);box-shadow:0 6px 22px -8px var(--glow)}
.evp .btn:hover{box-shadow:0 8px 28px -8px var(--glow);color:var(--on-brand)}
.evp .btn.big{border-radius:var(--r2)}
.evp .btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line2)}
.evp .btn.ghost:hover{box-shadow:inset 0 0 0 1px var(--brand)}
.evp .btn.danger{background:transparent;color:#ef4444;box-shadow:inset 0 0 0 1px rgba(239,68,68,.45)}
.evp .btn.line{background:#06c755;color:#fff}
.evp .btn:disabled{background:var(--line2);color:var(--muted);box-shadow:none}

/* 頁首 / 頁尾 */
.evp .topbar{background:var(--topbar);border-bottom:1px solid var(--line)}
.evp .logo{color:var(--head)}
.evp .topbar nav a{color:var(--muted)}.evp .topbar nav a:hover{color:var(--head)}
.evp .topbar nav a.pill{color:var(--head);box-shadow:inset 0 0 0 1px var(--line2);background:transparent}
.evp .foot{color:var(--muted)}

/* 活動頁主體 */
.evp .ev{background:var(--surface);border-color:var(--line)}
.evp .poster::after{background:linear-gradient(180deg,transparent,var(--poster-fade))}
.evp .ecat2{background:var(--soft);color:var(--acc);border-color:var(--line2)}
.evp .ev-head h1{color:var(--head)}
.evp .ev-head .sub,.evp .btext,.evp .faq div,.evp .speaker .sb{color:var(--ink2)}
.evp .facts,.evp .speaker,.evp .org,.evp .faq,.evp .sess,.evp .consent,.evp .opt{background:var(--panel-in);border-color:var(--line);border-radius:var(--r)}
.evp .sess{border-left:3px solid var(--brand)}
.evp .sess b,.evp .opt b,.evp .faq summary,.evp .oname,.evp .speaker .sn,.evp .btext b,.evp .sinfo b,.evp .mbox h3,.evp .qty b,.evp blockquote,.evp .sec-t,.evp .ev-body .bh,.evp .narrow h1,.evp .lk b{color:var(--head)}
.evp .sec-t::before,.evp .ev-body .bh::before{background:var(--grad);box-shadow:0 0 10px var(--glow)}
.evp .sess .sname{background:var(--soft);color:var(--acc)}
.evp .countdown b{background:var(--panel-in);border-color:var(--line2);color:var(--acc);text-shadow:none;box-shadow:0 0 16px -8px var(--glow);border-radius:calc(var(--r3) * .8)}
.evp .faq[open]{border-color:var(--line2)}
.evp .faq summary::before,.evp .speaker .st{color:var(--acc)}
.evp blockquote{background:linear-gradient(90deg,var(--soft),transparent);border-left-color:var(--brand)}
.evp .speaker img,.evp .speaker .ph{box-shadow:0 0 0 2px var(--surface-solid),0 0 0 4px var(--brand);background:var(--soft)}
.evp .bimg img,.evp .gallery img,.evp .vwrap,.evp .vid,.evp .map{border-radius:var(--r)}
.evp .vwrap{box-shadow:0 0 0 1px var(--line2),0 0 40px -16px var(--glow)}
.evp .map iframe{filter:var(--mapfilter)}
.evp hr{border-top-color:var(--line2)}
.evp .sh{color:var(--ink);border-color:var(--line2);background:var(--panel-in);border-radius:var(--r3)}
.evp .sh.line,.evp .sh.fb,.evp .sh.th{color:#fff}
.evp .sh:hover{border-color:var(--brand)}
.evp .social a{border-radius:var(--r2)}

/* 底部報名列 */
.evp .sticky{background:var(--topbar);border-top:1px solid var(--line2);box-shadow:0 -10px 40px -16px var(--glow)}
.evp .sticky .btn{animation:pulse-th 2.6s ease-in-out infinite}
.evp .sticky .btn:disabled{animation:none}
@keyframes pulse-th{0%,100%{box-shadow:0 0 0 0 var(--glow),0 6px 22px -8px var(--glow)}50%{box-shadow:0 0 0 9px transparent,0 6px 22px -8px var(--glow)}}

/* 報名視窗 */
.evp .mbox{background:var(--modal);border-color:var(--line2);box-shadow:0 0 60px -16px var(--glow)}
.evp.rad-sharp .mbox{border-radius:8px 8px 0 0}
@media(min-width:700px){.evp.rad-sharp .mbox{border-radius:8px}}
.evp .mx{background:var(--panel-in);color:var(--ink);border-color:var(--line2)}
.evp .steps span{background:var(--line)}.evp .steps span.on{background:var(--grad);box-shadow:none}
.evp .opt:hover{border-color:var(--brand)}
.evp .opt.sel{border-color:var(--brand);background:var(--soft);box-shadow:0 0 0 1px var(--brand)}
.evp .qty button{background:var(--panel-in);color:var(--head);border-color:var(--line2)}
.evp .qty button:hover{border-color:var(--brand);box-shadow:none}
.evp .form label{color:var(--ink2)}
.evp .form input[type=text],.evp .form input[type=email],.evp .form input[type=tel],.evp .form input[type=number],.evp .form input[type=date],.evp .form input:not([type]),.evp .form select,.evp .form textarea{background:var(--field);color:var(--ink);border-color:var(--line2);color-scheme:var(--scheme);border-radius:var(--r3)}
.evp .form input::placeholder,.evp .form textarea::placeholder{color:var(--muted);opacity:.65}
.evp .form input:focus,.evp .form select:focus,.evp .form textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--soft)}
.evp .form .chk{color:var(--ink)}
.evp .form .chk input{accent-color:var(--brand)}
.evp .form label .req{color:var(--brand)}
.evp .summary{background:var(--soft);border-color:var(--line2);color:var(--ink);border-radius:var(--r3)}
.evp .formerr{border-radius:var(--r3)}
.evp .toast{background:var(--surface-solid);color:var(--ink);border-color:var(--line2)}

/* 電子票券 / 查詢頁 */
.evp .ticket{background:var(--modal);border-color:var(--line2);box-shadow:0 0 70px -24px var(--glow),0 30px 60px rgba(0,0,0,.25);border-radius:calc(var(--r) + 6px)}
.evp .tinfo td{color:var(--ink);border-bottom-color:var(--line2)}.evp .tinfo td:first-child{color:var(--muted)}
.evp .tcode b,.evp .big-note b{color:var(--acc);text-shadow:none}
.evp .qr{box-shadow:0 0 0 3px var(--line2),0 0 40px -10px var(--glow)}
.evp .card{background:var(--surface);border-color:var(--line)}

/* 淺色模式的狀態色 */
.th-light .tag.ok{background:#d1fae5;color:#047857;border-color:#a7f3d0;box-shadow:none}
.th-light .tag.warn{background:#fef3c7;color:#b45309;border-color:#fde68a}
.th-light .tag.bad{background:#fee2e2;color:#b91c1c;border-color:#fecaca}
.th-light .tag.mute{background:#f1f5f9;color:#64748b;border-color:#e2e8f0}
.th-light .hot{background:#fff1f2;border-color:#fecdd3;color:#be123c}.th-light .hot b{color:#9f1239}
.th-light .formerr{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.th-light .form .err{color:#dc2626}
.th-light .tmsg{background:#fffbeb;border-color:#fde68a;color:#92400e}
.th-light .modal{background:rgba(15,23,42,.45)}
.th-light .poster-ph span{text-shadow:0 2px 20px rgba(0,0,0,.25)}

/* 字體 */
.font-serif .ev-head h1,.font-serif .sec-t,.font-serif .ev-body .bh,.font-serif .cover h1{font-weight:900;letter-spacing:1px}
.font-kai .ev-head h1,.font-kai .sec-t,.font-kai .ev-body .bh,.font-kai .cover h1{font-weight:700;letter-spacing:1px}

/* 封面版型：卡片海報 */
.hl-card .poster{margin:18px 18px 0;border-radius:var(--r);overflow:hidden;box-shadow:0 24px 50px -24px var(--glow),0 0 0 1px var(--line)}
.hl-card .poster::after{display:none}
/* 封面版型：純文字簡約 */
.hl-minimal .poster{display:none}
.hl-minimal .ev-head{text-align:center;padding-top:46px}
.hl-minimal .ev-head h1{font-size:34px}
.hl-minimal .facts{text-align:left}
.hl-minimal .countdown{justify-content:center}
/* 封面版型：封面大標 */
.cover{position:relative;min-height:380px;display:flex;align-items:flex-end;background:var(--cover) center/cover no-repeat;overflow:hidden}
.cover::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.25) 40%,rgba(0,0,0,.78) 100%)}
.cover.noimg{background:var(--grad)}
.cover.noimg::before{background:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px) 0 0/28px 28px,linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px) 0 0/28px 28px,linear-gradient(180deg,transparent 40%,rgba(0,0,0,.35))}
.cover-in{position:relative;padding:28px 22px 26px;width:100%}
.cover .ecat2{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.45);backdrop-filter:blur(6px)}
.cover h1{color:#fff;font-size:31px;line-height:1.35;margin:12px 0 6px;text-shadow:0 2px 20px rgba(0,0,0,.4)}
.cover .sub{color:rgba(255,255,255,.92);margin:0;font-size:16px}
@media(min-width:700px){.cover{min-height:440px}.cover h1{font-size:38px}}
