/* OCTFamily — brand stylesheet */
:root{
  --navy:#1B1B7F; --navy-2:#2A2A96; --blue:#376DE6; --teal:#2CD0C6; --teal-ink:#0A6A64; --pink:#E92463; --pink-ink:#B0164A; --sun:#FFD166; --violet:#5A45D6;
  --bg:#F4F5FB; --surface:#FFFFFF; --soft:#F7F8FD; --ink:#17184A; --muted:#5B5E85; --line:#E3E6F2; --line-2:#D5D9EA;
  --ok-bg:#DCF7F4; --ok:#0A6A64; --warn-bg:#FFF1D6; --warn:#8A5300; --bad-bg:#FDE7EF; --bad:#B0164A; --info-bg:#E7EEFF; --info:#2549B8;
  --r:18px; --shadow:0 6px 18px rgba(27,27,127,.07);
  color-scheme:light;
}
:root{
  /* 3.0 d3.8: every fixed light colour has a dark twin (see html[data-theme=dark]) */
  --heading:#1B1B7F; --navy-ink:#1B1B7F; --tint-base:#FFFFFF; --soft-2:#EEF0F7;
  --b-c9cde3:#C9CDE3;
  --b-c9ceea:#C9CEEA;
  --b-d8e1f6:#D8E1F6;
  --b-dce3f7:#DCE3F7;
  --b-e1e4f2:#E1E4F2;
  --b-e3e6f2:#E3E6F2;
  --b-e3e6f3:#E3E6F3;
  --b-eef0f7:#EEF0F7;
  --b-f3c4d3:#F3C4D3;
  --b-f6c2d4:#F6C2D4;
  --b-f8c3da:#F8C3DA;
  --b-ffffff:#FFFFFF;
  --l-c9cde3:#C9CDE3;
  --l-dcf7f4:#DCF7F4;
  --l-e3e9f8:#E3E9F8;
  --l-e3f7f5:#E3F7F5;
  --l-e6f8f1:#E6F8F1;
  --l-e7eaf5:#E7EAF5;
  --l-e7eeff:#E7EEFF;
  --l-eef0f7:#EEF0F7;
  --l-eef0f8:#EEF0F8;
  --l-eef0fb:#EEF0FB;
  --l-eef2ff:#EEF2FF;
  --l-eef3fd:#EEF3FD;
  --l-eef3ff:#EEF3FF;
  --l-effbfa:#EFFBFA;
  --l-f1ecff:#F1ECFF;
  --l-f1f2f7:#F1F2F7;
  --l-f3f0ff:#F3F0FF;
  --l-f3f6ff:#F3F6FF;
  --l-f4f5fb:#F4F5FB;
  --l-f4f6ff:#F4F6FF;
  --l-f5f8ff:#F5F8FF;
  --l-f6eafe:#F6EAFE;
  --l-f6f7fc:#F6F7FC;
  --l-f7f8fc:#F7F8FC;
  --l-f7f8fd:#F7F8FD;
  --l-fbfbfe:#FBFBFE;
  --l-fde7ef:#FDE7EF;
  --l-ffe6b3:#FFE6B3;
  --l-ffe8c8:#FFE8C8;
  --l-ffe9ef:#FFE9EF;
  --l-ffe9f3:#FFE9F3;
  --l-fff0f6:#FFF0F6;
  --l-fff1d6:#FFF1D6;
  --l-fff1e0:#FFF1E0;
  --l-fff2f7:#FFF2F7;
  --l-fff3e3:#FFF3E3;
  --l-fff4e8:#FFF4E8;
  --l-fff6dd:#FFF6DD;
  --l-fff7e3:#FFF7E3;
  --l-fff7ec:#FFF7EC;
  --l-fffbf4:#FFFBF4;
  --t-0a6a64:#0A6A64;
  --t-0b1640:#0B1640;
  --t-0b6b65:#0B6B65;
  --t-0b7a55:#0B7A55;
  --t-0fa59d:#0FA59D;
  --t-111433:#111433;
  --t-1b1b3a:#1B1B3A;
  --t-1b1b7f:#1B1B7F;
  --t-2549b8:#2549B8;
  --t-2b2e52:#2B2E52;
  --t-376de6:#376DE6;
  --t-3d4166:#3D4166;
  --t-4a4e75:#4A4E75;
  --t-4b2db8:#4B2DB8;
  --t-5b6085:#5B6085;
  --t-5c3700:#5C3700;
  --t-5d6290:#5D6290;
  --t-6b6f92:#6B6F92;
  --t-7a2e9e:#7A2E9E;
  --t-8a5300:#8A5300;
  --t-8a8dae:#8A8DAE;
  --t-b0164a:#B0164A;
  --t-d6245c:#D6245C;
  --t-d88400:#D88400;
  --t-e92463:#E92463;
  --t-f49723:#F49723;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 Carlito,Calibri,"Segoe UI",system-ui,sans-serif}
h1,h2,h3,h4{font-family:Poppins,"Segoe UI",sans-serif;color:var(--heading);margin:0;line-height:1.15}
h1{font-size:32px;font-weight:800} h2{font-size:21px;font-weight:700} h3{font-size:18px;font-weight:700}
p{margin:0}
a{color:var(--blue);text-decoration:none} a:hover{color:var(--heading)}
img{max-width:100%}
.ico{flex:none;vertical-align:middle}
.muted{color:var(--muted)} .small{font-size:14px} .tiny{font-size:13px}
.hide{display:none!important}
:focus-visible{outline:3px solid var(--teal);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ── Shell ───────────────────────── */
.shell{display:grid;grid-template-columns:256px minmax(0,1fr);min-height:100vh}
.side{background:var(--navy);color:#D9DDFF;padding:24px 16px 20px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow:auto}
.side .brand{display:flex;flex-direction:column;gap:8px;padding:0 8px}
.side .brand img.fam{width:190px}
.side .brand .by{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:1.4px;text-transform:uppercase;color:#AEB4F0}
.side .brand .by img{width:96px}
.side .role-badge{align-self:flex-start;margin-left:8px;padding:4px 10px;border-radius:999px;background:var(--teal);color:#0B1640;font:700 12px/1.2 Poppins,sans-serif;letter-spacing:.6px;text-transform:uppercase}
.nav{display:flex;flex-direction:column;gap:10px}
.nav .grp{display:flex;flex-direction:column;gap:3px}
.nav .lbl{padding:0 12px 4px;font:600 11px/1 Poppins,sans-serif;letter-spacing:1.4px;text-transform:uppercase;color:#9097D8}
.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:#D9DDFF;font-size:16px}
.nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.nav a.on{background:var(--surface);color:var(--heading);font-weight:700;box-shadow:0 6px 16px rgba(5,6,40,.35)}
.nav a.on .ico{stroke:var(--blue)} .nav a.on::after{content:"";margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--pink)}
.nav .count{margin-left:auto;background:var(--pink);color:#fff;border-radius:999px;padding:0 7px;font:700 12px/20px Poppins,sans-serif}
.side-foot{margin-top:auto;border-radius:16px;padding:14px;background:var(--navy-2);border:1px solid #3B3BB0;display:flex;flex-direction:column;gap:8px}
.side-foot img{width:190px}
.side-foot a{font:600 13px Poppins,sans-serif;color:#7FE9E1}
.side-deco{position:absolute;left:0;bottom:0;pointer-events:none}

.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:14px;padding:18px 40px;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px)}
.top .search{flex:1;max-width:520px;height:46px;display:flex;align-items:center;gap:10px;padding:0 16px;background:var(--surface);border:1px solid var(--line);border-radius:999px}
.top .search input{border:0;outline:0;background:transparent;font:16px Carlito,Calibri,sans-serif;flex:1;min-width:0;color:var(--ink)}
.top .right{margin-left:auto;display:flex;align-items:center;gap:12px}
.icon-btn{position:relative;width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;color:var(--heading)}
.icon-btn .dot{position:absolute;top:5px;right:5px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--pink);color:#fff;font:700 11px/14px Poppins,sans-serif;border:2px solid var(--b-ffffff);text-align:center}
.me{display:flex;align-items:center;gap:10px;color:var(--ink)}
.avatar{width:44px;height:44px;border-radius:50%;background:var(--navy);color:#fff;display:inline-flex;align-items:center;justify-content:center;font:700 15px Poppins,sans-serif;box-shadow:0 0 0 3px var(--b-ffffff),0 0 0 5px var(--teal);flex:none}
.avatar.has-img{padding:0;overflow:hidden;background:var(--surface)}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.avatar.sm{width:34px;height:34px;font-size:12px;box-shadow:none}
.me b{display:block;font-size:16px;line-height:1.15} .me small{display:block;color:var(--muted);font-size:13px}
.menu-btn{display:none}
.content{padding:4px 40px 48px;display:flex;flex-direction:column;gap:22px}
.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.page-head p{color:var(--muted);font-size:17px;margin-top:6px}
.page-head .actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}
.crumb{font:600 14px Poppins,sans-serif;color:var(--muted)} .crumb a{color:var(--blue)}

/* ── Surfaces ───────────────────── */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);min-width:0}
.card.flat{box-shadow:none}
.card-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.card-head .more{margin-left:auto;font:600 15px Poppins,sans-serif}
.panel-navy{background:var(--navy);color:#fff;border-radius:var(--r);padding:20px}
.panel-navy h2,.panel-navy h3{color:#fff}
.panel-navy .muted{color:#C9D0FF}
.soft{background:var(--soft);border-radius:14px;padding:12px 14px}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))} .g3{grid-template-columns:repeat(auto-fill,minmax(min(100%,max(230px,calc((100% - 36px) / 3))),1fr))} .g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}
.split.wide-side{grid-template-columns:minmax(0,1fr) 400px}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.stack{display:flex;flex-direction:column;gap:12px}
.spacer{margin-left:auto}
.divider{border:0;border-top:1px solid var(--line);margin:4px 0}

/* ── Buttons ────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:12px;border:0;background:var(--navy);color:#fff;font:700 15px Poppins,sans-serif;cursor:pointer;white-space:nowrap;text-decoration:none}
.btn:hover{color:#fff;filter:brightness(1.08)}
.btn-pink{background:var(--pink)} .btn-teal{background:var(--teal);color:#0B1640} .btn-teal:hover{color:var(--t-0b1640)}
.btn-ghost{background:var(--surface);color:var(--heading);border:1px solid var(--line)} .btn-ghost:hover{color:var(--heading);background:var(--soft)}
.btn-danger{background:var(--pink-ink)} .btn-outline-danger{background:var(--surface);color:var(--pink-ink);border:1px solid var(--b-f3c4d3)} .btn-outline-danger:hover{color:var(--pink-ink);background:var(--bad-bg)}
.btn-done{background:var(--ok-bg);color:var(--ok);cursor:default} .btn-done:hover{color:var(--ok);filter:none}
.btn-sm{height:36px;padding:0 12px;font-size:13px;border-radius:10px}
.btn-lg{height:52px;font-size:16px;border-radius:14px}
.btn-block{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.link-btn{border:0;background:none;color:var(--blue);font:700 14px Poppins,sans-serif;cursor:pointer;padding:0}

/* ── Chips & badges ─────────────── */
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font:600 12px Poppins,sans-serif;white-space:nowrap}
.chip-ok{background:var(--ok-bg);color:var(--ok)} .chip-warn{background:var(--warn-bg);color:var(--warn)} .chip-bad{background:var(--bad-bg);color:var(--bad)} .chip-info{background:var(--info-bg);color:var(--info)} .chip-grey{background:var(--l-eef0f7);color:var(--t-4a4e75)} .chip-navy{background:var(--navy);color:#fff}
.chip-tbc{border:1.5px dashed #8A8DAE;color:var(--muted)}
.pills{display:flex;gap:10px;flex-wrap:wrap}
.pill{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 14px Poppins,sans-serif;display:inline-flex;align-items:center;gap:6px}
.pill.on{background:var(--navy);border-color:var(--navy);color:#fff}
.num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--pink);color:#fff;font:800 11px Poppins,sans-serif}
.tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs a{padding:12px 2px;font:600 15px Poppins,sans-serif;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--heading);border-color:var(--pink);font-weight:700}

/* ── Flash ──────────────────────── */
.flash{padding:12px 16px;border-radius:14px;font-weight:700}
.flash-ok{background:var(--ok-bg);color:var(--ok)} .flash-err{background:var(--bad-bg);color:var(--bad)} .flash-info{background:var(--info-bg);color:var(--info)}
.notice{padding:12px 16px;border-radius:14px;background:var(--warn-bg);color:var(--t-5c3700);display:flex;gap:10px;align-items:center}

/* ── Forms ──────────────────────── */
.field{display:flex;flex-direction:column;gap:6px;font:600 13px Poppins,sans-serif;color:var(--ink)}
.field .hint{font:400 13px Carlito,Calibri,sans-serif;color:var(--muted)}
.input,select.input,textarea.input{width:100%;height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--line-2);background:var(--surface);font:16px Carlito,Calibri,sans-serif;color:var(--ink)}
textarea.input{height:auto;min-height:90px;padding:10px 12px;resize:vertical;line-height:1.45}
.input:focus{border-color:var(--blue);outline:2px solid color-mix(in srgb,var(--blue) 25%,transparent)}
.check{display:flex;align-items:center;gap:10px;font:16px Carlito,Calibri,sans-serif;color:var(--ink)}
.check input{width:20px;height:20px;accent-color:var(--navy);flex:none}
.choice{display:flex;gap:10px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font:15px Carlito,Calibri,sans-serif}
.choice:has(input:checked){border:2px solid var(--navy);background:var(--l-f3f6ff)}
.choice input{accent-color:var(--navy)}
.choice > span > b:first-child{display:block;font-size:16px} .choice b{font-weight:700} .choice > b{display:block;font-size:16px}
.toggle-chips{display:flex;gap:8px;flex-wrap:wrap}
.toggle-chips label{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font:600 13px Poppins,sans-serif;cursor:pointer}
.toggle-chips label:has(input:checked){background:var(--navy);border-color:var(--navy);color:#fff}
.toggle-chips input{accent-color:var(--teal)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}
.swatches label{width:34px;height:34px;border-radius:50%;cursor:pointer;position:relative}
.swatches input{position:absolute;opacity:0;inset:0;cursor:pointer}
.swatches label:has(input:checked){box-shadow:0 0 0 2px #fff,0 0 0 4px var(--navy)}
.icon-pick{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px}
.icon-pick label{height:42px;border-radius:10px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);position:relative}
.icon-pick input{position:absolute;opacity:0}
.icon-pick label:has(input:checked){border:2px solid var(--navy);background:#F3F6FF;color:var(--navy)}
.drop{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:2px dashed var(--b-c9ceea);background:var(--soft);font:15px Carlito,Calibri,sans-serif;color:var(--heading);cursor:pointer}
.drop input{font:14px Carlito,Calibri,sans-serif;max-width:100%}
/* 3.0 d3.7: upload boxes — icon + label on one line, hints underneath, the file picker on its own full-width row (never squeezed) */
.drop:not([style]){display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;column-gap:12px;row-gap:10px}
.drop:not([style])>svg{grid-column:1;align-self:start;margin-top:2px}
.drop:not([style])>span{grid-column:2;min-width:0;line-height:1.4}
.drop:not([style])>span>b:first-child{display:block;margin-bottom:2px}
.drop:not([style])>span .size-hint,.drop:not([style])>span .muted{display:inline;overflow-wrap:anywhere}
.drop:not([style])>span .size-hint{display:inline-block;margin:2px 0 0}
.drop:not([style])>input[type=file]{grid-column:1/-1;width:100%;min-width:0;padding:8px;border-radius:10px;background:var(--surface);border:1px solid var(--line,var(--b-e3e6f2));color:var(--muted,var(--t-5b6085))}
.drop input[type=file]::file-selector-button{font:700 13px Poppins,system-ui,sans-serif;padding:8px 14px;margin-right:12px;border:0;border-radius:9px;background:var(--navy);color:#fff;cursor:pointer}
.drop input[type=file]::file-selector-button:hover{filter:brightness(1.15)}
.form-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.stepper{list-style:none;margin:0;padding:0;display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px}
.stepper a{display:block;padding:10px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);font:600 14px Poppins,sans-serif;color:var(--muted)}
.stepper a.on{background:var(--navy);border-color:var(--navy);color:#fff}
.stepper a.done{background:var(--ok-bg);border-color:var(--ok-bg);color:var(--ok)}
.section-title{display:flex;align-items:center;gap:8px;font:700 17px Poppins,sans-serif;color:var(--heading);margin:6px 0 2px}
.repeat-row{display:grid;grid-template-columns:minmax(0,1fr) 160px 44px;gap:10px;align-items:center}

/* ── Tables ─────────────────────── */
.table-wrap{overflow-x:auto;border-radius:var(--r);border:1px solid var(--line);background:var(--surface)}
table.tbl{width:100%;border-collapse:collapse;font-size:15px}
.tbl th{text-align:left;padding:12px 14px;background:var(--soft);font:600 12px Poppins,sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tbl td{padding:12px 14px;border-top:1px solid var(--b-eef0f7);vertical-align:middle}
.tbl tr.hl td{background:var(--l-f3f6ff)}
.tbl .actions{display:flex;gap:6px;justify-content:flex-end}

/* ── Covers, cards ──────────────── */
.cover{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}
.cover-art{position:absolute;inset:0;width:100%;height:100%}
.cover-ico{position:relative}
.cover img.photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.date-badge{position:absolute;top:12px;left:12px;width:52px;padding:6px 0;border-radius:12px;background:var(--surface);text-align:center;line-height:1;z-index:1}
.date-badge b{display:block;font:800 20px Poppins,sans-serif;color:var(--heading)} .date-badge small{font:700 11px Poppins,sans-serif;color:var(--pink);letter-spacing:1px}
.cover .tag{position:absolute;top:12px;right:12px;z-index:1;padding:4px 10px;border-radius:999px;background:#0B1640;color:#fff;font:600 12px Poppins,sans-serif}
.ev{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.ev-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.ev-body h3{font-size:18px;color:var(--ink)}
.ev-body .meta{font-size:15px;color:var(--muted)}
.ev-body .foot{margin-top:auto;padding-top:8px;display:flex;gap:8px}
.ev-body .foot .btn{flex:1}
.tile{display:flex;flex-direction:column;gap:8px;padding:18px;border-radius:20px;min-height:120px;color:#fff}
.tile b{font:700 18px Poppins,sans-serif}
.list-row{display:flex;gap:12px;align-items:center;color:var(--ink)}
.list-row .sq{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:none}
.list-row b{display:block;line-height:1.25}
.hero{position:relative;border-radius:28px;overflow:hidden;background:var(--navy);color:#fff;min-height:300px;display:flex;align-items:center;box-shadow:0 18px 40px rgba(27,27,127,.22)}
.hero .art{position:absolute;right:0;top:0;height:100%}
.hero .txt{position:relative;padding:36px 44px;display:flex;flex-direction:column;gap:12px;max-width:560px}
.hero .eyebrow{font:600 14px Poppins,sans-serif;letter-spacing:3px;text-transform:uppercase;color:#7FE9E1}
.hero .sticker{position:absolute;right:32px;top:22px;transform:rotate(4deg);background:#fff;color:var(--navy);border-radius:14px;padding:8px 14px;font:italic 700 15px Poppins,sans-serif;box-shadow:0 8px 20px rgba(5,6,40,.3)}
.stat{display:flex;gap:14px;align-items:center;min-width:0}
.stat > div{min-width:0}
.stat:not(:has(> .sq, > div)){flex-direction:column;align-items:flex-start;gap:2px}
.stat .sq{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex:none}
.stat small{display:block;font:600 13px Poppins,sans-serif;color:var(--muted)} .stat b{font:800 28px Poppins,sans-serif}
.meter{height:10px;border-radius:99px;background:var(--l-eef0f7);overflow:hidden} .meter i{display:block;height:100%;border-radius:99px;background:var(--teal)}
.empty{border:2px dashed var(--line-2);border-radius:18px;padding:28px;text-align:center;color:var(--muted);background:var(--surface)}

/* ── Booking grids ──────────────── */
.days{display:flex;gap:8px;flex-wrap:wrap}
.days a{width:76px;padding:8px 0;border-radius:14px;border:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;align-items:center;font-family:Poppins,sans-serif;color:var(--ink)}
.days a small{font-size:11px;color:var(--muted);letter-spacing:1px}
.days a b{font-size:20px}
.days a.on{background:var(--navy);border-color:var(--navy);color:#fff} .days a.on small{color:#C9D0FF}
.slots{display:grid;gap:8px 12px;align-items:center}
.slots-shared{grid-template-columns:minmax(96px,120px) minmax(40px,1fr) auto minmax(110px,200px)} .slots-whole{grid-template-columns:minmax(96px,120px) minmax(120px,240px)}
.slots .time{white-space:nowrap} .slots>.small{white-space:nowrap}
@media (max-width:560px){.slots-shared{grid-template-columns:auto minmax(0,1fr) minmax(96px,120px);gap:8px 10px}.slots-shared .meter{display:none}.slots-whole{grid-template-columns:auto minmax(0,1fr)}}
.slot{width:100%;height:42px;border-radius:10px;border:0;display:flex;align-items:center;justify-content:center;gap:6px;font:600 14px Poppins,sans-serif;padding:0 8px;text-align:center}
.slot.free{background:var(--ok-bg);color:var(--ok);cursor:pointer} .slot.free:hover{outline:2px solid var(--ok)}
.slot.full{background:var(--l-eef0f7);color:var(--t-6b6f92)}
.slot.mine{background:var(--blue);color:#fff}
.slot.closed{background:repeating-linear-gradient(135deg,var(--l-fff1d6) 0 8px,var(--l-ffe6b3) 8px 16px);color:var(--warn)}
.slot.past{background:transparent;color:#9A9DBA;border:1px dashed var(--line-2)}
.slot.noshow{background:var(--bad-bg);color:var(--bad)}
.slot.admin{justify-content:flex-start;background:var(--info-bg);color:var(--info);cursor:pointer}
.slot.admin.sel{background:var(--navy);color:#fff;box-shadow:0 0 0 3px var(--b-ffffff),0 0 0 5px var(--pink)}
.time{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.rules{display:flex;flex-direction:column;gap:12px}
.rules div{display:flex;gap:10px;align-items:center}
.rules .sq{width:34px;height:34px;border-radius:10px;background:#2A2AA0;display:flex;align-items:center;justify-content:center;flex:none}
.slot-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.slot-card{padding:12px;border-radius:14px;border:1px solid var(--line);display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.slot-card.pick{cursor:pointer}
.slot-card:has(input:checked){border:2px solid var(--navy);background:var(--l-f3f6ff)}
.slot-card b{font:700 16px Poppins,sans-serif}

/* ── Admin extras ───────────────── */
.adm .side{background:#14145f}
.kpi{padding:18px;border-radius:20px;background:var(--surface);border:1px solid var(--line)}
.kpi small{font:600 13px Poppins,sans-serif;color:var(--muted)} .kpi b{display:block;font:800 30px Poppins,sans-serif}
.matrix{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(5,minmax(0,1fr));gap:6px;align-items:center;text-align:center;font-size:15px}
.matrix .p{padding:7px 0;border-radius:10px;font-weight:700}
.p-full{background:var(--navy);color:#fff} .p-edit{background:var(--info-bg);color:var(--info)} .p-own{background:var(--ok-bg);color:var(--ok)} .p-view{background:var(--l-eef0f7);color:var(--t-4a4e75);font-weight:400!important} .p-none{color:var(--t-8a8dae)}
.login{min-height:100vh;display:grid;place-items:center;background:var(--navy);padding:24px}
.login .box{width:min(440px,100%);background:var(--surface);border-radius:24px;padding:28px;display:flex;flex-direction:column;gap:14px;box-shadow:0 30px 60px rgba(0,0,0,.3)}
.bar-row{display:grid;grid-template-columns:150px minmax(0,1fr) 44px;gap:12px;align-items:center;font-size:15px}
.bar-row span.bar{height:20px;border-radius:0 6px 6px 0;background:var(--blue);display:block}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.photo-grid figure{margin:0;position:relative}
.photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;display:block}
.photo-grid figcaption{position:absolute;top:6px;left:6px;display:flex;gap:4px}

/* ── Responsive ─────────────────── */
@media (max-width:1180px){ .g4{grid-template-columns:repeat(2,minmax(0,1fr))} .split,.split.wide-side{grid-template-columns:minmax(0,1fr)} .slot-cards{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;left:0;top:0;bottom:0;width:270px;z-index:60;transform:translateX(-105%);transition:transform .2s}
  .side.open{transform:none;box-shadow:0 0 0 100vmax rgba(10,12,40,.45)}
  .menu-btn{display:inline-flex}
  .top{padding:12px 16px}
  .top .search{display:none}
  .me .txt{display:none}
  .content{padding:4px 16px 36px}
  .hero .art{opacity:.25}
  .hero .txt{padding:28px 22px}
  .stepper{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
  .slot-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .matrix{font-size:12px}
  h1{font-size:26px}
}
@media (max-width:520px){ .g4{grid-template-columns:minmax(0,1fr)} }
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* admin day view */
.court-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;align-items:start;min-width:0}
.court-grid .slot{height:32px!important;font-size:13px}

/* ── HTML version additions ── */
.loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 20px;color:var(--muted);font:600 15px Poppins,sans-serif}
.page-loading{min-height:100vh;flex-direction:column;gap:22px}
.page-loading>span{display:flex;align-items:center;gap:10px}
.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--b-dce3f7);border-top-color:var(--pink);animation:spin .8s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.btn.busy{opacity:.7;pointer-events:none}
.btn.busy::after{content:"";width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:spin .8s linear infinite;margin-left:4px}
.demo-banner{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;background:var(--l-fff6dd);color:var(--t-5c3700);font-size:14px;border:1px dashed #F0C766}
.show-sm{display:none}
@media (max-width:760px){.hide-sm{display:none!important}.show-sm{display:inline}}
#flashbox:empty{display:none}
#flashbox{display:flex;flex-direction:column;gap:10px}
.panel-navy .row{flex-wrap:nowrap}
@media (max-width:760px){.slot-edit{flex-wrap:wrap}.slot-edit .input{width:auto!important;flex:1 1 100px;min-width:0}.repeat-row{flex-wrap:wrap}}

/* ── OctFamily Hub: brand badge + sign-in page ───────────────────────── */
.hub-lockup{display:inline-flex;align-items:flex-end;gap:7px;flex-wrap:nowrap}
.hub-script{font-family:'Kaushan Script','Segoe Script',cursive;font-size:34px;line-height:.9;padding:0 .14em .16em .02em;background:linear-gradient(90deg,#376DE6 0%,#E92463 55%,#F49723 100%);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap;transform:translateY(.06em)}
.hub-script.lg{font-size:44px}
.side .brand .hub-script{font-size:30px;background-image:linear-gradient(90deg,#7FA6FF 0%,#FF4F8B 55%,#FFB04A 100%)}
.panel-navy .hub-script,.hero .hub-script{background-image:linear-gradient(90deg,#7FA6FF 0%,#FF4F8B 55%,#FFB04A 100%)}
.hub-lockup img.fam{width:150px;height:auto}
.hub-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px 4px 5px;border-radius:999px;background:linear-gradient(90deg,#376DE6,#E92463 60%,#F49723);color:#fff;font:800 13px/1 Poppins,sans-serif;letter-spacing:2px;box-shadow:0 4px 12px rgba(233,36,99,.28);white-space:nowrap}
.hub-badge svg{flex:none;background:var(--surface);border-radius:50%}
.hub-badge.lg{font-size:17px;padding:5px 13px 5px 6px;gap:7px}
.side .brand .hub-lockup{gap:8px}
.side .brand .hub-lockup img.fam{width:132px}
.side .brand .hub-badge{box-shadow:none}
.hub-login{min-height:100vh;display:grid;place-items:center;padding:28px 16px;background:var(--bg);position:relative;overflow:hidden}
.hub-login .bg-art{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.hub-login .card-in{position:relative;width:min(400px,100%);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.hub-login .mark{width:64px;height:64px;margin-bottom:10px}
.hub-login h1{font-size:26px;color:var(--t-111433);font-weight:700;margin-top:4px}
.hub-login .sub{margin:6px 0 18px}
.hub-login form{width:100%;display:flex;flex-direction:column;gap:14px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 18px 40px rgba(27,27,127,.10)}
.hub-login .field{font:600 13px/1.3 Poppins,sans-serif;color:var(--t-2b2e52)}
.hub-login .input{background:var(--l-eef3fd);border-color:var(--b-d8e1f6)}
.hub-login .pw{position:relative}
.hub-login .pw .input{padding-right:46px}
.hub-login .pw button{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;color:var(--muted);width:36px;height:36px;border-radius:10px;cursor:pointer;display:grid;place-items:center}
.hub-login .pw button:hover{background:var(--l-e3e9f8);color:var(--heading)}
.hub-login .help{font-size:13px;color:var(--muted)}
.hub-login .btn-signin{width:100%;height:50px;font-size:16px}
.hub-login .foot{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:8px}
.hub-login .foot img{width:220px}
.hub-login .demo-tip{background:var(--l-fff7e3);border:1px dashed #F2C66B;border-radius:12px;padding:10px 12px;font-size:13px;color:var(--t-5c3700)}
.hub-login .demo-tip code{background:var(--surface);border-radius:6px;padding:1px 6px;font-weight:700;user-select:all}
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.profile-grid div{background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:10px 14px}
.profile-grid small{display:block;font:600 11px Poppins,sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.profile-grid b{font-size:16px;word-break:break-word}

/* ── Talk to PX form ───────────────────────── */
.px-form{gap:16px}
.px-step{display:flex;align-items:center;gap:12px}
.px-step .num{width:30px;height:30px;flex:none}
.px-step h3{font-size:17px}
.req{color:var(--pink)}
.px-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.px-cat{position:relative;display:flex;align-items:center;gap:10px;padding:12px;border:2px solid var(--line);border-radius:14px;background:var(--surface);cursor:pointer;transition:border-color .15s,background .15s}
.px-cat:hover{border-color:var(--c)}
.px-cat input{position:absolute;opacity:0;pointer-events:none}
.px-cat .ic{width:38px;height:38px;border-radius:11px;background:var(--c);display:grid;place-items:center;flex:none}
.px-cat b{font:600 14px/1.25 Poppins,sans-serif;color:var(--ink)}
.px-cat:has(input:checked){border-color:var(--c);background:color-mix(in srgb,var(--c) 9%,var(--surface));box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 18%,transparent)}
.px-cat:has(input:focus-visible){outline:3px solid var(--teal);outline-offset:2px}
.px-topics{display:flex;flex-direction:column;gap:12px;padding-top:6px;border-top:1px dashed var(--line-2)}
.px-chips{display:flex;flex-wrap:wrap;gap:8px}
.px-chips label,.px-q .yn label{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1.5px solid var(--line-2);border-radius:999px;background:var(--surface);cursor:pointer;font-size:15px}
.px-chips label:has(input:checked),.px-q .yn label:has(input:checked){border-color:var(--navy);background:var(--navy);color:#fff}
.px-chips input,.px-q .yn input{accent-color:var(--pink)}
.px-q{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:0}
.px-q>b{display:block;font:600 14px/1.35 Poppins,sans-serif;color:var(--ink)}
.px-q .yn{display:flex;gap:8px;margin-top:6px}

/* ── PX tickets ───────────────────────── */
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.g5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.g5{grid-template-columns:repeat(2,minmax(0,1fr))}}
a.tk-kpi{color:var(--ink);transition:transform .12s,box-shadow .12s} a.tk-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow);color:var(--ink)}
.kpi.bad{background:var(--bad-bg);border-color:var(--b-f6c2d4)} .kpi.bad b{color:var(--bad)}
.kpi.ok b{color:var(--ok)}
.tk-filters{gap:8px} .tk-filters select.input{width:auto;max-width:240px}
.tk-tbl tr.clickable{cursor:pointer} .tk-tbl tr.clickable:hover td{background:var(--soft)}
.cat-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:middle}
.sla{display:inline-flex;flex-direction:column;gap:4px;min-width:130px}
.sla .bar{height:7px;border-radius:99px;background:var(--l-e7eaf5);overflow:hidden}
.sla .bar i{display:block;height:100%;border-radius:99px;background:var(--teal)}
.sla .txt{font:600 12px Poppins,sans-serif;color:var(--teal-ink)}
.sla-due_soon .bar i{background:#F49723} .sla-due_soon .txt{color:var(--t-8a5300)}
.sla-breached .bar i,.sla-missed .bar i{background:var(--pink)} .sla-breached .txt,.sla-missed .txt{color:var(--bad)}
.sla-paused .bar i{background:repeating-linear-gradient(45deg,#8A8DAE 0 5px,#B9BCD6 5px 10px)} .sla-paused .txt{color:var(--muted)}
.sla-met .bar i{background:var(--ok)} .sla-met .txt{color:var(--ok)}
.sla.big{min-width:240px} .sla.big .bar{height:11px} .sla.big .txt{font-size:15px}
.tk-slabox{display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 16px}
.tk-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;position:relative}
.tk-timeline:before{content:"";position:absolute;left:11px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tk-timeline li{display:flex;gap:10px;position:relative}
.tk-timeline .dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;flex:none;box-shadow:0 0 0 3px var(--b-ffffff)}
.tk-comment{display:inline-block;background:var(--l-fff4e8);border-radius:8px;padding:2px 8px;white-space:pre-line}
.tbl .meter{display:block;width:90px;height:7px;border-radius:99px;background:var(--l-e7eaf5);overflow:hidden;margin-top:6px}
.tbl .meter i{display:block;height:100%;background:var(--ok)}
.tk-catrow{display:flex;align-items:center;gap:10px}
.tk-catrow .bar{flex:1;height:10px;border-radius:99px;background:var(--l-eef0f8);overflow:hidden} .tk-catrow .bar i{display:block;height:100%;border-radius:99px}
.mchart .legend{display:flex;flex-wrap:wrap;gap:14px;font:600 12px Poppins,sans-serif;color:var(--muted);margin-bottom:6px}
.mchart .legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.mchart svg{width:100%;height:auto;display:block}
.tbl.mom th,.tbl.mom td{text-align:center;white-space:nowrap} .tbl.mom td:first-child,.tbl.mom th:first-child{text-align:left}
.demo-tip summary{cursor:pointer}
.demo-acc{width:100%;margin-top:8px;border-collapse:collapse;font-size:13px} .demo-acc td{padding:3px 4px;border-top:1px dashed #F2C66B}
/* ── Event self check-in ── */
.ci-done{display:inline-flex;align-items:center;gap:6px;color:var(--ok);font:700 13px Poppins,sans-serif}
.ci-done.big{justify-content:center;padding:12px;border-radius:12px;background:var(--ok-bg);font-size:16px}
.ci-form{display:flex;gap:6px;align-items:center;margin-top:4px;flex-wrap:wrap}
.ci-form .input{height:36px;width:150px}
.ci-form.big{flex-direction:column;align-items:stretch} .ci-form.big .input{height:44px;width:100%}
.ci-code{background:var(--navy);color:#fff;border-radius:14px;padding:12px;text-align:center}
.ci-code small{display:block;font:600 11px Poppins,sans-serif;letter-spacing:1px;text-transform:uppercase;opacity:.8}
.ci-code b{font:800 34px Poppins,sans-serif;letter-spacing:6px}

/* ── Preview, QR and scanner ── */
.preview-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:linear-gradient(90deg,#1B1B7F,#5A45D6);color:#fff;border-radius:16px;padding:12px 16px;margin-bottom:14px}
.preview-bar span{flex:1;min-width:220px}
.qr-card{align-items:center;text-align:center}
.qr-box{background:#fff;border:1px solid var(--line);border-radius:16px;padding:10px;display:inline-flex}
.qr-box svg{width:220px;height:220px;display:block}
.qr-inline summary{cursor:pointer;font:600 14px Poppins,sans-serif;color:var(--heading)} .qr-inline .qr-box{margin-top:8px} .qr-inline .qr-box svg{width:190px;height:190px}
.scan-overlay{position:fixed;inset:0;z-index:100;background:rgba(11,22,64,.92);display:flex;justify-content:center;overflow:auto;padding:16px}
.scan-panel{width:min(560px,100%);display:flex;flex-direction:column;gap:12px}
.scan-video{position:relative;border-radius:18px;overflow:hidden;background:#000;aspect-ratio:4/3}
.scan-video video{width:100%;height:100%;object-fit:cover;display:block}
.scan-frame{position:absolute;inset:18%;border:3px solid #2CD0C6;border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.25)}
.scan-msg{position:absolute;left:12px;right:12px;bottom:12px;color:#fff;font:600 14px Poppins,sans-serif;text-shadow:0 1px 3px #000}
.scan-result{display:flex;gap:12px;align-items:center;background:#fff;border-radius:14px;padding:14px;min-height:64px}
.scan-result b{display:block;font:700 18px Poppins,sans-serif} .scan-result span{font-size:14px}
.scan-result.ok{background:#0A8F86;color:#fff} .scan-result.warn{background:#C77700;color:#fff} .scan-result.bad{background:#B0164A;color:#fff}
.scan-manual .input{flex:1}
.scan-count{color:#fff;font:600 14px Poppins,sans-serif}
.scan-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto}
.scan-log li{background:rgba(255,255,255,.1);color:#fff;border-radius:10px;padding:8px 10px;font-size:13px;border-left:4px solid #8A8DAE} .scan-log li span{opacity:.7;float:right}
.scan-log li.ok{border-color:#2CD0C6} .scan-log li.warn{border-color:#F49723} .scan-log li.bad{border-color:#E92463}

.conf-flag{display:flex;gap:14px;align-items:center;background:#B0164A;color:#fff;border-radius:16px;padding:14px 18px}
.conf-flag b{display:block;font:800 18px Poppins,sans-serif;letter-spacing:.5px;text-transform:uppercase} .conf-flag span{font-size:15px}

/* ── Home: news & announcements ── */
.home-news h2{display:flex;align-items:center;gap:10px}
.nh-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px}
.nh-feat{position:relative;display:flex;flex-direction:column;border-radius:20px;overflow:hidden;background:var(--navy);color:#fff;min-height:300px;box-shadow:var(--shadow)}
.nh-feat:hover{color:#fff;transform:translateY(-2px);transition:transform .15s}
.nh-media{position:absolute;inset:0}
.nh-media img,.nh-media .nh-art{width:100%;height:100%;object-fit:cover;display:flex;align-items:center;justify-content:flex-end;padding-right:40px}
.nh-feat:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,22,64,0) 25%,rgba(11,22,64,.88) 100%)}
.nh-body{position:relative;z-index:1;margin-top:auto;padding:22px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.nh-body small{font:600 12px Poppins,sans-serif;letter-spacing:1px;text-transform:uppercase;opacity:.85}
.nh-body b{font:800 26px/1.15 Poppins,sans-serif}
.nh-body span{opacity:.92} .nh-body em{font:700 14px Poppins,sans-serif;font-style:normal;color:#7FE9E1}
.nh-list{display:flex;flex-direction:column;gap:10px}
.nh-item{display:flex;gap:12px;align-items:center;padding:10px;border-radius:16px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.nh-item:hover{background:var(--soft);color:var(--ink)}
.nh-thumb{width:84px;height:84px;border-radius:14px;overflow:hidden;flex:none}
.nh-thumb img,.nh-thumb .nh-art{width:100%;height:100%;object-fit:cover;display:flex;align-items:center;justify-content:center}
.nh-item small{display:block;font:600 11px Poppins,sans-serif;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.nh-item b{display:block;font:700 16px/1.25 Poppins,sans-serif;margin:2px 0}
@media (max-width:900px){.nh-grid{grid-template-columns:minmax(0,1fr)} .nh-feat{min-height:240px}}
.hero-lockup{gap:12px;max-width:100%} .hero-lockup img{width:360px;max-width:62%} .hero-lockup .hub-script{font-size:84px}
@media (max-width:640px){.hero-lockup .hub-script{font-size:52px}}

/* ── choice dialog ── */
.modal-back{position:fixed;inset:0;z-index:90;background:rgba(11,22,64,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.modal-box{background:var(--surface);border-radius:22px;max-width:460px;width:100%;padding:26px;box-shadow:0 20px 60px rgba(11,22,64,.35)}
.modal-box h2{margin:0}
.modal-box .btn{justify-content:center;text-align:center;white-space:normal}
/* ── protected photos + slideshow ── */
.protect, .protect img, .lb{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.protect img{-webkit-user-drag:none;pointer-events:none}
.photo-btn{display:block;padding:0;border:0;background:none;cursor:zoom-in;border-radius:14px;overflow:hidden;position:relative}
.photo-btn img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .25s}
.photo-btn:hover img{transform:scale(1.04)} .photo-btn:focus-visible{outline:3px solid var(--pink);outline-offset:3px}
.lb{position:fixed;inset:0;z-index:100;background:#070B2B;display:flex;flex-direction:column}
.lb-top{display:flex;align-items:center;gap:8px;padding:12px 16px;color:#fff}
.lb-count{flex:1;font:600 15px Poppins,sans-serif;opacity:.85}
.lb-btn,.lb-nav{background:rgba(255,255,255,.12);border:0;border-radius:99px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.lb-btn:hover,.lb-nav:hover{background:rgba(255,255,255,.24)}
.lb-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;margin:0 64px 8px;min-height:0}
.lb-canvas{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.lb-shield{position:absolute;inset:0}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px}
.lb-nav.prev{left:10px} .lb-nav.next{right:10px}
.lb-dots{display:flex;justify-content:center;gap:6px;padding:6px 0 18px;flex-wrap:wrap}
.lb-dots i{width:8px;height:8px;border-radius:99px;background:rgba(255,255,255,.3);cursor:pointer} .lb-dots i.on{background:var(--teal);width:22px}
.lb-cover{display:none;position:absolute;inset:0;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:#fff;text-align:center;font:600 15px Poppins,sans-serif;background:#070B2B}
.lb.lb-hidden .lb-canvas{visibility:hidden} .lb.lb-hidden .lb-cover{display:flex}
@media (max-width:640px){.lb-stage{margin:0 0 8px}.lb-nav{top:auto;bottom:40px;transform:none}}
@media print{.lb,.protect,.photo-grid{display:none!important} body.lb-open *{visibility:hidden!important}}
.shot-guard{display:none;position:fixed;inset:0;z-index:2147483647;background:#000;align-items:flex-end;justify-content:center;padding-bottom:28px;cursor:pointer}
.shot-guard.on{display:flex} .shot-guard span{color:#1a1a1a;font:600 13px Poppins,sans-serif}
html.shot-on .protect, html.shot-on .lb{visibility:hidden!important}
.protect video, .lb video{-webkit-touch-callout:none}
.protect img, .protect video{-webkit-user-select:none;user-select:none}
/* ── PX tickets: on-behalf + escalation ── */
.chip-esc{background:var(--l-f1ecff);color:var(--t-4b2db8)}
.tk-note-req{font-size:12px;color:var(--bad);font-weight:700}
.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.status-grid .btn{justify-content:center}
.emp-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.emp-card div{background:var(--soft);border-radius:12px;padding:8px 12px} .emp-card small{display:block;color:var(--muted);font-size:12px}
@media (max-width:640px){.emp-card{grid-template-columns:1fr 1fr}}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (max-width:1100px){.g6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.g6{grid-template-columns:repeat(2,minmax(0,1fr))}}
.emp-card b{overflow-wrap:anywhere}

/* ── report sub-sections in the admin menu ── */
.nav a[aria-expanded] svg:last-child{margin-left:auto;opacity:.7}
.nav .sub{display:flex;flex-direction:column;gap:2px;margin:2px 0 8px 18px;padding-left:12px;border-left:2px solid rgba(255,255,255,.18)}
.nav .sub a{font-size:14px;padding:8px 12px;min-height:38px}
.rep-card{display:flex;align-items:center;gap:16px;color:var(--ink)} .rep-card > span:nth-child(2){display:flex;flex-direction:column;gap:4px;flex:1}
.rep-card b{font:700 19px Poppins,sans-serif;color:var(--heading)} .rep-card:hover{border-color:var(--blue);transform:translateY(-1px)}
.rep-card .sq{width:56px;height:56px;flex:none}
/* ── album uploads switch ── */
.uploads-switch{display:flex;align-items:center;gap:16px;border:2px dashed var(--b-c9cde3)}
.uploads-switch.is-on{border:2px solid var(--teal);background:var(--l-effbfa)}
.uploads-switch .sq{width:52px;height:52px;flex:none;background:var(--l-eef0f7)} .uploads-switch.is-on .sq{background:var(--teal)}
.toggle{width:60px;height:34px;border-radius:99px;border:0;background:var(--l-c9cde3);position:relative;cursor:pointer;flex:none;transition:background .2s}
.toggle i{position:absolute;top:4px;left:4px;width:26px;height:26px;border-radius:50%;background:var(--surface);box-shadow:0 2px 6px rgba(0,0,0,.2);transition:left .2s}
.toggle.on{background:var(--teal)} .toggle.on i{left:30px}
.toggle:focus-visible{outline:3px solid var(--pink);outline-offset:2px}
/* ── event survey ── */
.survey-ask{background:var(--l-fff6dd);border:1.5px solid #FFD166;border-radius:22px;padding:20px 22px}
.survey-ask .sq{width:52px;height:52px;background:#FFD166;flex:none}
.stars-q{border:0;padding:0;margin:0} .stars-q legend{margin-bottom:6px}
.stars{display:inline-flex;flex-direction:row-reverse;gap:4px}
.stars input{position:absolute;opacity:0;width:1px;height:1px}
.stars label{font-size:42px;line-height:1;color:#D5D8EA;cursor:pointer;transition:transform .1s}
.stars label:hover,.stars label:hover ~ label,.stars input:checked ~ label{color:var(--t-f49723)}
.stars label:hover{transform:scale(1.12)}
.stars input:focus-visible + label{outline:3px solid var(--pink);border-radius:6px}
.stars-key{display:flex;justify-content:space-between;width:230px}
.rep-card .sq,.uploads-switch .sq,.survey-ask .sq{display:flex;align-items:center;justify-content:center;border-radius:16px}

/* ── videos in the gallery ── */
.lb-video{display:none;max-width:100%;max-height:100%;border-radius:8px;background:#000}
.lb.lb-isvid .lb-canvas{display:none} .lb.lb-isvid .lb-video{display:block} .lb.lb-isvid .lb-shield{display:none}
.lb-wm{position:absolute;inset:0;pointer-events:none;background-repeat:repeat;display:none} .lb.lb-isvid .lb-wm{display:block}
.lb.lb-hidden .lb-video{visibility:hidden}
.photo-btn video{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;pointer-events:none;background:#0B1640}
.photo-btn .play-badge,.vid-thumb .play-badge{position:absolute;inset:0;margin:auto;width:54px;height:54px;border-radius:50%;background:rgba(11,22,64,.7);display:flex;align-items:center;justify-content:center}
.vid-thumb{position:relative;display:block} .vid-thumb video{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:#0B1640;display:block}
/* ── survey template editor ── */
.sq-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:start;padding:14px;border:1.5px solid var(--line,var(--b-e3e6f3));border-radius:16px;background:var(--surface)}
.sq-row.is-ecat{border-color:var(--teal);background:var(--l-effbfa)}
.sq-row .num{width:28px;height:28px;font-size:13px}
.sq-row .sq-tools{display:flex;flex-direction:column;gap:4px}
.sq-row .sq-tools button{width:34px;height:30px;padding:0;justify-content:center}
.q-avg{display:grid;grid-template-columns:1fr 120px 46px;gap:10px;align-items:center}
/* ── benefits: big logo, small category ── */
.ben-head{position:relative;height:150px;background:#fff;border-bottom:1px solid #EEF0F7;display:flex;align-items:center;justify-content:center;padding:16px 20px;overflow:hidden}
.ben-head img.logo{max-height:110px;max-width:85%;object-fit:contain}
.ben-head img.cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ben-cat{position:absolute;top:12px;left:12px;width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(11,22,64,.15)}
.ben-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.photos-edit{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.photos-edit label{position:relative;display:block;border-radius:10px;overflow:hidden;cursor:pointer}
.photos-edit img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.photos-edit input{position:absolute;top:6px;left:6px;width:18px;height:18px}
.photos-edit label:has(input:not(:checked)) img{opacity:.3;filter:grayscale(1)}
/* ── important news slider ── */
.news-slider{position:relative;border-radius:22px;overflow:hidden;min-height:250px;background:var(--navy)}
.news-slider .ns-slide{position:absolute;inset:0;display:flex;align-items:flex-end;padding:26px 30px;color:#fff;opacity:0;transition:opacity .6s;text-decoration:none}
.news-slider .ns-slide.on{opacity:1;z-index:1}
.news-slider .ns-slide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.45}
.news-slider .ns-slide .ns-txt{position:relative;max-width:640px;display:flex;flex-direction:column;gap:6px}
.news-slider .ns-slide b{font:800 26px/1.2 Poppins,sans-serif}
.news-slider .ns-dots{position:absolute;right:20px;bottom:18px;z-index:2;display:flex;gap:6px}
.news-slider .ns-dots button{width:10px;height:10px;border-radius:99px;border:0;background:rgba(255,255,255,.45);cursor:pointer;padding:0}
.news-slider .ns-dots button.on{width:26px;background:var(--surface)}
.news-slider .ns-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.18);cursor:pointer;display:flex;align-items:center;justify-content:center}
.news-slider .ns-nav.prev{left:12px} .news-slider .ns-nav.next{right:12px}
@media (prefers-reduced-motion:reduce){.news-slider .ns-slide{transition:none}}
.news-slider .ns-nav{top:16px;transform:none} .news-slider .ns-nav.prev{left:auto;right:62px} .news-slider .ns-nav.next{right:16px}
.news-slider .ns-slide{padding-right:120px}
.q-avg .bar{display:block;height:10px;background:var(--l-eef0f7);border-radius:99px;overflow:hidden} .q-avg .bar i{display:block;height:100%;border-radius:99px}

/* ── step 10: compact home hero, News → Events, budget ── */
.hero.hero-home{min-height:220px;border-radius:24px}
.hero.hero-home .art{height:100%;width:auto;opacity:.95}
.hero.hero-home .txt{padding:22px 34px;gap:8px}
.hero.hero-home .hero-lockup img{width:280px}
.hero.hero-home .hero-lockup .hub-script{font-size:60px}
.hero.hero-home .txt > img{width:260px!important}
.hero-btns{gap:10px;flex-wrap:wrap;margin-top:4px}
@media (max-width:640px){.hero.hero-home .hero-lockup .hub-script{font-size:44px}.hero.hero-home .txt{padding:20px}.hero.hero-home .art{opacity:.35}}
.home-sec-title{display:flex;align-items:center;gap:10px;margin:6px 0 -4px}
.home-sec-title h2{margin:0;flex:1}
.home-events .tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-bottom:4px}
.home-events .tabs button{background:none;border:0;cursor:pointer;padding:12px 2px;font:600 15px Poppins,sans-serif;color:var(--muted);border-bottom:3px solid transparent;margin-bottom:-1px;display:inline-flex;gap:8px;align-items:center}
.home-events .tabs button.on{color:var(--heading);border-color:var(--pink);font-weight:700}
.ev-compact .ev .cover,.ev-compact .ev img.cover{height:120px}
.ev.past{opacity:.97}
.ev.past .cover{filter:saturate(.75)}
.bud-bars{display:flex;align-items:flex-end;gap:6px;height:200px;margin-top:44px;padding:0 4px;border-bottom:1px solid var(--line)}
.bud-col{flex:1;position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:0}
.bud-col i{display:block;width:70%;max-width:46px;background:var(--blue);border-radius:6px 6px 0 0;min-height:0}
.bud-col i.vch{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);background:#F49723;border-radius:6px 6px 0 0}
.bud-col .v{font:700 11px Poppins,sans-serif;color:var(--heading);white-space:nowrap;margin-bottom:3px}
.bud-col .l{height:22px;line-height:22px;font-size:11px;color:var(--muted);white-space:nowrap}
.kdot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin-right:4px}
.use-bar{height:8px;border-radius:6px;background:var(--line);overflow:hidden;min-width:90px}
.use-bar > i{display:block;height:100%;background:var(--teal,#2CD0C6)}
.use-bar.warn > i{background:#F49723}.use-bar.over > i{background:var(--pink)}
.spend-form{background:var(--l-f6f7fc);border:1px solid var(--line);border-radius:14px;padding:14px}
.spend-hist{margin:6px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:2px}
.budget-card .tbl td{vertical-align:top}
.nh-grid.solo{grid-template-columns:minmax(0,1fr)} .nh-grid.solo .nh-feat{min-height:220px}
.home-news .news-slider{margin:0}
.spend-add > summary{list-style:none;cursor:pointer;gap:10px} .spend-add > summary::-webkit-details-marker{display:none}
.spend-add[open] > summary{margin-bottom:12px}
.spend-add .spend-form .grid.g3{max-width:640px}
.spend-edit{position:relative} .spend-edit > summary{list-style:none} .spend-edit > summary::-webkit-details-marker{display:none}
.spend-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;width:380px;max-width:86vw;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 40px rgba(27,27,127,.18);padding:14px;text-align:left;display:flex;flex-direction:column;gap:8px}

/* ── step 11: cost stage, documents, budget admin, accounts ── */
.cost-sec{border-top:4px solid var(--c)}
.cost-dot{width:12px;height:12px;border-radius:50%;background:var(--c,#376DE6);flex:none;display:inline-block}
.cost-sub{font:800 20px Poppins,sans-serif;color:var(--heading)}
.cost-sum .eyebrow-sm{font:600 12px Poppins,sans-serif;letter-spacing:1.2px;text-transform:uppercase;opacity:.75}
.cost-sum .big{font:800 30px Poppins,sans-serif;line-height:1.1} .cost-sum .big small{font-size:14px;opacity:.7}
.cost-sum .row{font-size:14px;gap:8px}
.q-grid .q-box{gap:8px} .q-box.now{outline:2px solid var(--blue);background:var(--l-eef3ff)}
.q-total{border-top:1px solid var(--line);padding-top:12px;gap:12px;font:600 16px Poppins,sans-serif;color:var(--heading)}
.q-total #qsum{font:800 26px Poppins,sans-serif}
.tbl.alloc td,.tbl.alloc th{white-space:nowrap} .tbl.alloc .over{color:var(--pink);font-weight:700}
.tbl tr.tot td{background:var(--l-f6f7fc);border-top:2px solid var(--line)}
.acc-row{display:grid;grid-template-columns:minmax(140px,1.6fr) minmax(110px,1fr) 76px auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.acc-row.off{opacity:.55} .acc-head{border-bottom:0;padding-bottom:0;text-transform:uppercase;letter-spacing:1px;font-weight:700}
.acc-add{border-bottom:0;padding-top:14px}
@media (max-width:700px){.acc-row{grid-template-columns:1fr 1fr}.acc-head{display:none}}
.ab-grid{align-items:end} .ab-calc{display:block;font:800 20px Poppins,sans-serif;color:var(--heading);padding:10px 0}
.q-amt{font:800 22px Poppins,sans-serif;color:var(--heading)} .q-amt small{font-size:12px;opacity:.6}
.tbl.alloc td.ab-cell{cursor:pointer} .tbl.alloc td.ab-cell:hover{background:var(--l-eef3ff)}
.q-total{gap:14px} .q-total > b{font:800 26px Poppins,sans-serif;color:var(--heading)}

/* ── FTP edition: register / sign in ── */
.hub-login.is-reg .card-in{width:min(500px,100%)}
.login-tabs{display:grid;grid-template-columns:1fr 1fr;background:var(--l-eef3fd);border-radius:12px;padding:4px;gap:4px}
.login-tabs a{text-align:center;padding:9px 6px;border-radius:9px;font:700 14px Poppins,sans-serif;color:var(--muted);text-decoration:none}
.login-tabs a.on{background:var(--surface);color:var(--heading);box-shadow:0 2px 8px rgba(27,27,127,.12)}
.hub-login select.input{background:var(--l-eef3fd)}
@media (max-width:480px){.hub-login .grid.g2{grid-template-columns:1fr}}
.role-row{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(150px,1fr) minmax(170px,1fr) auto;gap:10px;align-items:center}
@media (max-width:900px){.role-row{grid-template-columns:1fr 1fr}}

/* ── upload progress ── */
.up-panel{position:fixed;left:50%;bottom:22px;transform:translate(-50%,140%);z-index:2000;width:min(420px,calc(100vw - 32px));background:#0B1640;color:#fff;border-radius:16px;padding:14px 16px;box-shadow:0 14px 40px rgba(11,22,64,.35);display:flex;flex-direction:column;gap:8px;transition:transform .25s}
.up-panel.on{transform:translate(-50%,0)}
.up-row{display:flex;align-items:center;gap:10px}.up-title{flex:1;font:700 15px Poppins,sans-serif}.up-pct{font:800 18px Poppins,sans-serif;color:var(--teal)}
.up-bar{height:10px;border-radius:99px;background:rgba(255,255,255,.18);overflow:hidden}.up-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#2CD0C6,#E92463);border-radius:99px;transition:width .2s}
.up-file{opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.up-panel.done .up-bar i{background:#2CD0C6}.up-panel.fail{background:#B0164A}.up-panel.fail .up-bar i{background:var(--surface)}

.social-btns{display:flex;flex-wrap:wrap;gap:8px}.social-btns .btn{flex:1 1 140px;justify-content:center}
.ev.past.clickable{cursor:pointer}.ev.past.clickable:hover{box-shadow:0 10px 26px rgba(27,27,127,.14)}
.team-tabs{margin-top:-4px}
/* ── budget admin grid ── */
.ab-tbl td{vertical-align:top}.ab-pair{display:flex;align-items:center;gap:4px}.ab-in{width:68px;padding:7px 8px;min-height:0}
.ab-out{display:block;margin-top:4px;color:var(--heading)}
@media (max-width:640px){.ab-in{width:70px}}
.ab-tbl th{white-space:normal;letter-spacing:.4px;font-size:11px;vertical-align:bottom}.ab-tbl th .tiny{text-transform:none;letter-spacing:0;font-weight:500}
/* ── copyright & version ── */
.site-foot{display:flex;flex-wrap:wrap;gap:6px 18px;justify-content:space-between;align-items:center;margin-top:36px;padding:16px 2px 4px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px}
.site-foot .ver{font-weight:700;color:var(--heading);background:var(--l-eef0fb);border-radius:99px;padding:3px 10px}
.hub-login .site-foot{margin-top:14px;justify-content:center;text-align:center;border:0;padding:0}
/* ── specialist KPIs ── */
.kpi-met{color:var(--t-0fa59d)}.kpi-close{color:var(--t-d88400)}.kpi-below{color:var(--t-d6245c)}.kpi-none{color:#9AA0BE}
.kchip{display:inline-flex;align-items:center;border-radius:99px;padding:3px 10px;font:700 12px Poppins,sans-serif;background:var(--l-eef0fb);white-space:nowrap}
.kchip.kpi-met{background:var(--l-dcf7f4);color:var(--t-0a6a64)}.kchip.kpi-close{background:var(--l-fff1d6);color:var(--t-8a5300)}.kchip.kpi-below{background:var(--l-fde7ef);color:var(--t-b0164a)}.kchip.kpi-none{background:var(--l-f1f2f7);color:var(--t-6b6f92)}
.kscore,.kcell{display:inline-block;min-width:52px;text-align:center;border-radius:10px;padding:4px 8px;font:800 14px Poppins,sans-serif;background:var(--l-f1f2f7)}
.kscore.kpi-met,.kcell.kpi-met{background:var(--l-dcf7f4);color:var(--t-0a6a64)}.kscore.kpi-close,.kcell.kpi-close{background:var(--l-fff1d6);color:var(--t-8a5300)}.kscore.kpi-below,.kcell.kpi-below{background:var(--l-fde7ef);color:var(--t-b0164a)}
.kpi-hero{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.kpi-ring.kpi-none{color:#D5D8EA}
.kpi-card h3{margin:0}.kpi-actual{font:800 30px Poppins,sans-serif;color:var(--heading)}
.kbar{position:relative;display:block;height:10px;border-radius:99px;background:var(--l-eef0fb)}.kbar i{display:block;height:100%;border-radius:99px;background:currentColor}
.kbar b{position:absolute;top:-4px;width:2px;height:18px;background:#1B1B7F;border-radius:2px}
.kpi-month{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:4px}.kpi-month b{min-width:130px;text-align:center;font:700 15px Poppins,sans-serif}
.kh{display:flex;align-items:flex-end;gap:10px;height:150px;border-bottom:1px solid var(--line)}.kh-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%;color:var(--ink)}
.kh-bar{width:100%;max-width:34px;border-radius:8px 8px 0 0;background:currentColor}.kh-col .on{color:var(--pink);font-weight:800}
.kpi-dash{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.kpi-board td{vertical-align:middle}.kpi-mgr summary{cursor:pointer;color:var(--blue,var(--t-376de6))}
.kpi-edit summary{list-style:none}.kpi-edit[open]{position:relative}.kpi-edit[open] .kpi-form{position:absolute;right:0;z-index:5;width:min(560px,80vw);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:0 16px 40px rgba(11,22,64,.18)}
/* ── biometric sign-in ── */
.bio-btn{width:100%;justify-content:center;background:linear-gradient(90deg,#1B1B7F,#376DE6);gap:10px}
.bio-or{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin:2px 0}.bio-or::before,.bio-or::after{content:"";flex:1;height:1px;background:var(--line)}
.bio-ask{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.bio-ask p{margin:0}
/* ── editable roles ── */
.roles-grid{align-items:start}.role-card{gap:10px;border:1px solid var(--line);box-shadow:none}.role-card.locked{background:var(--l-f7f8fd)}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.perm{display:flex;flex-direction:column;gap:4px}.perm .p,.p-sel{text-align:center;font:700 13px Poppins,sans-serif;border-radius:10px;padding:7px 8px}
.p-sel.p-full{background:#1B1B7F;color:#fff}.p-sel.p-edit{background:var(--l-e7eeff);color:var(--t-2549b8)}.p-sel.p-own{background:var(--l-dcf7f4);color:var(--t-0a6a64)}.p-sel.p-view{background:var(--l-eef0f7);color:var(--t-3d4166)}.p-sel.p-none{background:var(--surface);color:#9AA0BE}
/* ── official communications ── */
.comm-card{display:flex;gap:16px;align-items:flex-start;color:var(--ink);padding:16px}.comm-card.imp{border-left:5px solid var(--pink)}
.comm-img{width:132px;height:88px;object-fit:cover;border-radius:12px;flex:none}.comm-ic{width:64px;height:64px;border-radius:16px;background:var(--l-eef0fb);display:flex;align-items:center;justify-content:center;flex:none}
.comm-t{font:700 18px Poppins,sans-serif;color:var(--heading)}.comm-sn{color:var(--muted)}
.comm-page{max-width:900px}.comm-hero{width:100%;max-height:420px;object-fit:cover;border-radius:16px}.comm-body{font-size:16.5px;line-height:1.7}
.comm-pdf{width:100%;height:70vh;border:1px solid var(--line);border-radius:12px}
.comm-gate{position:fixed;inset:0;z-index:3000;background:rgba(11,22,64,.82);display:flex;align-items:center;justify-content:center;padding:16px}
.cg-box{background:var(--surface);border-radius:22px;max-width:680px;width:100%;max-height:92vh;overflow:auto;padding:24px;display:flex;flex-direction:column;gap:12px;box-shadow:0 30px 80px rgba(0,0,0,.4)}
.cg-body{max-height:40vh;overflow:auto}.cg-ok{background:var(--l-fff7e3);border-radius:12px;padding:12px}body.cg-open{overflow:hidden}
@media (max-width:640px){.comm-card{flex-direction:column}.comm-img{width:100%;height:160px}}
/* ── LOBs under accounts ── */
.lob-box{margin:-4px 0 10px 18px;border-left:3px solid var(--b-e3e6f2);padding-left:10px;display:flex;flex-direction:column;gap:6px}
.lob-row .lob-name{display:flex;align-items:center;gap:6px}.lob-row .input{min-height:0;padding:7px 10px}.lob-add .input::placeholder{font-size:13px}
.ab-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.ab-result{background:var(--l-f4f5fb);border-radius:12px;padding:10px 14px;gap:10px}.ab-calc{font:800 18px Poppins,sans-serif;color:var(--heading)}
.ab-cell{cursor:pointer}.ab-cell:hover{background:var(--l-f4f6ff)}.lob-tr td{background:var(--l-fbfbfe)}
@media (max-width:900px){.ab-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:520px){.ab-grid{grid-template-columns:1fr}}
.pw-show{display:flex;align-items:center;gap:10px;background:var(--l-f4f5fb);border-radius:12px;padding:12px}.pw-show code{font:800 24px/1 ui-monospace,Consolas,monospace;letter-spacing:2px;color:var(--heading);flex:1;background:none;border:0;user-select:all}
.size-hint{display:inline-block;font:600 12px/1.4 Lato,system-ui,sans-serif;color:var(--t-2549b8);background:var(--l-e7eeff);border-radius:8px;padding:2px 8px;margin-left:2px}

.cg-box .comm-hero{max-height:220px}
.emp-bulk{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end;padding:12px 16px}.emp-bulk .eb-head{grid-column:1/-1}.emp-bulk .field{margin:0}.emp-bulk .field.hide+button{grid-column:3}
@media (max-width:700px){.emp-bulk{grid-template-columns:1fr}.emp-bulk .field.hide+button{grid-column:auto}}
.imp-opt summary{cursor:pointer}.imp-opt[open]{background:var(--l-f7f8fc);border-radius:12px;padding:10px}
/* ── 2.3.0 quarter consumption ── */
.bq{border:2px solid var(--b-e3e6f2)}.bq h3{font:700 16px Poppins,sans-serif;color:var(--heading)}
.bq-divider{margin:8px 0 -4px;gap:10px;align-items:baseline;border-top:1px dashed var(--line);padding-top:14px}
.site-card{border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px;background:var(--l-fbfbfe)}
.stack-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--l-eef0f7)}.stack-bar i{display:block;height:100%}
.split-chip{display:inline-flex;gap:4px;align-items:center;font:600 11.5px Lato,system-ui,sans-serif;border-radius:999px;padding:2px 8px;margin:1px 0;background:color-mix(in srgb,var(--c) 12%,var(--surface));color:var(--t-1b1b3a);border:1px solid color-mix(in srgb,var(--c) 35%,var(--b-ffffff))}
.bq .eyebrow-sm,.bq-divider .eyebrow-sm{font:700 12px Poppins,sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:var(--pink)}
/* ── picture viewer (2.3.0) ── */
.lbx{position:fixed;inset:0;z-index:9999;background:rgba(8,10,40,.92);display:flex;flex-direction:column;animation:lbxIn .15s ease}
@keyframes lbxIn{from{opacity:0}to{opacity:1}}
.lbx-top{display:flex;align-items:center;gap:14px;padding:12px 16px;color:#fff;font:600 14px Poppins,sans-serif}
.lbx-count{min-width:54px;opacity:.85}.lbx-cap{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9;font-weight:500}
.lbx-tools{display:flex;gap:8px}
.lbx-btn{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.12);border:0;color:#fff;border-radius:999px;padding:8px 14px;font:600 13px Poppins,sans-serif;cursor:pointer}
.lbx-btn:hover,.lbx-btn.on{background:rgba(255,255,255,.24)}
.lbx-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:8px 72px 24px;min-height:0}
.lbx-stage img{max-width:100%;max-height:100%;object-fit:contain;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.45);background:#fff}
.lbx-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:0;background:rgba(255,255,255,.14);cursor:pointer;display:flex;align-items:center;justify-content:center}
.lbx-nav:hover{background:rgba(255,255,255,.28)}.lbx-nav.prev{left:12px}.lbx-nav.next{right:12px}
@media (max-width:640px){.lbx-stage{padding:8px 8px 70px}.lbx-nav{top:auto;bottom:12px;transform:none}.lbx-btn span{display:none}}

/* ── 3.0: gallery video fits every phone — portrait or landscape, aspect ratio kept, never wider than the screen ── */
.lb{overflow:hidden;max-width:100vw}
.lb-stage{min-width:0;overflow:hidden}
.lb-video{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
@media (max-width:640px){
  .lb-stage{margin:0 6px 76px}
  .lb-nav{top:auto;bottom:14px;transform:none}
  .lb-video{max-height:calc(100vh - 170px);max-height:calc(100dvh - 170px)}
}
@media (orientation:landscape) and (max-height:500px){ .lb-top{padding:6px 12px} .lb-stage{margin:0 64px 6px} .lb-nav{top:50%;bottom:auto;transform:translateY(-50%)} .lb-video{max-height:calc(100vh - 64px)} }
/* ── 3.0: external QR check-in card ── */
.gate-link{display:flex;gap:6px}.gate-link .input{flex:1;min-width:0;font-size:12px}
.gate-recent{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.gate-recent li{display:flex;gap:8px;align-items:flex-start}
.gdot{width:12px;height:12px;border-radius:50%;flex:none;margin-top:4px;background:#999}.g-green,.g-walkin{background:#0FA59D}.g-again{background:#376DE6}.g-yellow{background:#F5B400}.g-red{background:#D9363E}.g-black{background:#0B1640}
.esc-card .tbl td,.esc-card .tbl th{padding:6px 8px}
.esc-hist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.esc-hist li{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.flash-hl{animation:flashhl 1.6s ease}
@keyframes flashhl{0%,40%{box-shadow:0 0 0 4px #E92463}100%{box-shadow:0 0 0 0 transparent}}
.tpl-prev{display:none}
.tpl-prev.on{display:block}
.gate-pin{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--l-f4f5fb);border-radius:14px;padding:10px 12px}
.gate-pin div{flex:1;min-width:120px}.gate-pin small{display:block;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.gate-pin b{font:800 26px Poppins,sans-serif;letter-spacing:6px;color:var(--heading)}
/* ── 3.0: My Vouchers ── */
.voucher-card{border-left:6px solid #F49723}.voucher-card.is-done{opacity:.6;border-left-color:#C9CCE0}
.vc-logo{width:56px;height:56px;border-radius:16px;background:#FFF4E8;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none}.vc-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
/* ── 3.0: OCT Points, gym subscription, ladies-only slots ── */
.pts-big{display:flex;flex-direction:column;gap:2px}.pts-big b{font:800 40px Poppins,sans-serif;line-height:1.1}.pts-big small{opacity:.8}
.pts{display:inline-flex;align-items:center;justify-content:center;min-width:52px;padding:4px 8px;border-radius:10px;font:800 14px Poppins,sans-serif}
.pts.up{background:var(--l-e3f7f5);color:var(--t-0b6b65)}.pts.down{background:var(--l-ffe9ef);color:var(--t-b0164a)}.pts-row{flex-wrap:nowrap;border-bottom:1px solid var(--line);padding-bottom:6px}
.slot.closed.ladies{background:var(--l-ffe9f3);color:var(--t-b0164a);border-color:var(--b-f8c3da)}
.sub-card{border-top:4px solid var(--teal)}
.act-now{gap:8px;align-items:center;background:var(--l-e3f7f5);border-radius:14px;padding:10px 14px}.act-now b{font:800 22px Poppins,sans-serif;color:var(--t-0b6b65)}
.live-dot{width:10px;height:10px;border-radius:50%;background:#0FA59D;box-shadow:0 0 0 4px rgba(15,165,157,.2);animation:livep 1.6s infinite}@keyframes livep{50%{box-shadow:0 0 0 8px rgba(15,165,157,0)}}
.pts-rule{display:flex;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:8px}.pts-rule .check{flex:1}.pts-rule .input{width:84px}
.act-bars{display:flex;align-items:flex-end;gap:2px;height:160px;padding-top:8px}.act-bars span{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;min-width:3px}
.act-bars i{display:block;width:100%;background:var(--teal);border-radius:4px 4px 0 0;min-height:2px}.act-bars small{font-size:9px;color:var(--muted);height:12px}
.heat{display:grid;grid-template-columns:34px repeat(24,1fr);gap:2px;align-items:center}.heat small{font-size:9px;color:var(--muted)}.heat i{display:block;aspect-ratio:1;border-radius:3px;background:#5A45D6}
.join-req{border-left:4px solid #F49723}
/* ── 3.0: birthdays ── */
.bday-feed{background:linear-gradient(135deg,var(--l-fff7ec),var(--l-fff0f6))}
.bday-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.bday-card{background:var(--surface);border-radius:16px;padding:12px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;box-shadow:0 2px 10px rgba(27,27,127,.06)}
.bday-card img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;margin-bottom:4px}
.bday-av{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#F49723,#E92463);color:#fff;display:flex;align-items:center;justify-content:center;font:800 22px Poppins,sans-serif;margin-bottom:4px}
.bday-card p{margin:2px 0 0}.bday-wish{color:var(--t-e92463);font-weight:700}
.bday-tabs{display:flex;gap:6px;flex-wrap:wrap}.bday-tabs button{border:0;background:var(--surface);color:var(--t-1b1b7f);border-radius:999px;padding:7px 14px;font:700 13px Poppins,sans-serif;cursor:pointer;display:inline-flex;gap:6px;align-items:center;box-shadow:0 1px 4px rgba(27,27,127,.08)}
.bday-tabs button .n{background:var(--l-eef0fb);border-radius:999px;padding:0 7px;font-size:11px}.bday-tabs button.on{background:#E92463;color:#fff}.bday-tabs button.on .n{background:rgba(255,255,255,.25)}
.bday-me{border:2px solid #F49723;background:var(--l-fffbf4)}.bday-cake{font-size:46px;line-height:1}

/* 3.0 d3.1 facility status */
.fs-card.sel{outline:3px solid #E92463}
.fs-now{border-radius:14px;padding:12px 14px;font-size:15px;display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
.fs-now span{font-size:13px;opacity:.85}.fs-now.open{background:var(--l-e6f8f1);color:var(--t-0b7a55)}.fs-now.closed{background:var(--l-fff1e0);color:var(--t-8a5300)}.fs-now.ladies{background:var(--l-f6eafe);color:var(--t-7a2e9e)}
.fs-up{display:flex;gap:8px;align-items:center;padding:8px 10px;background:var(--l-f7f8fc);border-radius:10px}.fs-up-t{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.st-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.st-tile{position:relative;display:flex;flex-direction:column;gap:2px;padding:12px;border:2px solid var(--b-e3e6f2);border-radius:14px;cursor:pointer;background:var(--surface)}
.st-tile input{position:absolute;opacity:0;pointer-events:none}.st-tile .em{font-size:24px;line-height:1.2}
.st-tile:has(input:checked){border-color:#E92463;background:var(--l-fff2f7)}.st-tile:has(input:focus-visible){outline:3px solid #376DE6}
/* 3.0 d3.4 profile photos */
.bday-av.has-img{background:var(--surface);padding:0;overflow:hidden}.bday-av img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.pend-photo{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:4px;flex:none}.pend-photo img{width:64px;height:64px;border-radius:50%;object-fit:cover;opacity:.85;border:2px dashed #F49723}
.photo-remind{border:2px solid #376DE6;background:var(--l-f5f8ff)}
.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.ph-card{background:var(--surface);border:1px solid var(--line,var(--b-e1e4f2));border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:8px;align-items:center;text-align:center}
.ph-card img{width:150px;height:150px;border-radius:50%;object-fit:cover;box-shadow:0 2px 10px rgba(27,27,127,.15)}
.ph-card .was{width:40px;height:40px;border-radius:50%;object-fit:cover;opacity:.7}
.scan-photo{width:132px;height:132px;border-radius:50%;object-fit:cover;border:4px solid rgba(255,255,255,.9);box-shadow:0 4px 18px rgba(0,0,0,.25);margin-bottom:6px}
/* 3.0 d3.4 ESAT survey */
.esat-card{border:2px solid #5A45D6;background:linear-gradient(135deg,var(--l-f3f0ff),var(--surface))}.esat-ic{font-size:38px;line-height:1}
.esat-q{border:0;padding:0;margin:0 0 6px}.esat-q legend{font-weight:700;color:var(--heading);margin-bottom:8px;display:flex;gap:8px;align-items:flex-start}
.esat-q .qn{flex:none;width:24px;height:24px;border-radius:50%;background:var(--l-eef0fb);color:var(--heading);font:700 12px/24px Poppins,sans-serif;text-align:center}
.esat-opts{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.esat-opts.nps{grid-template-columns:repeat(11,1fr)}
.esat-opts label{cursor:pointer}.esat-opts input{position:absolute;opacity:0;pointer-events:none}
.esat-opts span{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:48px;padding:6px 4px;border:2px solid var(--b-e1e4f2);border-radius:12px;background:var(--surface);text-align:center;font-size:13px}
.esat-opts span small{font-size:10.5px;color:var(--t-5d6290);line-height:1.15}.esat-opts label:has(input:checked) span{border-color:#E92463;background:var(--l-fff0f6)}.esat-opts label:has(input:focus-visible) span{outline:3px solid #376DE6}
.nps-ends{display:flex;justify-content:space-between;font-size:11px;color:var(--t-5d6290);margin-top:4px}
@media (max-width:600px){.esat-opts span small{display:none}.esat-opts.nps{grid-template-columns:repeat(6,1fr)}}
.esat-bar{height:10px;border-radius:6px;background:var(--l-eef0fb);overflow:hidden;display:flex}.esat-bar i{display:block;height:100%}
.m-only{display:none!important}@media (max-width:600px){.m-only{display:flex!important}}
/* 3.0 d3.5 ESAT colour scale: 1 red → 5 green (0–10 for eNPS); the chosen answer fills with its colour, the others fade */
.esat-opts label{--c:#9AA0C3}
.esat-opts:not(.nps) label[data-v="1"]{--c:#D93A3F}.esat-opts:not(.nps) label[data-v="2"]{--c:#F07C2E}.esat-opts:not(.nps) label[data-v="3"]{--c:#E2B100}.esat-opts:not(.nps) label[data-v="4"]{--c:#7CC242}.esat-opts:not(.nps) label[data-v="5"]{--c:#12A35B}
.esat-opts.nps label[data-v="0"]{--c:#C62828}.esat-opts.nps label[data-v="1"]{--c:#D93A3F}.esat-opts.nps label[data-v="2"]{--c:#E4552F}.esat-opts.nps label[data-v="3"]{--c:#EC6B2D}.esat-opts.nps label[data-v="4"]{--c:#F07C2E}.esat-opts.nps label[data-v="5"]{--c:#F39A26}.esat-opts.nps label[data-v="6"]{--c:#F2B01E}
.esat-opts.nps label[data-v="7"]{--c:#C9B800}.esat-opts.nps label[data-v="8"]{--c:#A6BF1A}.esat-opts.nps label[data-v="9"]{--c:#4CAF50}.esat-opts.nps label[data-v="10"]{--c:#12A35B}
.esat-opts span{border-color:color-mix(in srgb,var(--c) 55%,var(--b-ffffff));background:color-mix(in srgb,var(--c) 9%,var(--surface));border-bottom-width:5px;transition:transform .15s ease,background .15s ease,opacity .15s ease,box-shadow .15s ease}
.esat-opts span b{color:var(--c);font-size:16px}
.esat-opts label:hover span{transform:translateY(-2px);box-shadow:0 4px 12px color-mix(in srgb,var(--c) 30%,transparent)}
.esat-opts label:has(input:checked) span{background:var(--c);border-color:var(--c);color:#fff;transform:scale(1.08);box-shadow:0 6px 16px color-mix(in srgb,var(--c) 45%,transparent)}
.esat-opts label:has(input:checked) span b,.esat-opts label:has(input:checked) span small{color:#fff}
.esat-opts:has(input:checked) label:not(:has(input:checked)) span{opacity:.42;transform:scale(.96)}
.esat-chosen{min-height:18px;font:700 13px Poppins,sans-serif;margin-top:6px}
.part-bar{display:inline-flex;height:12px;width:160px;border-radius:7px;background:var(--l-eef0fb);overflow:hidden;vertical-align:middle}.part-bar i{display:block;height:100%}
.heat td.hc{font:700 12px Poppins,sans-serif;text-align:center;color:#fff;min-width:70px}
.sample-flag{background:repeating-linear-gradient(135deg,var(--l-fff3e3) 0 12px,var(--l-ffe8c8) 12px 24px);border:2px dashed #F49723;border-radius:12px;padding:8px 12px;font-weight:700;color:var(--t-8a5300)}
.heat td:first-child,.heat th:first-child{min-width:160px}

/* ── 3.0 d3.7 UI polish: nothing squeezed, nothing hidden ── */
/* card headers: name gets the room, the status chip moves under it when space is short */
.card > .row[style*="nowrap"] > span[style*="flex:1"]{min-width:0}
.card > .row[style*="nowrap"]:has(> .chip){flex-wrap:wrap!important}
.card > .row[style*="nowrap"]:has(> .chip) > span[style*="flex:1"]{flex:1 1 120px!important}
/* ticket numbers and IDs never break */
.tk-tbl td > a > b, .tbl td.time, .tbl .nowrap{white-space:nowrap}
/* "More" menu for long rows of table actions */
details.more-menu{position:relative;display:inline-block}
details.more-menu > summary{list-style:none;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
details.more-menu > summary::-webkit-details-marker{display:none}
details.more-menu[open] > summary{background:var(--soft);border-color:var(--navy)}
details.more-menu[open] > summary svg{transform:rotate(180deg)}
.more-list{position:fixed;z-index:60;min-width:190px;display:flex;flex-direction:column;gap:4px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px -12px rgba(23,24,74,.35)}
.more-list > *, .more-list > form > .btn, .more-list > .btn{width:100%}
.more-list .btn{justify-content:flex-start;border-color:transparent;background:transparent;box-shadow:none}
.more-list .btn:hover{background:var(--soft)}
.more-list .btn-outline-danger:hover{background:var(--bad-bg)}
/* wide tables (8+ columns): tighter cell padding so they fit without scrolling */
.tbl:has(tr > :nth-child(8)) th,.tbl:has(tr > :nth-child(8)) td{padding-left:10px;padding-right:10px}
.tbl:has(tr > :nth-child(8)) th{letter-spacing:.6px}
/* side menu: labels get the room; the "you are here" dot hides when a counter is shown */
.nav a > span:not(.count){min-width:0;flex:1 1 auto;line-height:1.25}
.nav a.on:has(.count)::after{display:none}
.nav .count{flex:none}
/* table pages with a side column (Employees, PX team): under 1600 px the side cards move under the table (or above it while editing), side by side */
@media (max-width:1600px){
  .split.roomy{grid-template-columns:minmax(0,1fr)}
  .split.roomy > aside{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:start;gap:18px}
  .split.roomy.roomy-top > aside{order:-1}
}
/* tables that don't fit: stacked cards */
table.tbl.stacked{display:block;width:100%}
table.tbl.stacked>tbody{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px;padding:0;width:100%;box-sizing:border-box}
table.tbl.stacked tr{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px 16px;align-items:start;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);position:relative}
table.tbl.stacked tr.stk-full{grid-column:1 / -1}
table.tbl.stacked tr.stk-head{display:none}
table.tbl.stacked td{display:block;padding:0;border:0;text-align:left;min-width:0;width:auto!important;white-space:normal}
table.tbl.stacked td::before{content:attr(data-label);display:block;margin-bottom:2px;font:600 10.5px/1.4 Poppins,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}
table.tbl.stacked td.stk-nolabel:first-child,table.tbl.stacked td.stk-pick + td,table.tbl.stacked td:last-child:has(.actions){grid-column:1 / -1}
table.tbl.stacked td.stk-nolabel::before{display:none}
table.tbl.stacked td.stk-pick{position:absolute;top:12px;right:14px;padding:0;left:auto}
table.tbl.stacked td.stk-pick + td{padding-right:36px}
table.tbl.stacked td:last-child:has(.actions){padding-top:2px}
table.tbl.stacked td:last-child:has(.actions)::before{display:none}
table.tbl.stacked .actions{justify-content:flex-start;flex-wrap:wrap}
table.tbl.stacked tr.stk-full{display:block}
table.tbl.stacked tr.stk-full td::before{display:none}
.tk-tbl.stacked tr.clickable:hover{background:var(--soft)}
/* form rows: when one field has a hint and its neighbour doesn't, the boxes still line up */
.grid > .field > :is(.input, select, textarea, .drop, .row):last-child{margin-top:auto}
/* tabs never wrap into a lonely second row — they scroll sideways on narrow screens */
.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tabs::-webkit-scrollbar{display:none}
.tabs a{white-space:nowrap;flex:none}
/* side menu: a slim scrollbar shows there is more below */
.side{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) transparent}
/* courts day view: booking chips stay on one line */
.court-grid .slot{height:auto!important;min-height:32px;line-height:1.25;padding:6px 10px;text-align:left;justify-content:flex-start;white-space:normal;overflow-wrap:normal}
.court-grid h3,.court-grid h4{overflow-wrap:normal}
.row > .tabs{min-width:0;flex:1 1 auto}
/* admin news list: the buttons sit in one tidy row under the text */
.news-row{display:grid!important;grid-template-columns:170px minmax(0,1fr);align-items:stretch}
.news-row > div:first-child{grid-row:1 / span 2;width:auto!important}
.news-row > .stack{padding:14px 16px 6px!important}
.news-row > .actions{padding:4px 16px 14px!important;justify-content:flex-start;flex-wrap:wrap;margin:0}
@media (max-width:560px){.news-row{grid-template-columns:96px minmax(0,1fr)}}
/* card action rows (vendors, facilities): even gaps, delete always on the right */
.card-acts{gap:6px;align-items:center}
.fac-acts > .fac-show{order:-1;flex:1 1 100%}
.fac-acts > .fac-show select{width:100%!important}
.tbl .actions{flex-wrap:wrap;align-items:center}
.tbl .actions > .tiny{flex:1 1 100%;text-align:right;order:9;line-height:1.3}
table.tbl.stacked .actions > .tiny{text-align:left}
/* Employees → edit: the edit form gets the wide column, photo / access / import cards sit beside it */
@media (min-width:901px) and (max-width:1600px){
  .split.roomy.roomy-top > aside{grid-template-columns:minmax(0,3fr) minmax(300px,2fr);grid-auto-flow:row dense}
  .split.roomy.roomy-top > aside > form[data-on=empSave]{grid-column:1;grid-row:1 / span 8}
  .split.roomy.roomy-top > aside > :not(form[data-on=empSave]){grid-column:2}
  .split.roomy.roomy-top > aside > form[data-on=empImport]{order:9}
}
/* phones: hero sticker gets its own line, the art steps back */
@media (max-width:600px){
  .hero .sticker{right:16px;top:16px;font-size:13px;padding:6px 12px;transform:rotate(2deg)}
  .hero .txt,.hero.hero-home .txt{padding-top:62px}
  .hero.hero-home .art{opacity:.28}
}
/* home news slider: the box grows with the longest slide, so headlines are never cut */
.news-slider{display:grid}
.news-slider .ns-slide{position:relative;inset:auto;grid-area:1 / 1;min-height:250px}
@media (max-width:600px){
  .news-slider .ns-slide{padding:66px 20px 46px;min-height:240px}
  .news-slider .ns-slide b{font-size:22px}
  .news-slider .ns-dots{left:20px;right:auto;bottom:18px}
}
@media (max-width:600px){.nh-media .nh-art{padding-right:0;justify-content:center}}
/* section headers: the "All →" link never breaks */
.card-head{flex-wrap:wrap}
.card-head a.more{white-space:nowrap;flex:none}
.card-head h2{min-width:0;flex:1 1 150px;display:flex;align-items:center;gap:8px}
.card-head h2 > svg{flex:none}
.card-head span.more{flex:0 1 auto;text-align:right}
/* birthdays header: title on one line, the Yesterday / Today / Tomorrow tabs in a row under it on phones */
.bday-feed .card-head{flex-wrap:wrap}
.bday-feed .card-head h2{white-space:nowrap}
@media (max-width:600px){.bday-feed .bday-tabs{flex:1 1 100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.bday-feed .bday-tabs button{justify-content:center;padding:8px 4px;min-width:0;font-size:12px;gap:4px}.bday-feed .bday-tabs button .n{padding:0 5px}}
/* notifications: text gets the full width; on phones "Open" moves under the text */
.notif-row{flex-wrap:nowrap;align-items:flex-start}
.notif-row > svg{flex:none;margin-top:2px}
.notif-row > span{min-width:0}
@media (max-width:520px){.notif-row{flex-wrap:wrap}.notif-row > span{flex:1 1 calc(100% - 40px)!important}.notif-row > .btn{margin-left:32px}}
a.crumb{display:inline-flex;align-items:center;min-height:40px;padding-right:8px}
/* phones: number tiles two per row (an odd one out spans the row) instead of one tall stack */
@media (max-width:600px){
  .grid.g3:has(> .kpi),.grid.g3:has(> .stat),.grid.g4:has(> .kpi),.grid.g4:has(> .stat){grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .grid:has(> .kpi) > .panel-navy,.grid:has(> .stat) > .panel-navy{grid-column:1 / -1}
  .grid:has(> .kpi):not(:has(> .panel-navy)) > :last-child:nth-child(odd),.grid:has(> .stat):not(:has(> .panel-navy)) > :last-child:nth-child(odd){grid-column:1 / -1}
}
@media (max-width:600px){
  .filter-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px}
  .filter-row select{width:100%!important;min-width:0}
  .filter-row .btn{align-self:stretch;height:auto}
  .page-head .actions{margin-left:0}
}
.gym-promo > svg{overflow:visible}
@media (max-width:600px){.gym-promo > svg{right:-120px!important;opacity:.6}.gym-promo{padding:20px!important}}
.status-grid > :last-child:nth-child(odd){grid-column:1 / -1}
.role-card > .row:first-of-type > b{flex:1 1 150px!important;min-width:0}
.roles-grid{align-items:start}
/* any group of action buttons lines up in one wrapping row */
.actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.actions > form{display:contents}
.table-wrap:has(> table.tbl.stacked){background:transparent;border:0;overflow:visible}
.card .table-wrap:has(> table.tbl.stacked) table.tbl.stacked tr{background:var(--soft);border-color:transparent}
/* tab rows and filter chips that scroll sideways fade out at the edge, so it's clear there is more */
.tabs.scrolls,.pills.scrolls{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);padding-right:30px}
@media (max-width:760px){.pills{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.pills::-webkit-scrollbar{display:none}.pills > *{flex:none}}

.court-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
@media (max-width:1100px){.court-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.court-grid{grid-template-columns:minmax(0,1fr)}}
.num{flex:none}
.notif-row > .btn{min-height:38px}
.nowrap{white-space:nowrap}
@media (max-width:600px){.hero-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.hero-btns > :first-child{grid-column:1 / -1}.hero-btns .btn{justify-content:center;padding-left:10px;padding-right:10px}}
.tbl td:has(> .role-form) .actions{justify-content:flex-start}

/* day pickers: one row that scrolls instead of a ragged second row */
@media (max-width:1100px){.adm .days{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}.adm .days::-webkit-scrollbar{display:none}.adm .days > a{flex:none}}
/* an odd last step / choice spans the row instead of sitting alone */
@media (max-width:900px){.stepper li:last-child:nth-child(odd){grid-column:1 / -1}}
.grid.g2 > .choice:last-child:nth-child(odd){grid-column:1 / -1}
/* names in the first column of a table don't break */
.tbl td:first-child b{white-space:nowrap}
table.tbl.stacked td:first-child b{white-space:normal}
/* size hints: lighter, so they don't shout */
.size-hint{font-weight:500!important;background:var(--l-eef2ff)!important}
/* "Coming up" closures: the cancel × sits in the corner */
.fs-up{position:relative;padding-right:46px!important}
.fs-up .fs-up-t > form{position:absolute;top:8px;right:8px}
@media (max-width:620px){.g2{grid-template-columns:minmax(0,1fr)}}
.split.roomy.roomy-top > aside > form[data-on=empImport]{order:9}

/* ── 3.0 d3.8 · Dark mode ───────────────────────────────────────────────
   core.js sets <html data-theme="light|dark"> from My profile → Appearance
   (Automatic follows the phone / computer setting). */
html[data-theme=dark]{
  color-scheme:dark;
  --navy:#3433A6; --navy-2:#4544C2; --blue:#6E95F5; --teal-ink:#5FE0D3; --pink-ink:#FF7DA6; --violet:#8C7BF0;
  --bg:#0C0E22; --surface:#15183A; --soft:#1B1F46; --soft-2:#232856; --ink:#E6E8FA; --muted:#A6AAD2; --line:#2A2F5C; --line-2:#383E72;
  --ok-bg:#0F3B3A; --ok:#5FE0D3; --warn-bg:#3A2C0F; --warn:#FFC266; --bad-bg:#43142A; --bad:#FF7DA6; --info-bg:#1B2A5C; --info:#9DB8FF;
  --heading:#DCDDFF; --navy-ink:#1B1B7F; --tint-base:#15183A; --chip-mix:55%; --t-5c3700:#FFD08A; --esat-hi:#4BD38C; --esat-mid:#F2C14E; --esat-lo:#FF7A80;
  --shadow:0 8px 22px rgba(0,0,0,.35);
--b-c9cde3:#31385E;
  --b-c9ceea:#283166;
  --b-d8e1f6:#253761;
  --b-dce3f7:#253461;
  --b-e1e4f2:#28325D;
  --b-e3e6f2:#2A345B;
  --b-e3e6f3:#28325D;
  --b-eef0f7:#293357;
  --b-f3c4d3:#66273B;
  --b-f6c2d4:#65263C;
  --b-f8c3da:#652641;
  --b-ffffff:var(--surface);
  --l-c9cde3:#1E233F;
  --l-dcf7f4:#123F3A;
  --l-e3e9f8:#121E3D;
  --l-e3f7f5:#123E39;
  --l-e6f8f1:#123D2C;
  --l-e7eaf5:#171E38;
  --l-e7eeff:#111D3B;
  --l-eef0f7:#181F34;
  --l-eef0f8:#161D36;
  --l-eef0fb:#11173A;
  --l-eef2ff:#111A39;
  --l-eef3fd:#111E3A;
  --l-eef3ff:#111D39;
  --l-effbfa:#113A37;
  --l-f1ecff:#1C113A;
  --l-f1f2f7:#191D33;
  --l-f3f0ff:#191139;
  --l-f3f6ff:#101A38;
  --l-f4f5fb:#141836;
  --l-f4f6ff:#101738;
  --l-f5f8ff:#101C38;
  --l-f6eafe:#2A113A;
  --l-f6f7fc:#121836;
  --l-f7f8fc:#141A34;
  --l-f7f8fd:#101738;
  --l-fbfbfe:#101037;
  --l-fde7ef:#3B1121;
  --l-ffe6b3:#473615;
  --l-ffe8c8:#422F13;
  --l-ffe9ef:#3A111C;
  --l-ffe9f3:#3A1124;
  --l-fff0f6:#391121;
  --l-fff1d6:#3F3012;
  --l-fff1e0:#3D2912;
  --l-fff2f7:#381020;
  --l-fff3e3:#3C2A11;
  --l-fff4e8:#3B2711;
  --l-fff6dd:#3D3212;
  --l-fff7e3:#3C3011;
  --l-fff7ec:#3A2911;
  --l-fffbf4:#382910;
  --t-0a6a64:#A9F3EE;
  --t-0b1640:#C9D2F6;
  --t-0b6b65:#A7F2EE;
  --t-0b7a55:#9CF1D5;
  --t-0fa59d:#79ECE6;
  --t-111433:#D4D6F1;
  --t-1b1b3a:#CECEE8;
  --t-1b1b7f:#9393E8;
  --t-2549b8:#8099E5;
  --t-2b2e52:#B9BCDA;
  --t-376de6:#799DEC;
  --t-3d4166:#A8ACCB;
  --t-4a4e75:#A1A4C4;
  --t-4b2db8:#9884E1;
  --t-5b6085:#A4A8C1;
  --t-5c3700:#F5DEBB;
  --t-5d6290:#A2A5C3;
  --t-6b6f92:#A7A9BE;
  --t-7a2e9e:#C288DC;
  --t-8a5300:#F0CD98;
  --t-8a8dae:#A5A7C0;
  --t-b0164a:#EC79A0;
  --t-d6245c:#E97C9E;
  --t-d88400:#ECBF79;
  --t-e92463:#EC799E;
  --t-f49723:#ECB979;
}
/* Appearance menu (top bars) and choice buttons */
details.theme-menu{position:relative}
details.theme-menu > summary{list-style:none;cursor:pointer}
details.theme-menu > summary::-webkit-details-marker{display:none}
.theme-list{position:absolute;right:0;top:calc(100% + 8px);z-index:80;min-width:230px;display:flex;flex-direction:column;gap:4px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 40px -12px rgba(5,6,40,.45)}
.theme-list > b{padding:2px 8px 4px;letter-spacing:.8px;text-transform:uppercase}
.theme-opt{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--ink);font:600 14px Poppins,sans-serif;text-align:left;cursor:pointer}
.theme-opt small{display:block;font:400 12px Carlito,Calibri,sans-serif;color:var(--muted)}
.theme-opt:hover{background:var(--soft)}
.theme-opt[aria-pressed=true]{background:var(--info-bg);border-color:var(--blue);color:var(--heading)}
.theme-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.theme-row .theme-opt{flex-direction:column;justify-content:center;text-align:center;border-color:var(--line);background:var(--surface);gap:4px;padding:12px 6px}
.theme-row .theme-opt small{display:none}
@media (max-width:600px){.emp-view{padding:8px 10px}}

/* dark mode: colours written directly into screens (generated) */
html[data-theme=dark] [style*="background:#C9CEEA" i],html[data-theme=dark] [style*="background: #C9CEEA" i]{background:#1A2042!important}
html[data-theme=dark] [style*="background:#DCF7F4" i],html[data-theme=dark] [style*="background: #DCF7F4" i]{background:#123F3A!important}
html[data-theme=dark] [style*="background:#E3F9F6" i],html[data-theme=dark] [style*="background: #E3F9F6" i]{background:#123D37!important}
html[data-theme=dark] [style*="background:#E7EEFF" i],html[data-theme=dark] [style*="background: #E7EEFF" i]{background:#111D3B!important}
html[data-theme=dark] [style*="background:#EEF0F7" i],html[data-theme=dark] [style*="background: #EEF0F7" i]{background:#181F34!important}
html[data-theme=dark] [style*="background:#F4F5FB" i],html[data-theme=dark] [style*="background: #F4F5FB" i]{background:#141836!important}
html[data-theme=dark] [style*="background:#FDE7EF" i],html[data-theme=dark] [style*="background: #FDE7EF" i]{background:#3B1121!important}
html[data-theme=dark] [style*="background:#FFF1D6" i],html[data-theme=dark] [style*="background: #FFF1D6" i]{background:#3F3012!important}
html[data-theme=dark] [style*="background:#FFF4E8" i],html[data-theme=dark] [style*="background: #FFF4E8" i]{background:#3B2711!important}
html[data-theme=dark] svg[stroke="#1B1B7F" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#9393E8}
html[data-theme=dark] [style*="color:#1B1B7F" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#9393E8!important}
html[data-theme=dark] svg[stroke="#2549B8" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#889FE7}
html[data-theme=dark] [style*="color:#2549B8" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#889FE7!important}
html[data-theme=dark] svg[stroke="#B0164A" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#ED82A6}
html[data-theme=dark] [style*="color:#B0164A" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#ED82A6!important}
html[data-theme=dark] svg[stroke="#8A5300" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#F0CD98}
html[data-theme=dark] [style*="color:#8A5300" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#F0CD98!important}
html[data-theme=dark] svg[stroke="#0A6A64" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#A9F3EE}
html[data-theme=dark] [style*="color:#0A6A64" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#A9F3EE!important}
html[data-theme=dark] svg[stroke="#5B5E85" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#AAACC5}
html[data-theme=dark] [style*="color:#5B5E85" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#AAACC5!important}
html[data-theme=dark] svg[stroke="#5C3700" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#F5DEBB}
html[data-theme=dark] [style*="color:#5C3700" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#F5DEBB!important}
html[data-theme=dark] svg[stroke="#17184A" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#C0C1EB}
html[data-theme=dark] [style*="color:#17184A" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#C0C1EB!important}
html[data-theme=dark] svg[stroke="#0B6B65" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#A7F2EE}
html[data-theme=dark] [style*="color:#0B6B65" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#A7F2EE!important}
html[data-theme=dark] svg[stroke="#4A4E75" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){stroke:#A8ABC8}
html[data-theme=dark] [style*="color:#4A4E75" i]:not([style*="background:#fff"]):not([style*="background:#fff"] *):not(.btn-teal *):not(.btn *):not(.chip *):not(.hero *):not(.panel-navy *):not([style*="background:#2CD0C6"] *):not([style*="background:#FFD166"] *){color:#A8ABC8!important}
html[data-theme=dark] [style*="color:var(--navy)"]:not(.btn):not(.chip){color:var(--heading)!important}
table.tbl.stacked .chip{white-space:normal;text-align:left}
table.tbl.stacked td > *{max-width:100%}

/* dark mode: fine-tuning after review */
html[data-theme=dark] .icon-pick label:has(input:checked){background:var(--info-bg);border-color:var(--blue);color:var(--heading)}
html[data-theme=dark] .swatches label{box-shadow:0 0 0 1px rgba(255,255,255,.28)}
html[data-theme=dark] .swatches label:has(input:checked){box-shadow:0 0 0 2px var(--surface),0 0 0 4px #A9B4FF}
html[data-theme=dark] [style*="background:#1B1B7F" i]:not(.btn):not(.side){background:#4A4AC8!important}
html[data-theme=dark] [style*="border-left-color:#1B1B7F" i],html[data-theme=dark] [style*="--c:#1B1B7F" i]{border-left-color:#6B70FF!important;--c:#6B70FF!important}
html[data-theme=dark] [fill="#1B1B7F" i]{fill:#6B70FF}
html[data-theme=dark] .kpi-ring,html[data-theme=dark] .kpi-ring *{color:var(--ink)}
html[data-theme=dark] .news-slider .ns-dots button.on{background:#fff}
html[data-theme=dark] .stars label{color:rgba(255,255,255,.22)}
html[data-theme=dark] .stars label:hover,html[data-theme=dark] .stars label:hover ~ label,html[data-theme=dark] .stars input:checked ~ label{color:#F7A93B}
html[data-theme=dark] input[type=checkbox],html[data-theme=dark] input[type=radio],html[data-theme=dark] input[type=range]{accent-color:#8C97FF}
html[data-theme=dark] .uploads-switch .sq{background:var(--soft-2)} html[data-theme=dark] .uploads-switch .sq svg{stroke:var(--muted)}
html[data-theme=dark] .survey-ask .sq svg,html[data-theme=dark] .sq[style*="#FFD166" i] svg{stroke:#3A2A00}
html[data-theme=dark] .p-sel.p-edit,html[data-theme=dark] .p-edit{color:#B9CBFF} html[data-theme=dark] .p-sel.p-view,html[data-theme=dark] .p-view{color:#C9CCEB}
html[data-theme=dark] .chip-grey{color:#C9CCEB}
html[data-theme=dark] .size-hint{background:#22295A!important;color:#B9CBFF}
.theme-row .theme-opt[aria-pressed=true]{background:var(--info-bg);border-color:var(--blue);color:var(--heading)}
/* every file picker looks the same */
input[type=file]{font:14px Carlito,Calibri,sans-serif;color:var(--muted)}
input[type=file]::file-selector-button{font:700 13px Poppins,system-ui,sans-serif;padding:8px 14px;margin-right:12px;border:0;border-radius:9px;background:var(--navy);color:#fff;cursor:pointer}
/* 3.0 d3.8 · gallery reactions */
.ph-tile{margin:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.react-bar{display:flex;gap:6px;align-items:center}
.react{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font:700 13px Poppins,sans-serif;cursor:pointer;transition:transform .12s,background .15s,border-color .15s}
.react:hover{border-color:var(--line-2);color:var(--ink)}
.react:active{transform:scale(.92)}
.react .n:empty{display:none}
.react.like.on{background:var(--info-bg);border-color:var(--blue);color:var(--blue)}
.react.like.on svg{fill:currentColor;fill-opacity:.18}
.react.heart.on{background:var(--bad-bg);border-color:#E92463;color:#E92463}
.react.heart.on svg{fill:#E92463}
.react.on svg{animation:react-pop .28s ease-out}
@keyframes react-pop{0%{transform:scale(.6)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.react.on svg{animation:none}}
.album-sort{justify-content:space-between;align-items:center;gap:10px;margin:4px 0 2px}
.album-sort .pills{margin:0}
.lb-react{display:flex;justify-content:center;padding:0 0 20px;position:relative;z-index:5}
.lb-react .react{background:rgba(10,12,40,.55);border-color:rgba(255,255,255,.28);color:#fff;height:42px;padding:0 16px;backdrop-filter:blur(6px)}
.lb-react .react.like.on{background:#376DE6;border-color:#376DE6;color:#fff}
.lb-react .react.heart.on{background:#E92463;border-color:#E92463;color:#fff}
.lb-react .react.heart.on svg{fill:#fff}
.react-sum{display:inline-flex;align-items:center;gap:4px}
/* dark mode: second review */
html[data-theme=dark] .survey-ask .sq svg{stroke:#3A2A00!important}
html[data-theme=dark] .toggle{background:#3A4170;box-shadow:inset 0 0 0 1px #5A619A}
html[data-theme=dark] .toggle::after,html[data-theme=dark] .toggle i{background:#C9CDF0}
html[data-theme=dark] .p-sel.p-view,html[data-theme=dark] .p-view{background:#20265A}
html[data-theme=dark] .chip-esc{background:rgba(139,92,246,.24);color:#C9B8FF}
html[data-theme=dark]{--chip-mix:40%;--chipl-mix:70%;--chipl-base:#ffffff}
/* dark mode: visible (un-ticked) checkboxes and radios in the navy theme */
html[data-theme=dark] :is(label.check, .choice, .tbl td, .emp-bulk, .eb-head, .pill, .fac-pick) > input:is([type=checkbox],[type=radio]):not(:checked){appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:0 2px 0 0;flex:none;vertical-align:-3px;border:1.5px solid #7077B0;background:#1B1F46;border-radius:5px;cursor:pointer}
html[data-theme=dark] :is(label.check, .choice, .tbl td, .emp-bulk, .eb-head, .pill, .fac-pick) > input[type=radio]:not(:checked){border-radius:50%}
html[data-theme=dark] :is(label.check, .choice, .tbl td, .emp-bulk, .eb-head, .pill, .fac-pick) > input:is([type=checkbox],[type=radio]):checked{width:18px;height:18px;margin:0 2px 0 0;flex:none}
html[data-theme=dark] :is(label.check, .choice, .tbl td) > input:is([type=checkbox],[type=radio]):not(:checked):hover{border-color:#A9B0E8}
html[data-theme=dark] .toggle.on{background:var(--teal);box-shadow:none}
/* ── 3.0 d3.11 · Wall of Fame ─────────────────────────────── */
.fm-hero{position:relative;overflow:hidden;border-radius:24px;padding:30px 34px;background:radial-gradient(circle at 85% 20%,rgba(255,209,102,.35),transparent 45%),linear-gradient(135deg,#1B1B7F 0%,#3A2A9E 55%,#6B3FB8 100%);color:#fff;display:flex;gap:20px;align-items:center;box-shadow:0 18px 40px rgba(27,27,127,.22)}
.fm-hero h1{color:#fff;font-size:40px;margin:4px 0 6px}
.fm-hero p{margin:0;opacity:.92;max-width:640px}
.fm-eyebrow{font:600 13px Poppins,sans-serif;letter-spacing:3px;text-transform:uppercase;color:#FFD166}
.fm-trophy{font-size:96px;margin-left:auto;filter:drop-shadow(0 10px 24px rgba(0,0,0,.35));transform:rotate(-8deg)}
.fm-jump{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.fm-jump a{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:6px 14px;font:600 13px Poppins,sans-serif}
.fm-jump a:hover{background:rgba(255,255,255,.24);color:#fff}
.fm-sec{display:flex;flex-direction:column;gap:14px;margin-top:8px;scroll-margin-top:80px}
.fm-sec-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.fm-sec-head h2{font-size:24px}
.fm-sub{margin-top:6px}
.fm-board{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:22px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.fm-board h3{font-size:20px}
.fm-podium{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:14px;align-items:end}
.fm-podium .top1{order:2;padding-top:26px}.fm-podium .top2{order:1}.fm-podium .top3{order:3}
.fm-rest{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:12px}
.fm-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:18px 14px 14px;border-radius:18px;background:var(--soft);border:1px solid var(--line);min-width:0}
.fm-card .fm-name{font:700 16px/1.25 Poppins,sans-serif;color:var(--heading)}
.fm-card.top1{background:linear-gradient(180deg,rgba(255,209,102,.38),var(--soft) 70%);border:2px solid #F2B705}
.fm-card.top2{background:linear-gradient(180deg,rgba(192,198,214,.45),var(--soft) 70%);border:2px solid #AEB4C6}
.fm-card.top3{background:linear-gradient(180deg,rgba(225,150,90,.30),var(--soft) 70%);border:2px solid #D08A54}
.fm-medal{position:absolute;top:10px;left:12px;font:800 16px Poppins,sans-serif;color:var(--muted)}
.fm-card.top1 .fm-medal,.fm-card.top2 .fm-medal,.fm-card.top3 .fm-medal{font-size:30px;top:6px;left:10px}
.fm-ph .fm-ava{width:84px;height:84px;font-size:28px;border:3px solid var(--surface);box-shadow:0 6px 16px rgba(23,24,74,.18)}
.fm-card.top1 .fm-ph .fm-ava{width:104px;height:104px;font-size:34px;border-color:#F2B705}
.fm-rest .fm-ph .fm-ava{width:68px;height:68px;font-size:22px}
.fm-ph .fm-ava.big{width:110px;height:110px;font-size:36px;border-color:#FFD166}
.fm-why{color:var(--ink);font-style:italic;overflow-wrap:anywhere}
.fm-streak{background:#FFE8C8;color:#8A3B00}
.react.cheer{margin-top:4px}
.react.cheer.on{background:#FFF1D6;border-color:#F49723;color:#8A5300}
.fm-win{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:20px 16px;border-radius:22px;color:#fff;background:radial-gradient(circle at 50% 0%,rgba(255,209,102,.35),transparent 60%),linear-gradient(160deg,#1B1B7F,#4A2FA8);box-shadow:0 14px 30px rgba(27,27,127,.25);min-width:0}
.fm-win .fm-name{font:800 19px/1.2 Poppins,sans-serif;color:#fff}
.fm-win .tiny{color:rgba(255,255,255,.8)}
.fm-win .fm-why{color:#fff;opacity:.92}
.fm-win-cat{font:700 13px Poppins,sans-serif;letter-spacing:.5px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:4px 12px}
.fm-badge{background:#FFD166;color:#3A2A00}
.fm-win .react.cheer{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.3);color:#fff}
.fm-win .react.cheer.on{background:#FFD166;border-color:#FFD166;color:#3A2A00}
.fm-wins{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:14px}
.fm-cta{border-left:4px solid #F49723}
.fm-ballot h3{font-size:18px}
.fm-noms{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px}
.fm-nominee{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:16px;border:1px solid var(--line);background:var(--soft);min-width:0}
.fm-nominee.voted{border:2px solid var(--teal);background:var(--ok-bg)}
.fm-nominee .btn{align-self:flex-start}
.fm-stories summary{cursor:pointer;color:var(--blue)}
.fm-stories p{margin:6px 0 0}
.fm-pick{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow:auto}
.fm-pick-row{display:flex;gap:10px;align-items:center;text-align:left;padding:8px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;font:inherit}
.fm-pick-row:hover{background:var(--soft)}
.fm-home{display:flex;gap:14px;align-items:center;color:var(--ink);border-left:4px solid #F49723}
.fm-home.me{background:linear-gradient(90deg,rgba(255,209,102,.3),var(--surface) 60%);border-left-color:#F2B705}
.fm-home .btn{margin-left:auto;flex:none}
.fm-home-ic{font-size:30px;flex:none}
@media (max-width:600px){
  .fm-hero{padding:22px 20px}.fm-hero h1{font-size:30px}.fm-trophy{position:absolute;right:-6px;top:-6px;font-size:76px;opacity:.35}
  .fm-podium .top1,.fm-podium .top2,.fm-podium .top3{order:0;padding-top:18px}
  .fm-rest{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* admin */
.fm-boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:12px}
.fm-bcard{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:16px;border:1px solid var(--line);background:var(--soft);color:var(--ink)}
.fm-bcard:hover{border-color:var(--blue);color:var(--ink)}
.fm-bcard.pub{border-left:4px solid var(--teal)} .fm-bcard.draft{border-left:4px solid #F49723}
.fm-bname{font:700 16px Poppins,sans-serif;color:var(--heading)}
.fm-slots{display:flex;gap:3px}.fm-slots i{flex:1;height:6px;border-radius:3px;background:var(--line)}.fm-slots i.on{background:#F2B705}
.fm-rank{display:inline-flex;align-items:center;justify-content:center;width:38px;flex:none;font:800 15px Poppins,sans-serif;color:var(--muted)}
.fm-rank.r1,.fm-rank.r2,.fm-rank.r3{font-size:24px}
.fm-slotlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.fm-slotlist li{display:flex;gap:10px;align-items:center;padding:10px;border-radius:14px;border:1px dashed var(--line-2);min-height:56px}
.fm-slotlist li.on{border-style:solid;background:var(--soft)}
.fm-slot-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.fm-slot-btns{display:flex;gap:4px;flex:none}
.fm-people{display:flex;flex-direction:column;gap:6px;max-height:520px;overflow:auto}
.fm-prow{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:12px;background:var(--soft)}
.fm-cat{display:grid;grid-template-columns:64px minmax(0,1fr) minmax(0,2fr) auto;gap:8px;align-items:center}
@media (max-width:700px){.fm-cat{grid-template-columns:64px minmax(0,1fr) auto}.fm-cat input:nth-of-type(4){grid-column:1 / -1}}
.pill-check{border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:var(--surface)}
.fm-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.fm-steps li{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border-radius:12px;background:var(--soft);border:1px solid var(--line)}
.fm-steps li.on{background:var(--info-bg);border-color:var(--blue)}.fm-steps li.done{opacity:.6}
@media (max-width:700px){.fm-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fm-catblk{display:flex;flex-direction:column;gap:8px;padding-top:8px;border-top:1px solid var(--line)}
.fm-catblk h3{font-size:16px}
.fm-nom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) auto;gap:12px;align-items:start;padding:10px;border-radius:14px;background:var(--soft)}
.fm-nom.rejected{opacity:.6}
.fm-nom-act{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
@media (max-width:900px){.fm-nom{grid-template-columns:minmax(0,1fr)}.fm-nom-act{align-items:flex-start}}
.fm-story{overflow-wrap:anywhere}
.fm-vrow{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 10px;align-items:center;padding:4px 0}.fm-vrow>:first-child{grid-column:1 / -1}
.fm-vbar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}.fm-vbar i{display:block;height:100%;background:#F2B705;border-radius:99px}
html[data-theme=dark] .fm-streak{background:#4A2E10;color:#FFC98A}
html[data-theme=dark] .react.cheer.on{background:#4A3810;border-color:#F49723;color:#FFD08A}
.fm-status{flex-wrap:wrap}.fm-status>:last-child{flex:1 1 260px}
@media (max-width:600px){.fm-slotlist li{flex-wrap:wrap}.fm-slot-main{flex:1 1 calc(100% - 52px)}.fm-slot-btns{margin-left:48px}}
.fm-now{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--soft);border:1px dashed var(--line-2)}.fm-now>span.small{flex:1 1 260px}
.fm-adminbar{display:flex;flex-direction:column;gap:8px;border-left:4px solid var(--teal);padding:12px 16px}.fm-adminbar .pills{margin:0;flex-wrap:wrap;overflow:visible;-webkit-mask-image:none;mask-image:none}
.notice.exposed-warn{background:#FEE4E2;color:#7A1B14;border:2px solid #F04438;margin-bottom:12px;align-items:flex-start}.notice.exposed-warn code{background:rgba(0,0,0,.06);padding:1px 5px;border-radius:6px}
html[data-theme=dark] .notice.exposed-warn{background:#3A1412;color:#FFD3CF;border-color:#F04438}
/* 3.0 d3.15: "View as" bar (an admin looking at the hub as an employee) */
.viewas-bar{position:sticky;top:8px;z-index:30;display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;padding:10px 14px;border-radius:14px;background:linear-gradient(90deg,#B42318,#E8246B);color:#fff;box-shadow:0 10px 24px rgba(180,35,24,.25);font-size:14px}
.viewas-bar>span{flex:1 1 240px}.viewas-bar .btn{background:#fff;color:#B42318;border-color:#fff}
/* ═════════ 3.0 d3.16 · Wall of Fame on office TVs (…/tv) — always the dark brand look, sized to the screen (vmin) ═════════ */
html.tv-mode,html.tv-mode body{background:#0E0F3D;overflow:hidden;height:100%}
.tv{position:fixed;inset:0;display:flex;flex-direction:column;color:#fff;font:400 2.1vmin/1.35 Carlito,Calibri,sans-serif;background:radial-gradient(circle at 85% 10%,rgba(232,36,107,.25),transparent 40%),radial-gradient(circle at 10% 90%,rgba(44,208,198,.18),transparent 45%),linear-gradient(160deg,#141574 0%,#0E0F3D 60%,#1E1250 100%);padding:2.6vmin 3.4vmin}
.tv h1,.tv h2{color:#fff;margin:0;font-family:Poppins,sans-serif}
.tv-brand .hub-lockup img.fam{height:5.2vmin;width:auto}.tv-brand .hub-lockup{display:flex;align-items:center;gap:1vmin}.tv-brand .hub-badge{transform:scale(1.1)}
.tv-top{display:flex;align-items:center;gap:2vmin}
.tv-where{font:700 3vmin Poppins,sans-serif;margin-left:auto;padding:.6vmin 2vmin;border-radius:99px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22)}
.tv-clock{font:700 3vmin Poppins,sans-serif;opacity:.85;min-width:9vmin;text-align:right}
.tv-sample{font:800 1.8vmin Poppins,sans-serif;letter-spacing:.3vmin;background:#F49723;color:#2B1600;padding:.4vmin 1.2vmin;border-radius:.8vmin}
.tv-stage{position:relative;flex:1;margin-top:2vmin;min-height:0}
.tv-slide{position:absolute;inset:0;display:flex;flex-direction:column;gap:2.2vmin;opacity:0;transform:translateY(1.5vmin);transition:opacity .9s ease,transform .9s ease;pointer-events:none}
.tv-slide.on{opacity:1;transform:none}
.tv-h{font-size:4.6vmin!important;line-height:1.1}.tv-h span{display:block;font:500 2.4vmin Poppins,sans-serif;color:#FFD166;margin-top:.6vmin}
.tv-ava{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;overflow:hidden;background:#2E2FA0;color:#fff;font:800 3vmin Poppins,sans-serif;flex:none;border:.5vmin solid rgba(255,255,255,.85);box-shadow:0 1vmin 3vmin rgba(0,0,0,.35)}
.tv-ava img{width:100%;height:100%;object-fit:cover}
.tv-ava.xl{width:17vmin;height:17vmin;font-size:6vmin}.tv-ava.lg{width:12vmin;height:12vmin;font-size:4.2vmin}.tv-ava.md{width:8.5vmin;height:8.5vmin;font-size:3vmin}
.tv-podium{display:flex;justify-content:center;align-items:flex-end;gap:2.4vmin}
.tv-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.8vmin;width:30%;max-width:46vmin;padding:2.6vmin 2vmin 2.2vmin;border-radius:2.6vmin;background:rgba(255,255,255,.08);border:.35vmin solid rgba(255,255,255,.18)}
.tv-card.top1{order:2;padding-top:4vmin;background:linear-gradient(180deg,rgba(255,209,102,.32),rgba(255,255,255,.06) 70%);border-color:#F2B705}.tv-card.top1 .tv-ava{border-color:#FFD166}
.tv-card.top2{order:1;border-color:#AEB4C6}.tv-card.top3{order:3;border-color:#D08A54}
.tv-podium.n1 .tv-card,.tv-podium.n2 .tv-card{order:0}
.tv-medal{position:absolute;top:1vmin;left:1.6vmin;font-size:5vmin}
.tv-name{font:800 3.2vmin/1.15 Poppins,sans-serif;color:#fff}.tv-card.top1 .tv-name{font-size:3.8vmin}
.tv-sub{font-size:2vmin;color:rgba(255,255,255,.75)}
.tv-why{font-size:2.1vmin;font-style:italic;color:#fff;opacity:.92;overflow-wrap:anywhere}
.tv-chip{font:700 1.8vmin Poppins,sans-serif;background:rgba(255,209,102,.18);color:#FFD9A0;border:1px solid rgba(255,209,102,.4);border-radius:99px;padding:.3vmin 1.4vmin}
.tv-rest{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1.6vmin}
.tv-mini{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.6vmin;padding:1.6vmin 1vmin;border-radius:2vmin;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);min-width:0}
.tv-mini .tv-name{font-size:2.3vmin}.tv-mini .tv-why{font-size:1.7vmin}
.tv-rank{font:800 2.4vmin Poppins,sans-serif;color:#FFD166;align-self:flex-start}
.tv-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2vmin;align-content:start}
.tv-grid.wins{grid-template-columns:repeat(3,minmax(0,1fr))}
.tv-mini.star{padding:2.2vmin 1.4vmin}.tv-mini.star .tv-name{font-size:2.8vmin}
.tv-win{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.7vmin;padding:2vmin 1.6vmin;border-radius:2.4vmin;background:radial-gradient(circle at 50% 0,rgba(255,209,102,.3),transparent 60%),rgba(255,255,255,.08);border:1px solid rgba(255,209,102,.35)}
.tv-win .tv-ava{border-color:#FFD166}.tv-win .tv-name{font-size:2.9vmin}
.tv-cat{font:700 1.9vmin Poppins,sans-serif;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:99px;padding:.4vmin 1.6vmin}
.tv-empty{margin:auto;text-align:center;display:flex;flex-direction:column;gap:2vmin;align-items:center}.tv-empty h2{font-size:4.6vmin}.tv-empty p{font-size:3vmin;opacity:.8}.tv-big{font-size:16vmin}
.tv-foot{display:flex;align-items:center;gap:2vmin;margin-top:1.6vmin;font-size:1.9vmin;opacity:.85}
.tv-dots{display:flex;gap:.8vmin}.tv-dots i{width:1.1vmin;height:1.1vmin;border-radius:50%;background:rgba(255,255,255,.3)}.tv-dots i.on{background:#FFD166}
.tv-bar{flex:1;height:.5vmin;border-radius:9px;background:rgba(255,255,255,.12);overflow:hidden}.tv-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#2CD0C6,#FFD166)}
/* joining a screen */
.tv-pair{justify-content:flex-start}
.tv-pair-grid{flex:1;display:grid;grid-template-columns:1.1fr 1fr;gap:4vmin;align-items:center;margin-top:2vmin}
.tv-pair-box{display:flex;flex-direction:column;gap:1.6vmin;padding:4vmin;border-radius:3vmin;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16)}
.tv-pair-box h1{font-size:6vmin}.tv-pair-box p{margin:0;font-size:2.8vmin}.tv-pair-box.alt{text-align:center}
.tv-pin{display:flex;gap:1.4vmin}.tv-pin i{width:7vmin;height:8.5vmin;border-radius:1.6vmin;background:rgba(255,255,255,.1);border:.35vmin solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font:800 5vmin Poppins,sans-serif;font-style:normal}
.tv-pin i.on{border-color:#FFD166}
.tv-msg{min-height:3vmin;color:#FFB4B4;font-size:2.4vmin}
.tv-keys{display:grid;grid-template-columns:repeat(3,13vmin);gap:1.2vmin}
.tv-key{height:8vmin;border-radius:1.8vmin;border:.3vmin solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:#fff;font:700 3.6vmin Poppins,sans-serif;cursor:pointer}
.tv-key:focus,.tv-key:hover{outline:none;background:#FFD166;color:#1B1B7F;border-color:#FFD166}.tv-key.ok{background:#E8246B;border-color:#E8246B}
.tv-code{font:800 13vmin/1 Poppins,sans-serif;letter-spacing:2.5vmin;color:#FFD166;margin:2vmin 0}
.tv-step{font-size:2.6vmin!important;opacity:.9}.tv-hint{font-size:2.1vmin!important;opacity:.7}
@media (orientation:portrait){
  .tv-podium{flex-direction:column;align-items:center}.tv-card{width:70%;max-width:none}.tv-card.top1{order:0}
  .tv-rest{grid-template-columns:repeat(4,minmax(0,1fr))}.tv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tv-grid.wins{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tv-pair-grid{grid-template-columns:1fr}
}
.tv-linkbox{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-radius:14px;background:var(--soft);border:1px dashed var(--line-2)}.tv-linkbox code{font:700 20px Poppins,sans-serif;color:var(--heading);overflow-wrap:anywhere;flex:1 1 220px}
.tv-scrs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:12px}
.tv-scr.on{border-left:4px solid var(--teal)}
.tv-pinrow{display:flex;gap:10px;align-items:center}.tv-pinbig{font:800 26px Poppins,sans-serif;letter-spacing:4px;color:var(--heading)}
.tv-slide>:nth-child(2){margin-top:auto}.tv-slide>:last-child{margin-bottom:auto}.tv-slide>.tv-empty{margin:auto}
.tv-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:2vmin}.tv-grid>*{width:calc(25% - 1.5vmin)}.tv-grid.wins>*{width:calc(33.333% - 1.4vmin)}
.tv-rest{display:flex;justify-content:center;gap:1.6vmin}.tv-rest>*{width:calc(14.28% - 1.4vmin)}
@media (orientation:portrait){.tv-grid>*,.tv-grid.wins>*{width:calc(50% - 1vmin)}.tv-rest{flex-wrap:wrap}.tv-rest>*{width:calc(25% - 1.2vmin)}}
/* 3.0 d3.18 · TV shows: event, highlights, news, company comms, announcements */
.tv-push .tv-where{background:#F49723;border-color:#F49723;color:#2B1600}
.tv-eyebrow{font:800 2.2vmin Poppins,sans-serif;letter-spacing:.5vmin;text-transform:uppercase;color:#FFD166}.tv-eyebrow.light{color:rgba(255,255,255,.85)}
.tv-title{margin:0;font:800 7.6vmin/1.03 Poppins,sans-serif;color:#fff}.tv-title.md{font-size:5.6vmin}.tv-title.sm{font-size:5.2vmin}.tv-title.xl{font-size:9vmin}
.tv-lead{margin:0;font-size:3.2vmin;line-height:1.3;color:#E3E4FF}.tv-body{margin:0;font-size:3.4vmin;line-height:1.4;color:#fff;white-space:pre-line}
.tv-sub2{font-size:2.6vmin;color:rgba(255,255,255,.8)}
.tv-slide.bleed{border-radius:2.4vmin;overflow:hidden}
.tv-slide>.tv-split,.tv-slide>.tv-news,.tv-slide>.tv-announce{flex:1;margin:0!important;min-height:0}
.tv-split{display:flex;gap:5vmin;align-items:stretch}.tv-split>.tv-pic{flex:1.1}.tv-split>.tv-info{flex:1}
.tv-split.comms>.tv-info{flex:1.4}.tv-split.comms>.tv-pic{flex:1;max-height:62vmin;align-self:center;height:62vmin}
.tv-info{display:flex;flex-direction:column;justify-content:center;gap:2vmin;min-width:0}
.tv-pic{border-radius:3vmin;background-size:cover;background-position:center;min-height:0}.tv-pic.none{display:flex;align-items:center;justify-content:center;padding:4vmin;box-sizing:border-box}
.tv-pic.none span{font:800 5vmin/1.1 Poppins,sans-serif;color:rgba(255,255,255,.9);text-align:center}
.tv-facts{display:flex;flex-direction:column;gap:.8vmin;font-size:3.2vmin}.tv-facts b{font-family:Poppins,sans-serif}
.tv-cta{display:flex;gap:3vmin;align-items:center;margin-top:1vmin}.tv-cta-txt{display:flex;flex-direction:column;gap:1.2vmin;font-size:2.8vmin}
.tv-meter{display:block;width:36vmin;height:1.4vmin;border-radius:99px;background:rgba(255,255,255,.15)}.tv-meter i{display:block;height:100%;border-radius:99px;background:#2CD0C6}
.tv-count{font:800 3.4vmin Poppins,sans-serif;color:#9FE8E3}
.tv-qrbox{display:flex;flex-direction:column;align-items:center;gap:1vmin;flex:none}.tv-qrbox b{font:700 2vmin Poppins,sans-serif;color:#fff;text-align:center}
.tv-qr{width:19vmin;height:19vmin;background:#fff;border-radius:1.6vmin;padding:1vmin;box-sizing:border-box;display:flex;align-items:center;justify-content:center}.tv-qr svg{width:100%;height:100%}
.tv-bg,.tv-video{position:absolute;inset:0;width:100%;height:100%;background-size:cover;background-position:center;object-fit:cover;background-color:#0B0C3A}
.tv-slide.bleed.on .tv-bg{animation:tvzoom 14s ease-out both}@keyframes tvzoom{from{transform:scale(1)}to{transform:scale(1.07)}}
.tv-band{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:flex-end;gap:4vmin;padding:8vmin 4vmin 3vmin;background:linear-gradient(0deg,rgba(11,12,58,.92),rgba(11,12,58,0))}.tv-band>div:first-child{flex:1;display:flex;flex-direction:column;gap:.8vmin}
.tv-news{display:flex;flex-direction:column;gap:2.6vmin}.tv-news>.tv-pic{flex:1}.tv-news-txt{display:flex;gap:4vmin;align-items:center}.tv-news-txt>div:first-child{flex:1;display:flex;flex-direction:column;gap:1vmin}
.tv-redband{background:#C62828;border-radius:1.6vmin;padding:1.4vmin 3vmin;font:800 2.6vmin Poppins,sans-serif;letter-spacing:.3vmin;text-transform:uppercase}
.tv-announce{display:flex;gap:5vmin;align-items:center;border-radius:3vmin;padding:6vmin}.tv-announce>.tv-pic{flex:1;align-self:stretch}.tv-announce>.tv-info{flex:1.3}
@media (orientation:portrait){.tv-split,.tv-announce{flex-direction:column}.tv-split>.tv-pic{min-height:40vh}.tv-news-txt{flex-direction:column;align-items:flex-start}}
/* admin · TV shows */
.tvs-chip{display:inline-block;font:700 11px Poppins,sans-serif;letter-spacing:.5px;text-transform:uppercase;border-radius:99px;padding:2px 9px;vertical-align:1px}
.tvs-chip.fame{background:var(--navy);color:#fff}.tvs-chip.event{background:#FFE3EE;color:#A3154F}.tvs-chip.news{background:#E3ECFF;color:#1F4AA8}.tvs-chip.comms{background:#DDF7F5;color:#136E68}.tvs-chip.push{background:#F49723;color:#2B1600}
html[data-theme=dark] .tvs-chip.event{background:#4A1830;color:#FFB3CF}html[data-theme=dark] .tvs-chip.news{background:#1A2C55;color:#B7CCFF}html[data-theme=dark] .tvs-chip.comms{background:#103D3A;color:#9FE8E3}
.tvs-now{padding:10px 12px;border-radius:12px;background:var(--soft);line-height:1.5}
.tvs-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.tvs-tiles.two{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.tvs-tiles,.tvs-tiles.two{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tvs-tile{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);cursor:pointer}
.tvs-tile:has(input:checked){border:2px solid var(--pink, #E8246B);background:var(--l-fff0f5, #FFF0F5)}html[data-theme=dark] .tvs-tile:has(input:checked){background:#3A1428}
.tvs-tile b{font:700 15px Poppins,sans-serif;color:var(--heading)}
.tvs-item{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--soft);cursor:pointer}.tvs-item input{width:18px;height:18px;flex:none}
.tvs-sw{width:42px;height:28px;border-radius:7px;flex:none}
.tvs-form .tvs-sec{display:none}.tvs-form[data-show=event] .tvs-sec.event,.tvs-form[data-show=news] .tvs-sec.news,.tvs-form[data-show=comms] .tvs-sec.comms{display:flex}
.tvs-push{border:2px solid #F49723}.tvs-push.on{background:var(--l-fff3e3, #FFF3E3)}html[data-theme=dark] .tvs-push.on{background:#3A2610}
.tvs-push .tvs-k,.tvs-push .tvs-s,.tvs-pushform .tvs-k,.tvs-pushform .tvs-s{display:none!important}
.tvs-push[data-kind=announce] .tvs-k.announce,.tvs-push[data-kind=event] .tvs-k.event,.tvs-pushform[data-kind=announce] .tvs-k.announce,.tvs-pushform[data-kind=event] .tvs-k.event{display:flex!important}.tvs-pushform[data-scope=site] .tvs-s.site,.tvs-pushform[data-scope=screens] .tvs-s.screens{display:flex!important}.tvs-push[data-scope=site] .tvs-s.site,.tvs-push[data-scope=screens] .tvs-s.screens{display:flex!important}
.btn-orange{background:#F49723;color:#2B1600;border-color:#F49723}.btn-orange:hover{background:#E08A1C;color:#2B1600}

/* TV screens tab layout (d3.19) */
.tvs-nav{display:flex;gap:6px;flex-wrap:wrap;padding:5px;border-radius:14px;background:var(--surface);border:1px solid var(--line);align-self:flex-start;max-width:100%}
.tvs-nav a{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:10px;font:600 14px Poppins,sans-serif;color:var(--muted);text-decoration:none;white-space:nowrap}
.tvs-nav a:hover{background:var(--soft);color:var(--heading)}
.tvs-nav a.on{background:var(--navy);color:#fff}
.tvs-count{min-width:22px;padding:1px 7px;border-radius:99px;background:var(--soft);color:var(--heading);font:700 12px Poppins,sans-serif;text-align:center}
.tvs-nav a.on .tvs-count{background:rgba(255,255,255,.18);color:#fff}
.tvs-dot{width:8px;height:8px;border-radius:50%;background:#F49723;box-shadow:0 0 0 3px rgba(244,151,35,.25)}
.tvs-pushbar{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;border:2px solid #F49723;background:#FFF3E3}
html[data-theme=dark] .tvs-pushbar{background:#3A2610}
.tvs-pushtxt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.35}.tvs-pushtxt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--heading)}
.tvs-chip.push{background:#F49723;color:#2B1600}
.tvs-bar{display:flex;align-items:flex-end;gap:14px 18px;flex-wrap:wrap;padding:16px 18px}
.tvs-link{display:flex;flex-direction:column;gap:3px;min-width:0}
.tvs-link code{font:700 17px/1.2 Poppins,sans-serif;color:var(--heading);background:none;padding:0;word-break:break-all}
.tvs-pair{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;padding-left:18px;border-left:1px solid var(--line)}
.tvs-pair .field{display:flex;flex-direction:column;gap:5px;margin:0}.tvs-pair input.input{width:92px;text-transform:uppercase;letter-spacing:3px;font-weight:700}.tvs-pair select.input{width:auto;max-width:220px}
.tvs-stat{margin-left:auto;align-self:flex-end;padding-bottom:8px;font-size:14px;color:var(--muted)}.tvs-stat b{font:800 20px Poppins,sans-serif;color:var(--heading)}
.tvs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
.tvs-card{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.tvs-card.on{border-color:color-mix(in srgb,var(--teal) 55%,var(--line))}
.tvs-card header{display:flex;align-items:flex-start;gap:10px}
.tvs-title{flex:1;min-width:0}.tvs-title h3{margin:0;font-size:17px;line-height:1.3;overflow-wrap:anywhere}
.tvs-led{width:11px;height:11px;border-radius:50%;flex:none;margin-top:6px;background:#B9BCD3}
.tvs-led.on{background:#1DB954;box-shadow:0 0 0 4px rgba(29,185,84,.18)}.tvs-led.new{background:transparent;border:2px dashed #9A9DBD}
.tvs-card .tvs-now{display:flex;flex-direction:column;align-items:flex-start;gap:4px;flex:1}
.tvs-what{font-weight:700;color:var(--ink);overflow-wrap:anywhere}.tvs-until{font-size:13px;color:var(--muted)}
.tvs-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px solid var(--line)}
.tvs-pin{display:inline-flex;align-items:center;gap:8px}.tvs-pin b{font:800 20px Poppins,sans-serif;letter-spacing:3px;color:var(--heading)}
.icon-btn.sm{width:32px;height:32px}
.tvs-narrow{max-width:760px;width:100%}
.tvs-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px}
.tvs-step{display:flex;gap:14px;padding-top:14px;border-top:1px solid var(--line)}
.tvs-num{width:30px;height:30px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--navy);color:#fff;font:700 14px Poppins,sans-serif}
.tvs-colors{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tvs-colors legend{width:100%;padding:0;margin-bottom:6px}
.tvs-colors label{cursor:pointer;position:relative}.tvs-colors input{position:absolute;opacity:0}
.tvs-colors span{display:block;width:34px;height:34px;border-radius:50%;border:3px solid var(--surface);box-shadow:0 0 0 1px var(--line)}
.tvs-colors input:checked + span{box-shadow:0 0 0 3px var(--heading)}.tvs-colors input:focus-visible + span{outline:2px solid var(--blue);outline-offset:3px}
.tvs-colors em{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.tvs-seg{display:flex;flex-wrap:wrap;gap:6px}
.tvs-seg label{cursor:pointer;position:relative}.tvs-seg input{position:absolute;opacity:0}
.tvs-seg span{display:inline-block;padding:8px 14px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font:600 14px Poppins,sans-serif;color:var(--muted)}
.tvs-seg input:checked + span{background:var(--navy);border-color:var(--navy);color:#fff}.tvs-seg input:focus-visible + span{outline:2px solid var(--blue);outline-offset:2px}
.tvs-edit{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:20px;align-items:start}
.tvs-items{display:flex;flex-direction:column;gap:8px}
.tvs-tiles.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.tvs-form[data-show=fame] .tvs-sec.fame{display:block}
html[data-theme=dark] .tvs-led.on{background:#2BD46A}
@media (max-width:1100px){.tvs-edit{grid-template-columns:1fr}}
@media (max-width:700px){.tvs-pair{padding-left:0;border-left:0;width:100%}.tvs-stat{margin-left:0}.tvs-2,.tvs-tiles.three{grid-template-columns:1fr}.tvs-grid{grid-template-columns:1fr}.tvs-step{gap:10px}.tvs-nav{align-self:stretch}.tvs-nav a{padding:8px 10px}}
.tvs-pushbar{align-items:flex-start}.tvs-pushbar>.tvs-chip{margin-top:4px}
.tvs-pushlist{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.tvs-pushrow{display:flex;align-items:center;gap:12px}.tvs-pushrow+.tvs-pushrow{padding-top:8px;border-top:1px dashed rgba(244,151,35,.5)}
.tvs-savebar{gap:14px}.tvs-saverow{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.tvs-pushnow{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:2px solid #F49723;background:#FFF3E3}
html[data-theme=dark] .tvs-pushnow{background:#3A2610}
.tvs-pushnow b{display:inline-flex;align-items:center;gap:6px;color:var(--heading)}
.tvs-note{margin:0;padding:10px 14px;border-radius:12px;background:#FFF3E3;color:var(--ink);line-height:1.5}html[data-theme=dark] .tvs-note{background:#3A2610}
