/* =============================================================
   MEGA ELECTRICS — LABOUR BOARD · STYLES (v2.02)
   v2.02 visual pass: brand colours synced to the company
   document template (navy #003D98, orange #F08034), magnet
   depth pass, HV Electrician yellow, project colour accents,
   sticky headers, column hover, today spotlight, weekend tint,
   count chips, Display Mode for the wall TV, phone input fixes.
   Sections: base / login / toolbar / grid / daily cover /
   magnets / dialogs / error screen / display mode / print /
   responsive
   ============================================================= */

:root{
  --orange:#F08034; --navy:#003D98; --green:#1f9d54; --red:#c0392b;
  --blue:#2f56b0; --paper:#eceae6; --line:#d4d7dd;
  --cyan:#35c4e8; --phgreen:#54d14a; --lockred:#ff2e6e; --picorange:#ff8a1f;
  --hv:#f2c200; --hvborder:#c9a000;
  --hdrh:56px;              /* sticky day-header row height */
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;}
body{background:#dfdcd6;font-family:'Barlow Condensed',sans-serif;color:#222;}
button{font-family:inherit;}
.bootmsg{font-family:'Barlow',Arial,sans-serif;color:#666;padding:60px 20px;text-align:center;font-size:14px;}

/* ---- login ---- */
.loginwrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--navy);padding:20px;}
.logincard{background:#fff;border-radius:14px;padding:34px 38px;width:min(400px,94vw);box-shadow:0 18px 50px rgba(0,0,0,.35);text-align:center;}
.loginlogo{height:56px;margin-bottom:10px;}
.logintitle{font-weight:700;font-size:26px;letter-spacing:5px;color:var(--navy);}
.loginsub{font-weight:600;font-size:12px;letter-spacing:4px;color:var(--orange);margin-bottom:22px;}
.loginlbl{display:block;text-align:left;font-size:11px;font-weight:700;letter-spacing:2px;color:#8a8f97;margin:12px 0 4px;}
.logincard select,.logincard input,.dialog input,.dialog select{width:100%;font-family:'Barlow',Arial,sans-serif;font-size:14px;padding:9px 10px;border:1.5px solid #c5cbd3;border-radius:8px;background:#fff;}
.loginerr{color:var(--red);font-family:'Barlow',Arial,sans-serif;font-size:12.5px;font-weight:600;margin-top:8px;text-align:left;}
.loginbtn{width:100%;margin-top:16px;background:var(--orange);border:none;color:#fff;font-weight:700;font-size:16px;letter-spacing:3px;padding:12px;border-radius:8px;cursor:pointer;}
.loginbtn:hover{background:#e0701f;}
.loginhint{font-family:'Barlow',Arial,sans-serif;font-size:11.5px;color:#9aa0a8;margin-top:12px;}
.loginfoot{font-family:'Barlow',Arial,sans-serif;font-size:10.5px;color:#c3c7cd;margin-top:16px;}

/* ---- toolbar ---- */
.boardpage{padding:10px 12px 30px;}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#fff;border-radius:10px;padding:7px 10px;box-shadow:0 2px 8px rgba(0,0,0,.08);margin-bottom:10px;}
.toollogo{height:38px;}
.btitle{font-weight:700;font-size:17px;letter-spacing:2px;color:var(--navy);border-left:3px solid var(--orange);padding-left:10px;white-space:nowrap;}
.carousel{display:flex;align-items:center;gap:4px;}
.carbtn{background:#eef1f6;border:1.5px solid #c5cbd3;border-radius:7px;font-size:17px;font-weight:700;color:var(--navy);width:30px;height:30px;cursor:pointer;line-height:1;}
.carbtn:hover{background:#e2e7f0;}
.cartxt{font-weight:700;font-size:14px;letter-spacing:1px;color:#333;padding:0 8px;cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:7px;}
.lockchip{background:#eef1f6;border:1px solid #d4d8df;color:#888;font-size:10px;letter-spacing:1px;border-radius:12px;padding:2px 8px;font-weight:700;}
.reqchip{font-size:10px;letter-spacing:1px;border-radius:12px;padding:2px 8px;font-weight:700;cursor:pointer;}
.reqchip.done{background:#e8f6ee;border:1px solid #bfe4cd;color:var(--green);}
.reqchip.todo{background:#fdf2e6;border:1px solid #f2d7ad;color:#c4690a;}
.findbox{font-family:'Barlow',Arial,sans-serif;font-size:12.5px;padding:7px 12px;border:1.5px solid #c5cbd3;border-radius:20px;width:170px;}
.toolspacer{flex:1;}
.presence{font-family:'Barlow',Arial,sans-serif;font-size:12px;font-weight:700;color:var(--navy);background:#eef1f6;border-radius:14px;padding:4px 10px;}
.vobadge,.schedbadge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:1.5px;padding:4px 9px;border-radius:6px;}
.vobadge{background:#eef1f6;border:1.5px solid var(--navy);color:var(--navy);}
.schedbadge{background:#e8f6ee;border:1.5px solid var(--green);color:var(--green);}
.toolbtns{display:flex;gap:5px;flex-wrap:wrap;align-items:center;}
.tdiv{width:1px;height:22px;background:#e0e3e8;margin:0 3px;flex:0 0 1px;}
.toolbtn{background:#fff;border:1.5px solid #cfd4db;border-radius:7px;font-weight:600;font-size:12px;letter-spacing:.6px;color:#3c4652;padding:6px 10px;cursor:pointer;white-space:nowrap;}
.toolbtn:hover{background:#f2f5fa;border-color:#9fb0cb;}
.toolbtn.primary{background:var(--orange);border-color:var(--orange);color:#fff;}
.toolbtn.sched{background:var(--green);border-color:var(--green);color:#fff;}
.toolbtn:disabled{opacity:.45;cursor:default;}

/* ---- grid ----
   .boardwrap is the vertical scroller so the day-header row,
   the cover row and the site-name column can pin (sticky).     */
.boardwrap{overflow:auto;-webkit-overflow-scrolling:touch;background:var(--paper);border-radius:10px;padding:10px;box-shadow:0 2px 8px rgba(0,0,0,.08);max-height:calc(100vh - 118px);position:relative;}
table.bd{border-collapse:separate;border-spacing:0;width:100%;min-width:1080px;table-layout:fixed;}
table.bd th,table.bd td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);}
table.bd tr:first-child th{border-top:1px solid var(--line);}
table.bd th:first-child,table.bd td:first-child{border-left:1px solid var(--line);}
col.labelcol{width:132px;}
col.daycol{width:calc((100% - 132px)/7);}

/* sticky: header row, cover row, label column */
.cornercell{background:var(--paper);border:none!important;position:sticky;top:0;left:0;z-index:7;}
th.day{background:#fff;padding:5px 3px 0;text-align:center;font-weight:700;color:var(--navy);font-size:13px;position:sticky;top:0;z-index:5;height:var(--hdrh);}
th.day.we{background:#f1f2ee;}
th.day .date{display:block;font-size:10px;color:#8a8f97;font-weight:600;}
.dclabel{background:#f4f3ef;text-align:center;padding:4px 6px;vertical-align:middle;position:sticky;top:var(--hdrh);left:0;z-index:6;}
.dccell{background:#fbfbfa;text-align:center;padding:4px 2px;font-family:'Barlow',Arial,sans-serif;position:sticky;top:var(--hdrh);z-index:4;}
.sname{background:#fff;font-weight:600;color:#333;font-size:12px;padding:6px 8px;position:sticky;left:0;z-index:3;border-left:4px solid transparent!important;}
.pbanner td{position:sticky;left:0;z-index:3;}

.dayoffbar{height:15px;margin:4px 3px 2px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:9px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;line-height:1;}
.dayoffbar.empty{background:transparent;border:1px dashed #d0d3d8;color:#c3c7cd;font-size:9px;}
.dayoffbar.empty:hover{border-color:#9aa0a8;color:#8a8f97;}

/* ---- daily cover row ---- */
.dcbuf{display:inline-block;font-family:'Barlow',Arial,sans-serif;font-size:9.5px;font-weight:700;letter-spacing:.4px;background:#eaecd6;color:#7d7a3a;border:1px solid #d9d9b0;border-radius:20px;padding:2px 9px;cursor:pointer;white-space:nowrap;}
.dcbuf:hover{background:#e2e5c4;}
.dccell.short{background:#fdf3f3;}
.dccell.over{background:#f1f4fb;}
.dcnums{font-size:11px;font-weight:600;color:#666;letter-spacing:.2px;white-space:nowrap;}
.dcnums .a{color:#1c1c1c;font-weight:700;}
.dcnums .r{color:var(--green);font-weight:700;}
.dcnums .d{font-weight:800;}
.dcnums .d.neg{color:var(--red);}
.dcnums .d.pos{color:var(--blue);}
.dcnums .d.zero{color:#888;}

/* ---- projects / sites / sections ---- */
.pbanner td{background:linear-gradient(90deg,#0a2b66,#123a85);color:#fff;font-weight:700;letter-spacing:2px;font-size:11px;padding:3px 12px;text-transform:uppercase;}
.pbanner.sect td{background:#3c4652;}
.pbanner .dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--orange);margin-right:8px;vertical-align:middle;}
td.daywrap{padding:0;vertical-align:top;background:#fbfbfa;}
table.shiftpair{border-collapse:collapse;width:100%;table-layout:fixed;}
table.shiftpair td{border:none;border-bottom:1px dashed #e2e4e8;}
table.shiftpair tr:last-child td{border-bottom:none;}
.scell{background:#fbfbfa;min-height:34px;height:auto;padding:3px 4px 4px;vertical-align:top;position:relative;font-family:'Barlow',Arial,sans-serif;}
.sectcell{background:#f7f7f4;}
.supcell{background:#f0f3fa;}
/* weekend tint carries through the whole column */
td.daywrap.we{background:#f4f5f1;}
td.daywrap.we .scell{background:#f4f5f1;}
.scell.we{background:#f4f5f1;}
.scell.sectcell.we{background:#f1f2ec;}
.scell.supcell.we{background:#ecf0f6;}
.dccell.we{background:#f6f7f3;}
/* today spotlight */
th.day.tdy{box-shadow:inset 0 3px 0 var(--orange);background:#fff8f1;}
td.daywrap.tdy{background:#fdf9f4;}
td.daywrap.tdy .scell{background:#fdf9f4;}
.scell.tdy{background:#fdf9f4;}
.dccell.tdy{background:#fdf7ef;}
/* column hover (desktop only — classes applied via JS) */
.bw-hov0 [data-day="0"],.bw-hov1 [data-day="1"],.bw-hov2 [data-day="2"],.bw-hov3 [data-day="3"],
.bw-hov4 [data-day="4"],.bw-hov5 [data-day="5"],.bw-hov6 [data-day="6"]{background:#eef3fb!important;}
.bw-hov0 [data-day="0"] .scell,.bw-hov1 [data-day="1"] .scell,.bw-hov2 [data-day="2"] .scell,
.bw-hov3 [data-day="3"] .scell,.bw-hov4 [data-day="4"] .scell,.bw-hov5 [data-day="5"] .scell,
.bw-hov6 [data-day="6"] .scell{background:#eef3fb!important;}
.bw-hov0 th[data-day="0"],.bw-hov1 th[data-day="1"],.bw-hov2 th[data-day="2"],.bw-hov3 th[data-day="3"],
.bw-hov4 th[data-day="4"],.bw-hov5 th[data-day="5"],.bw-hov6 th[data-day="6"]{box-shadow:inset 0 -3px 0 var(--orange);}
.req{display:block;font-size:9px;color:#999;font-weight:700;text-align:right;letter-spacing:.4px;}
.req input{width:26px;text-align:center;border:1px solid #cfd3da;border-radius:4px;font-size:11px;margin-left:3px;padding:1px 0;font-family:'Barlow',Arial,sans-serif;}
.req input:disabled{background:#f2f2ef;color:#999;border-color:#e4e4df;}
.cellnote{position:absolute;top:2px;left:3px;font-size:9px;color:var(--orange);cursor:default;}
/* count chip on section cells */
.cchip{position:absolute;top:2px;right:2px;background:#3c4652;color:#fff;font-size:9px;font-weight:700;border-radius:9px;padding:1px 6px;font-family:'Barlow',Arial,sans-serif;line-height:1.3;pointer-events:none;z-index:1;}

/* ---- magnets (v2.02 depth pass) ---- */
.mag{display:inline-block;border-radius:5px;font-size:10.5px;font-weight:600;padding:3px 7px;margin:1px;cursor:pointer;user-select:none;white-space:nowrap;line-height:1.25;
     background:linear-gradient(180deg,#ffffff 0%,#f2f3f1 100%);color:#1c1c1c;border:1px solid #a9aeb6;
     box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 1px 2px rgba(0,0,0,.22), 0 2px 5px rgba(15,20,30,.10);}
.mag.role-leadinghand{font-weight:700;text-decoration:underline;text-underline-offset:2px;}
.mag.role-apprentice{background:linear-gradient(180deg,#565c66 0%,#41464e 100%);color:#fff;border-color:#31353c;
     box-shadow:inset 0 1px 0 rgba(255,255,255,.18), 0 1px 2px rgba(0,0,0,.3), 0 2px 5px rgba(15,20,30,.16);}
.mag.role-supervisor{background:linear-gradient(180deg,#5c78d1 0%,#4763b6 100%);color:#fff;border-color:#3a52a0;
     box-shadow:inset 0 1px 0 rgba(255,255,255,.28), 0 1px 2px rgba(0,0,0,.3), 0 2px 5px rgba(15,20,30,.16);}
.mag.role-hvelectrician{background:linear-gradient(180deg,#ffd83d 0%,#f0be00 100%);color:#1a1a1a;border-color:var(--hvborder);
     box-shadow:inset 0 1px 0 rgba(255,255,255,.55), 0 1px 2px rgba(0,0,0,.28), 0 2px 5px rgba(15,20,30,.14);}
.mag.sel{outline:2.5px solid var(--orange);outline-offset:1px;}
.mag.hl{outline:2.5px solid #e04f9e;outline-offset:1px;box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 0 0 4px rgba(224,79,158,.18), 0 1px 2px rgba(0,0,0,.22);}
.mag.ghost{background:transparent;border:1.5px dashed #e04f9e;color:#e04f9e;font-weight:800;min-width:22px;text-align:center;box-shadow:none;cursor:default;}
.trntag{display:inline-block;background:#dcece9;color:#1d6a5c;border-radius:3px;font-size:8.5px;font-weight:700;padding:0 4px;margin-left:4px;letter-spacing:.3px;text-transform:uppercase;vertical-align:middle;}

/* ---- dialogs ---- */
.overlay{position:fixed;inset:0;background:rgba(10,22,48,.55);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:34px 14px;overflow-y:auto;}
.dialog{background:#fff;border-radius:14px;padding:24px 26px;width:min(760px,96vw);box-shadow:0 18px 50px rgba(0,0,0,.35);font-family:'Barlow',Arial,sans-serif;}
.dialog.narrow{width:min(420px,94vw);}
.dialog h2{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:21px;letter-spacing:1.5px;color:var(--navy);border-bottom:2px solid var(--orange);padding-bottom:8px;margin-bottom:12px;}
.dialog h2 .wkcount{font-size:12px;color:#8a8f97;font-weight:600;letter-spacing:.5px;margin-left:8px;}
.archnote{font-size:13px;color:#555;line-height:1.55;margin-bottom:12px;}
.closebar{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;}
.seglbl{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:12px;letter-spacing:2px;color:#8a8f97;text-transform:uppercase;margin:14px 0 6px;}
.tbl{width:100%;border-collapse:collapse;font-size:12.5px;}
.tbl th,.tbl td{border-bottom:1px solid #eee;padding:6px 8px;text-align:left;}
.tbl th{font-size:10.5px;letter-spacing:1.5px;color:#8a8f97;text-transform:uppercase;}
.chip{display:inline-block;background:#f2f2ef;border:1px solid #e0e0da;border-radius:14px;padding:2px 10px;margin:2px;font-size:11.5px;}
.rolechip{display:inline-block;border-radius:4px;font-size:9.5px;font-weight:700;letter-spacing:.8px;padding:2px 8px;text-transform:uppercase;cursor:pointer;border:1px solid #c5cbd3;background:#fff;color:#3c4652;}
.rolechip.leadinghand{background:#fff;color:#1c1c1c;border-color:#8a8f97;text-decoration:underline;}
.rolechip.hvelectrician{background:var(--hv);color:#1a1a1a;border-color:var(--hvborder);}
.rolechip.apprentice{background:#4a4f57;color:#fff;border-color:#3a3f47;}
.rolechip.supervisor{background:#4f6abf;color:#fff;border-color:#3d55a3;}
.iconbtn{background:#fff;border:1.5px solid #c5cbd3;border-radius:7px;font-size:12px;padding:4px 9px;cursor:pointer;}
.iconbtn:hover{background:#f2f5fa;}
.iconbtn.danger{color:var(--red);border-color:#e3b6b1;}
.drop{border:2px dashed #b6bec9;border-radius:12px;background:#f7f9fc;padding:24px;text-align:center;color:#5b6572;cursor:pointer;margin:6px 0;}
.drop:hover{background:#eef3fb;border-color:#8aa0c8;}
.dropic{font-size:32px;}
.dropbig{font-size:14px;font-weight:600;color:#3c4652;margin-top:6px;}
.dropsm{font-size:11px;color:#9aa;margin-top:3px;}
.bucket{border:1px solid #e4e4df;border-radius:9px;margin-bottom:10px;overflow:hidden;}
.bkhd{display:flex;align-items:center;gap:8px;padding:9px 12px;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:13px;letter-spacing:.6px;text-transform:uppercase;}
.bkhd .bkcnt{margin-left:auto;background:#fff;border-radius:20px;padding:1px 9px;font-size:12px;}
.bk-ok .bkhd{background:#e8f6ee;color:var(--green);}
.bk-un .bkhd{background:#fdecec;color:var(--red);}
.bk-gone .bkhd{background:#fdf2e6;color:#c4690a;}
.bkbody{padding:9px 12px;font-size:12.5px;color:#444;}
.matchrow{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #f2f2ef;}
.matchrow .mn{flex:1;font-weight:600;}
.matchrow .marr{color:#bbb;}
.matchrow select{flex:1.3;font-size:12px;padding:5px 6px;}
.confrow{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:5px 0;border-bottom:1px solid #f2f2ef;color:#444;}
.arrowmv{color:var(--red);font-weight:700;}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#20242c;color:#fff;font-family:'Barlow',Arial,sans-serif;font-size:13px;padding:10px 20px;border-radius:22px;z-index:500;box-shadow:0 6px 18px rgba(0,0,0,.3);}

/* ---- fatal error screen ---- */
#fatal{display:none;position:fixed;inset:0;background:rgba(10,22,48,.86);z-index:9999;align-items:center;justify-content:center;padding:20px;}
.fatalcard{background:#fff;border-radius:14px;max-width:480px;padding:28px;font-family:'Barlow',Arial,sans-serif;color:#333;box-shadow:0 18px 50px rgba(0,0,0,.4);}
.fatalhead{font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:22px;letter-spacing:1px;color:var(--navy);margin-bottom:10px;}
.fatalcard p{font-size:13.5px;line-height:1.55;margin-bottom:10px;}
.fatalcard button{background:var(--orange);border:none;color:#fff;font-family:'Barlow Condensed',sans-serif;font-weight:700;letter-spacing:1.5px;font-size:14px;padding:10px 22px;border-radius:8px;cursor:pointer;}
#fatalcopied{display:none;color:var(--green);font-size:12.5px;font-weight:600;margin-top:8px;}
.fatalver{margin-top:14px;font-size:11px;color:#aaa;text-align:right;}

/* ---- version footer ---- */
.verfoot{position:fixed;bottom:6px;right:10px;font-family:'Barlow',Arial,sans-serif;font-size:10px;color:#9aa0a8;z-index:50;pointer-events:none;}

/* ---- Display Mode (80-inch wall TV) ----
   Toolbar hidden, board fills the screen, today spotlit harder,
   floating pill for zoom / exit. Zoom itself is set inline (JS).*/
body.displaymode{background:#111721;}
body.displaymode .toolbar{display:none;}
body.displaymode .boardpage{padding:6px;}
body.displaymode .boardwrap{max-height:calc(100vh - 12px);border-radius:6px;}
body.displaymode .verfoot{display:none;}
body.displaymode th.day.tdy{box-shadow:inset 0 4px 0 var(--orange);background:#fff3e6;}
body.displaymode td.daywrap.tdy,body.displaymode td.daywrap.tdy .scell{background:#fcf5ec;}
.dispbar{position:fixed;top:10px;right:12px;z-index:400;display:flex;gap:6px;background:rgba(17,23,33,.85);border-radius:24px;padding:6px 8px;box-shadow:0 6px 18px rgba(0,0,0,.35);}
.dispbar button{background:#fff;border:none;border-radius:18px;font-weight:700;font-size:13px;color:#1c1c1c;padding:6px 13px;cursor:pointer;font-family:'Barlow Condensed',sans-serif;letter-spacing:1px;}
.dispbar button:hover{background:#f2c200;}

/* ---- print (A3 landscape board snapshot) ---- */
@media print{
  @page{size:A3 landscape;margin:8mm;}
  body{background:#fff;}
  .toolbar,.verfoot,.toast,.overlay,.dispbar,.cchip{display:none!important;}
  .boardwrap{box-shadow:none;padding:0;overflow:visible;max-height:none;}
  table.bd{min-width:0;}
  th.day,.dccell,.dclabel,.sname,.cornercell,.pbanner td{position:static;}
  .mag{box-shadow:none;background:#fff;}
  .mag.role-apprentice{background:#4a4f57;}
  .mag.role-supervisor{background:#4f6abf;}
  .mag.role-hvelectrician{background:var(--hv);}
}

/* ---- responsive: check-the-board on phone/tablet ---- */
@media (max-width:900px){
  .boardpage{padding:6px 6px 26px;}
  .btitle{font-size:14px;}
  .findbox{width:120px;}
  .toolbtn{font-size:11px;padding:6px 8px;}
  table.bd{min-width:900px;}   /* board scrolls sideways, stays legible */
  .dialog{padding:18px 16px;}
  .boardwrap{max-height:calc(100vh - 160px);}
  .req input{width:34px;font-size:13px;padding:3px 0;}   /* bigger tap target */
}
/* phone: 16px inputs stop iOS auto-zoom-on-focus */
@media (max-width:600px){
  .findbox,.logincard select,.logincard input,.dialog input,.dialog select{font-size:16px;}
  .req input{font-size:16px;width:40px;padding:3px 0;}
}
