/* =========================
   Tokens & Base
========================= */
:root{
  --bg:#0a0f1e;
  --bg-2:#0c142b;
  --card:#0f1a33;
  --card-2:#0d162a;
  --border:#1e2a49;
  --text:#eaf0ff;
  --muted:#98a8c9;

  --primary:#5b8cff;
  --primary-2:#3c6fff;
  --success:#1ec49e;
  --warn:#ffcc66;
  --danger:#ff6b6b;

  --radius:16px;
  --shadow: 0 10px 35px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.03);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  color:var(--text);
  background:
    radial-gradient(900px 600px at 20% -10%, #16224a 0%, transparent 60%),
    radial-gradient(800px 600px at 110% 10%, #101c3b 0%, transparent 60%),
    var(--bg);
  font: 15px/1.55 system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
}

/* =========================
   Container & Headings
========================= */
.container{ max-width: 1180px; margin: 28px auto; padding: 0 18px; }

h1{
  margin: 6px 0 12px;
  font-size: clamp(30px, 4vw, 46px);
  letter-spacing:.3px;
}
h3{
  margin:0 0 14px;
  font-size:18px;
  color:#cfe0ff;
}
.subtle{ color:var(--muted); margin: 0 0 22px; }
.empty-state{
  text-align:center;
  color:var(--muted);
  padding:22px 0;
}

/* =========================
   Card
========================= */
.card{
  background:
    linear-gradient(180deg, rgba(255,255,255,.03), transparent),
    linear-gradient(180deg, var(--card), var(--card-2));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow);
}
.card h2{
  margin:0 0 16px;
  font-size: 20px;
  color:#cfe0ff;
}
.card-header .subtle{
  margin:4px 0 0;
}
.collapsible-card{
  padding:0;
}
.collapsible-summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  cursor:pointer;
  list-style:none;
  padding:24px;
}
.collapsible-card[open] .collapsible-summary{
  border-bottom:1px solid var(--border);
}
.collapsible-summary::-webkit-details-marker{
  display:none;
}
.collapsible-summary h2{
  margin:0;
}
.collapsible-summary .subtle{
  margin:6px 0 0;
}
.collapse-indicator{
  font-size:13px;
  color:var(--muted);
  white-space:nowrap;
}
.collapsible-card[open] .collapse-indicator{
  color:#cfe0ff;
}
.collapsible-body{
  padding:20px 24px 24px;
}

/* =========================
   TV Login Layout
========================= */
.tv-login-hero{
  display:grid;
  grid-template-columns: minmax(0, 1fr);
  gap:18px;
  align-items:center;
  padding:24px;
  border-radius:22px;
  border:1px solid var(--border);
  background:
    radial-gradient(420px 240px at 10% 0%, rgba(91,140,255,0.18), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.03), transparent),
    linear-gradient(180deg, var(--card), var(--card-2));
  box-shadow: var(--shadow);
  margin-bottom:22px;
}
.tv-login-highlights{
  margin:12px 0 0;
  padding-left:18px;
  color:var(--muted);
}
.tv-login-highlights li{
  margin:6px 0;
}
.tv-login-badge{
  border-radius:18px;
  border:1px solid var(--border);
  background:#0c1834;
  padding:18px 20px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
  color:#dbe6ff;
}
.tv-login-badge span{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:1.3px;
  color:var(--muted);
}
.tv-login-badge strong{
  font-size:24px;
}
.tv-login-badge small{
  color:#7eb5ff;
  font-weight:600;
}
.tv-login-grid{
  display:grid;
  gap:18px;
  grid-template-columns: minmax(0, 1fr);
}
.tv-login-card .form-grid{
  margin-top:10px;
}
.tv-login-side{
  display:flex;
  flex-direction:column;
  gap:14px;
}
.tv-login-steps{
  margin:0;
  padding-left:18px;
  color:var(--muted);
}
.tv-login-steps li{
  margin-bottom:8px;
}
.tv-login-note{
  padding:12px 14px;
  border-radius:12px;
  border:1px dashed #2e416b;
  background:#0b152e;
  color:#cfe0ff;
}


