/* EvensPro — shared auth & shell styles · light + dark */
:root{
  --bg:#F6F7FA; --card:#FFFFFF; --line:#E9EBF1; --line2:#F1F3F7;
  --txt:#101322; --mut:#697086; --mut2:#A3A9BC;
  --vio:#6C5CE7; --vio2:#8B5CF6; --cyn:#06B6D4; --vio-t:#F0EEFE; --vio-d:#5A49D8;
  --grn:#12B886; --grn-t:#E6F8F1; --grn-d:#0B7C5C;
  --ros:#F0435F; --ros-t:#FEECEF; --ros-d:#C21E3F;
  --amb-t:#FEF4E2; --amb-d:#B45309;
  --sh:0 1px 2px rgba(16,19,34,.05),0 14px 40px -18px rgba(16,19,34,.16);
  --field:#FFFFFF; --fieldline:#DCE0EA;
}
[data-theme="dark"]{
  --bg:#0D0F17; --card:#151826; --line:#242938; --line2:#1E2230;
  --txt:#EEF0F8; --mut:#9BA1B5; --mut2:#646B80;
  --vio-t:#262347; --vio-d:#A79BFF; --grn-t:#123528; --grn-d:#3ADFA9;
  --ros-t:#3D1620; --ros-d:#FF7D93; --amb-t:#3A2B10; --amb-d:#FFC163;
  --sh:0 1px 2px rgba(0,0,0,.4),0 16px 44px -20px rgba(0,0,0,.6);
  --field:#0F1220; --fieldline:#2B3142;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--txt);font-size:14px;-webkit-font-smoothing:antialiased}
a{color:var(--vio-d);text-decoration:none}a:hover{text-decoration:underline}

/* ---- theme toggle (top-right) ---- */
.themebtn{position:fixed;top:18px;right:18px;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--mut);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--sh);z-index:20}
.themebtn:hover{color:var(--txt)}.themebtn svg{width:21px;height:21px;stroke-width:1.9}

/* ---- auth screen ---- */
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.authcard{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--sh);padding:30px 30px 26px}
.brandrow{display:flex;align-items:center;gap:11px;margin-bottom:22px}
.brandrow .mark{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--vio),var(--cyn));display:flex;align-items:center;justify-content:center;color:#fff;font-family:"Plus Jakarta Sans",Inter,sans-serif;font-weight:800;font-size:20px;box-shadow:0 6px 16px -6px rgba(108,92,231,.6)}
.brandrow b{font-family:"Plus Jakarta Sans",Inter,sans-serif;font-weight:800;font-size:17px;letter-spacing:-.3px;display:block;line-height:1.1}
.brandrow s{text-decoration:none;font-size:12px;color:var(--mut)}
.authcard h1{font-family:"Plus Jakarta Sans",Inter,sans-serif;font-size:21px;font-weight:800;letter-spacing:-.4px;margin-bottom:4px}
.authcard .lead{font-size:13px;color:var(--mut);margin-bottom:20px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px;color:var(--txt)}
.field input{width:100%;background:var(--field);border:1px solid var(--fieldline);border-radius:11px;padding:11px 13px;font-size:14px;color:var(--txt);font-family:inherit;transition:.15s}
.field input:focus{outline:none;border-color:var(--vio);box-shadow:0 0 0 3px var(--vio-t)}
.row{display:flex;align-items:center;justify-content:space-between;margin:4px 0 18px}
.remember{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--mut)}
.remember input{width:16px;height:16px;accent-color:var(--vio)}
.btn{width:100%;background:linear-gradient(135deg,var(--vio),var(--vio2));color:#fff;font-weight:600;font-size:14.5px;border:none;border-radius:11px;padding:12px;cursor:pointer;font-family:inherit;box-shadow:0 10px 22px -10px rgba(108,92,231,.75);transition:.15s}
.btn:hover{filter:brightness(1.06)}
.alt{text-align:center;font-size:13px;color:var(--mut);margin-top:18px}
.msg{border-radius:11px;padding:11px 13px;font-size:13px;margin-bottom:16px;line-height:1.4}
.msg.err{background:var(--ros-t);color:var(--ros-d)}
.msg.ok{background:var(--grn-t);color:var(--grn-d)}
.msg.info{background:var(--amb-t);color:var(--amb-d)}
.divider{display:flex;align-items:center;gap:10px;color:var(--mut2);font-size:11.5px;margin:18px 0}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.val{color:var(--ros-d);font-size:12px;margin-top:5px;display:block}

/* ---- protected shell (placeholder home) ---- */
.shell{min-height:100vh;display:flex;flex-direction:column}
.bar{display:flex;align-items:center;gap:12px;padding:14px 26px;background:var(--card);border-bottom:1px solid var(--line)}
.bar .mark{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--vio),var(--cyn));display:flex;align-items:center;justify-content:center;color:#fff;font-family:"Plus Jakarta Sans",Inter,sans-serif;font-weight:800;font-size:16px}
.bar b{font-family:"Plus Jakarta Sans",Inter,sans-serif;font-weight:800;font-size:15px}
.bar .grow{flex:1}
.bar .who{font-size:12.5px;color:var(--mut);margin-right:6px}
.bar .out{font-size:12.5px;font-weight:600;color:var(--vio-d);border:1px solid var(--line);border-radius:10px;padding:7px 13px;background:var(--card);cursor:pointer}
.shell main{flex:1;padding:34px 26px;max-width:1000px;margin:0 auto;width:100%}
.welcome{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--sh);padding:28px}
.welcome h2{font-family:"Plus Jakarta Sans",Inter,sans-serif;font-size:22px;font-weight:800;letter-spacing:-.4px;margin-bottom:6px}
.welcome p{color:var(--mut);font-size:14px;line-height:1.6;max-width:640px}
.pillrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.pill{font-size:12px;font-weight:600;background:var(--vio-t);color:var(--vio-d);border-radius:20px;padding:5px 12px}
.note{margin-top:20px;font-size:12.5px;color:var(--mut);border-top:1px solid var(--line);padding-top:16px}

