﻿@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@500;600;700;800&display=swap');
:root{
  --bg:#FFFFFF;--bg-soft:#FBF7FF;--bg-lilac:#F2EAFE;
  --surface:#FEFBFF;--surface-2:#F4EEFE;
  --ink:#1A0B2E;--ink-rgb:26,11,46;
  --text:#1A0B2E;--muted:rgba(26,11,46,.55);--muted2:rgba(26,11,46,.38);
  --primary:#FF4D00;--primary-rgb:255,77,0;
  --secondary:#7C3AED;--secondary-rgb:124,58,237;
  --accent:#FFD600;--accent-rgb:255,214,0;
  --vi-cyan:#06B6D4;--vi-cyan-rgb:6,182,212;
  --vi-magenta:#E020E0;--vi-magenta-rgb:224,32,224;
  --vi-green:#22C55E;--vi-green-rgb:34,197,94;
  --ok:#16A34A;--ok-rgb:22,163,74;
  --warn:#D97706;--err:#DC2626;
  --border:rgba(26,11,46,.10);--card-border:rgba(26,11,46,.12);
  --radius:16px;--radius-sm:10px;
  --shadow:0 2px 12px rgba(var(--ink-rgb),.06);
  --shadow-card:0 4px 0 rgba(var(--ink-rgb),.06),0 8px 24px rgba(var(--ink-rgb),.05);
  --motion:.2s cubic-bezier(.4,0,.2,1);
  --sidebar-w:260px;
  --header-h:56px;
  --content-max:1200px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;min-height:100vh;font-family:'Plus Jakarta Sans',system-ui,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.45;
  -webkit-font-smoothing:antialiased;
}
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(520px 380px at 0% 0%,rgba(var(--vi-cyan-rgb),.08),transparent 55%),
    radial-gradient(480px 360px at 100% 0%,rgba(var(--vi-magenta-rgb),.07),transparent 52%),
    radial-gradient(560px 400px at 50% 100%,rgba(var(--primary-rgb),.06),transparent 60%);
}