/* =========================
   Form Grid
========================= */
.form-grid{
  display:grid;
  gap:16px;
  grid-template-columns: 1fr;
}
label{ display:block; }
label > small{ display:block; margin-top:6px; color:var(--muted); }
.helper-line{
  grid-column:1 / -1;
  margin:0;
}
.checkbox-line{
  display:flex;
  gap:10px;
  align-items:center;
  font-weight:600;
}
.checkbox-line input[type="checkbox"]{
  width:auto;
  margin-top:0;
  accent-color: var(--primary);
}

input{
  width:100%;
  margin-top:8px;
  padding:12px 14px;
  background:#0b1326;
  color:var(--text);
  border:1px solid var(--border);
  border-radius:12px;
  outline:none;
  transition: border .15s, box-shadow .15s, background .15s, transform .02s;
}
input::placeholder{ color:#7e8fb2; }
input:focus{
  background:#0b1531;
  border-color: color-mix(in oklab, var(--primary) 70%, white 0%);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 22%, transparent);
}

/* =========================
   Buttons
========================= */
.actions{ display:flex; gap:12px; flex-wrap:wrap; margin-top:6px; }

.btn-primary, .btn-secondary{
  appearance:none;
  border:0;
  padding:12px 18px;
  border-radius:12px;
  font-weight:700;
  cursor:pointer;
  transition: transform .05s ease, filter .2s ease, box-shadow .2s ease;
  user-select:none;
}

.btn-primary{
  color:#fff;
  background: linear-gradient(180deg, var(--primary), var(--primary-2));
  box-shadow: 0 10px 18px rgba(91,140,255,.25);
}
.btn-primary:hover{ filter:brightness(1.06); }
.btn-primary:active{ transform: translateY(1px); }