/* ===== Admin shell (sidebar) — Phase 2 ===== */
.adm{display:flex;min-height:100vh}
.adm-side{width:220px;background:var(--card);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}
.adm-brand{display:flex;align-items:center;gap:10px;padding:18px 18px 12px}
.adm-brand .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--vio),var(--cyn));display:flex;align-items:center;justify-content:center;color:#fff;font-family:"Plus Jakarta Sans",Inter;font-weight:800;font-size:17px}
.adm-brand b{font-family:"Plus Jakarta Sans",Inter;font-weight:800;font-size:15px}
.adm-nav{flex:1;padding:6px 12px}
.adm-nav a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:9px;font-size:13px;font-weight:500;color:var(--mut);margin-bottom:2px}
.adm-nav a:hover{background:var(--bg);color:var(--txt);text-decoration:none}
.adm-nav a.on{background:var(--vio-t);color:var(--vio-d);font-weight:600}
.adm-nav a svg{width:17px;height:17px}
.adm-user{display:flex;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid var(--line)}
.adm-user .av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--cyn),var(--vio));color:#fff;font-weight:700;font-size:11.5px;display:flex;align-items:center;justify-content:center}
.adm-user b{display:block;font-size:12.5px}.adm-user s{text-decoration:none;font-size:11px;color:var(--mut)}
.adm-main{flex:1;min-width:0;display:flex;flex-direction:column}
.adm-top{display:flex;align-items:center;gap:12px;padding:14px 26px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.adm-top h1{font-family:"Plus Jakarta Sans",Inter;font-size:19px;font-weight:800;letter-spacing:-.3px}
.adm-top .grow{flex:1}
.adm-body{padding:24px 32px 48px;width:100%}

.btnp{display:inline-flex;align-items:center;gap:7px;background:linear-gradient(135deg,var(--vio),var(--vio2));color:#fff;font-weight:600;font-size:13px;border:none;border-radius:10px;padding:9px 15px;cursor:pointer;text-decoration:none;box-shadow:0 8px 18px -9px rgba(108,92,231,.7)}
.btnp:hover{filter:brightness(1.06);text-decoration:none}
.btns{display:inline-flex;align-items:center;gap:6px;background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:8px 13px;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none}
.btns:hover{background:var(--bg);text-decoration:none}
.btnd{color:var(--ros-d);border-color:var(--ros-t)}

/* table */
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh);overflow:hidden}
.etbl{width:100%;border-collapse:collapse}
.etbl th{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--mut2);text-align:left;padding:13px 18px;border-bottom:1px solid var(--line2)}
.etbl td{padding:14px 18px;border-bottom:1px solid var(--line2);font-size:13px}
.etbl tr:last-child td{border-bottom:none}
.etbl tr:hover td{background:var(--bg)}
.etbl a.title{font-weight:600;color:var(--txt)}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;border-radius:16px;padding:3px 10px}
.badge i{width:6px;height:6px;border-radius:50%}
.b-draft{background:var(--amb-t);color:var(--amb-d)}.b-draft i{background:#F59E0B}
.b-pub{background:var(--grn-t);color:var(--grn-d)}.b-pub i{background:var(--grn)}
/* Archived: neutral, so it reads as a state rather than a warning. */
.b-arch{background:rgba(127,127,127,.16);color:var(--mut)}.b-arch i{background:var(--mut)}
.b-end{background:var(--line2);color:var(--mut)}.b-end i{background:var(--mut2)}
.b-cancel{background:var(--ros-t);color:var(--ros-d)}.b-cancel i{background:var(--ros)}

/* form card */
.formcard{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh);padding:24px}
.formcard h3{font-family:"Plus Jakarta Sans",Inter;font-size:15px;font-weight:700;margin-bottom:16px}
.grid2c{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.fld{margin-bottom:16px}
.fld label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}
.fld input,.fld textarea,.fld select{width:100%;background:var(--field);border:1px solid var(--fieldline);border-radius:10px;padding:10px 12px;font-size:14px;color:var(--txt);font-family:inherit}
.fld textarea{min-height:96px;resize:vertical}
.fld input:focus,.fld textarea:focus,.fld select:focus{outline:none;border-color:var(--vio);box-shadow:0 0 0 3px var(--vio-t)}
.fld .hint{font-size:11.5px;color:var(--mut);margin-top:5px}
.actionsbar{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}
.actionsbar .grow{flex:1}
.emptybox{background:var(--card);border:1px dashed var(--line);border-radius:16px;padding:44px;text-align:center;color:var(--mut)}
.emptybox h3{font-family:"Plus Jakarta Sans",Inter;color:var(--txt);font-size:17px;margin-bottom:6px}