/* 鈹€鈹€ Login 鈹€鈹€ */
.login-shell{
  position:relative;z-index:1;min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:24px;background:linear-gradient(165deg,var(--bg-lilac) 0%,#fff 45%,var(--bg-soft) 100%);
}
.login-card{
  width:100%;max-width:420px;padding:36px 32px 32px;border-radius:22px;
  background:var(--surface);border:2px solid var(--card-border);
  box-shadow:var(--shadow-card);
}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:28px;padding-bottom:20px;border-bottom:3px solid transparent;border-image:repeating-linear-gradient(90deg,var(--vi-cyan) 0 8px,var(--ink) 8px 16px,var(--vi-magenta) 16px 24px,var(--ink) 24px 32px) 1}
.login-brand__icon{
  width:52px;height:52px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(var(--primary-rgb),.28);
}
.login-brand__icon svg{width:28px;height:28px;fill:#fff}
.login-brand__title{font-size:1.2rem;font-weight:800;letter-spacing:-.02em;margin:0;color:var(--ink)}
.login-brand__sub{font-size:.72rem;color:var(--muted);margin:4px 0 0;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.login-card h2{font-size:.85rem;font-weight:800;color:var(--muted);margin:0 0 18px;text-transform:uppercase;letter-spacing:.04em}

/* 鈹€鈹€ App shell: left sidebar + main 鈹€鈹€ */
.app-shell{
  position:relative;z-index:1;display:grid;
  grid-template-columns:var(--sidebar-w) minmax(0,1fr);
  min-height:100vh;background:var(--bg-soft);
}
.app-shell--hidden{display:none!important}
.login-shell--hidden{display:none!important}
.admin-boot{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;
  background:linear-gradient(165deg,var(--bg-lilac) 0%,#fff 45%,var(--bg-soft) 100%)}
html.admin-booting .admin-boot{display:flex}
.admin-boot__spinner{width:36px;height:36px;border-radius:50%;
  border:3px solid rgba(var(--secondary-rgb),.18);border-top-color:var(--primary);
  animation:admin-boot-spin .7s linear infinite}
@keyframes admin-boot-spin{to{transform:rotate(360deg)}}
.sidebar-overlay{
  display:none;position:fixed;inset:0;background:rgba(var(--ink-rgb),.32);
  z-index:140;backdrop-filter:blur(2px);
}
.sidebar-overlay--open{display:block}
.sidebar{
  position:sticky;top:0;height:100vh;z-index:2;
  width:var(--sidebar-w);max-width:var(--sidebar-w);flex-shrink:0;
  display:flex;flex-direction:column;
  background:var(--surface);border-right:1px solid var(--border);
  box-shadow:2px 0 20px rgba(var(--ink-rgb),.04);
  overflow:hidden;
}
.sidebar__brand{
  display:flex;align-items:center;gap:12px;padding:20px 18px 18px;
  border-bottom:1px solid var(--border);flex-shrink:0;
}
.sidebar__logo{
  width:40px;height:40px;border-radius:11px;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary),var(--secondary));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 10px rgba(var(--primary-rgb),.22);
}
.sidebar__logo svg{width:22px;height:22px;fill:#fff}
.sidebar__name{font-size:.88rem;font-weight:800;line-height:1.25;color:var(--ink)}
.sidebar__name span{display:block;font-size:.62rem;font-weight:700;color:var(--muted);margin-top:3px;text-transform:uppercase;letter-spacing:.05em}
.sidebar__close{
  display:none;margin-left:auto;width:36px;height:36px;border-radius:var(--radius-sm);
  border:2px solid var(--border);background:var(--surface);cursor:pointer;
  align-items:center;justify-content:center;flex-shrink:0;
}
.sidebar__close svg{width:18px;height:18px;fill:var(--ink)}
.sidebar__nav{
  flex:1;overflow-y:auto;padding:12px 12px 16px;
  scrollbar-width:thin;
}
.nav-group{padding:0 0 18px}
.nav-group+.nav-group{border-top:1px solid var(--border);padding-top:16px}
.nav-group__label{
  display:block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
  color:var(--muted2);padding:0 12px 8px;user-select:none;
}
.tab{
  display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;
  border-radius:var(--radius-sm);border:2px solid transparent;background:transparent;
  color:var(--muted);cursor:pointer;font-size:.78rem;font-weight:700;font-family:inherit;
  text-align:left;transition:all var(--motion);
}
.tab svg{width:18px;height:18px;flex-shrink:0;fill:currentColor;opacity:.65}
.tab:hover{background:var(--surface-2);color:var(--ink)}
.tab:hover svg{opacity:1}
.tab--active{
  background:rgba(var(--primary-rgb),.08);color:var(--ink);
  border-color:rgba(var(--primary-rgb),.28);
  box-shadow:inset 3px 0 0 var(--primary);
}
.tab--active svg{opacity:1;color:var(--primary)}

.main-col{display:flex;flex-direction:column;min-width:0;min-height:100vh;overflow:hidden}
.app-header{
  position:sticky;top:0;z-index:100;flex-shrink:0;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  height:var(--header-h);padding:0 24px;
  background:rgba(255,255,255,.95);border-bottom:1px solid var(--border);
  backdrop-filter:blur(8px);
}
.app-header__left{display:flex;align-items:center;gap:12px;min-width:0}
.app-header__menu{
  display:none;width:40px;height:40px;border-radius:var(--radius-sm);
  border:2px solid var(--border);background:var(--surface);cursor:pointer;
  align-items:center;justify-content:center;flex-shrink:0;
}
.app-header__menu svg{width:20px;height:20px;fill:var(--ink)}
.app-header__crumb{font-size:.82rem;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.app-header__actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.topbar__badge{
  display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;
  font-size:.65rem;font-weight:800;background:rgba(var(--vi-green-rgb),.12);color:var(--ok);
  border:1.5px solid rgba(var(--vi-green-rgb),.25);
}
.topbar__badge::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--ok)}
.page-head{padding:24px 28px 0;max-width:var(--content-max);width:100%;margin:0 auto}
.page-head__title{font-size:1.35rem;font-weight:800;margin:0;color:var(--ink);letter-spacing:-.02em}
.page-head__sub{font-size:.82rem;color:var(--muted);margin:6px 0 0;font-weight:600}
.content{
  max-width:var(--content-max);width:100%;margin:0 auto;
  padding:16px 28px 48px;flex:1;
}

/* 鈹€鈹€ Panels & cards 鈹€鈹€ */
.panel{display:none;animation:fadeUp .35s ease}
.panel--active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.card{
  background:var(--surface);border:2px solid var(--card-border);border-radius:var(--radius);
  padding:22px 24px;margin-bottom:18px;box-shadow:var(--shadow);
  position:relative;overflow:hidden;
}
.card::before{
  content:'';position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--vi-cyan),var(--primary),var(--vi-magenta),var(--accent));
  opacity:.85;
}
.card h2{
  font-size:.95rem;font-weight:800;margin:0 0 16px;color:var(--ink);
  display:flex;align-items:center;gap:10px;
}
.card h2::before{
  content:'';width:5px;height:18px;border-radius:3px;
  background:linear-gradient(180deg,var(--primary),var(--secondary));
}
.card__lead{font-size:.8rem;color:var(--muted);margin:0 0 16px;line-height:1.55;font-weight:500}

