/* GM Dashboard - Shared styles (extracted from dashboard.html monolith) */
:root{--bg:#0d1117;--sf:#161b22;--sf2:#21262d;--bd:#30363d;--tx:#e6edf3;--mu:#8b949e;
--ac:#58a6ff;--gn:#3fb950;--am:#d29922;--rd:#f85149;--pu:#a371f7;--or:#f0883e;--r:8px}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--tx);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:14px}
code{background:var(--sf2);padding:1px 5px;border-radius:3px;font-size:12px}
.hdr{background:linear-gradient(135deg,#0d1117,#161b22);border-bottom:1px solid var(--bd);padding:14px 24px;
display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}
.hdr h1{font-size:18px;font-weight:700}.hdr .sub{font-size:12px;color:var(--mu);margin-top:3px}
.hdr-r{text-align:right;font-size:11px;color:var(--mu);line-height:1.8}
.tabs{display:flex;background:var(--sf);border-bottom:1px solid var(--bd);overflow-x:auto;
padding:0 24px;position:sticky;top:57px;z-index:99;white-space:nowrap}
.tab{padding:12px 14px;border:none;background:none;color:var(--mu);cursor:pointer;font-size:13px;
border-bottom:2px solid transparent;transition:all .2s;text-decoration:none;display:inline-block}
.tab:hover{color:var(--tx)}.tab.on{color:var(--ac);border-bottom-color:var(--ac);font-weight:600}
.fbar{display:flex;align-items:center;gap:8px;padding:10px 24px;background:var(--sf);border-bottom:1px solid var(--bd);
position:sticky;top:100px;z-index:98;flex-wrap:wrap}
.fbtn{padding:5px 12px;border:1px solid var(--bd);border-radius:4px;background:var(--sf2);color:var(--mu);
cursor:pointer;font-size:12px;transition:all .2s}
.fbtn:hover{color:var(--tx);border-color:var(--ac)}.fbtn.on{background:var(--ac);color:#000;border-color:var(--ac);font-weight:600}
.fdate{background:var(--sf2);border:1px solid var(--bd);color:var(--tx);padding:4px 8px;border-radius:4px;font-size:12px}
.flbl{font-size:11px;color:var(--mu);text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.frange{font-size:11px;color:var(--ac);margin-left:auto;font-weight:500}
.pnl{padding:20px 24px;max-width:1400px;margin:0 auto}
.row{display:flex;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.card{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:16px;flex:1;min-width:0;
box-shadow:0 4px 12px rgba(0,0,0,.35)}
.ct{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--mu);margin-bottom:12px;font-weight:600}
.cw{position:relative;height:240px}.cw.tall{height:320px}
.kgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:14px;margin-bottom:16px}
.kpi{background:var(--sf);border:1px solid var(--bd);border-radius:var(--r);padding:16px;
position:relative;overflow:hidden}
.kpi::before{content:'';position:absolute;top:0;left:0;right:0;height:3px}
.kpi.gn::before{background:var(--gn)}.kpi.am::before{background:var(--am)}.kpi.rd::before{background:var(--rd)}
.kl{font-size:11px;color:var(--mu);text-transform:uppercase;letter-spacing:.4px}
.kv{font-size:28px;font-weight:700;margin:5px 0 3px;line-height:1}.ks{font-size:11px;color:var(--mu)}
.kbg{display:inline-block;padding:2px 7px;border-radius:99px;font-size:10px;font-weight:700;margin-top:6px}
.bgn{background:rgba(63,185,80,.15);color:var(--gn)}.bam{background:rgba(210,153,34,.15);color:var(--am)}
.brd{background:rgba(248,81,73,.15);color:var(--rd)}
.sr{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.sit{background:var(--sf2);border-radius:var(--r);padding:10px 14px;flex:1;min-width:110px}
.sil{font-size:10px;color:var(--mu);text-transform:uppercase;letter-spacing:.4px;margin-bottom:3px}
.siv{font-size:19px;font-weight:700;color:var(--ac)}.siu{font-size:11px;color:var(--mu)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}
.dot.gn{background:var(--gn);box-shadow:0 0 5px var(--gn)}.dot.am{background:var(--am);box-shadow:0 0 5px var(--am)}
.dot.rd{background:var(--rd);box-shadow:0 0 5px var(--rd)}
.pb{background:var(--sf2);border-radius:99px;height:7px;overflow:hidden;margin-top:5px}
.pf{height:100%;border-radius:99px;transition:width .5s ease}
.tw{overflow-x:auto;max-height:380px;overflow-y:auto}
table{width:100%;border-collapse:collapse;font-size:12px}
th{background:var(--sf2);color:var(--mu);text-transform:uppercase;font-size:10px;letter-spacing:.4px;
padding:8px 10px;text-align:left;position:sticky;top:0;z-index:1}
td{padding:7px 10px;border-bottom:1px solid var(--bd)}
tr:hover td{background:rgba(255,255,255,.02)}.tr{text-align:right}.tc{text-align:center}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:12px;margin-bottom:16px}
.dc{background:var(--sf2);border:1px solid var(--bd);border-radius:var(--r);padding:13px;
position:relative;overflow:hidden}
.dc::after{content:attr(data-n);position:absolute;bottom:-12px;right:-2px;font-size:60px;font-weight:900;
color:rgba(255,255,255,.04);line-height:1;pointer-events:none}
.dn{font-size:21px;font-weight:800;color:var(--ac);margin-bottom:5px}
.dcat{font-size:11px;padding:2px 8px;border-radius:99px;display:inline-block;margin-bottom:7px;font-weight:600}
.dcat.medium{background:rgba(88,166,255,.15);color:var(--ac)}.dcat.heavy{background:rgba(163,113,247,.15);color:var(--pu)}
.dcat.ls{background:rgba(63,185,80,.15);color:var(--gn)}.dcat.other{background:rgba(240,136,62,.15);color:var(--or)}
.dcat.empty{background:rgba(139,148,158,.15);color:var(--mu)}
.df{font-size:11px;color:var(--mu);margin-top:3px}.df span{color:var(--tx);font-weight:500}
.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.si2{background:var(--sf2);border-radius:var(--r);padding:11px;display:flex;align-items:flex-start;gap:9px}
.sn{font-weight:600;font-size:12px}.sts{font-size:11px;color:var(--mu);margin-top:2px}
.sct{font-size:10px;color:var(--ac);margin-top:2px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:11px}
.pi{background:var(--sf2);border-left:3px solid var(--bd);border-radius:0 var(--r) var(--r) 0;padding:11px 13px}
.pi.gn{border-left-color:var(--gn)}.pi.am{border-left-color:var(--am)}.pi.rd{border-left-color:var(--rd)}
.pt{font-weight:600;margin-bottom:3px}.pd{font-size:12px;color:var(--mu)}
.risk-h{color:var(--rd);font-weight:700}.risk-m{color:var(--am);font-weight:700}.risk-l{color:var(--gn);font-weight:700}
::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bd);border-radius:3px}
.avg-hi{background:rgba(0,255,100,.18)!important;color:#39ff78;font-weight:700;text-shadow:0 0 6px rgba(0,255,100,.3)}
.gbar{display:flex;height:10px;border-radius:99px;overflow:hidden;min-width:60px;background:rgba(255,255,255,.06)}
.gb{height:100%}.gb.g1{background:#3fb950}.gb.g2{background:#d29922}.gb.g3{background:#f85149}
.tf-abb{background:var(--sf2);border:1px solid var(--bd);border-radius:var(--r);margin-bottom:8px;overflow:hidden}
.tf-abb-hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;user-select:none;gap:12px}
.tf-abb-hdr:hover{background:rgba(88,166,255,.05)}
.tf-abb-hdr .tf-name{font-weight:700;font-size:14px;min-width:160px}
.tf-abb-hdr .tf-stats{display:flex;gap:14px;font-size:11px;color:var(--mu);flex:1}
.tf-abb-hdr .tf-chev{transition:transform .2s;color:var(--mu);font-size:14px}
.tf-abb.open .tf-chev{transform:rotate(90deg)}
.tf-abb-body{display:none;border-top:1px solid var(--bd)}
.tf-abb.open .tf-abb-body{display:block}
.tf-fb{border-bottom:1px solid rgba(255,255,255,.04);padding:10px 16px 10px 28px;cursor:pointer}
.tf-fb:hover{background:rgba(88,166,255,.03)}.tf-fb:last-child{border-bottom:none}
.tf-fb-hdr{display:flex;align-items:center;gap:10px;font-size:12px;flex-wrap:wrap}
.tf-pill{padding:3px 10px;border-radius:99px;font-size:10px;font-weight:700;white-space:nowrap}
.tf-pill.recv{background:rgba(88,166,255,.15);color:#58a6ff}
.tf-pill.bin{background:rgba(63,185,80,.15);color:#3fb950}
.tf-pill.drum{background:rgba(163,113,247,.15);color:#a371f7}
.tf-pill.grade{background:rgba(210,153,34,.15);color:#d29922}
.tf-arrow{color:var(--mu);font-size:11px}
.tf-detail{display:none;margin:6px 0 4px 28px;padding:8px 12px;background:rgba(255,255,255,.02);border-radius:6px;border:1px solid rgba(255,255,255,.04)}
.tf-fb.open .tf-detail{display:block}
.tf-stage{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12px;flex-wrap:wrap}
.tf-bins{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;margin:8px 0}
.tf-bin{background:var(--sf);border:1px solid var(--bd);border-radius:4px;padding:6px 10px;font-size:11px}
.tf-drum-info{background:var(--sf);border:1px solid var(--bd);border-radius:4px;padding:8px 12px;margin:6px 0;font-size:12px}
.tf-grade-bar{display:flex;height:12px;border-radius:99px;overflow:hidden;min-width:80px;max-width:200px;background:rgba(255,255,255,.06)}
.tf-grade-note{font-size:10px;color:var(--mu);font-style:italic;margin-top:2px}
.col-ok{background:rgba(63,185,80,.15);color:#3fb950;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:700}
.col-miss{background:rgba(248,81,73,.15);color:#f85149;padding:2px 8px;border-radius:99px;font-size:10px;font-weight:700}
.col-kpi{display:flex;gap:12px;flex-wrap:wrap}
.col-kpi .ck{background:var(--sf2);border:1px solid var(--bd);border-radius:var(--r);padding:12px 16px;min-width:140px;flex:1}
.col-kpi .ck-l{font-size:10px;text-transform:uppercase;color:var(--mu);margin-bottom:4px;letter-spacing:.5px}
.col-kpi .ck-v{font-size:22px;font-weight:800}
.col-kpi .ck-s{font-size:10px;color:var(--mu);margin-top:2px}
.col-kpi .ck.green .ck-v{color:#3fb950}.col-kpi .ck.red .ck-v{color:#f85149}.col-kpi .ck.amber .ck-v{color:#d29922}.col-kpi .ck.blue .ck-v{color:#58a6ff}
.loading{padding:60px 24px;text-align:center;color:var(--mu);font-size:13px}
.err{padding:40px 24px;text-align:center;color:var(--rd);font-size:13px;background:rgba(248,81,73,.05);border:1px solid rgba(248,81,73,.3);border-radius:var(--r);margin:20px 24px}
/* Inline-editable notes cell (used on Flesher / Sammyer / Scorecard / Stoppages) */
.notes-cell{cursor:pointer;font-size:11px;color:var(--tx);max-width:240px;min-width:140px;vertical-align:top;line-height:1.4;white-space:normal}
.notes-cell:hover{background:rgba(88,166,255,.06)}
.notes-cell.empty{color:var(--mu);font-style:italic}
.notes-cell.saving{opacity:.6;pointer-events:none}
.notes-cell .nx-pencil{visibility:hidden;color:var(--mu);font-size:10px;margin-left:6px}
.notes-cell:hover .nx-pencil{visibility:visible}
.notes-edit{display:flex;flex-direction:column;gap:6px}
.notes-edit textarea{width:100%;min-height:60px;background:var(--bg);color:var(--tx);border:1px solid var(--ac);border-radius:4px;padding:6px 8px;font-size:12px;font-family:inherit;resize:vertical}
.notes-edit .nx-row{display:flex;gap:6px;align-items:center}
.notes-edit button{border:none;border-radius:3px;padding:3px 10px;cursor:pointer;font-size:11px;font-weight:600}
.notes-edit .nx-save{background:var(--ac);color:#fff}
.notes-edit .nx-cancel{background:var(--sf2);color:var(--mu);border:1px solid var(--bd)}
.notes-edit .nx-hint{font-size:10px;color:var(--mu);margin-left:auto}
.notes-edit .nx-err{font-size:10px;color:var(--rd)}
/* Day-of-week badge prefixed to date cells. Bright = NSW public holiday. */
.dayb{display:inline-block;font-size:10px;color:var(--mu);background:var(--sf2);padding:1px 6px;border-radius:3px;margin-right:5px;font-weight:700;letter-spacing:.3px;text-transform:none;vertical-align:middle}
.dayb.hol{background:rgba(248,81,73,.18);color:#ff8a7a;cursor:help}
.dayb.we{background:rgba(163,113,247,.12);color:#c5a8f5}  /* Sat/Sun subtle tint */
/* Magic-link sign-in modal (Supabase Auth) */
#login-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center}
.login-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(2px)}
.login-box{position:relative;background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:24px 26px;max-width:400px;width:92%;box-shadow:0 20px 60px rgba(0,0,0,.55)}
.login-box h3{margin:0 0 8px;font-size:16px;color:var(--tx);font-weight:700}
.login-box p{margin:0 0 16px;font-size:12px;color:var(--mu);line-height:1.55}
.login-box input{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--bd);border-radius:6px;color:var(--tx);font-size:14px;box-sizing:border-box;font-family:inherit}
.login-box input:focus{outline:none;border-color:var(--ac)}
.login-lbl{display:block;font-size:11px;font-weight:600;color:var(--mu);margin-bottom:4px;text-transform:uppercase;letter-spacing:.4px}
.login-btns{display:flex;gap:8px;margin-top:12px}
.login-btns button{flex:1;padding:9px 14px;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;font-family:inherit}
.login-send{background:var(--ac);color:#fff}
.login-cancel{background:var(--sf2);color:var(--mu);border:1px solid var(--bd)}
.login-status{margin-top:10px;font-size:11px;min-height:16px;line-height:1.5}