/* ===== Key-value tables (reports/finance) — Phase 7D ===== */
table.kv{width:100%;border-collapse:collapse;font-size:13.5px}
table.kv td{padding:7px 0;border-bottom:1px solid var(--line2)}
table.kv td:last-child{text-align:right;font-variant-numeric:tabular-nums}
table.kv tr:last-child td{border-bottom:none}

/* ===== Graphical dashboard + event switcher ===== */
.dash-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.dash-head .grow{flex:1}
.dash-eyebrow{font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--mut)}
.dash-title{font-family:"Plus Jakarta Sans",Inter;font-size:22px;font-weight:800;letter-spacing:-.4px;margin-top:2px}
.dash-hint{font-size:12.5px;color:var(--mut)}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:20px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--sh)}
.kpi .lbl{font-size:11px;color:var(--mut);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.kpi .num{font-size:26px;font-weight:800;font-family:"Plus Jakarta Sans",Inter;margin-top:6px;color:var(--txt);line-height:1.1}

.charts{display:grid;grid-template-columns:2fr 1fr;gap:14px}
.chartcard{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:var(--sh);min-width:0}
.chartcard h3{font-size:14px;font-weight:700;margin-bottom:14px}
.chartcard-wide{grid-column:1 / -1}
.att-legend{text-align:center;font-size:12.5px;color:var(--mut);margin-top:10px}
@media (max-width:900px){ .charts{grid-template-columns:1fr} }

.evtsw{display:flex;align-items:center;gap:8px;margin:0;background:var(--field,#f2f3f8);border:1px solid var(--line);border-radius:11px;padding:5px 8px}
.evtsw svg{width:16px;height:16px;color:var(--mut);flex-shrink:0}
.evtsw select{border:none;background:transparent;color:var(--txt);font-family:inherit;font-size:13px;font-weight:600;max-width:220px;cursor:pointer;outline:none}
.evtsw-new{font-size:12px;font-weight:700;color:var(--vio-d);white-space:nowrap;padding-left:6px;border-left:1px solid var(--line)}
.evtsw-new:hover{text-decoration:none;filter:brightness(1.1)}

/* ===== Grouped sidebar navigation ===== */
.adm-nav{flex:1;overflow-y:auto;padding-bottom:10px}
.adm-nav::-webkit-scrollbar{width:6px}
.adm-nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.nav-grp{font-size:10px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;color:var(--mut2);padding:13px 12px 5px}
.nav-grp:first-of-type{padding-top:6px}

/* ===== POS ===== */
.pos-total{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--mut)}
.pos-total b{font-size:22px;font-weight:800;font-family:"Plus Jakarta Sans",Inter;color:var(--txt)}

/* ===== Team / role badges ===== */
.badge.b-role{background:var(--vio-t);color:var(--vio-d)}


/* ===== Rich-text editor (richtext.js) ===== */
.rte-wrap{border:1px solid var(--fieldline,var(--line));border-radius:11px;overflow:hidden;background:var(--field,#fff)}
.rte-tb{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;border-bottom:1px solid var(--line);background:rgba(127,127,127,.05)}
.rte-b{border:1px solid transparent;background:transparent;color:var(--txt);border-radius:7px;padding:4px 9px;font-size:12.5px;cursor:pointer;font-family:inherit;line-height:1.2}
.rte-b:hover{background:rgba(127,127,127,.14)}
.rte-sep{width:1px;height:18px;background:var(--line);margin:0 4px}
.rte-ed{min-height:120px;padding:12px 14px;font-size:14px;line-height:1.6;color:var(--txt);outline:none}
.rte-ed:focus{box-shadow:inset 0 0 0 2px rgba(108,92,231,.25)}
.rte-ed h2{font-size:19px;margin:.4em 0 .3em}.rte-ed h3{font-size:16px;margin:.4em 0 .3em}
.rte-ed p{margin:.5em 0}.rte-ed ul,.rte-ed ol{margin:.5em 0 .5em 1.4em}
.rte-ed a{color:var(--vio)}

/* ===== Image upload widget (imageupload.js) ===== */
.imgup{display:flex;flex-direction:column;gap:8px}
.imgup-row{display:flex;gap:8px;align-items:stretch}
.imgup-url{flex:1;min-width:0}
.imgup-btn{white-space:nowrap;border:1px solid var(--line);background:rgba(127,127,127,.06);color:var(--txt);border-radius:11px;padding:0 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.imgup-btn:hover{background:rgba(127,127,127,.14)}
.imgup-btn:disabled{opacity:.6;cursor:default}
.imgup-prev img{max-height:120px;max-width:220px;border-radius:10px;border:1px solid var(--line);object-fit:cover;display:block}

/* ---- Row action icons (edit / delete) ---- */
.rowacts{display:inline-flex;gap:6px;align-items:center;justify-content:flex-end}
.rowacts form{display:inline;margin:0}
.btnicon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;
  border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--mut);cursor:pointer;
  transition:.15s;line-height:0}
.btnicon svg{width:15px;height:15px;display:block}
.btnicon:hover{border-color:var(--vio);color:var(--vio);background:var(--field)}
.btnicon.danger:hover{border-color:var(--ros-d,#e35d6a);color:var(--ros-d,#e35d6a)}
.swal2-container{z-index:99999}

/* ---- Card action row (event cards): equal-width, equal-height icon buttons ---- */
.cardacts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}
.cardacts.two{grid-template-columns:repeat(2,1fr)}
.cardacts form{margin:0;display:block;min-width:0}
.cardact{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:36px;padding:0 8px;
  border:1px solid var(--line);border-radius:10px;background:var(--card);color:inherit;
  font-family:inherit;font-size:12.5px;font-weight:600;line-height:1;cursor:pointer;
  text-decoration:none;box-sizing:border-box;white-space:nowrap;transition:.15s}
.cardact svg{width:14px;height:14px;flex-shrink:0}
.cardact:hover{border-color:var(--vio);color:var(--vio);background:var(--field)}
.cardact.danger{color:#e35d6a}
.cardact.danger:hover{border-color:#e35d6a;color:#e35d6a;background:rgba(227,93,106,.08)}
@media (max-width:420px){ .cardact span{display:none} .cardact{gap:0} }

/* ================= Admin auth: split brand / form panel ================= */
.authsplit{width:100%;max-width:900px;display:grid;grid-template-columns:0.95fr 1.05fr;
  background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:var(--sh)}
.authbrand{background:#101B33;padding:32px 30px;display:flex;flex-direction:column;color:#fff}
.authbrand-logo{height:46px;width:auto;display:block;margin-bottom:22px}
.authbadge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;width:fit-content;
  background:rgba(249,161,27,.14);color:#F9A11B;font-size:10.5px;font-weight:700;letter-spacing:.6px;
  text-transform:uppercase;margin-bottom:14px}
.authbrand h2{font-family:"Plus Jakarta Sans",Inter;font-size:20px;font-weight:800;margin:0 0 8px;color:#fff}
.authbrand p{font-size:13px;line-height:1.6;color:#AFB6CC;margin:0 0 26px}
.authpts{display:flex;flex-direction:column;gap:17px}
.authpt{display:flex;gap:12px;align-items:flex-start}
.authpt i{width:32px;height:32px;border-radius:9px;background:rgba(249,161,27,.15);border:1px solid rgba(249,161,27,.28);color:#F9A11B;
  display:flex;align-items:center;justify-content:center;flex-shrink:0}
.authpt i svg{width:16px;height:16px}
.authpt b{display:block;font-size:13.5px;font-weight:700;color:#fff;margin-bottom:3px}
.authpt s{text-decoration:none;font-size:12.5px;color:#98A0B8;line-height:1.55}
.authbrand-foot{margin-top:auto;padding-top:22px;font-size:11.5px;color:#6F7893}
.authform{padding:34px 36px;display:flex;flex-direction:column;justify-content:center}
.authform h1{font-family:"Plus Jakarta Sans",Inter;font-size:22px;font-weight:800;margin:0 0 4px}
.authform .lead{font-size:13px;color:var(--mut);margin:0 0 22px}
.authform .field input{font-size:15px;min-height:44px}
.authform .btn{min-height:46px;font-size:15px}
.pwwrap{position:relative;display:flex;align-items:center}
.pwwrap input{flex:1;padding-right:46px}
.pweye{position:absolute;right:8px;width:32px;height:32px;border:0;background:none;color:var(--mut);
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.pweye svg{width:18px;height:18px}
.pweye:hover{color:var(--vio)}
.authsep{display:flex;align-items:center;gap:10px;margin:20px 0 12px}
.authsep span{flex:1;height:1px;background:var(--line)}
.authsep b{font-size:11px;font-weight:600;color:var(--mut);text-transform:uppercase;letter-spacing:.5px}
.authdemo{padding:12px 14px;border:1px dashed var(--line);border-radius:12px;
  background:rgba(127,127,127,.05);font-size:12.5px;line-height:1.55}
.authdemo code{background:rgba(127,127,127,.15);padding:1px 5px;border-radius:4px}
.authdemo button{display:block;width:100%;text-align:left;border:0;background:none;padding:6px 0;
  font:inherit;font-size:12.5px;color:var(--vio-d);font-weight:600;cursor:pointer}
.authdemo button span{color:var(--mut);font-weight:500}
.authdemo button:hover{text-decoration:underline}
@media (max-width:860px){
  .authsplit{grid-template-columns:1fr;max-width:440px}
  .authbrand{padding:20px 22px;flex-direction:row;align-items:center;gap:14px}
  .authbrand-logo{height:30px;margin:0}
  .authbrand h2{font-size:15px;margin:0}
  .authpts,.authbrand-foot,.authbrand p,.authbadge{display:none}
  .authform{padding:24px 22px}
}

/* ---- Sidebar: real logo + nav icons ---- */
.adm-brand img.admlogo{width:auto}
.adm-nav a i.ico,.adm-nav .ico{display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;flex-shrink:0;color:var(--mut)}
.adm-nav .ico svg{width:16px;height:16px}
.adm-nav a.on .ico{color:#BA7517}

/* ---- Dashboard: alerts + recent orders + KPI deltas ---- */
.kpi .delta{font-size:11px;margin-top:3px;color:var(--mut)}
.kpi .delta.up{color:#1D9E75}
.kpi .delta.warn{color:#BA7517}
.dashrow{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media (max-width:900px){ .dashrow{grid-template-columns:1fr} }
.alist{font-size:13px}
.alist a,.alist .arow{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--line2);
  text-decoration:none;color:inherit}
.alist a:first-child,.alist .arow:first-child{border-top:0}
.alist a:hover{color:var(--vio-d)}
.alist .ic{width:18px;height:18px;flex-shrink:0}
.alist .ic svg{width:16px;height:16px}
.alist .grow{flex:1}
.alist .cnt{font-weight:700}
.alist .chev{color:var(--mut);width:14px;height:14px}
.alist .chev svg{width:14px;height:14px}
.dashclear{display:flex;align-items:center;gap:8px;padding:14px 0;font-size:13px;color:var(--mut)}

/* Logo variant swap: both ship in the markup, CSS picks one so there is no load flash. */
/* One logo at a time. Both variants are the same height so the brand never
   jumps when the theme changes; the dark file is a white wordmark, so if it
   leaks into light mode only its orange mark shows and it reads as a stray icon. */
.brandlogo{width:auto}
/* The two files have different aspect ratios (5.56 vs 3.8) because the dark
   artwork carries vertical padding. Heights are set so the visible wordmark is
   the same width in both themes (28x5.56 = 41x3.8 = 156px) and never jumps. */
.adm-brand img.admlogo.light{height:28px;display:block}
.adm-brand img.admlogo.dark{height:41px;display:none}
[data-theme="dark"] .adm-brand img.admlogo.light{display:none}
[data-theme="dark"] .adm-brand img.admlogo.dark{display:block}
.adm-brand{display:flex;align-items:center;gap:9px}

/* ---- Full-page auth: image panel left, form right ---- */
/* ================= Full-page login: image left, form right ================= */
.auth.authfull{padding:0;display:grid;grid-template-columns:1.05fr 1fr;align-items:stretch;min-height:100vh}

/* Brand panel. The seat artwork is decoration, not the subject: it sits under a
   near-opaque wash with two soft brand glows, so it reads as depth and never
   competes with the copy. Scaled and anchored rather than centre-cropped, which
   is what made the outlines look like stray empty boxes. */
.authpane-img{position:relative;background:#0A1122;display:flex;align-items:center;
  justify-content:center;padding:56px 52px;overflow:hidden}
.authpane-img::before{content:"";position:absolute;inset:0;
  background:url('/img/login-hero.jpg') right -6% center/auto 118% no-repeat;
  opacity:.16;filter:saturate(.7)}
.authpane-img::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(680px 420px at 12% 18%, rgba(249,161,27,.16), transparent 62%),
    radial-gradient(760px 520px at 88% 88%, rgba(108,92,231,.22), transparent 66%),
    linear-gradient(155deg, rgba(10,17,34,.55), rgba(10,17,34,.88))}
.authpane-in{position:relative;z-index:1;width:100%;max-width:404px;color:#fff}
.authpane-logo{height:40px;width:auto;display:block;margin-bottom:26px}
.authpane-in h2{font-family:"Plus Jakarta Sans",Inter;font-size:29px;font-weight:800;
  line-height:1.22;letter-spacing:-.4px;margin:0 0 10px;color:#fff}
.authpane-in p{font-size:14px;line-height:1.65;color:#B6BDD2;margin:0 0 30px}
.authpane-foot{margin-top:32px;padding-top:18px;border-top:1px solid rgba(255,255,255,.09);
  font-size:12px;color:#8F98B2}
.authpane-form{display:flex;align-items:center;justify-content:center;padding:44px 36px;background:var(--bg)}
.authpane-box h1{font-family:"Plus Jakarta Sans",Inter;font-size:25px;font-weight:800;letter-spacing:-.3px;margin:0 0 4px}
.authpane-box .lead{font-size:13.5px;color:var(--mut);margin:0 0 24px}
.authpane-box .field input{font-size:14.5px;min-height:44px}
.authpane-box .btn{min-height:46px;font-size:14.5px}
/* The form sits on a card so it reads as a distinct surface rather than
   floating on an empty white field. */
.authpane-box{width:100%;max-width:384px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:34px 30px;box-shadow:0 22px 50px -32px rgba(16,27,51,.42)}

@media (max-width:1100px){ .auth.authfull{grid-template-columns:1fr 1fr} }
@media (max-width:960px){
  .auth.authfull{grid-template-columns:1fr;min-height:100vh}
  .authpane-img{min-height:132px;padding:20px 24px;align-items:center;justify-content:flex-start}
  .authpane-in h2,.authpane-in p,.authpts,.authpane-foot,.authbadge{display:none}
  .authpane-logo{height:28px;margin:0}
  .authpane-form{padding:26px 20px;align-items:flex-start}
  .authpane-box{padding:26px 22px;border:none;box-shadow:none;background:transparent}
}

/* Brand primary button — the default .btn is a violet gradient from the old theme,
   which fights the orange logo and badge on this page. */
.btn.btn-brand{background:#F9A11B;color:#412402;box-shadow:none;font-weight:700}
.btn.btn-brand:hover{background:#e9950f}

/* Demo account rows */
.authdemo{padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:transparent}
.demorow{display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border:0;
  border-bottom:1px solid var(--line);background:none;font:inherit;cursor:pointer;text-align:left}
.demorow:hover{background:var(--field)}
.demorow .e{flex:1;font-size:12.5px;font-weight:600;color:var(--vio-d);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.demorow .chip{font-size:10.5px;font-weight:600;padding:2px 9px;border-radius:999px;
  background:rgba(127,127,127,.14);color:var(--mut);white-space:nowrap}
.demorow .chip.mgr{background:rgba(249,161,27,.16);color:#BA7517}
.demonote{padding:7px 12px;font-size:11px;color:var(--mut)}
.demonote code{background:rgba(127,127,127,.15);padding:1px 5px;border-radius:4px;font-size:10.5px}

/* Theme toggle on the auth pages: a defined control rather than a floating icon */
.auth.authfull ~ .themebtn,.authfull .themebtn{top:16px;right:18px}

/* ================= Exhibition booths ================= */
.boothwrap{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:1100px){ .boothwrap{grid-template-columns:1fr} }

.boothplan{position:relative;display:block;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.boothplan>img{display:block;width:100%;height:auto}
/* Booths are absolutely placed as a percentage of the plan, so the overlay scales with it. */
.boothpin{position:absolute;display:flex;align-items:center;justify-content:center;
  min-width:20px;min-height:16px;border-radius:5px;font-size:10.5px;font-weight:800;
  text-decoration:none;border:2px solid;transition:.12s;overflow:hidden}
.boothpin.free{background:rgba(29,158,117,.22);border-color:#1D9E75;color:#0a5f45}
.boothpin.sold{background:rgba(227,93,106,.24);border-color:#e35d6a;color:#8c2733}
.boothpin:hover{transform:scale(1.12);z-index:3;box-shadow:0 6px 16px -6px rgba(0,0,0,.45)}
.boothpin.on{outline:3px solid #F9A11B;outline-offset:1px;z-index:4}

.boothkey{display:flex;gap:16px;margin-top:10px;font-size:12px;color:var(--mut)}
.boothkey i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;border:2px solid}
.boothkey .k-free{background:rgba(29,158,117,.22);border-color:#1D9E75}
.boothkey .k-sold{background:rgba(227,93,106,.24);border-color:#e35d6a}

.boothsold{background:var(--field);border:1px solid var(--line);border-radius:12px;padding:13px 15px}
.boothfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:11px}
.boothfacts>div{display:flex;flex-direction:column;gap:2px}
.boothfacts span{font-size:11px;color:var(--mut)}
.boothfacts b{font-size:13px}
.ordstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.ordstats>div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;
  font-size:12.5px;color:var(--mut);display:flex;flex-direction:column;gap:2px}
.ordstats span{font-family:"Plus Jakarta Sans",Inter;font-size:21px;font-weight:800;color:var(--txt);line-height:1.15}
.planprev{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:13px 15px;background:var(--field)}
.planprev-head{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:6px}
.mutedsm{font-size:12px;color:var(--mut)}
.planrow{font-size:12.5px;padding:6px 10px;border-radius:8px;margin-bottom:6px}
.planrow.ok{background:#e8f7ef;color:#0a7d33}
.planrow.warn{background:rgba(249,161,27,.16);color:#8a5a00}
.planrow.danger{background:#fdecec;color:#a32b2b}
.boothpin.held{background:rgba(108,92,231,.22);border-color:#6C5CE7;color:#3f35a8}
.boothpin.asked{background:rgba(249,161,27,.24);border-color:#F9A11B;color:#8a5a00}
.boothkey .k-held{background:rgba(108,92,231,.22);border-color:#6C5CE7}
.boothkey .k-asked{background:rgba(249,161,27,.24);border-color:#F9A11B}
/* Documents */
.docup{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.docexp{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--field);color:var(--mut)}
.docexp.warn{background:rgba(249,161,27,.16);color:#8a5a00}
.docexp.bad{background:#fdecec;color:#a32b2b}
.doclist{display:flex;flex-direction:column;gap:8px}
.docrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--field)}

/* ================= Meetings calendar ================= */
.calwrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
@media (max-width:1100px){ .calwrap{grid-template-columns:1fr} }
.calhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
.caldow{background:var(--field);padding:8px 6px;text-align:center;font-size:11.5px;font-weight:700;
  letter-spacing:.4px;text-transform:uppercase;color:var(--mut)}
.calday{background:var(--card);min-height:104px;padding:6px 6px 8px;display:flex;flex-direction:column;gap:3px}
.calday.out{background:var(--field);opacity:.55}
.calday.today .caldate{background:#F9A11B;color:#412402;border-radius:50%;width:22px;height:22px;
  display:flex;align-items:center;justify-content:center}
.caldate{font-size:12px;font-weight:700;color:var(--mut);margin-bottom:2px}
.calev{display:block;font-size:11px;line-height:1.3;padding:3px 6px;border-radius:5px;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid}
.calev.ok{background:rgba(29,158,117,.16);border-color:#1D9E75;color:#0a5f45}
.calev.req{background:rgba(249,161,27,.18);border-color:#F9A11B;color:#8a5a00}
.calev:hover{filter:brightness(.96)}
.calmore{font-size:10.5px;color:var(--mut);padding-left:4px}
.calkey{display:flex;gap:16px;margin-top:10px;font-size:12px;color:var(--mut)}
.calkey i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;border:2px solid}
.calkey .k-ok{background:rgba(29,158,117,.16);border-color:#1D9E75}
.calkey .k-req{background:rgba(249,161,27,.18);border-color:#F9A11B}

/* ================= Partner messaging ================= */
.inboxwrap{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:900px){ .inboxwrap{grid-template-columns:1fr} }
.threadlist{display:flex;flex-direction:column;gap:4px}
.threadrow{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:10px;text-decoration:none;color:inherit;transition:.12s}
.threadrow:hover{background:var(--field)}
.threadrow.on{background:rgba(108,92,231,.12);color:var(--vio-d)}
.threadprev{font-size:11.5px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
.unread{background:#e35d6a;color:#fff;font-size:10.5px;font-weight:800;border-radius:999px;padding:1px 7px;min-width:19px;text-align:center}
.msgthread{display:flex;flex-direction:column;gap:9px;max-height:420px;overflow-y:auto;padding:4px}
.msgline{display:flex}
.msgline.us{justify-content:flex-end}
.bubble{max-width:78%;padding:9px 12px;border-radius:14px;font-size:13px;line-height:1.5;background:var(--field);border:1px solid var(--line)}
.msgline.us .bubble{background:rgba(108,92,231,.13);border-color:rgba(108,92,231,.3)}
.bubble .meta{font-size:10.5px;color:var(--mut);margin-top:5px}
.calday[data-day]{cursor:pointer}
.calday[data-day]:hover{background:rgba(108,92,231,.06)}
.calday.out[data-day]:hover{background:var(--field)}
.calev{cursor:pointer}

/* ===== Modal dialog ===== */
.modal-back{position:fixed;inset:0;background:rgba(20,25,50,.5);display:flex;align-items:center;
  justify-content:center;z-index:1000;padding:20px;animation:mfade .15s ease}
.modal-back[hidden]{display:none}
@keyframes mfade{from{opacity:0}to{opacity:1}}
.modal{background:var(--card);border-radius:16px;width:100%;max-width:460px;box-shadow:0 24px 60px -20px rgba(20,25,60,.55);
  animation:mpop .18s ease}
@keyframes mpop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 20px 6px}
.modal-head h3{margin:0;font-size:16px}
.modal-x{appearance:none;background:none;border:none;font-size:24px;line-height:1;color:var(--mut);cursor:pointer;padding:0 4px}
.modal-x:hover{color:var(--ink)}
.modal form{padding:0 20px 20px}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}

/* ===== Documents filter bar ===== */
.docfilter{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.docfilter input[type=search],.docfilter select{padding:7px 10px;border:1px solid var(--line);border-radius:9px;
  background:var(--field);font-size:13px;color:var(--ink)}
.docfilter input[type=search]{min-width:200px;flex:1}
.docfilter-count{font-size:12.5px;color:var(--mut);margin-left:auto}

/* ===== Auth: reset code + denied ===== */
/* Reset has four fields where login has two, so it breathes a little tighter
   to stay on one screen without scrolling on a laptop. */
.authpane-box.tight{padding:28px 26px}
.authpane-box.tight .field{margin-bottom:12px}
.authpane-box.tight .lead{margin-bottom:18px}
/* A one-time code is read digit by digit — space it out and make it unmistakable. */
.otpinput{letter-spacing:.42em;font-family:ui-monospace,Menlo,Consolas,monospace;
  font-size:18px;font-weight:700;text-align:center}
.otpinput::placeholder{letter-spacing:.42em;font-weight:500;opacity:.45}
.deniedic{width:46px;height:46px;flex:none;border-radius:13px;display:flex;align-items:center;
  justify-content:center;background:var(--amb-t);color:var(--amb-d)}
.deniedic svg{width:23px;height:23px}

/* ===== Room editor (Venues + Venue library) ===== */
.roomlist{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
/* Edit form and delete form sit side by side — they cannot nest, so a wrapper
   makes them read as one row. */
.roomitem{display:flex;align-items:flex-end;gap:8px;background:var(--field);
  border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.roomitem:hover{border-color:var(--line-h,var(--line))}
.roomrow{display:flex;align-items:flex-end;gap:10px;flex:1;min-width:0;margin:0;flex-wrap:wrap}
.roomfld{display:flex;flex-direction:column;gap:4px;min-width:0}
.roomfld.grow{flex:1;min-width:150px}
.roomfld.cap{width:110px;flex:none}
.roomfld.meta{width:104px;flex:none}
.roomfld label{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;
  color:var(--mut);white-space:nowrap}
.roomfld input{width:100%;min-width:0}
.roomfld.meta .badge{align-self:flex-start}
.roomnone{font-size:12px;color:var(--mut);padding:6px 0}
.roomacts{display:flex;align-items:center;gap:6px;flex:none}
.roomdel{margin:0;flex:none;display:flex;align-items:flex-end}
/* A disabled Save is the signal that nothing has changed on this row yet. */
.roomsave:disabled{opacity:.45;cursor:default}
.roomsave.dirty{border-color:var(--vio);color:var(--vio-d);font-weight:700}
@media (max-width:720px){
  .roomitem{flex-wrap:wrap}
  .roomfld.cap,.roomfld.meta{width:calc(50% - 5px)}
  .roomacts{margin-left:auto}
}

/* ===== Venue library ===== */
.venuecard{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:18px 20px;margin-bottom:14px}
.venuecard.isdup{border-color:rgba(227,93,106,.45);box-shadow:inset 3px 0 0 #e35d6a}
.venuehead{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.venuetitle{flex:1;min-width:0}
.venuetitle h3{margin:0;font-size:17px;line-height:1.3}
.venueaddr{font-size:12.5px;color:var(--mut);margin-top:3px}
.venuebadges{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
/* Aligned by flex, not by a magic top padding that breaks when a label wraps. */
.venuedel{display:flex;align-items:center;flex:none}
.venueused{font-size:12px;color:var(--mut);margin-top:8px}
.b-dup{background:#fdecec;color:#a32b2b}.b-dup i{background:#e35d6a}

.venueedit{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:14px 0 0;
  padding-top:14px;border-top:1px solid var(--line)}

/* Rooms collapse so a library of venues stays scannable. */
.roomsec{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.roomsec>summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;
  padding:2px 0;user-select:none}
.roomsec>summary::-webkit-details-marker{display:none}
.roomsec>summary::before{content:"";width:0;height:0;border-left:5px solid var(--mut);
  border-top:4px solid transparent;border-bottom:4px solid transparent;transition:transform .15s;flex:none}
.roomsec[open]>summary::before{transform:rotate(90deg)}
.roomsum{font-weight:700;font-size:14px}
.roommeta{font-size:12px;color:var(--mut)}
.roomsec>summary:hover .roomsum{color:var(--vio-d)}

/* ===== Survey send preview ===== */
.sendprev{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--field)}
.sendprev-sub{padding:9px 12px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600;background:var(--card)}
.sendprev-sub span{display:block;font-size:10.5px;font-weight:700;letter-spacing:.4px;
  text-transform:uppercase;color:var(--mut);margin-bottom:2px}
.sendprev-body{margin:0;padding:12px;font-family:inherit;font-size:12.5px;line-height:1.6;
  white-space:pre-wrap;word-break:break-word;color:var(--txt)}

/* ===== Survey scheduled send ===== */
.schedbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;
  border:1px solid rgba(249,161,27,.4);background:rgba(249,161,27,.08);border-radius:12px}
.schedbar .grow{flex:1}
.sendnow{display:flex;align-items:center;gap:8px;font-size:13px;margin:4px 0 2px;cursor:pointer}
.sendnow input{width:auto;margin:0}