/* 鈹€鈹€ Stats (sticker stat tiles) 鈹€鈹€ */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px}
.stat{
  background:var(--surface);border:2px solid var(--card-border);border-radius:var(--radius-sm);
  padding:16px 12px;text-align:center;
  box-shadow:0 3px 0 rgba(var(--ink-rgb),.05);
  transition:transform var(--motion),box-shadow var(--motion);
  position:relative;overflow:hidden;
}
.stat::after{
  content:'';position:absolute;bottom:0;left:0;right:0;height:3px;
  background:var(--stat-accent,var(--primary));
}
.stat:nth-child(6n+1){--stat-accent:var(--primary)}
.stat:nth-child(6n+2){--stat-accent:var(--vi-cyan)}
.stat:nth-child(6n+3){--stat-accent:var(--vi-magenta)}
.stat:nth-child(6n+4){--stat-accent:var(--accent)}
.stat:nth-child(6n+5){--stat-accent:var(--secondary)}
.stat:nth-child(6n+6){--stat-accent:var(--vi-green)}
.stat:hover{transform:translateY(-2px);box-shadow:0 5px 0 rgba(var(--ink-rgb),.07),var(--shadow)}
.stat__n{
  font-size:1.55rem;font-weight:800;color:var(--ink);letter-spacing:-.02em;
}
.stat__l{font-size:.62rem;color:var(--muted);margin-top:6px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}

/* 鈹€鈹€ Forms 鈹€鈹€ */
label{display:block;font-size:.68rem;color:var(--muted);margin-bottom:6px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
input,select,textarea{
  width:100%;padding:11px 14px;border-radius:var(--radius-sm);
  border:2px solid var(--border);background:var(--surface);color:var(--ink);
  margin-bottom:12px;font-size:.82rem;font-family:inherit;font-weight:600;
  transition:border-color var(--motion),box-shadow var(--motion);
}
input:focus,select:focus{outline:none;border-color:rgba(var(--primary-rgb),.45);box-shadow:0 0 0 3px rgba(var(--primary-rgb),.1)}
input::placeholder{color:var(--muted2);font-weight:500}
button{font-family:inherit}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  width:auto;padding:10px 20px;border-radius:var(--radius-sm);border:none;
  background:linear-gradient(180deg,#FF6A2A 0%,var(--primary) 55%,#CC3D00 100%);
  color:#fff;font-size:.78rem;font-weight:800;cursor:pointer;
  box-shadow:0 3px 0 #B33600,0 5px 14px rgba(var(--primary-rgb),.25);
  transition:transform var(--motion),box-shadow var(--motion);
  text-shadow:0 1px 1px rgba(0,0,0,.15);
}
.btn:hover{filter:brightness(1.03)}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 #B33600,0 2px 8px rgba(var(--primary-rgb),.15)}
.btn--ghost{
  background:var(--surface);border:2px solid var(--card-border);color:var(--ink);
  box-shadow:0 2px 0 rgba(var(--ink-rgb),.05);text-shadow:none;
}
.btn--ghost:hover{background:var(--surface-2);border-color:rgba(var(--primary-rgb),.25)}
.btn--ghost:active{transform:translateY(1px)}
.btn--danger{
  background:linear-gradient(180deg,#F87171,#DC2626);
  box-shadow:0 3px 0 #991B1B,0 5px 14px rgba(220,38,38,.2);
}
.btn--sm{padding:6px 12px;font-size:.72rem}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important;filter:grayscale(.2)}
.status:empty{display:none;padding:0;border:none;background:none}
.banner{
  display:block;padding:12px 16px;border-radius:var(--radius-sm);font-size:.82rem;font-weight:600;
  line-height:1.5;margin-top:10px;border:2px solid transparent;
}
.banner--ok{background:rgba(var(--vi-green-rgb),.1);color:var(--ok);border-color:rgba(var(--vi-green-rgb),.22)}
.banner--err{background:rgba(220,38,38,.08);color:var(--err);border-color:rgba(220,38,38,.18)}
.banner--info{background:rgba(var(--secondary-rgb),.08);color:var(--secondary);border-color:rgba(var(--secondary-rgb),.18)}
.banner--wait{background:rgba(250,204,21,.12);color:var(--warn);border-color:rgba(217,119,6,.2)}

.steps{
  margin:0 0 18px;padding:14px 14px 14px 32px;background:var(--bg-soft);
  border-radius:var(--radius-sm);border:1.5px solid var(--border);
  font-size:.8rem;color:var(--ink);line-height:1.65;font-weight:600;
}
.steps li{margin-bottom:6px}
.steps li:last-child{margin-bottom:0}

.filter-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0}
.filter-tab{
  padding:8px 16px;border-radius:999px;border:2px solid var(--border);
  background:var(--surface);color:var(--muted);font-size:.76rem;font-weight:800;
  cursor:pointer;font-family:inherit;transition:all var(--motion);
}
.filter-tab:hover{border-color:rgba(var(--primary-rgb),.3);color:var(--ink)}
.filter-tab--active{
  background:rgba(var(--primary-rgb),.1);border-color:rgba(var(--primary-rgb),.35);
  color:var(--ink);box-shadow:inset 0 -2px 0 var(--primary);
}
.filter-tab__count{
  display:inline-block;min-width:1.4em;padding:1px 6px;margin-left:4px;
  border-radius:999px;background:rgba(var(--primary-rgb),.15);font-size:.68rem;
}
#panel-campaign .filters{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
#panel-campaign input[type=datetime-local]{font-variant-numeric:tabular-nums;cursor:pointer}
#panel-campaign input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.65;filter:invert(28%) sepia(85%) saturate(4200%) hue-rotate(8deg)}
#panel-campaign .camp-action-pair{
  display:inline-grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:4px;
}
#panel-campaign .camp-action-pair .btn{width:100%;box-sizing:border-box;justify-content:center}
#panel-sync .sync-actions{margin-top:4px}
#panel-sync .sync-toolbar{
  margin-top:8px;margin-bottom:12px;
}
#panel-sync .sync-toolbar .filter-tab{
  flex:1 1 0;min-width:0;height:40px;margin:0;padding:0 6px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:.68rem;font-weight:800;white-space:normal;line-height:1.15;
  text-align:center;border-radius:var(--radius-sm);
}

