*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --sidebar-w:200px;
  --header-h:52px;
  --dark:#1e2128;
  --dark2:#252830;
  --dark3:#2d3139;
  --dark4:#363b45;
  --border:#3a3f4b;
  --border2:#454b58;
  --gold:#d4900a;
  --gold2:#e8a420;
  --client:#1a1d23;
  --client2:#252830;
  --client-light:#f0f2f5;
  --white:#f5f7fa;
  --text:#e2e6ed;
  --text2:#9aa3b0;
  --text3:#5a6270;
  --red:#e53935;--red-dim:rgba(229,57,53,.12);
  --green:#2e7d32;--green-dim:rgba(46,125,50,.12);
  --blue:#1565c0;--blue-dim:rgba(21,101,192,.12);
  --orange:#e65100;--orange-dim:rgba(230,81,0,.12);
  --yellow:#f57f17;
  --ff:'Inter',sans-serif;
  --fm:'JetBrains Mono',monospace;
}
html{font-size:16px}
body{background:#f0f2f5;color:#2d3139;font-family:var(--ff);display:flex;flex-direction:column;min-height:100vh}

/* ── TOP HEADER ── */
#top-header{
  height:var(--header-h);background:var(--client);
  display:flex;align-items:center;padding:0 18px;gap:14px;
  position:fixed;top:0;left:0;right:0;z-index:200;
  box-shadow:0 2px 8px rgba(0,0,0,.25)
}
.th-logo{width:34px;height:34px;object-fit:contain;flex-shrink:0;filter:brightness(0) invert(1)}
.th-client{font-size:17px;font-weight:700;color:#fff;letter-spacing:-.2px}
.th-powered{font-size:10px;color:rgba(255,255,255,.6);margin-left:2px;letter-spacing:.5px}
.th-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.th-user{display:flex;align-items:center;gap:8px;color:#fff;font-size:13px;font-weight:500;cursor:pointer}
.th-avatar{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.25);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}
.th-notif{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative}
.th-notif-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:#ff5252;border:2px solid var(--client)}

/* ── LAYOUT ── */
#layout{display:flex;margin-top:var(--header-h);min-height:calc(100vh - var(--header-h))}

/* ── SIDEBAR ── */
#sidebar{
  width:var(--sidebar-w);background:var(--dark);
  display:flex;flex-direction:column;
  position:fixed;top:var(--header-h);left:0;bottom:0;
  z-index:100;overflow-y:auto;overflow-x:hidden
}
.sb-powered{padding:14px 16px 10px;border-bottom:1px solid var(--border)}
.sb-pg-logo{display:flex;align-items:center;gap:8px}
.sb-pg-logo img{width:28px;height:28px;object-fit:contain}
.sb-pg-name{font-size:14px;font-weight:700;color:var(--gold2);letter-spacing:-.1px}
.sb-pg-tag{font-size:9px;color:var(--text3);letter-spacing:1.5px;text-transform:uppercase;margin-top:1px;font-family:var(--fm)}
.sb-section{padding:14px 14px 4px;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);font-family:var(--fm)}
.sb-section-toggle{padding:14px 14px 4px;font-size:11px;font-weight:600;letter-spacing:1.5px;text-transform:uppercase;color:var(--text3);font-family:var(--fm);cursor:pointer;user-select:none;display:flex;align-items:center;justify-content:space-between;transition:color .12s}
.sb-section-toggle:hover{color:var(--text2)}
.sb-section-chevron{font-size:10px;transition:transform .18s ease;display:inline-block;margin-left:6px}
.sb-section-collapsed .sb-section-chevron{transform:rotate(-90deg)}
.sb-section-body{max-height:1000px;overflow:hidden;transition:max-height .22s ease}
.sb-section-collapsed .sb-section-body{max-height:0}
.ni{display:flex;align-items:center;gap:9px;padding:9px 14px;cursor:pointer;color:var(--text2);font-size:15.5px;font-weight:400;transition:all .12s;border-left:3px solid transparent;user-select:none}
body.pg-consultant #sidebar .ni:not([data-module="spills"]),body.pg-consultant #sidebar .sb-sect-wrap:not(#sb-sect-environmental),body.pg-consultant #mgr-section,body.pg-consultant #admin-section,body.pg-consultant #page-spills .pg-actions{display:none!important}
body.pg-consultant #sb-sect-environmental,body.pg-consultant #sb-sect-environmental .sb-section-body{display:block!important}
body.pg-consultant #sidebar .ni[data-module="spills"]{display:flex!important}
body.pg-inspector #sidebar .ni:not([data-module="qc"]),body.pg-inspector #sidebar .sb-sect-wrap:not(#sb-sect-quality),body.pg-inspector #mgr-section,body.pg-inspector #admin-section,body.pg-inspector #page-qc .pg-actions,body.pg-inspector #qc-tab-tmpl{display:none!important}
body.pg-inspector #sb-sect-quality,body.pg-inspector #sb-sect-quality .sb-section-body{display:block!important}
body.pg-inspector #sidebar .ni[data-module="qc"]{display:flex!important}
.ni:hover{background:var(--dark3);color:var(--white);border-left-color:var(--border2)}
.ni.active{background:var(--dark3);color:#fff;border-left-color:var(--client2);font-weight:500}
.ni-ico{font-size:16px;width:20px;text-align:center;flex-shrink:0;opacity:.85}
.ni-badge{margin-left:auto;background:var(--red);color:#fff;font-size:9px;font-family:var(--fm);font-weight:700;padding:1px 6px;border-radius:10px}
.ni-badge.warn{background:var(--orange);color:#fff}
.ni-arrow{margin-left:auto;font-size:10px;color:var(--text3);transition:transform .15s}
.ni-arrow.open{transform:rotate(90deg)}
.ni-sub{display:none;background:var(--dark2)}
.ni-sub.open{display:block}
.ni-sub .ni{padding:7px 14px 7px 38px;font-size:12px}
.sb-bottom{margin-top:auto;border-top:1px solid var(--border);padding:12px 14px}
.sb-user{display:flex;align-items:center;gap:8px}
.sb-uav{width:30px;height:30px;border-radius:50%;background:var(--client);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#fff;flex-shrink:0}
.sb-un{font-size:12px;font-weight:600;color:var(--white)}
.sb-ur{font-size:10px;color:var(--text3)}
.sb-dot{width:7px;height:7px;border-radius:50%;background:#4caf50;margin-left:auto;box-shadow:0 0 5px rgba(76,175,80,.5)}

/* ── MAIN CONTENT ── */
#main{margin-left:var(--sidebar-w);flex:1;min-width:0;padding:22px;min-height:calc(100vh - var(--header-h))}

/* ── PAGE HEADER ── */
.pg-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.pg-title-wrap{display:flex;align-items:center;gap:8px}
.pg-title{font-size:22px;font-weight:700;color:#1a1d23}
.pg-title-arrow{color:var(--text3);font-size:12px}
.pg-actions{display:flex;gap:8px}

/* ── CARDS ── */
.card{background:#fff;border:1px solid #e0e3e8;border-radius:8px;padding:18px}
.card-title{font-size:13px;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.8px;margin-bottom:14px}

/* ── STAT CARDS ROW ── */
.stat-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px}
.stat-card{background:#fff;border:1px solid #e0e3e8;border-radius:8px;padding:14px 16px;transition:all .15s}
/* Only tiles that do something when clicked look clickable */
.stat-card[onclick]{cursor:pointer}
.stat-card[onclick]:hover{border-color:#bbb;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.stat-card-label{font-size:13px;font-weight:600;color:#666;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-card-value{font-size:30px;font-weight:700;color:#1a1d23;letter-spacing:-1px;line-height:1}
.stat-card-bar{height:4px;background:#e8eaed;border-radius:2px;margin-top:10px;overflow:hidden}
.stat-card-fill{height:100%;border-radius:2px;background:#d4900a}
.stat-card-sub{font-size:12px;color:#888;margin-top:5px}
.stat-card.highlight .stat-card-value{color:#d4900a}

/* ── GRID LAYOUTS ── */
.grid-main{display:grid;grid-template-columns:1fr 320px;gap:16px;margin-bottom:16px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:16px}

/* ── CHARTS ── */
.chart-wrap{position:relative}

/* ── QUICK LINKS ── */
.ql-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f0f2f5;cursor:pointer;transition:color .12s}
.ql-item:last-child{border-bottom:none}
.ql-item:hover{color:#d4900a}
.ql-icon{width:32px;height:32px;border-radius:6px;background:#fdf3e0;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.ql-text{font-size:15px;font-weight:500;color:#2d3139}
.ql-item:hover .ql-text{color:#d4900a}
.ql-arrow{margin-left:auto;color:#bbb;font-size:12px}

/* ── ANNOUNCEMENTS ── */
.ann-item{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid #f0f2f5}
.ann-item:last-child{border-bottom:none}
.ann-dot{width:32px;height:32px;border-radius:50%;background:#e8f5e9;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;margin-top:2px}
.ann-body{flex:1}
.ann-title{font-size:15px;font-weight:600;color:#1a1d23;margin-bottom:4px}
.ann-text{font-size:14px;color:#555;line-height:1.7}
.ann-time{font-size:11px;color:#999;margin-top:4px}

/* ── TABS ── */
.tabs{display:flex;gap:0;border-bottom:2px solid #e8eaed;margin-bottom:16px}
.tab{padding:10px 20px;background:none;border:none;border-bottom:2px solid transparent;color:#666;cursor:pointer;font-family:var(--ff);font-size:15px;font-weight:500;margin-bottom:-2px;transition:all .12s}
.tab.active{border-bottom-color:#d4900a;color:#d4900a;font-weight:600}
.tab:hover:not(.active){color:#333}

/* ── TABLE ── */
.tw{overflow-x:auto}

/* ── MAINTENANCE + LOGISTICS (Operations) ── */
.mt-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:700;white-space:nowrap}
.mt-pill.overdue{background:#ffebee;color:#c62828}
.mt-pill.due_soon{background:#fff3e0;color:#b26a00}
.mt-pill.current{background:#e8f5e9;color:#2e7d32}
.mt-pill.none{background:#f0f2f5;color:#5a6270}
.op-sec-title{font-size:13px;font-weight:600;color:#5a6270;text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.op-sec-title .op-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap;text-transform:none;letter-spacing:0}
.op-empty{padding:18px;text-align:center;color:#8a95a5;font-size:13px;background:#f7f8fa;border-radius:8px}
.task-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;margin-bottom:6px}
.task-row label{font-size:12px;color:#5a6270;display:flex;align-items:center;gap:4px;white-space:nowrap}
.rec-task{padding:8px 10px;border:1px solid #e3e6ea;border-radius:6px;margin-bottom:6px}
.rec-task .rt-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rec-task .rt-text{flex:1;min-width:180px;font-size:13px}
.rec-task .rt-opts{display:flex;gap:10px;font-size:12px}
.rec-task .rt-opts label{display:flex;align-items:center;gap:3px;cursor:pointer}
.lg-board-wrap{overflow-x:auto;padding-bottom:6px}
.lg-board{display:grid;grid-template-columns:repeat(5,minmax(240px,1fr));gap:12px;min-width:1250px}
.lg-col{background:#e9ecf1;border-radius:8px;padding:8px;display:flex;flex-direction:column;gap:8px;min-height:300px}
.lg-col.over{outline:2px dashed #d4900a;outline-offset:-2px;background:#f3ead6}
.lg-colh{display:flex;align-items:center;gap:8px;padding:4px 4px 2px}
.lg-colh .sw{width:8px;height:8px;border-radius:2px}
.lg-colh b{font-size:12px;letter-spacing:.7px;text-transform:uppercase}
.lg-colh .n{margin-left:auto;font-family:var(--fm);font-size:12px;color:#5a6270;background:#fff;border-radius:999px;padding:0 8px}
.lg-card{background:#fff;border:1px solid #dfe3ea;border-radius:6px;padding:10px 11px;box-shadow:0 1px 2px rgba(20,24,31,.06);cursor:pointer;display:flex;flex-direction:column;gap:6px}
.lg-card[draggable="true"]{cursor:grab}
.lg-card.dragging{opacity:.4}
.lg-card.callout{border-left:4px solid #c73838}
.lg-card .top{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lg-jn{font-family:var(--fm);font-size:11px;color:#8a95a5}
.lg-tag{font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;border-radius:4px;padding:2px 6px;background:#f7f8fa;color:#5a6270;border:1px solid #e9ecf1}
.lg-tag.co{background:#c73838;color:#fff;border-color:#c73838}
.lg-tag.high{background:#fdecec;color:#c73838;border-color:transparent}
.lg-card .t{font-weight:600;font-size:14px;line-height:1.3}
.lg-card .m{font-size:12px;color:#5a6270;display:flex;flex-direction:column;gap:2px}
.lg-card .bot{display:flex;align-items:center;gap:6px}
.lg-avs{display:flex}
.lg-av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;color:#fff;border:2px solid #fff;margin-left:-6px;flex:none}
.lg-av:first-child{margin-left:0}
.lg-av.lg{width:32px;height:32px;font-size:12px;margin:0;border:0}
.lg-flags{margin-left:auto;display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.lg-flag{font-size:11px;font-weight:700;border-radius:4px;padding:2px 6px;display:inline-flex;gap:4px;align-items:center}
.lg-flag.bad{background:#fdecec;color:#c73838}
.lg-flag.warn{background:#fff4e0;color:#b26a00}
.lg-flag.ok{background:#e8f3ea;color:#2e7d32}
.lg-flag.mut{background:#f7f8fa;color:#5a6270;font-family:var(--fm);font-weight:500}
.lg-scrim{position:fixed;inset:0;background:rgba(20,24,31,.35);z-index:850}
.lg-drawer{position:fixed;top:0;right:0;bottom:0;width:min(500px,100%);background:#fff;z-index:860;box-shadow:-8px 0 30px rgba(20,24,31,.18);display:flex;flex-direction:column}
.lg-dh{padding:14px 18px;border-bottom:1px solid #e0e3e8;display:flex;flex-direction:column;gap:6px}
.lg-db{overflow-y:auto;padding:14px 18px 28px;display:flex;flex-direction:column;gap:18px}
.lg-sect h4{margin:0 0 8px;font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:#8a95a5;display:flex;align-items:center;gap:8px}
.lg-kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:6px 10px;font-size:13px}
.lg-kv dt{color:#5a6270}
.lg-kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.lg-banner{border-radius:6px;padding:10px 12px;font-size:13px;display:flex;flex-direction:column;gap:8px;background:#fdecec;color:#7a1f1f;border:1px solid #f3c9c9}
.lg-li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #f0f2f5}
.lg-li:last-child{border-bottom:0}
.lg-hist{display:flex;flex-direction:column;gap:9px;border-left:2px solid #e0e3e8;padding-left:12px;margin-left:4px}
.lg-hist div{font-size:13px}
.lg-hist time{display:block;font-size:11px;color:#8a95a5;font-family:var(--fm)}
table{width:100%;border-collapse:collapse}
th{text-align:left;padding:10px 14px;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:#888;border-bottom:2px solid #e8eaed;font-weight:600;white-space:nowrap;background:#fafbfc}
td{padding:12px 14px;border-bottom:1px solid #f0f2f5;color:#2d3139;font-size:15px;vertical-align:middle}
tr:last-child td{border-bottom:none}
tr:hover td{background:#fafbfc}

/* ── BADGES ── */
.b{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap}
.b.critical{background:#ffebee;color:#c62828}
.b.high{background:#fff3e0;color:#e65100}
.b.medium{background:#fff8e1;color:#f57f17}
.b.low,.b.completed,.b.closed,.b.active{background:#e8f5e9;color:#2e7d32}
.b.open,.b.scheduled{background:#e3f2fd;color:#1565c0}
.b.pending,.b.draft{background:#fff3e0;color:#e65100}
.b.overdue,.b.expired{background:#ffebee;color:#c62828}

/* ── BUTTONS ── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 17px;border-radius:6px;border:1px solid #d0d3d9;background:#fff;color:#333;cursor:pointer;font-size:14px;font-family:var(--ff);font-weight:500;transition:all .12s}
.btn:hover{border-color:#aaa;background:#f8f9fa}
.btn.p{background:#d4900a;border-color:#d4900a;color:#000;font-weight:600}
.btn.p:hover{background:#e8a420;border-color:#e8a420}
.btn.sm{padding:5px 12px;font-size:12px}
.btn.gold{background:var(--gold);border-color:var(--gold);color:#000;font-weight:600}
.btn.gold:hover{background:var(--gold2)}

/* ── FORMS ── */
.fg{margin-bottom:14px}
.fl{font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:#666;margin-bottom:6px;display:block}
.fi,.fs,.ft{width:100%;background:#fff;border:1px solid #d0d3d9;border-radius:6px;padding:9px 13px;color:#2d3139;font-family:var(--ff);font-size:15px;outline:none;transition:border-color .12s}
.fi:focus,.fs:focus,.ft:focus{border-color:#d4900a;box-shadow:0 0 0 3px rgba(212,144,10,.12)}
.ft{resize:vertical;min-height:80px}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ── MODAL ── */
.ov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:900;align-items:center;justify-content:center;padding:16px}
.ov.open{display:flex}
.modal{background:#fff;border-radius:10px;width:620px;max-width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.modal.wide{width:860px}
.mhd{padding:18px 22px 14px;border-bottom:1px solid #e8eaed;display:flex;align-items:center;justify-content:space-between;background:#fafbfc;border-radius:10px 10px 0 0}
.mtitle{font-size:17px;font-weight:700;color:#1a1d23;display:flex;align-items:center;gap:9px}
.mcl{background:none;border:none;color:#999;cursor:pointer;font-size:20px;padding:4px;line-height:1}
.mcl:hover{color:#333}
.mbody{padding:20px 22px}
.mfoot{padding:14px 22px;border-top:1px solid #e8eaed;display:flex;gap:8px;justify-content:flex-end;background:#fafbfc;border-radius:0 0 10px 10px}
.conduct-card:hover{background:#f0f2f5 !important}
.conduct-card:last-child{border-bottom:none !important}

/* ── WORKFLOW STEPPER ── */
.wft{display:flex;align-items:center;margin-bottom:20px}
.wfs{flex:1;display:flex;align-items:center}
.wfc{width:30px;height:30px;border-radius:50%;border:2px solid #d0d3d9;background:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#999;flex-shrink:0}
.wfc.done{background:var(--client);border-color:var(--client);color:#fff}
.wfc.act{background:var(--gold);border-color:var(--gold);color:#000}
.wfl{font-size:11px;color:#888;margin-left:6px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}
.wfl.act{color:var(--gold)}.wfl.done{color:var(--client)}
.wfln{flex:1;height:2px;background:#e8eaed;margin:0 5px}
.wfln.done{background:var(--client)}

/* ── DETAIL PANEL ── */
.dp{background:#fff;border:1px solid #e0e3e8;border-radius:8px;overflow:hidden}
.dph{padding:16px 20px;border-bottom:1px solid #e8eaed;display:flex;align-items:center;justify-content:space-between;background:#fafbfc}
.dpt{font-size:17px;font-weight:700;color:#1a1d23}
.dpb{padding:20px}
.dps{margin-bottom:18px}
.dpst{font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#888;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #f0f2f5}
.dpr{display:flex;gap:16px;margin-bottom:8px;flex-wrap:wrap}
.dpf{flex:1;min-width:120px}
.dplb{font-size:10px;color:#888;text-transform:uppercase;letter-spacing:.8px;margin-bottom:3px}
.dpv{font-size:15px;color:#2d3139;line-height:1.7}

/* ── CA CARD ── */
.cac{background:#f8f9fa;border:1px solid #e8eaed;border-radius:6px;padding:12px 14px;margin-bottom:8px;display:flex;align-items:flex-start;gap:12px}
.can{font-family:var(--fm);font-size:10px;color:var(--client);font-weight:700;flex-shrink:0;margin-top:2px}
.cab{flex:1}.cat{font-size:13px;color:#1a1d23;font-weight:500}
.cam{font-size:11px;color:#666;margin-top:3px}
.car{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}

/* ── JSA ── */
.jsa-sec{background:#f8f9fa;border:1px solid #e8eaed;border-radius:6px;padding:14px;margin-bottom:12px}
.jsa-sec-t{font-size:14px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#d4900a;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #e8eaed}
.att-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.step-row{display:block;margin-bottom:10px}
.step-num{font-family:var(--fm);font-size:11px;color:var(--client);font-weight:700;flex-shrink:0;margin-top:9px;min-width:22px}

/* ── INSPECTION CONDUCTOR ── */
.ic-item{background:#f8f9fa;border:1px solid #e8eaed;border-radius:6px;padding:13px 15px;margin-bottom:8px}
.ic-q{font-size:13px;color:#1a1d23;margin-bottom:9px;font-weight:500;line-height:1.5}
.ic-btns{display:flex;gap:8px}
.ic-btn{padding:5px 18px;border-radius:20px;border:1px solid #d0d3d9;background:#fff;color:#555;cursor:pointer;font-size:12px;font-weight:600;transition:all .12s}
.ic-btn:hover{border-color:#aaa}
.ic-btn.sel-pass{background:#fdf3e0;border-color:#d4900a;color:#d4900a}
.ic-btn.sel-fail{background:#ffebee;border-color:#c62828;color:#c62828}
.ic-btn.sel-na{background:#fff8e1;border-color:#f57f17;color:#f57f17}
.ic-note{margin-top:8px;display:none}
.ic-note.show{display:block}

/* ── UPLOAD ZONE ── */
.upload-zone{border:2px dashed #d0d3d9;border-radius:8px;padding:28px;text-align:center;cursor:pointer;transition:all .15s;color:#888;background:#fafbfc}
.upload-zone:hover{border-color:var(--client);color:var(--client);background:#f0f7f0}

/* ── ALERT ── */
.al{padding:11px 14px;border-radius:6px;border-left:3px solid;margin-bottom:10px;font-size:13px;display:flex;gap:10px}
.al.cr{background:#ffebee;border-color:#c62828;color:#c62828}
.al.wa{background:#fff8e1;border-color:#f57f17;color:#e65100}
.al.ok{background:#e8f5e9;border-color:var(--client);color:var(--client)}
.al.in{background:#e3f2fd;border-color:#1565c0;color:#1565c0}
.al-t{font-weight:600;margin-bottom:2px}
.al-s{font-size:12px;color:#666}

/* ── DOC CARD ── */
.doc-card{background:#fff;border:1px solid #e8eaed;border-radius:6px;padding:12px 14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all .12s;margin-bottom:8px}
.doc-card:hover{border-color:#bbb;box-shadow:0 2px 6px rgba(0,0,0,.06)}
.doc-icon{font-size:26px;width:38px;text-align:center;flex-shrink:0}
.doc-name{font-size:13px;font-weight:600;color:#1a1d23}
.doc-meta{font-size:11px;color:#888;margin-top:2px}
.doc-cat{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;margin-left:auto;flex-shrink:0}
.doc-cat.ehs_manual{background:#fce4ec;color:#c62828}
.doc-cat.policy{background:#e3f2fd;color:#1565c0}
.doc-cat.procedure{background:#e8f5e9;color:#2e7d32}
.doc-cat.form{background:#f3e5f5;color:#6a1b9a}
.doc-cat.program{background:#fff3e0;color:#e65100}
.doc-cat.other{background:#f5f5f5;color:#555}

/* ── TOAST ── */
#toast{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:7px}
.ti{background:#fff;border:1px solid #e8eaed;border-radius:8px;padding:11px 15px;font-size:13px;min-width:260px;display:flex;align-items:center;gap:9px;box-shadow:0 4px 16px rgba(0,0,0,.12)}
.ti.ok{border-left:3px solid var(--client);color:#2e7d32}
.ti.er{border-left:3px solid #c62828;color:#c62828}
.ti.wa{border-left:3px solid #f57f17;color:#e65100}

/* ── MISC ── */
.sr{display:flex;align-items:center;justify-content:space-between;padding:9px 0;border-bottom:1px solid #f0f2f5}
.sr:last-child{border-bottom:none}
.sl{font-size:13px;color:#555}
.sv{font-family:var(--fm);font-size:13px;color:#1a1d23;font-weight:600}
.loading{display:flex;align-items:center;gap:9px;color:#888;font-size:13px;padding:16px 0}
.spin{width:15px;height:15px;border:2px solid #e8eaed;border-top-color:var(--client);border-radius:50%;animation:sp .55s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.empty{text-align:center;padding:40px;color:#888}
.empty .ei{font-size:40px;opacity:.3;margin-bottom:10px}
.empty .et{font-size:16px;font-weight:600;color:#555;margin-bottom:4px}
.empty .es{font-size:13px}
.mo{font-family:var(--fm);font-size:11px}
.mb8{margin-bottom:8px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.mb20{margin-bottom:20px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}

/* ── MOBILE ── */
@media(max-width:768px){
  #sidebar{transform:translateX(-100%);transition:transform .25s}
  #sidebar.open{transform:translateX(0)}
  #main{margin-left:0;padding:14px}
  .stat-cards{grid-template-columns:repeat(2,1fr)}
  .grid-main,.grid-2,.grid-3{grid-template-columns:1fr}
  .fr{grid-template-columns:1fr}
  #hamburger{display:flex!important}
  .sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:99}
  .sb-overlay.open{display:block}
  .modal{border-radius:10px 10px 0 0;position:fixed;bottom:0;left:0;right:0;width:100%;max-height:90vh}
  .ov{align-items:flex-end;padding:0}
}
@media(min-width:769px){#hamburger{display:none!important}}
/* ── JSA permits & LOTO (Migration 76) ── */
.lt-yn{display:flex;border:1px solid #d0d3d9;border-radius:6px;overflow:hidden;max-width:360px}
.lt-yn button{flex:1;padding:10px 14px;background:#fff;border:none;border-right:1px solid #d0d3d9;font-weight:600;cursor:pointer;font-size:14px;color:#444;min-height:44px;font-family:var(--ff)}
.lt-yn button:last-child{border-right:none}
.lt-yn button.sel.yes{background:#e8f5e9;color:#2e7d32;box-shadow:inset 0 0 0 2px #2e7d32}
.lt-yn button.sel.no{background:#fdecea;color:#c62828;box-shadow:inset 0 0 0 2px #c62828}
.lt-yn button.sel.opt{background:#fff4e0;color:#8a5a10;box-shadow:inset 0 0 0 2px #d4900a}
.lt-yn button:disabled{cursor:default}
.lt-sec{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;padding:10px 12px;margin:20px 0 10px;background:#1a1d23;color:#f5a623;border-left:4px solid #f5a623;border-radius:4px}
.lt-stop{background:#7a1e1e;color:#fff;padding:10px 14px;border-radius:6px;font-weight:700;font-size:13px;margin:8px 0}
.lt-stop.hold{background:#8a4b00}
.lt-stop small{display:block;font-weight:400;margin-top:3px}
.lt-warn{background:#fff8e1;border-left:3px solid #f5a623;padding:8px 12px;font-size:13px;border-radius:4px;margin:6px 0;color:#6d4c00}
.lt-info{background:#eef4fb;border-left:3px solid #4a8fd6;padding:8px 12px;font-size:13px;border-radius:4px;margin:6px 0;color:#1f3b5c}
.lt-status{display:inline-block;padding:6px 12px;border-radius:6px;font-weight:700;font-size:12px;letter-spacing:.3px}
.lt-row{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid #e8eaed;border-radius:6px;margin-bottom:6px;background:#fff}
.lt-row.off{opacity:.65;background:#f5f6f8}
.lt-row .lt-main{font-weight:600;font-size:14px}
.lt-row .lt-sub{font-size:12px;color:#666;margin-top:2px}
.lt-legend{font-size:12px;color:#555;line-height:1.7;background:#f8f9fa;padding:8px 12px;border-radius:6px;margin-bottom:8px}
.lt-pad{width:100%;height:170px;border:1px dashed #b0b5bd;border-radius:6px;background:#fff;touch-action:none;display:block}
.lt-chip{padding:7px 12px;border-radius:16px;border:1px solid #d0d3d9;background:#fff;cursor:pointer;font-size:13px;font-weight:600;color:#444;font-family:var(--ff)}
.lt-chip.on{background:#1a1d23;color:#fff;border-color:#1a1d23}
.lt-signed{font-size:12px;color:#2e7d32;font-weight:600}
.lt-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.lt-photos img{width:84px;height:84px;object-fit:cover;border-radius:6px;border:1px solid #e0e3e8}
.lt-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.lt-actions .btn{min-height:44px}
.pg-cam-btn{margin:6px 6px 0 0;display:inline-flex;align-items:center;gap:6px}
.pg-file-list{font-size:12px;color:#2e7d32;margin-top:6px;line-height:1.6;word-break:break-all}
/* Grid children may shrink, so wide tables scroll inside their .tw box instead of widening the page */
.grid-main>*,.grid-2>*,.grid-3>*{min-width:0}
.tw{-webkit-overflow-scrolling:touch}

/* ── PHONES ── most layouts use inline grid styles, so these override them */
@media(max-width:640px){
  #main{padding:10px 10px calc(10px + env(safe-area-inset-bottom))}
  .page{padding:4px 0}
  /* tile rows: 2 across */
  .stat-cards,[style*="grid-template-columns:repeat(4,1fr)"],[style*="grid-template-columns:repeat(5,1fr)"],[style*="grid-template-columns:repeat(6,1fr)"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  /* form rows and side-by-side panels: stack (rows ending in a small remove button keep their shape) */
  [style*="grid-template-columns:1fr 1fr"]:not([style*="36px"]):not([style*="auto"]),[style*="grid-template-columns:1fr 1fr 1fr"],[style*="grid-template-columns:repeat(3,1fr)"],[style*="grid-template-columns:2fr 1fr"],[style*="grid-template-columns:3fr 1fr"],[style*="grid-template-columns:1.4fr 1fr 1fr"],[style*="grid-template-columns:1fr 320px"],[style*="grid-template-columns:minmax(240px,300px) minmax(0,1fr)"]{grid-template-columns:minmax(0,1fr)!important}
  /* page title + action buttons wrap instead of running off the screen */
  .pg-header{flex-wrap:wrap;gap:10px}
  .pg-actions{flex-wrap:wrap;width:100%}
  .pg-actions .btn{flex:1;justify-content:center}
  /* touch-sized controls; 16px text stops iPhones zooming into every field */
  .btn{min-height:44px}
  .btn.sm{min-height:38px}
  .mcl{min-width:44px;min-height:44px}
  input,select,textarea,.fi,.fs,.ft{font-size:16px!important}
  /* modals: full-width bottom sheet, clear of the iPhone bar */
  .modal,.modal[style]{width:100%!important;max-width:100%!important;max-height:92dvh;padding-bottom:calc(16px + env(safe-area-inset-bottom))}
  /* Title + buttons stay put, only the middle scrolls (no scroll-inside-a-scroll) */
  .modal:has(> .mbody){display:flex;flex-direction:column;overflow:hidden}
  .modal > .mhd,.modal > .mfoot{flex-shrink:0}
  .modal > .mbody,.modal > .mbody[style]{flex:1 1 auto;min-height:0;max-height:none!important;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .mfoot{flex-wrap:wrap}
  .mfoot .btn{flex:1;justify-content:center}
  .tabs{overflow-x:auto;flex-wrap:nowrap}
  .tab{white-space:nowrap;padding:10px 14px}
  .stat-card-value{font-size:24px}
  td,th{padding:8px 10px;font-size:13px}
  /* inspection questions: Yes / No / N/A go full width under the question */
  .conduct-q>div:first-child{flex-direction:column}
  [id^="cq-btns-"]{width:100%}
  .ic-btn,[id^="cq-btns-"] .ic-btn{flex:1;min-height:44px;font-size:14px}
  /* header: long company names shorten, username hidden */
  .th-client{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40vw}
  .th-powered,#header-username{display:none!important}
  #hamburger{width:44px!important;height:44px!important}
  /* Logistics board: one column per swipe (drag and drop doesn't work on touch; change status from the job) */
  .lg-board-wrap{scroll-snap-type:x mandatory}
  .lg-board{grid-template-columns:repeat(5,85vw)!important;min-width:0!important}
  .lg-col{scroll-snap-align:start}
  #toast{left:10px;right:10px;bottom:calc(16px + env(safe-area-inset-bottom))}
}
.page{display:none;padding:22px}
.page.active{display:block}
@keyframes pgIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
th[data-sort-module] { cursor:pointer; user-select:none; white-space:nowrap; }
th[data-sort-module]:hover { background:#e8eaed; color:#1a1d23; }
.sort-arrow { font-size:10px; color:#aaa; }

/* ── PRINT STYLES ── */
@media print {
  /* Hide everything by default */
  body * { visibility: hidden; }

  /* Show only the print target */
  #print-target, #print-target * { visibility: visible; }

  /* Position print target to fill page */
  #print-target {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    padding: 20px 30px !important;
    background: #fff !important;
    z-index: 99999 !important;
    font-size: 12px !important;
  }

  /* Clean up print styles */
  #print-target .btn { display: none !important; }
  #print-target .mhd { display: none !important; }
  #print-target table { border-collapse: collapse; width: 100%; }
  #print-target td, #print-target th { 
    border: 1px solid #ccc !important; 
    padding: 6px 8px !important;
    font-size: 11px !important;
  }
  #print-target .dp { box-shadow: none !important; }
  #print-target .dph { border-bottom: 2px solid #333 !important; padding-bottom: 10px !important; margin-bottom: 12px !important; }
  #print-target .dpt { font-size: 16px !important; font-weight: 700 !important; }
  #print-target .dpst { font-size: 11px !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: 1px !important; color: #555 !important; border-bottom: 1px solid #ddd !important; padding-bottom: 4px !important; margin-bottom: 8px !important; }
  #print-target .b { border: 1px solid #ccc !important; background: none !important; color: #333 !important; }

  @page {
    margin: 15mm;
    size: A4 portrait;
  }
}

/* ── S.A.M. — Safety Assistant & Mentor (sam.js) ── */
#sam-btn{position:fixed;right:20px;bottom:20px;z-index:850;height:52px;min-width:52px;padding:0 16px 0 12px;border-radius:26px;border:0;background:#1a2230;color:#fff;font-weight:800;font-size:13.5px;display:flex;align-items:center;gap:6px;box-shadow:0 4px 14px rgba(0,0,0,.25);cursor:pointer}
#sam-btn:hover{background:#243044}
#sam-btn .sam-spark{color:#f0b429;font-size:17px}
body.sam-open #sam-btn{display:none}
#sam-win{position:fixed;right:20px;bottom:20px;z-index:860;width:380px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 100px);background:#fff;border-radius:12px;box-shadow:0 10px 36px rgba(0,0,0,.28);display:flex;flex-direction:column;overflow:hidden;font-size:13.5px}
#sam-win .sam-hd{display:flex;align-items:center;gap:6px;padding:10px 10px 10px 14px;background:#1a2230;color:#fff}
#sam-win .sam-hd>div{flex:1;min-width:0}
#sam-win .sam-title{font-weight:800;font-size:13.5px}
#sam-win .sam-x{background:transparent;border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:6px;padding:4px 8px;font-size:12px;cursor:pointer}
#sam-win .sam-body{flex:1;overflow-y:auto;padding:12px;background:#f5f7fa;display:flex;flex-direction:column;gap:8px}
#sam-win .sam-msg{max-width:92%;padding:9px 11px;border-radius:10px;line-height:1.5}
#sam-win .sam-msg p{margin:0 0 6px}#sam-win .sam-msg p:last-child{margin-bottom:0}
#sam-win .sam-msg ol,#sam-win .sam-msg ul{margin:4px 0 6px;padding-left:20px}
#sam-win .sam-a{background:#fff;border:1px solid #e0e4ea;align-self:flex-start}
#sam-win .sam-me{background:#d4900a;color:#fff;align-self:flex-end;white-space:pre-wrap}
#sam-win .sam-err{background:#fff3e0;border:1px solid #ffcc80;color:#8a4b00;align-self:flex-start}
#sam-win .sam-em{background:#ffebee;border:1px solid #ef9a9a;color:#b71c1c;border-radius:6px;padding:6px 8px;margin-bottom:8px;font-weight:700}
#sam-win .sam-starters{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
#sam-win .sam-st{background:#fff;border:1px solid #d4900a;color:#8a5a00;border-radius:16px;padding:6px 12px;font-size:12.5px;cursor:pointer;text-align:left}
#sam-win .sam-st:hover{background:#fff8e6}
#sam-win .sam-links,#sam-win .sam-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}
#sam-win .sam-rate{background:#fff;border:1px solid #e0e4ea;border-radius:6px;padding:2px 8px;cursor:pointer;font-size:14px}
#sam-win .sam-rate.on{background:#fff8e6;border-color:#d4900a}
#sam-win .sam-left{font-size:11.5px;color:#5a6270}
#sam-win .sam-ft{border-top:1px solid #e0e4ea;padding:8px 10px;background:#fff}
#sam-win .sam-in{display:flex;gap:6px;align-items:flex-end}
#sam-win .sam-in textarea{flex:1;resize:none;border:1px solid #cfd5de;border-radius:8px;padding:7px 9px;font:inherit;font-size:13.5px}
#sam-win .sam-note{font-size:11px;color:#6b7380;margin-top:6px;line-height:1.4}
#sam-win .sam-wait{display:flex;gap:4px;padding:12px}
#sam-win .sam-wait span{width:7px;height:7px;border-radius:50%;background:#b0b8c4;animation:samdot 1s infinite}
#sam-win .sam-wait span:nth-child(2){animation-delay:.15s}#sam-win .sam-wait span:nth-child(3){animation-delay:.3s}
@keyframes samdot{0%,80%,100%{opacity:.3}40%{opacity:1}}
@media (max-width:768px){
  #sam-btn{right:14px;bottom:calc(76px + env(safe-area-inset-bottom));height:46px;min-width:46px;padding:0 12px 0 10px}
  #sam-win{inset:0;width:auto;max-width:none;height:auto;max-height:none;border-radius:0;right:0;bottom:0}
  #sam-win .sam-hd{padding-top:calc(10px + env(safe-area-inset-top))}
  #sam-win .sam-ft{padding-bottom:calc(8px + env(safe-area-inset-bottom))}
  #sam-win .sam-in textarea{font-size:16px}
}
/* S.A.M.'s button never covers the notification settings Save bar */
body:has(#page-settings.active #notif-save-bar:not([style*="display: none"]):not([style*="display:none"])) #sam-btn{display:none}
