/* ระบบลงทะเบียนออนไลน์ — ธีมหลัก (Bootstrap 5 + Sarabun) */
@font-face{font-family:'Sarabun';font-style:normal;font-weight:400;font-display:swap;src:url(../vendor/fonts/sarabun-thai-400-normal.woff2) format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:400;font-display:swap;src:url(../vendor/fonts/sarabun-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:600;font-display:swap;src:url(../vendor/fonts/sarabun-thai-600-normal.woff2) format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:600;font-display:swap;src:url(../vendor/fonts/sarabun-latin-600-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:700;font-display:swap;src:url(../vendor/fonts/sarabun-thai-700-normal.woff2) format('woff2');unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:700;font-display:swap;src:url(../vendor/fonts/sarabun-latin-700-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --er-navy:#1e3a8a; --er-navy-rgb:30,58,138; --er-navy-dark:#172554; --er-ink:#0f172a;
  --er-gold:#d97706; --er-soft:#eef2fb; --er-line:#e2e8f0;
  --bs-primary:#1e3a8a; --bs-primary-rgb:30,58,138;
  --bs-link-color:#1e40af; --bs-link-color-rgb:30,64,175; --bs-link-hover-color:#172554;
  --bs-body-font-family:'Sarabun',system-ui,-apple-system,'Segoe UI',Tahoma,sans-serif;
  --bs-body-font-size:1rem; --bs-body-color:#1f2937; --bs-border-radius:.6rem;
  --bs-focus-ring-color:rgba(30,58,138,.25);
}
body{font-size:16.5px;-webkit-font-smoothing:antialiased}
.btn-primary{--bs-btn-bg:#1e3a8a;--bs-btn-border-color:#1e3a8a;--bs-btn-hover-bg:#172e6e;--bs-btn-hover-border-color:#172e6e;--bs-btn-active-bg:#132659;--bs-btn-active-border-color:#132659;--bs-btn-disabled-bg:#64748b;--bs-btn-disabled-border-color:#64748b}
.btn-outline-primary{--bs-btn-color:#1e3a8a;--bs-btn-border-color:#1e3a8a;--bs-btn-hover-bg:#1e3a8a;--bs-btn-hover-border-color:#1e3a8a;--bs-btn-active-bg:#1e3a8a;--bs-btn-active-border-color:#1e3a8a}
.text-primary{color:#1e3a8a!important}.bg-primary{background-color:#1e3a8a!important}
.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:#6b84c9;box-shadow:0 0 0 .2rem rgba(30,58,138,.18)}
.form-check-input:checked{background-color:#1e3a8a;border-color:#1e3a8a}
.nav-pills{--bs-nav-pills-link-active-bg:#1e3a8a}
.page-link{color:#1e3a8a}.active>.page-link{background:#1e3a8a;border-color:#1e3a8a}
.progress-bar{background-color:#1e3a8a}
.fw-semibold{font-weight:600!important}
.small-caps{font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:#64748b;font-weight:600}
.brand-mark{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#1e3a8a,#3b5bc7);color:#fff;display:grid;place-items:center;font-size:1.3rem}
.mono{font-family:Consolas,'SFMono-Regular',Menlo,monospace}

/* ============ PUBLIC ============ */
.pub-nav{background:#fff;border-bottom:1px solid var(--er-line)}
.pub-nav .brand-title{font-weight:700;line-height:1.15;color:var(--er-ink)}
.pub-nav .brand-sub{font-size:.8rem;color:#64748b}
.hero{background:radial-gradient(1200px 300px at 10% -10%,#3b5bc7 0%,transparent 60%),linear-gradient(135deg,#172554 0%,#1e3a8a 60%,#25409b 100%);color:#fff;padding:3rem 0 4.5rem}
.hero h1{font-weight:700;letter-spacing:-.01em}
.hero p{color:#c7d2fe}
.hero-search{max-width:520px}
.hero-search .form-control{border:0;padding:.8rem 1rem}
.lift{margin-top:-2.75rem}
.event-card{border:1px solid var(--er-line);border-radius:14px;overflow:hidden;background:#fff;transition:transform .15s,box-shadow .15s;height:100%;display:flex;flex-direction:column}
.event-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px -12px rgba(15,23,42,.25)}
.event-cover{aspect-ratio:16/8;background:linear-gradient(135deg,#dbe4fb,#eef2fb);display:grid;place-items:center;color:#7f93c9;font-size:2.6rem;overflow:hidden}
.event-cover img{width:100%;height:100%;object-fit:cover}
.event-card .meta{font-size:.92rem;color:#475569}
.event-card .meta i{width:1.2rem;color:#1e3a8a}
.seat-bar{height:6px;border-radius:6px;background:#e5e9f2}
.seat-bar>span{display:block;height:100%;border-radius:6px;background:#1e3a8a}
.seat-bar.warn>span{background:#d97706}.seat-bar.full>span{background:#dc2626}
.filter-pills .nav-link{border-radius:999px;padding:.35rem 1rem;color:#334155}
.empty-state{padding:3rem 1rem;text-align:center;color:#64748b}
.empty-state i{font-size:2.6rem;color:#94a3b8}

.ev-header{background:#fff;border-bottom:1px solid var(--er-line)}
.ev-cover{border-radius:14px;overflow:hidden;max-height:340px}
.ev-cover img{width:100%;max-height:340px;object-fit:cover}
.info-card{border:1px solid var(--er-line);border-radius:14px;background:#fff}
.info-row{display:flex;gap:.75rem;padding:.7rem 0;border-bottom:1px dashed var(--er-line)}
.info-row:last-child{border-bottom:0}
.info-row i{color:#1e3a8a;font-size:1.15rem;margin-top:.1rem}
.info-row .lbl{font-size:.8rem;color:#64748b}
.countdown{font-variant-numeric:tabular-nums}
.form-shell{border:1px solid var(--er-line);border-radius:14px;background:#fff}
.form-shell .card-header{background:var(--er-soft);border-bottom:1px solid var(--er-line);border-radius:14px 14px 0 0}
.q-block{padding:1.1rem 0;border-bottom:1px solid #f1f5f9}
.q-block:last-child{border-bottom:0}
.q-block.is-hidden{display:none}
.q-block.q-section{padding-top:1.6rem}
.q-block.q-section h3{color:#1e3a8a}
.q-block.has-error .q-label{color:#b91c1c}
.q-label{font-weight:600;margin-bottom:.35rem}
.q-num{color:#94a3b8;font-weight:600;margin-right:.15rem}
.q-help{margin-top:-.15rem;margin-bottom:.6rem}
.q-error:empty{display:none!important}
.option-card{border:1px solid var(--er-line);border-radius:10px;padding:.55rem .9rem .55rem 2.4rem;margin-bottom:.45rem;background:#fff;transition:background .12s,border-color .12s}
.option-card:hover{background:#f8fafc}
.option-card:has(input:checked){border-color:#6b84c9;background:#f3f6fd}
.option-card .form-check-label{width:100%;cursor:pointer}
.q-options.is-invalid .option-card{border-color:#f1a7a7}
.other-input{display:none}
.option-other:has(input[value="__other__"]:checked) .other-input{display:block}
select.has-other+.other-input.show{display:block}
.hp{position:absolute!important;left:-9999px!important;height:0;overflow:hidden}

/* ticket */
.ticket{max-width:520px;margin:0 auto;background:#fff;border-radius:18px;box-shadow:0 18px 40px -18px rgba(15,23,42,.35);overflow:hidden;position:relative}
.ticket-head{background:linear-gradient(135deg,#172554,#1e3a8a);color:#fff;padding:1.4rem 1.6rem}
.ticket-head .org{font-size:.85rem;color:#c7d2fe}
.ticket-cut{position:relative;height:0;border-top:2px dashed #d5dbe8;margin:0 1.2rem}
.ticket-cut::before,.ticket-cut::after{content:"";position:absolute;top:-14px;width:28px;height:28px;border-radius:50%;background:var(--bs-tertiary-bg,#f4f6fa)}
.ticket-cut::before{left:-34px}.ticket-cut::after{right:-34px}
.ticket-qr svg{width:220px;height:220px;max-width:100%}
.ticket-ref{font-size:1.9rem;font-weight:700;letter-spacing:.18em;color:#1e3a8a}
.status-pill{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .9rem;border-radius:999px;font-weight:600;font-size:.95rem}
.status-pill.confirmed{background:#dcfce7;color:#166534}
.status-pill.waitlisted{background:#fef3c7;color:#92400e}
.status-pill.cancelled{background:#e2e8f0;color:#475569}
.success-burst{width:72px;height:72px;border-radius:50%;background:#dcfce7;color:#16a34a;display:grid;place-items:center;font-size:2.2rem;margin:0 auto}
.success-burst.wait{background:#fef3c7;color:#d97706}

footer.pub-foot{color:#64748b;font-size:.88rem}

/* ============ ADMIN ============ */
.admin-body{background:#f4f6fa}
.admin-wrap{display:flex;min-height:100vh}
.sidebar{width:248px;flex-shrink:0;background:#0f1d47;color:#cbd5e1;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}
.sidebar .brand{padding:1.1rem 1.1rem;border-bottom:1px solid rgba(255,255,255,.07);display:flex;gap:.7rem;align-items:center;color:#fff;text-decoration:none}
.sidebar .brand small{color:#94a3b8;font-size:.75rem;display:block}
.sidebar .nav-link{color:#cbd5e1;border-radius:10px;padding:.55rem .85rem;display:flex;gap:.7rem;align-items:center;margin:.1rem .6rem}
.sidebar .nav-link:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar .nav-link.active{background:#2a4bb0;color:#fff}
.sidebar .nav-title{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:#64748b;padding:1rem 1.45rem .35rem}
.sidebar .user-box{margin-top:auto;padding:1rem 1.1rem;border-top:1px solid rgba(255,255,255,.07);font-size:.9rem}
.admin-main{flex:1;min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--er-line);padding:.7rem 1.4rem;position:sticky;top:0;z-index:20}
.content{padding:1.4rem}
@media (max-width:991.98px){
  .sidebar{position:fixed;left:-260px;z-index:1050;transition:left .2s}
  .sidebar.open{left:0;box-shadow:0 0 0 100vmax rgba(0,0,0,.4)}
  .content{padding:1rem}
}
.card{border-color:var(--er-line);border-radius:14px}
.card-header{background:#fff;border-bottom-color:var(--er-line)}
.card-header:first-child{border-radius:14px 14px 0 0}
.kpi{padding:1.1rem 1.2rem;border-radius:14px;background:#fff;border:1px solid var(--er-line);height:100%}
.kpi .lbl{font-size:.85rem;color:#64748b}
.kpi .val{font-size:1.85rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--er-ink)}
.kpi .sub{font-size:.82rem;color:#94a3b8}
.kpi .ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:1.2rem}
.ico-navy{background:#e0e7ff;color:#1e3a8a}.ico-green{background:#dcfce7;color:#15803d}.ico-amber{background:#fef3c7;color:#b45309}.ico-slate{background:#e2e8f0;color:#475569}.ico-teal{background:#ccfbf1;color:#0f766e}
.table{--bs-table-hover-bg:#f8fafc}
.table thead th{font-size:.82rem;font-weight:600;color:#64748b;background:#f8fafc;border-bottom-width:1px;white-space:nowrap}
.table td{vertical-align:middle}
.event-tabs{border-bottom:1px solid var(--er-line);gap:.25rem;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.event-tabs .nav-link{color:#475569;border:0;border-bottom:2px solid transparent;border-radius:0;padding:.6rem .9rem;white-space:nowrap}
.event-tabs .nav-link.active{color:#1e3a8a;border-bottom-color:#1e3a8a;font-weight:600;background:transparent}
.live-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;display:inline-block;box-shadow:0 0 0 0 rgba(34,197,94,.6);animation:pulse 1.8s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.chart-box{position:relative;height:280px}
.ans-bar{height:8px;border-radius:6px;background:#e5e9f2;overflow:hidden}
.ans-bar>span{display:block;height:100%;background:#3b5bc7}

/* form builder */
.builder-palette .pal-btn{display:flex;gap:.6rem;align-items:center;width:100%;text-align:left;border:1px solid var(--er-line);background:#fff;border-radius:10px;padding:.5rem .7rem;margin-bottom:.4rem;font-size:.93rem;color:#1f2937}
.builder-palette .pal-btn:hover{border-color:#6b84c9;background:#f3f6fd}
.builder-palette .pal-btn i{color:#1e3a8a;width:1.2rem}
.qcard{border:1px solid var(--er-line);border-radius:12px;background:#fff;margin-bottom:.7rem;transition:box-shadow .15s}
.qcard.open{box-shadow:0 0 0 2px #6b84c9}
.qcard-head{display:flex;align-items:center;gap:.6rem;padding:.65rem .8rem;cursor:pointer}
.qcard-head .handle{cursor:grab;color:#94a3b8;font-size:1.1rem}
.qcard-head .qtitle{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qcard-head .qtype{font-size:.78rem;color:#64748b;white-space:nowrap}
.qcard-body{border-top:1px solid #f1f5f9;padding:1rem}
.qcard.sortable-ghost{opacity:.4}
.logic-box{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:.8rem}
.fixed-field{border:1px dashed #cbd5e1;border-radius:12px;padding:.55rem .8rem;margin-bottom:.5rem;background:#fafbfd;font-size:.93rem}
.save-state{font-size:.85rem}

/* check-in */
#reader{width:100%;max-width:460px;margin:0 auto;border-radius:14px;overflow:hidden}
#reader video{border-radius:14px}
.checkin-result{border-radius:14px;padding:1.2rem;border:2px solid transparent}
.checkin-result.ok{background:#f0fdf4;border-color:#86efac}
.checkin-result.warn{background:#fffbeb;border-color:#fcd34d}
.checkin-result.err{background:#fef2f2;border-color:#fca5a5}

@media print{
  .no-print,.pub-nav,footer,.sidebar,.topbar{display:none!important}
  body{background:#fff!important}
  .ticket{box-shadow:none;border:1px solid #cbd5e1}
}