.sync-health{display:grid;gap:10px;margin-top:12px}
.sync-health__row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:10px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--bg-soft);
}
.sync-health__label{font-size:.78rem;font-weight:800;color:var(--ink)}
.sync-health__meta{font-size:.72rem;color:var(--muted);font-weight:600}
.sync-health__badge{
  font-size:.68rem;font-weight:800;padding:4px 10px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em;
}
.sync-health__badge--ok{background:rgba(var(--vi-green-rgb),.15);color:var(--ok)}
.sync-health__badge--stale{background:rgba(250,204,21,.2);color:var(--warn)}
.sync-health__badge--error{background:rgba(220,38,38,.1);color:var(--err)}
.sync-health__badge--never{background:var(--surface-2);color:var(--muted)}
.cron-runs{margin-top:16px}
.cron-runs__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.cron-runs__hint{font-size:.72rem;color:var(--muted);font-weight:600}
.cron-result{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.cron-result--success{background:rgba(var(--vi-green-rgb),.15);color:var(--ok)}
.cron-result--failed{background:rgba(220,38,38,.1);color:var(--err)}
.cron-result--partial{background:rgba(250,204,21,.2);color:var(--warn)}
.cron-summary{display:flex;flex-direction:column;gap:4px;font-size:.72rem;line-height:1.45}
.cron-stage-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.cron-stage-label{font-weight:800;color:var(--muted);min-width:42px;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}
.cron-stage{
  display:inline-block;padding:1px 6px;border-radius:6px;font-size:.68rem;font-weight:700;
  background:var(--surface-2);color:var(--muted);font-variant-numeric:tabular-nums
}
.cron-stage--hit{background:rgba(var(--vi-green-rgb),.12);color:var(--ok)}
.cron-stage--warn{background:rgba(250,204,21,.15);color:var(--warn)}
.cron-trigger{font-size:.72rem;color:var(--muted);font-weight:600}

.funnel-mini{margin-top:8px}
.funnel-mini .funnel-row{font-size:.72rem;padding:6px 0}
.btn--xs{padding:4px 10px;font-size:.68rem;border-radius:8px}

.empty-state{
  text-align:center;padding:36px 24px;border-radius:var(--radius-sm);
  background:var(--bg-soft);border:2px dashed var(--border);margin-top:8px;
}
.empty-state__icon{font-size:2rem;line-height:1;margin-bottom:10px;opacity:.7}
.empty-state__title{font-size:.9rem;font-weight:800;color:var(--ink);margin:0 0 6px}
.empty-state__text{font-size:.78rem;color:var(--muted);margin:0;font-weight:600;max-width:360px;margin-inline:auto}

.help-note{
  font-size:.72rem;color:var(--muted);margin-top:14px;padding-top:12px;
  border-top:1px solid var(--border);font-weight:600;line-height:1.55;
}
.help-note summary{cursor:pointer;font-weight:800;color:var(--secondary)}
.help-note[open] summary{margin-bottom:8px}

.status{
  font-size:.75rem;color:var(--muted);min-height:0;margin-top:10px;padding:0;
  border:none;background:none;word-break:break-word;font-weight:500;
}
.status:not(:empty){min-height:1.2em}
.row-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.toolbar-equal{display:flex;flex-wrap:nowrap;gap:8px;width:100%;margin-top:4px}
.toolbar-equal .btn{
  flex:1 1 0;min-width:0;height:40px;margin:0;padding:0 6px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:.7rem;font-weight:800;white-space:nowrap;text-align:center;line-height:1.15;
}

/* 鈹€鈹€ Tables 鈹€鈹€ */
.table-wrap{
  overflow:auto;border-radius:var(--radius-sm);
  border:2px solid var(--card-border);margin-top:12px;background:var(--surface);
  box-shadow:var(--shadow);
}
table{width:100%;border-collapse:collapse;font-size:.76rem}
thead{position:sticky;top:0;z-index:1}
th{
  padding:12px 14px;text-align:left;font-weight:800;color:var(--muted);
  background:var(--bg-lilac);border-bottom:2px solid var(--border);
  text-transform:uppercase;font-size:.62rem;letter-spacing:.05em;
}
td{padding:11px 14px;border-bottom:1px solid rgba(var(--ink-rgb),.06);vertical-align:middle;color:var(--ink);font-weight:600}
tbody tr{transition:background var(--motion)}
tbody tr:hover{background:rgba(var(--primary-rgb),.04)}
tbody tr:last-child td{border-bottom:none}
.ev-table td{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev-table--wide{
  width:max-content;min-width:100%;table-layout:auto;
}
.ev-table--wide th,.ev-table--wide td{
  max-width:none;overflow:visible;text-overflow:clip;white-space:nowrap;
}
.ev-table--schedule th:nth-child(1),.ev-table--schedule td:nth-child(1){min-width:92px}
.ev-table--schedule th:nth-child(2),.ev-table--schedule td:nth-child(2){min-width:76px}
.ev-table--schedule th:nth-child(3),.ev-table--schedule td:nth-child(3){min-width:108px}
.ev-table--schedule th:nth-child(4),.ev-table--schedule td:nth-child(4){min-width:128px}
.ev-table--schedule th:nth-child(5),.ev-table--schedule td:nth-child(5){min-width:168px}
.ev-table--schedule th:nth-child(6),.ev-table--schedule td:nth-child(6){min-width:88px}
.ev-table--schedule th:nth-child(7),.ev-table--schedule td:nth-child(7){min-width:80px}
.ev-table--schedule th:nth-child(8),.ev-table--schedule td:nth-child(8){min-width:260px;max-width:360px;white-space:normal;vertical-align:top}
.ev-table--picks th:nth-child(1),.ev-table--picks td:nth-child(1){min-width:108px}
.ev-table--picks th:nth-child(2),.ev-table--picks td:nth-child(2){min-width:128px}
.ev-table--picks th:nth-child(3),.ev-table--picks td:nth-child(3){min-width:168px}
.ev-table--picks th:nth-child(4),.ev-table--picks td:nth-child(4){min-width:88px}
.ev-table--picks th:nth-child(5),.ev-table--picks td:nth-child(5){min-width:80px}
.ev-table--picks th:nth-child(6),.ev-table--picks td:nth-child(6){min-width:260px;max-width:360px;white-space:normal;vertical-align:top}
.table-wrap--wide{overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}
.ev-table td.td-actions,.ev-table td.td-detail,.ev-table th.th-actions,.ev-table th.th-detail{
  max-width:none;overflow:visible;white-space:normal;
  position:sticky;right:0;background:var(--surface);z-index:2;
  box-shadow:-4px 0 10px rgba(var(--ink-rgb),.05);
}
.ev-table thead th.th-actions,.ev-table thead th.th-detail{background:var(--bg-lilac);z-index:3}
.td-actions-inner{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end;min-width:268px}
.picks-pts--gain{color:var(--ok);font-weight:800}
.picks-pts--loss{color:var(--muted);font-weight:700}
.picks-pts--pending{color:var(--warn);font-weight:700}
.winner-badge{
  display:inline-block;padding:2px 8px;border-radius:999px;font-size:.68rem;font-weight:800;
  background:rgba(var(--vi-green-rgb),.12);color:var(--ok);border:1px solid rgba(var(--vi-green-rgb),.25);
}
.winner-badge--draw{background:rgba(var(--secondary-rgb),.1);color:var(--secondary);border-color:rgba(var(--secondary-rgb),.2)}
.winner-badge--pending{color:var(--muted);background:var(--surface-2);border-color:var(--border);font-weight:600}

/* 鈹€鈹€ Badges & misc 鈹€鈹€ */
.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border:1.5px solid transparent}
.badge--ok{background:rgba(var(--vi-green-rgb),.12);color:var(--ok);border-color:rgba(var(--vi-green-rgb),.25)}
.badge--warn{background:rgba(250,204,21,.18);color:var(--warn);border-color:rgba(217,119,6,.2)}
pre{
  font-size:.7rem;line-height:1.55;overflow:auto;max-height:280px;
  background:var(--surface-2);padding:14px;border-radius:var(--radius-sm);
  border:2px solid var(--border);color:var(--muted);margin-top:12px;font-weight:500;
}
.chk{width:18px;height:18px;margin:0;accent-color:var(--primary);cursor:pointer}
.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:14px}
.filters input,.filters select{margin-bottom:0}
.filters .full-width{grid-column:1/-1}
.section-title{
  font-size:.68rem;color:var(--muted);margin:22px 0 12px;font-weight:800;
  text-transform:uppercase;letter-spacing:.08em;
  display:flex;align-items:center;gap:10px;
}
.section-title::after{
  content:'';flex:1;height:3px;border-radius:2px;
  background:repeating-linear-gradient(90deg,var(--vi-cyan) 0 6px,var(--ink) 6px 12px,var(--accent) 12px 18px,var(--ink) 18px 24px);
  background-size:24px 3px;opacity:.25;
}
.funnel{margin:12px 0}
.funnel-row{
  display:grid;grid-template-columns:110px 1fr 48px 48px;gap:10px;align-items:center;
  margin-bottom:8px;font-size:.74rem;font-weight:600;color:var(--ink);
}
.funnel-bar{height:14px;border-radius:999px;background:rgba(var(--ink-rgb),.06);overflow:hidden;border:1px solid var(--border)}
.funnel-bar span{
  display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--vi-cyan),var(--primary),var(--vi-magenta));
  transition:width .6s ease;
}
.funnel-pct{color:var(--muted);text-align:right;font-size:.68rem;font-weight:700}
code{font-size:.85em;padding:2px 7px;border-radius:6px;background:rgba(var(--secondary-rgb),.1);color:var(--secondary);font-weight:700}

