/* Red Tally — Patriot Production Group run-of-show
   Layout: big board — Patriot red header over a black, high-contrast cue table. Single committed dark look. */
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
img{max-width:100%}
:root{
  color-scheme:dark;
  --bg:#000000; --panel:#000000; --row:#0a0a0a; --line:#262626; --line-2:#333333; --fg:#ffffff; --muted:#9a9a9a; --dim:#5c5c5c;
  --head:#ed1c24; --head-hi:#ff3a41; --on-head:#ffffff;
  --bar:#3a0c10; /* muted Patriot red for header bands: low glare in a dark truck */
  --hard:#6fd3ff; --hard-bg:#0a2635;
  --under:#00e676; --under-bg:#00391c;
  --over:#ff4d5e; --over-bg:#3d0009;
  --focus:#4da3ff; --live:#d9a521; --on-live:#000000;
  --f-ui:"Oswald","Arial Narrow",Impact,sans-serif;
  --f-time:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
}
body{background:var(--bg);color:var(--fg);font-family:var(--f-ui);font-size:17px}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bar)}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--focus);outline-offset:1px}

header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bar);color:var(--on-head);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:14px}
.bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 32px}
.showname{flex:1 1 280px;min-width:0}
.showname input{width:100%;border:0;background:transparent;color:var(--on-head);font-size:30px;font-weight:700;text-transform:uppercase;letter-spacing:.01em;padding:0;line-height:1.15}
.showname input:focus{outline:2px solid var(--on-head);outline-offset:2px}
.brand{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.35)}
.brand .logo{height:64px;width:auto;max-width:100%}
.brand .app{font-size:24px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;line-height:1}
.brand .by{font-size:13px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;opacity:.85}
.lbl{font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase}
.back,.hbtn{color:var(--on-head);background:transparent;text-decoration:none;border:2px solid rgba(255,255,255,.75);padding:3px 12px;font-weight:600;font-size:13px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;white-space:nowrap}
.back:hover,.hbtn:hover{background:var(--on-head);color:var(--bar)}
.hbtn{margin-left:auto}
.brand .who{margin-left:auto;font-size:13px;letter-spacing:.06em;text-transform:uppercase;opacity:.9}
.listhead{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.listhead h1{margin:0;font-size:34px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;line-height:1.1}
.btn.light{border-color:var(--on-head);color:var(--on-head)}
.btn.light:hover{background:var(--on-head);color:var(--bar)}
.showlist{display:flex;flex-direction:column;border-top:2px solid var(--line-2)}
.srow{display:grid;grid-template-columns:minmax(0,1fr) repeat(3,auto) auto;gap:12px 32px;align-items:center;padding:16px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.srow:hover{background:var(--row)}
.srow .nm{font-size:24px;font-weight:600;text-transform:uppercase;line-height:1.2}
.srow .dt{color:var(--muted);font-size:15px}
.srow .st{display:flex;flex-direction:column;gap:2px}
.srow .k{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.srow .vv{font-family:var(--f-time);font-weight:700;font-size:17px}
.srow .vv.sm{font-family:var(--f-ui);font-weight:500;font-size:16px}
.srow .ac{display:flex;gap:8px;flex-wrap:wrap}
.empty{padding:40px 12px}
.empty h2{margin:0 0 6px;font-size:24px;text-transform:uppercase}
.empty p{margin:0;color:var(--muted)}
@media (max-width:820px){.srow{grid-template-columns:1fr 1fr}.srow>div:first-child,.srow .ac{grid-column:1/-1}}
.req{border:2px solid var(--line-2);padding:14px 16px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px;max-width:640px}
.req h3{margin:0;font-size:18px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.req .rq-sub{margin:0;color:var(--muted)}
.req .rq-sub b{color:var(--fg);font-weight:500}
.req form{display:flex;flex-direction:column;gap:10px}
.req .f{display:flex;flex-direction:column;gap:4px}
.req label{font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.req input,.req textarea{background:var(--row);border:1px solid var(--line-2);padding:7px 9px;color:var(--fg);font-family:var(--f-ui);font-size:16px;resize:vertical}
.req input:focus,.req textarea:focus{border-color:var(--focus);outline:none}
.req .err{color:var(--over);font-size:15px;min-height:0}
.req .err:empty{display:none}
.req .rq-act{display:flex;gap:10px}
.req .done{color:var(--under);font-size:16px;line-height:1.5}
.req .done small{display:block;color:var(--muted);font-size:13px}
.stat{display:flex;flex-direction:column;gap:2px}
.stat .v{font-family:var(--f-time);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}
.stat input[type=time],.stat input[type=date]{color-scheme:dark;font-family:var(--f-time);font-size:20px;font-weight:700;border:2px solid var(--on-head);background:transparent;color:var(--on-head);padding:0 6px}
.clock{padding:6px 12px;background:var(--panel);color:var(--fg)}
.clock .big{font-size:30px;line-height:1.1}
.clock select{margin-top:4px;background:var(--panel);color:var(--fg);border:1px solid var(--line-2);font-size:13px;font-weight:500;letter-spacing:.04em;padding:1px 4px;cursor:pointer}
.liveband{display:flex;align-items:center;flex-wrap:wrap;gap:8px 22px;margin-top:12px;background:var(--panel);color:var(--fg);padding:8px 10px}
.liveband .onair{background:var(--live);color:var(--on-live);font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:2px 10px;font-size:15px}
.liveband .onair.idle{background:var(--line-2)}
.lv-item{font-size:22px;font-weight:600;text-transform:uppercase;letter-spacing:.01em}
.lv-left{font-family:var(--f-time);font-size:22px;font-weight:700}
.lv-left.over{color:var(--over)}
.lv-next{color:var(--muted);font-size:16px}
.lv-drift{font-family:var(--f-time);font-size:15px;font-weight:700}
.lv-drift.late{color:var(--over)}
.lv-drift.early{color:var(--under)}
.lv-ctl{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px}
.btn.stop{border-color:var(--over);color:var(--over)}
.btn.stop:hover{background:var(--over);color:#fff}
.btn.big{font-size:18px;padding:6px 22px}
.proj{font-family:var(--f-time);font-size:13px;font-weight:700}
.proj.under{color:var(--under)}
.proj.over{color:var(--over)}
.proj:empty{display:none}
#callBtn[aria-pressed="true"]{background:var(--live);border-color:var(--live);color:var(--on-live)}
.fname{font-size:30px;font-weight:700;text-transform:uppercase;letter-spacing:.01em;line-height:1.15}
.share-url{display:flex;gap:8px;flex-wrap:wrap}
.share-url input{flex:1 1 320px;min-width:0;font-family:var(--f-time);font-size:14px}
.clock .mine{font-family:var(--f-time);font-size:13px;color:var(--muted);margin-top:3px}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.chip{display:flex;align-items:center;gap:12px;background:var(--panel);color:var(--fg);padding:7px 8px 7px 12px}
.chip .name{font-weight:600;text-transform:uppercase;letter-spacing:.02em}
.chip .at{font-family:var(--f-time);font-weight:500;font-size:15px;color:var(--hard)}
.chip .ou{font-family:var(--f-time);font-weight:700;font-size:15px;padding:1px 6px}
.ou.under{color:var(--under);background:var(--under-bg)}
.ou.over{color:var(--over);background:var(--over-bg)}
.ou.even,.ou.bt{color:var(--fg);background:var(--line-2)}
.chip .note{font-size:14px;color:var(--muted)}
.nochips{font-size:14px;font-weight:500;margin-top:12px}

.btn{display:inline-block;text-decoration:none;border:2px solid var(--line-2);background:transparent;color:var(--fg);padding:3px 12px;font-weight:600;font-size:14px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.btn:hover{border-color:var(--fg)}
.btn.hot{background:var(--head);border-color:var(--head);color:var(--on-head)}
.btn.hot:hover{background:var(--head-hi);border-color:var(--head-hi)}
.btn[aria-pressed="true"]{border-color:var(--fg)}
.btn:disabled{opacity:.4;cursor:default}

main{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:16px 48px}
.tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}
.tools .hint{color:var(--muted);font-size:14px;margin-left:auto}
.toast{font-size:14px;color:var(--muted)}
.toast.err{color:var(--over)}
.toast.ok{color:var(--under)}

.types{border:2px solid var(--line-2);padding:12px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px}
.types h3{margin:0;font-size:15px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.typelist{display:flex;flex-wrap:wrap;gap:10px}
.trow{display:flex;align-items:center;gap:8px;border:1px solid var(--line-2);padding:5px 6px 5px 6px;background:var(--row)}
.trow input[type=color]{width:34px;height:28px;border:0;padding:0;background:transparent;cursor:pointer}
.trow input[type=text]{width:150px;background:transparent;border:1px solid transparent;padding:2px 4px;text-transform:uppercase;font-weight:500;letter-spacing:.02em}
.trow input[type=text]:hover{border-color:var(--line-2)}
.trow input[type=text]:focus{border-color:var(--focus)}
.trow .kind{font-size:12px;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.trow button{border:0;background:transparent;color:var(--dim);cursor:pointer;width:26px;height:26px;font-size:16px}
.trow button:hover{color:var(--fg);background:var(--line-2)}

.wrap{overflow-x:auto;border-top:2px solid var(--line-2)}
table{border-collapse:collapse;width:100%;min-width:1300px}
th{position:sticky;top:0;background:var(--bg);text-align:left;font-weight:600;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:10px 12px;border-bottom:2px solid var(--line-2);z-index:1}
td{border-bottom:1px solid var(--line);padding:10px 12px;vertical-align:top}
tr.r td{background:color-mix(in srgb,var(--tc) 13%,var(--bg))}
tr.r td:first-child{box-shadow:inset 6px 0 0 var(--tc)}
tr.r:hover td{background:color-mix(in srgb,var(--tc) 20%,var(--bg))}
.num{font-family:var(--f-time);font-weight:700;color:var(--muted);width:46px;text-align:right;padding-top:14px;font-size:16px}
.ty select{background:var(--panel);color:var(--fg);border:1px solid var(--line-2);border-left:4px solid var(--tc);font-size:13px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:3px 4px;margin-top:6px;cursor:pointer;max-width:130px}
.time{font-family:var(--f-time);font-variant-numeric:tabular-nums;white-space:nowrap;width:150px;padding-top:14px;font-size:18px;font-weight:700}
.dur input{width:96px;font-family:var(--f-time);font-size:18px;font-weight:700;border:1px solid transparent;background:transparent;padding:2px 4px}
.hard input{color-scheme:dark;font-family:var(--f-time);font-size:14px;border:1px solid transparent;background:transparent;padding:4px 2px;width:132px;color:var(--dim)}
.dur input:hover,.hard input:hover,.item input:hover,.blockcell input:hover{border-color:var(--line-2)}
.dur input:focus,.hard input:focus,.item input:focus,.blockcell input:focus{border-color:var(--focus);background:var(--row)}
.dur input.bad{border-color:var(--over);background:var(--over-bg)}
.item{min-width:280px}
.item input{display:block;width:100%;border:1px solid transparent;background:transparent;padding:0 4px}
.item .t{font-size:24px;font-weight:600;text-transform:uppercase;letter-spacing:.01em;line-height:1.2}
.item .s{font-size:17px;color:var(--muted)}
.item .s::placeholder{color:var(--dim)}
.cell{min-height:22px;white-space:pre-wrap;font-family:var(--f-time);font-size:15px;color:#d0d0d0;padding:2px 4px;outline:none;min-width:150px;line-height:1.45}
.cell:focus{box-shadow:inset 0 0 0 1px var(--focus);background:var(--row)}
.cell:empty::before{content:"—";color:var(--dim)}
.acts{white-space:nowrap;width:1%;padding-top:12px}
.acts button{border:0;background:transparent;color:var(--dim);cursor:pointer;width:28px;height:28px;font-size:16px}
.acts button:hover{background:var(--line-2);color:var(--fg)}

tr.is-hard td{background:var(--hard-bg)}
tr.is-hard:hover td{background:var(--hard-bg)}
tr.is-hard .time,tr.is-hard .item .t,tr.is-hard .hard input{color:var(--hard)}
tr.is-hard .hard input{font-weight:700}

tr.block td{background:var(--tc);color:var(--tfg);border-bottom:0;padding-top:8px;padding-bottom:8px}
tr.block td.num{color:var(--tfg)}
tr.block .ty select{margin-top:2px}
tr.block .acts button{color:var(--tfg)}
tr.block .acts button:hover{background:rgba(0,0,0,.2)}
.blockcell input{width:100%;background:transparent;border:1px solid transparent;color:var(--tfg);font-size:26px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:0 6px;line-height:1.25}
.blockcell input::placeholder{color:var(--tfg);opacity:.6}

tr.gap.open td{background:var(--under-bg);color:var(--under)}
tr.gap.over td{background:var(--over-bg);color:var(--over)}
tr.gap .gdur{font-family:var(--f-time);font-weight:700;font-size:18px;padding-top:14px}
.gapmsg{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:19px;font-weight:500}
.gapmsg b{font-weight:700;letter-spacing:.1em;text-transform:uppercase}
tr.bt-row .time{color:var(--hard)}
.exp{font-family:var(--f-time);font-variant-numeric:tabular-nums;font-weight:700;font-size:18px;white-space:nowrap;padding-top:14px;width:150px}
.dl{display:block;font-size:13px}
.dl.late{color:var(--over)}
.dl.early{color:var(--under)}
.go{display:block;margin:0 0 4px auto;background:var(--head);color:#fff;border:0;font-family:var(--f-ui);font-weight:700;font-size:12px;letter-spacing:.1em;padding:2px 7px;cursor:pointer}
.go:hover{background:var(--head-hi)}
.sb{display:block;font-family:var(--f-ui);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hard);margin-top:4px}
tr.is-past td{opacity:.45}
tr.is-next td{box-shadow:inset 0 3px 0 var(--fg)}
tr.is-next td:first-child{box-shadow:inset 6px 0 0 var(--tc),inset 0 3px 0 var(--fg)}
tr.is-live td,tr.is-live:hover td{background:var(--live)!important;color:var(--on-live)}
tr.is-live td:first-child{box-shadow:inset 6px 0 0 var(--on-live)}
tr.is-live .time,tr.is-live .exp,tr.is-live .num,tr.is-live .item .t,tr.is-live .item .s,tr.is-live .cell,tr.is-live .note,tr.is-live .fdur,tr.is-live .dur input,tr.is-live .hard input,tr.is-live .dl{color:var(--on-live)!important}
.fdur{font-family:var(--f-time);font-weight:700;font-size:18px;padding-top:14px;white-space:nowrap}
.note{white-space:pre-wrap;font-family:var(--f-time);font-size:15px;color:#d0d0d0;line-height:1.45;min-width:140px}
.blockcell .bt{font-size:26px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:0 6px;line-height:1.25}
.htag{display:block;font-family:var(--f-ui);font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--hard)}

/* ---------- sign in ---------- */
.authwrap{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:56px max(16px,env(safe-area-inset-right,0px)) 40px max(16px,env(safe-area-inset-left,0px))}
.authcard{width:100%;max-width:420px;border:2px solid var(--line-2);background:var(--row)}
.authcard .ahead{background:var(--bar);color:var(--on-head);padding:14px 18px;display:flex;align-items:center;gap:12px}
.authcard .ahead img{height:52px;width:auto}
.authcard .ahead .app{font-size:24px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;line-height:1}
.authcard .ahead .by{display:block;font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;opacity:.9;margin-top:4px}
.authcard form,.authcard .amsg{display:flex;flex-direction:column;gap:12px;padding:18px}
.authcard h2{margin:0;font-size:20px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.authcard p{margin:0;color:var(--muted)}
.authcard label{display:block;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.authcard input{width:100%;background:var(--bg);border:1px solid var(--line-2);padding:9px 10px;color:var(--fg);font-family:var(--f-ui);font-size:17px}
.authcard input:focus{border-color:var(--focus);outline:none}
.authcard .err{color:var(--over)}
.authcard .err:empty{display:none}
.linkbtn{background:none;border:0;padding:0;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:14px;text-align:left}
.linkbtn:hover{color:var(--fg)}

/* ---------- admin ---------- */
.adm{display:flex;flex-direction:column;gap:22px}
.adm h2{margin:0 0 8px;font-size:20px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.note2{color:var(--muted);font-size:15px;max-width:70ch;margin:0 0 10px}
.rqrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 24px;align-items:center;padding:14px 12px;border-bottom:1px solid var(--line)}
.rqrow:first-of-type{border-top:2px solid var(--line-2)}
.rqrow .rn{font-size:20px;font-weight:600}
.rqrow .rm{color:var(--muted);font-size:15px}
.rqrow .rnote{font-family:var(--f-time);font-size:14px;color:#d0d0d0;margin-top:4px;white-space:pre-wrap}
.rqrow .ac{display:flex;gap:8px;flex-wrap:wrap}
.rqrow .res{font-size:14px;color:var(--under);grid-column:1/-1}
.rqrow .res.warn{color:var(--hard)}
.pill{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:1px 8px;border:1px solid var(--line-2);color:var(--muted)}
.pill.ok{border-color:var(--under);color:var(--under)}
.pill.no{border-color:var(--over);color:var(--over)}
@media (max-width:700px){.rqrow{grid-template-columns:1fr}}
.toastbar{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:8px 16px;font-weight:600;z-index:20;max-width:calc(100% - 32px)}
.ro #undoBtn,.ro #redoBtn,.ro .acts button,.ro #addRow,.ro #addBlock,.ro #typesBtn,.ro #addType,.ro .typelist button{display:none}
.ro .dur input,.ro .hard input,.ro .item input,.ro .ty select,.ro .blockcell input{pointer-events:none}
.pill.ex{border-color:var(--live);color:var(--live)}
.exnote{border-color:var(--live)}
.addp{max-width:none}
.aprow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px}
.aprow .f{flex:1 1 200px;min-width:0}
.tg{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:500;padding:5px 10px;border:1px solid var(--line-2);cursor:pointer;user-select:none;white-space:nowrap}
.tg input{accent-color:var(--head);width:18px;height:18px;margin:0;cursor:pointer}
.tg:has(input:checked){border-color:var(--fg)}
.tg:has(input:disabled){opacity:.6;cursor:default}
.prow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 24px;align-items:center;padding:14px 12px;border-bottom:1px solid var(--line)}
.prow:first-child{border-top:2px solid var(--line-2)}
.prow .sw{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.chipx{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line-2);padding:1px 2px 1px 8px;font-size:14px;margin:6px 6px 0 0}
.chipx button{border:0;background:transparent;color:var(--muted);cursor:pointer;width:22px;height:22px;font-size:15px}
.chipx button:hover{color:var(--fg);background:var(--line-2)}
@media (max-width:760px){.prow{grid-template-columns:1fr}.prow .sw{justify-content:flex-start}}
.chipx.own{color:var(--fg);text-decoration:none;padding:2px 10px;border-color:var(--hard)}
.chipx.own:hover{background:var(--line-2)}
.gtline{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}
.chipx.gt{border-color:#00c853}
.rolebtn{width:auto!important;padding:0 6px!important;color:#00c853!important;font-weight:600;text-decoration:underline}
.gtadd{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}
.gtadd select,.gtf select{background:var(--row);color:var(--fg);border:1px solid var(--line-2);padding:5px 6px;font-family:var(--f-ui);font-size:15px}
.gtf{flex:0 1 240px!important}
.plink{grid-column:1/-1;display:flex;flex-direction:column;gap:8px}
.plink .err{color:var(--over)}
.plink .done{color:var(--under)}
.saving{font-size:13px;letter-spacing:.06em;text-transform:uppercase;opacity:.85}

/* Admin: Online now */
.online{display:flex;flex-direction:column;border-top:1px solid var(--line-2);max-width:900px}
.onl{display:flex;gap:12px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line)}
.onl .dot{width:10px;height:10px;border-radius:50%;background:var(--under);box-shadow:0 0 0 4px var(--under-bg);flex:none}
.onl .on1{font-size:18px;font-weight:600}
.onl .on3{font-size:14px;font-weight:400;color:var(--muted)}
.onl .on2{font-size:14px;color:var(--muted)}
.never{color:var(--live)}