.btn-secondary{
  color:#dfe8ff;
  background:#0f213f;
  border:1px solid var(--border);
}
.btn-secondary:hover{ background:#112750; border-color:#2a3a62; }
.btn-secondary:active{ transform: translateY(1px); }

.btn-danger{
  color:#ffe4e7;
  background: linear-gradient(180deg, #a6233a, #7a1729);
  box-shadow: 0 10px 18px rgba(166,35,58,.25);
}
.btn-danger:hover{ filter:brightness(1.06); }
.btn-danger:active{ transform: translateY(1px); }

/* =========================
   Result Box / Alerts
========================= */
.result-box{ margin-top:18px; }

.alert{
  position:relative;
  border-radius:14px;
  padding:14px 16px;
  border:1px solid var(--border);
  background:#0f1d3c;
  box-shadow: var(--shadow);
  word-break: break-word;
}
.alert b{ font-weight:800; }
.alert.success{ border-color: color-mix(in oklab, var(--success) 55%, var(--border)); background:#0c2420; }
.alert.info   { border-color:#3553a3; background:#0e1b3a; }
.alert.warn   { border-color:#7a6400; background:#2a2300; }
.alert.danger { border-color:#7a1d1d; background:#2a1014; }
.alert .meta  { opacity:.8; }
.status-title{
  font-size:15px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.8px;
  color:#b9c9f4;
  margin-bottom:8px;
}
.status-summary{
  font-size:16px;
  font-weight:600;
  color:#eaf0ff;
}

.alert a{
  color:#7fc3ff;
  text-decoration: underline;
  font-weight:700;
  word-break: break-all;
}
.alert a:hover{ color:#a8d6ff; }

.result-content{
  margin:8px 0 0;
  padding:12px;
  border-radius:12px;
  background:#0b142d;
  border:1px solid var(--border);
  font-family: 'JetBrains Mono', 'Fira Code', 'SFMono-Regular', ui-monospace, monospace;
  font-size:14px;
  line-height:1.45;
  white-space:pre-wrap;
  color:var(--text);
}

/* =========================
   Field helper line-up
========================= */
label small::before{
  content:"";
  display:inline-block;
  width:6px; height:6px;
  border-radius:99px; background:#3a64ff;
  margin-right:8px; translate: 0 -1px;
}

/* =========================
   Responsive
========================= */
@media (min-width: 860px){
  .form-grid{ grid-template-columns: 1fr 1fr; }
  .actions{ grid-column: 1 / -1; }
  .tv-login-hero{
    grid-template-columns: minmax(0, 1fr) 240px;
  }
  .tv-login-grid{
    grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
  }
}

/* =========================
   Admin Dashboard
========================= */
.dashboard-grid{
  display:grid;
  gap:16px;
  grid-template-columns: repeat(auto-fit, minmax(180px,1fr));
}
.mini-card{
  background: linear-gradient(180deg, rgba(255,255,255,.02), transparent);
  border:1px solid var(--border);
  border-radius:18px;
  padding:18px;
  box-shadow: var(--shadow);
}
.mini-card.success{ border-color: color-mix(in oklab, var(--success) 45%, var(--border)); }
.mini-card.warn{ border-color: color-mix(in oklab, var(--warn) 45%, var(--border)); }
.mini-card.danger{ border-color: color-mix(in oklab, var(--danger) 45%, var(--border)); }
.mini-card.info{ border-color: color-mix(in oklab, var(--primary) 45%, var(--border)); }
.mini-card.full{ grid-column: 1 / -1; }
.mini-label{ font-size:13px; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
.mini-value{ font-size:32px; font-weight:800; }

.card-header{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:18px;
}

.filters{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
}
.filters input,
.filters select{
  max-width:220px;
}
.filters .actions{
  margin:0;
}
.filters .btn-secondary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
}

.flash-stack{
  margin-top:22px;
  display:grid;
  gap:12px;
}

.table-wrapper{
  overflow:auto;
  border-radius:16px;
  border:1px solid var(--border);
}
.table-compact{
  margin-top:14px;
}
.data-table{
  width:100%;
  border-collapse:collapse;
  min-width:780px;
}
.data-table th,
.data-table td{
  padding:12px 16px;
  border-bottom:1px solid rgba(255,255,255,0.04);
  text-align:left;
}
.data-table thead th{
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:.5px;
  color:var(--muted);
}
.data-table tbody tr:last-child td{
  border-bottom:none;
}
.data-table tbody tr:hover td{
  background:rgba(255,255,255,0.03);
}

.tv-email-list{
  margin-top:16px;
  display:grid;
  gap:16px;
}
.tv-email-summary{
  margin-top:18px;
  padding:14px 16px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(8,14,30,0.7);
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap:12px;
}
.tv-email-summary-item{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:10px 12px;
  border-radius:12px;
  background:rgba(255,255,255,0.03);
}
.tv-email-summary-label{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:var(--muted);
}
.tv-email-summary-value{
  font-size:20px;
  color:#e8f0ff;
}
.tv-email-forms{
  display:grid;
  gap:18px;
  margin-bottom:12px;
}
.tv-email-bulk{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  padding:12px 14px;
  border-radius:14px;
  border:1px dashed rgba(255,255,255,0.12);
  background:rgba(10,18,35,0.55);
}
.tv-email-select-all{
  display:flex;
  align-items:center;
  gap:8px;
  color:var(--muted);
  font-size:13px;
}
.tv-email-bulk-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}
.tv-email-item{
  position:relative;
  display:grid;
  gap:10px;
  padding:14px 16px;
  border-radius:18px;
  border:1px solid rgba(255,255,255,0.08);
  background:
    radial-gradient(260px 140px at 8% 10%, rgba(91,140,255,0.16), transparent 60%),
    linear-gradient(135deg, rgba(25,38,70,0.92), rgba(13,22,40,0.92));
  box-shadow:0 12px 22px rgba(5,10,22,0.35);
}
.tv-email-item::before{
  content:"";
  position:absolute;
  inset:10px auto 10px 0;
  width:3px;
  border-radius:999px;
  background:linear-gradient(180deg, rgba(91,140,255,0.85), rgba(91,140,255,0));
  opacity:0.8;
}
.tv-email-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}

.tv-email-select{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:2px;
}

.tv-email-select input[type="checkbox"]{
  transform: scale(1.1);
  cursor:pointer;
}
.tv-email-info{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:4px 12px;
  min-width:0;
}
.tv-email-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:0.8px;
  color:var(--muted);
}
.tv-email-value{
  font-size:15px;
  word-break:break-all;
}
.tv-email-actions{
  display:flex;
  justify-content:flex-end;
}
.tv-email-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:4px 2px 0;
}
.tv-email-meta-item{
  display:flex;
  flex-direction:column;
  gap:4px;
  padding:6px 10px;
  border-radius:10px;
  border:1px dashed rgba(255,255,255,0.12);
  background:rgba(10,18,35,0.6);
  min-width:160px;
  flex:1 1 180px;
}
.tv-email-meta-item-full{
  flex:1 1 100%;
}
.tv-email-meta-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:var(--muted);
}
.tv-email-meta-value{
  color:#f4f7ff;
}
.tv-email-cookies{
  width:100%;
  min-height:120px;
  resize:vertical;
  border-radius:8px;
  border:1px solid rgba(255,255,255,0.12);
  background:rgba(7,12,22,0.9);
  color:#f4f7ff;
  padding:8px;
  font-size:12px;
  line-height:1.4;
}
.tv-email-list .empty-state{
  padding:16px;
  border-radius:12px;
  border:1px dashed rgba(255,255,255,0.12);
  background:rgba(10,18,35,0.6);
}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.select-col{
  width:52px;
  text-align:center;
}
.select-col input[type="checkbox"]{
  transform: scale(1.1);
  cursor:pointer;
}

.email-copy{
  color:#d4e4ff;
  text-decoration:none;
  word-break:break-all;
  cursor:pointer;
  position:relative;
  padding-right:10px;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.email-copy::after{
  content:'Nhấp để sao chép';
  color:var(--muted);
  font-size:12px;
  opacity:0;
  translate: 0 2px;
  transition: opacity .15s ease;
}
.email-copy:hover::after,
.email-copy:focus-visible::after,
.email-copy.copied::after{
  opacity:1;
}
.email-copy.copied{
  color:#9fd6ff;
}
.email-copy.copied::after{
  content:'Đã sao chép!';
  color:#8ae7c7;
}
.phone-cell{
  white-space:nowrap;
}
.usage-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:4px 10px;
  border-radius:999px;
  font-size:13px;
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(255,255,255,0.08);
  color:#f4f7ff;
}
.usage-chip-muted{
  color:var(--muted);
  border-style:dashed;
}
.usage-chip-warning{
  background:rgba(255,107,107,0.12);
  border-color:rgba(255,107,107,0.35);
  color:#ffb5b5;
  font-weight:600;
}
.placeholder{
  color:var(--muted);
}

.status-pill{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  border-radius:999px;
  font-weight:600;
  font-size:13px;
  border:1px solid transparent;
}
.status-pill-active{ background:rgba(30,196,158,0.1); border-color:rgba(30,196,158,0.35); color:#3de6c0; }
.status-pill-expiring{ background:rgba(255,204,102,0.12); border-color:rgba(255,204,102,0.35); color:#ffd27a; }
.status-pill-expired{ background:rgba(255,107,107,0.12); border-color:rgba(255,107,107,0.35); color:#ff8c8c; }

.status-row.status-row-active td{ background:rgba(30,196,158,0.08); }
.status-row.status-row-expiring td{ background:rgba(255,204,102,0.08); }
.status-row.status-row-expired td{ background:rgba(255,107,107,0.08); }

.pill-meta{ font-size:12px; color:var(--muted); margin-top:4px; }

.mono{ font-family: 'Fira Code', 'Consolas', 'Menlo', monospace; letter-spacing:.2px; }

.actions-cell details{ color:var(--muted); }
.actions-cell summary{ cursor:pointer; color:#cfe0ff; }
.actions-cell details[open]{ background:rgba(15,26,51,0.5); border-radius:12px; padding:10px; }
.actions-cell .edit-form{ display:grid; gap:12px; margin:12px 0; }
.actions-cell form + form{ margin-top:10px; }

.link-btn{
  background:none;
  border:none;
  color:var(--primary);
  cursor:pointer;
  padding:0;
  font:inherit;
}
.link-btn:hover{ text-decoration:underline; }

.modal{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:50;
}
.modal.hidden{ display:none; }
.modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,0.6);
}
.modal-content{
  position:relative;
  background:#0c1422;
  border:1px solid rgba(255,255,255,0.08);
  border-radius:12px;
  padding:18px 20px;
  width:min(720px,95vw);
  max-height:80vh;
  overflow:hidden;
  box-shadow:0 20px 50px rgba(0,0,0,0.35);
  animation:pop .2s ease;
}
.modal-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:8px;
}
.modal-body{ overflow-y:auto; max-height:calc(80vh - 60px); padding-right:6px; }
.btn-close{
  background:none;
  border:none;
  color:#fff;
  font-size:24px;
  cursor:pointer;
  line-height:1;
}
.activity-list{ display:flex; flex-direction:column; gap:10px; }
.activity-scroll{ max-height:420px; overflow-y:auto; padding-right:4px; }
.activity-item{
  border:1px solid rgba(255,255,255,0.08);
  border-radius:10px;
  padding:10px 12px;
  background:#0f1c2d;
}
.activity-top{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.activity-kind{ font-weight:600; color:var(--primary); }
.activity-time{ color:var(--muted); font-size:13px; }
.activity-message{ margin:6px 0 4px; }
.activity-meta{ color:var(--muted); font-size:13px; display:flex; gap:10px; flex-wrap:wrap; }
.tag-success{ color:#6ce5b1; }
.tag-fail{ color:#ff7b7b; }

.status-steps{ margin-top:16px; }
.status-steps-list{
  display:grid;
  gap:8px;
  margin-top:8px;
}
.status-step{
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:600;
}
.status-dot{
  width:8px;
  height:8px;
  border-radius:999px;
  background:var(--primary);
  box-shadow:0 0 0 4px rgba(91,140,255,0.2);
  flex-shrink:0;
}
.status-log{
  margin-top:14px;
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:12px;
  border-radius:12px;
  border:1px solid var(--border);
  background:#0b142d;
  font-family:'JetBrains Mono', 'Fira Code', 'SFMono-Regular', ui-monospace, monospace;
  font-size:13px;
  line-height:1.5;
  color:var(--text);
}
.status-log-line{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.status-log-subline{
  margin-left:18px;
  color:var(--muted);
}

@keyframes pop{
  from{ transform:scale(.96); opacity:0; }
  to{ transform:scale(1); opacity:1; }
}

/* =========================
   Admin Layout
========================= */
.admin-hero{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:flex-end;
  gap:16px;
  margin-bottom:18px;
  padding:22px 26px;
  border-radius:20px;
  border:1px solid var(--border);
  background:
    radial-gradient(400px 220px at 12% 0%, rgba(91,140,255,0.12), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.03), transparent),
    linear-gradient(180deg, var(--card), var(--card-2));
  box-shadow: var(--shadow);
}
.admin-hero .subtle{ margin-bottom:0; }
.admin-hero-title{
  display:flex;
  align-items:center;
  gap:14px;
}
.admin-hero-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:46px;
  height:46px;
  border-radius:14px;
  background:rgba(91,140,255,0.16);
  border:1px solid rgba(91,140,255,0.35);
  font-size:20px;
}
.admin-hero-main{
  flex:1 1 280px;
}
.admin-hero-actions{
  display:flex;
  align-items:center;
  gap:12px;
}
.admin-login{
  max-width:520px;
  margin:0 auto;
}
.stack > * + *{
  margin-top:22px;
}
.section-grid{
  display:grid;
  gap:22px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  align-items:start;
}
.section-grid .tv-email-card{
  grid-column:1 / -1;
}
.random-email-card .card-header{
  align-items:flex-start;
}
.random-email-body{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.random-email-display{
  padding:14px 16px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(15,23,42,0.35);
  color:var(--text);
  min-height:48px;
  display:flex;
  align-items:center;
  font-weight:600;
}
.random-email-actions{
  display:flex;
  align-items:center;
  gap:12px;
}
.random-email-stats{
  display:grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap:12px;
}
.random-email-stat{
  padding:12px 14px;
  border-radius:12px;
  border:1px solid var(--border);
  background:rgba(15,23,42,0.2);
  display:flex;
  flex-direction:column;
  gap:4px;
}
.random-email-stat strong{
  font-size:20px;
}
.admin-stats .mini-card{
  padding:20px;
}

@media (max-width: 720px){
  .mini-value{ font-size:26px; }
  .filters input,
  .filters select{ flex:1 1 100%; max-width:none; }
}