.modal-backdrop{
  display:none;position:fixed;inset:0;z-index:400;
  background:rgba(var(--ink-rgb),.45);backdrop-filter:blur(4px);
  align-items:center;justify-content:center;padding:16px;
  overflow-y:auto;
}
.modal-backdrop--open{display:flex}
.modal-card{
  width:100%;max-width:480px;overflow:visible;flex-shrink:0;
  background:var(--surface,#fff);border-radius:var(--radius-lg,16px);
  border:2px solid var(--border);box-shadow:0 24px 48px rgba(var(--ink-rgb),.18);
  padding:18px 20px 16px;margin:auto;
}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.modal-head h3{margin:0;font-size:1rem;font-weight:800;color:var(--ink);letter-spacing:-.02em}
.modal-close{
  flex-shrink:0;width:32px;height:32px;border:none;border-radius:50%;
  background:var(--surface-2);color:var(--muted);font-size:1.2rem;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;
}
.modal-close:hover{background:rgba(var(--ink-rgb),.08);color:var(--ink)}
.modal-card .card__lead{margin:0 0 12px;font-size:.74rem;line-height:1.45}
.modal-card--wide{max-width:920px}
.modal-card--confirm{max-width:420px}
.confirm-modal__message{margin:0 0 16px;font-size:.78rem;line-height:1.55;color:var(--ink);white-space:pre-line}
#confirmModalBackdrop{z-index:500}
.user-email-link{
  border:none;background:none;padding:0;margin:0;
  color:var(--primary);font:inherit;font-weight:700;cursor:pointer;
  text-decoration:underline;text-underline-offset:2px;text-align:left;
}
.user-email-link:hover{color:var(--secondary)}
.points-delta--pos{color:var(--ok,#059669);font-weight:800}
.points-delta--neg{color:var(--err);font-weight:800}
.ledger-pager{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;
  margin-top:10px;padding-top:10px;border-top:1px solid var(--border);
}
.ledger-pager__info{font-size:.72rem;color:var(--muted);font-weight:600}
.ledger-pager__actions{display:flex;align-items:center;gap:8px}
.ledger-pager__page{font-size:.72rem;font-weight:800;color:var(--ink);min-width:88px;text-align:center}
.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.modal-form .full-width{grid-column:1/-1}
.modal-field label{display:block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.modal-field input[type=text],.modal-field input[type=datetime-local],.modal-field select{width:100%;margin:0}
.modal-field input[type=datetime-local]{font-variant-numeric:tabular-nums;cursor:pointer}
.modal-field input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.65;filter:invert(28%) sepia(85%) saturate(4200%) hue-rotate(8deg)}
.modal-field .field-hint{font-size:.68rem;color:var(--muted);margin:6px 0 0;font-weight:600;line-height:1.4}
.option-picks{display:flex;flex-wrap:wrap;gap:6px}
.option-pick{
  padding:7px 11px;border-radius:999px;border:1.5px solid var(--border);
  background:var(--surface,#fff);color:var(--ink);font-size:.72rem;font-weight:700;
  cursor:pointer;transition:border-color .15s,background .15s,color .15s;
}
.option-pick:hover{border-color:rgba(var(--primary-rgb),.35)}
.option-pick--active{
  border-color:var(--primary);background:rgba(var(--primary-rgb),.1);color:var(--primary);
}
.option-pick-hint{font-size:.72rem;color:var(--muted);font-weight:600;padding:4px 0}
.option-pick-hint--warn{color:var(--err);font-weight:800}
.match-pick-stats{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.match-pick-stat{
  font-size:.68rem;font-weight:800;padding:3px 8px;border-radius:999px;
  background:rgba(var(--primary-rgb),.08);border:1px solid rgba(var(--primary-rgb),.18);color:var(--text);
}
.match-picks-table{margin-top:8px;max-height:180px;overflow:auto;border:1px solid rgba(var(--primary-rgb),.12);border-radius:var(--radius-sm)}
.match-picks-table table{width:100%;font-size:.68rem}
.match-picks-table th,.match-picks-table td{padding:6px 8px;text-align:left;border-bottom:1px solid rgba(var(--primary-rgb),.08)}
.match-picks-table th{background:rgba(var(--primary-rgb),.06);font-weight:800;color:var(--muted)}
.picks-cell-main{font-weight:800;display:block}
.picks-cell-sub{font-size:.65rem;color:var(--muted);margin-top:2px;line-height:1.45;white-space:normal;word-break:break-word;overflow:visible}
.picks-cell-btn{
  border:none;background:none;padding:0;margin:0;cursor:pointer;text-align:left;
  font:inherit;color:inherit;width:100%;border-radius:8px;white-space:normal;overflow:visible;
}
.picks-cell-btn:hover{background:rgba(var(--primary-rgb),.06)}
.picks-cell-btn:disabled{cursor:default;opacity:.55}
.picks-cell-btn:disabled:hover{background:none}
.picks-row--has:hover td{background:rgba(var(--primary-rgb),.04)}
.match-source{
  display:inline-block;padding:3px 9px;border-radius:999px;
  font-size:.62rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;
}
.match-source--espn{
  background:rgba(var(--primary-rgb),.12);color:var(--primary);border:1px solid rgba(var(--primary-rgb),.22);
}
.match-source--manual{
  background:rgba(var(--secondary-rgb),.1);color:var(--secondary);border:1px solid rgba(var(--secondary-rgb),.2);
}
.match-public{
  display:inline-block;padding:3px 9px;border-radius:999px;
  font-size:.62rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;
}
.match-public--live{background:rgba(var(--vi-green-rgb),.12);color:var(--ok);border:1px solid rgba(var(--vi-green-rgb),.25)}
.match-public--draft{background:rgba(250,204,21,.18);color:var(--warn);border:1px solid rgba(217,119,6,.25)}
.match-picks-user{font-weight:700;line-height:1.35}
.stage-count-summary{font-size:.72rem;color:var(--muted);font-weight:700;margin-top:10px;line-height:1.5}
.stage-count-summary span{margin-right:12px;white-space:nowrap}
.stage-count-summary .stage-count--full{color:var(--err)}
.schedule-view-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.schedule-view-bar .schedule-stage-tabs{flex:1 1 auto;margin:0;min-width:0}
.schedule-view-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:0 0 auto}
.schedule-view-toggle .filter-tab{min-width:64px;padding:8px 12px}
.bracket-champion--inline{margin-top:12px;padding:12px 14px}
.schedule-stage-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}
.schedule-stage-toolbar .schedule-stage-tabs{flex:1 1 auto;margin:0;min-width:0}
.schedule-stage-tabs{flex-wrap:wrap}
.schedule-stage-tabs .filter-tab--full:not(.filter-tab--active){border-color:rgba(220,38,38,.35);color:var(--err)}
.bracket-toolbar{margin-bottom:12px}
.bracket-toolbar.toolbar-equal .btn{font-size:.72rem;padding:0 8px}
.bracket-stage-tabs{display:flex;flex-wrap:nowrap;gap:8px;margin:0 0 12px;width:100%}
.bracket-stage-tabs .filter-tab{
  flex:1 1 0;min-width:0;margin:0;padding:8px 4px;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;text-align:center;border-radius:var(--radius-sm);
}
.bracket-stage__actions{display:flex;flex-wrap:nowrap;gap:6px;flex-shrink:0;width:100%;max-width:220px}
.bracket-stage__actions .btn{
  flex:1 1 0;min-width:0;margin:0;padding:5px 6px;font-size:.68rem;
  display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;
}
.bracket-champion{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;
  padding:14px 16px;
  background:linear-gradient(135deg,rgba(250,204,21,.12),rgba(var(--primary-rgb),.08));
  border:2px solid rgba(250,204,21,.35);
}
.bracket-champion h2{margin:0;font-size:.92rem;flex:1 1 auto}
.bracket-champion .card__lead{margin:0;font-size:.7rem;flex:1 1 100%}
.bracket-champion__team{font-size:1.1rem;font-weight:900;color:var(--ink);margin:0}
.bracket-champion__meta{font-size:.72rem;color:var(--muted);font-weight:600}
.bracket-stages-grid{display:block}
.bracket-stage-panel{padding:12px 14px 14px}
.bracket-stage-tabs{margin:0 0 12px}
.bracket-stage{margin-bottom:0;padding:0;border:none;box-shadow:none;background:transparent}
.bracket-stage-panel > .card.bracket-stage{padding:0}
.bracket-stage__head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.bracket-stage__head h3{margin:0;font-size:.88rem;line-height:1.3}
.bracket-stage__meta{font-size:.66rem;color:var(--muted);font-weight:700;margin-top:2px}
.bracket-stage--empty .bracket-stage__empty{font-size:.7rem;color:var(--muted);font-weight:600;padding:8px 0;margin:0}
.bracket-matches{
  display:grid;gap:6px;max-height:min(55vh,520px);overflow-y:auto;padding-right:2px
}
.bracket-matches--dense{grid-template-columns:repeat(2,minmax(0,1fr))}
.bracket-match-row{
  display:flex;flex-direction:column;gap:5px;min-width:0;
  padding:7px 9px;border-radius:10px;
  background:var(--bg-soft);border:1px solid var(--border);
}
.bracket-match-row__teams{
  font-weight:800;color:var(--ink);font-size:.74rem;line-height:1.25;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.bracket-match-row__meta{font-size:.66rem;color:var(--muted);font-weight:600;line-height:1.35}
.bracket-match-row__actions{display:flex;flex-wrap:wrap;gap:3px}
.bracket-match-row__actions .btn--xs{padding:3px 6px;font-size:.62rem}
.bracket-tag{display:inline-block;font-size:.58rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;background:rgba(var(--primary-rgb),.1);color:var(--primary);margin-left:6px}
.bracket-tag--muted{background:var(--bg-soft);color:var(--muted)}
@media(max-width:1100px){
  .bracket-matches--dense{grid-template-columns:1fr}
  .toolbar-equal{flex-wrap:wrap}
  .toolbar-equal .btn{flex:1 1 calc(33.333% - 6px);min-width:108px}
  #panel-schedule .toolbar-equal .btn{flex:1 1 calc(50% - 4px);min-width:140px}
  .bracket-stage-tabs{flex-wrap:wrap}
  .bracket-stage-tabs .filter-tab{flex:1 1 calc(20% - 7px);min-width:72px}
}
.modal-actions{display:flex;flex-wrap:nowrap;gap:8px;margin-top:14px;width:100%}
.modal-actions .btn{
  flex:1 1 0;min-width:0;height:40px;padding:0 6px;margin:0;
  font-size:.72rem;font-weight:800;line-height:1.1;
  display:inline-flex;align-items:center;justify-content:center;
  white-space:nowrap;text-align:center;
}

@media(max-width:900px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{
    position:fixed;left:0;top:0;bottom:0;z-index:160;
    width:min(var(--sidebar-w),88vw);max-width:min(var(--sidebar-w),88vw);
    transform:translateX(-105%);transition:transform .28s ease;
    box-shadow:8px 0 32px rgba(var(--ink-rgb),.12);
  }
  .sidebar--open{transform:translateX(0)}
  .sidebar__close{display:flex}
  .app-header__menu{display:flex}
  .app-header{padding:0 16px}
  .page-head,.content{padding-left:16px;padding-right:16px}
}
