@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@500;600;700&family=Special+Elite&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --paper:#F4EFE0;
  --paper-dark:#E9E1CC;
  --ink:#262421;
  --steel:#20262C;
  --steel-2:#2B333B;
  --amber:#D98A2B;
  --amber-deep:#8A560E;
  --red:#B23A2E;
  --green:#3F7A4E;
  --muted:#8A8676;
}
*{box-sizing:border-box;}
body{margin:0;background:#12161A;font-family:'IBM Plex Mono',monospace;color:var(--ink);}
button,input,select,textarea{font:inherit;}

.topbar{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--steel);border-bottom:2px solid var(--amber);padding:10px 24px;gap:12px;flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:12px;}
.brand-name{font-family:'Oswald',sans-serif;color:var(--paper);}
.brand-name .full{font-size:13px;font-weight:600;letter-spacing:.5px;}
.brand-name .sub{font-size:10px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-top:2px;}
.nav{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.nav button{
  background:transparent;border:1px solid #3A424A;color:#C9C4B4;
  font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:.5px;text-transform:uppercase;
  padding:9px 16px;cursor:pointer;transition:.15s;
}
.nav button:hover{border-color:var(--amber);color:var(--paper);}
.nav button.active{background:var(--amber-deep);border-color:var(--amber);color:var(--paper);}
.nav .logout{border-color:#5A2E2A;color:#D98A78;}
.nav .logout:hover{border-color:var(--red);color:#fff;}
.role-badge{font-family:'IBM Plex Mono';font-size:10.5px;color:#8A9098;letter-spacing:.5px;}
.role-badge b{color:var(--paper);}

.app-shell{display:none;}
.app-shell.active{display:block;}
.view{display:none;}
.view.active{display:flex;}

.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#12161A;}
.login-card{background:var(--steel);border:1px solid #303840;border-top:3px solid var(--amber);padding:34px 38px;width:380px;max-width:92vw;}
.login-card .co-badge{width:56px;height:56px;display:block;margin:0 auto 14px;object-fit:contain;background:#fff;border-radius:3px;padding:2px;}
.login-card h2{font-family:'Oswald',sans-serif;color:var(--paper);font-size:16px;text-align:center;letter-spacing:.5px;margin:0 0 4px;}
.login-card .sub2{text-align:center;font-size:11px;color:var(--muted);margin-bottom:22px;letter-spacing:.5px;text-transform:uppercase;}
.login-card label,.field-label{display:block;font-size:10px;letter-spacing:.5px;text-transform:uppercase;color:#8A9098;font-family:'IBM Plex Mono';margin-bottom:5px;margin-top:14px;}
.login-card input,.login-card select,.panel-card input,.panel-card select,.panel-card textarea,
.admin-form input,.admin-form select,.admin-form textarea,.filters input,.filters select{
  width:100%;background:#12161A;border:1px solid #3A424A;color:var(--paper);padding:9px 10px;font-family:'IBM Plex Mono';font-size:12.5px;
}
.login-card input::placeholder,.panel-card input::placeholder{color:#5A6169;}
.err{color:#D98A78;font-size:11px;margin-top:10px;display:none;}
.err.show{display:block;}

#view-new{min-height:calc(100vh - 54px);flex-direction:column;}
.new-permit-body{display:flex;flex:1;min-height:0;}
.read-only-bar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:#2B333B;border-bottom:1px solid var(--amber);padding:10px 24px;
  font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:.5px;text-transform:uppercase;color:var(--paper);
}
.read-only-bar .btn{margin:0;}
.read-only-bar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.sidebar{
  width:300px;flex-shrink:0;background:var(--steel);color:#D7D2C4;
  padding:26px 22px;display:flex;flex-direction:column;gap:24px;
}
.wordmark{font-family:'Oswald',sans-serif;font-weight:700;font-size:22px;letter-spacing:2px;color:var(--paper);border-bottom:2px solid var(--amber);padding-bottom:10px;}
.wordmark span{color:var(--amber);}
.tagline{font-size:11px;letter-spacing:1px;color:var(--muted);margin-top:6px;text-transform:uppercase;}
.stepper{display:flex;flex-direction:column;gap:0;}
.step{display:flex;gap:12px;padding:9px 0;position:relative;}
.step .dot{width:22px;height:22px;border-radius:50%;border:2px solid #4A5359;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#7C8790;background:var(--steel);z-index:1;}
.step.done .dot{border-color:var(--green);background:var(--green);color:#0C1F12;}
.step.active .dot{border-color:var(--amber);background:var(--amber);color:#3A2400;}
.step:not(:last-child)::before{content:'';position:absolute;left:10px;top:32px;width:2px;height:calc(100% - 10px);background:#3A424A;}
.step.done:not(:last-child)::before{background:var(--green);}
.step-label{font-family:'Oswald',sans-serif;font-size:12.5px;letter-spacing:.5px;padding-top:2px;color:#B7B2A2;}
.step.active .step-label{color:var(--paper);font-weight:600;}
.catalog-title{font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);border-top:1px solid #3A424A;padding-top:16px;}
.template-search-wrap{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.template-search{width:100%;box-sizing:border-box;background:#1B2126;border:1px solid #3A424A;color:var(--paper);font-family:'IBM Plex Mono',monospace;font-size:12px;padding:8px 10px;}
.template-search:focus{outline:none;border-color:var(--amber);}
.template-search-meta{font-size:10px;min-height:14px;}
.job-list{display:flex;flex-direction:column;gap:8px;max-height:40vh;overflow:auto;}
.job-card{background:var(--steel-2);border:1px solid #3A424A;border-left:3px solid #4A5359;padding:10px 12px;cursor:pointer;transition:.15s;}
.job-card:hover{border-left-color:var(--amber);background:#323C44;}
.job-card.selected{border-left-color:var(--amber);background:#3A4048;box-shadow:inset 0 0 0 1px var(--amber);}
.job-card .name{font-size:13px;font-weight:600;color:var(--paper);}
.job-card .cat{font-size:10px;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-top:3px;}

.main{flex:1;padding:36px;display:flex;gap:30px;align-items:flex-start;justify-content:center;flex-wrap:wrap;}
.doc-wrap{position:relative;width:640px;max-width:100%;flex-shrink:0;}
.carbon{position:absolute;top:0;left:0;width:100%;background:#E4DAB8;border:1px solid #C9BE96;min-height:400px;}
.carbon.c1{transform:rotate(1.6deg) translate(7px,10px);z-index:1;}
.carbon.c2{transform:rotate(-1.2deg) translate(-6px,16px);z-index:0;background:#DCD1AC;}
.carbon-tab{font-family:'IBM Plex Mono';font-size:9px;letter-spacing:1px;color:#8A7F5A;position:absolute;right:14px;bottom:10px;}
.sheet{position:relative;z-index:2;background:var(--paper);border:1px solid #C9BE96;padding:14px 16px 16px 22px;font-family:'Special Elite',monospace;color:var(--ink);min-height:400px;overflow:hidden;}
.cat-ribbon{position:absolute;top:0;left:0;bottom:0;width:6px;}
.sheet-watermark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;z-index:0;}
.sheet-watermark span{font-family:'Oswald',sans-serif;font-weight:700;font-size:48px;letter-spacing:6px;color:var(--ink);opacity:.04;transform:rotate(-28deg);white-space:nowrap;}
.sheet-content{position:relative;z-index:1;}
.sheet-content.one-pager .section-title{margin:8px 0 4px;padding-bottom:2px;font-size:9.5px;}
.ptw-header{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) auto;gap:10px;align-items:start;border-bottom:2px solid var(--ink);padding-bottom:8px;margin-bottom:8px;}
.ptw-header-left{display:flex;align-items:center;gap:8px;min-width:0;}
.ptw-header-mid{min-width:0;}
.ptw-header-codes{display:flex;align-items:flex-start;gap:8px;}
.ptw-title{font-family:'Oswald',sans-serif;font-size:15px;letter-spacing:1px;font-weight:700;line-height:1.1;}
.ptw-type-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;align-items:center;}
.ptw-meta-line{font-size:10px;color:#5A5648;font-family:'IBM Plex Mono',monospace;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rig-line{font-size:9.5px;color:#5A5648;margin-top:2px;font-family:'IBM Plex Mono',monospace;}
.permit-no.compact .num{font-size:12px;}
.permit-no.compact .barcode{height:22px;margin-top:4px;}
.qr-block.compact{margin-top:0;text-align:center;}
.qr-block.compact img{width:56px;height:56px;margin-left:0;}
.qr-placeholder{width:56px;height:56px;border:1px dashed #C9BE96;display:flex;align-items:center;justify-content:center;}
.ptw-info-table{width:100%;border-collapse:collapse;font-size:11px;font-family:'IBM Plex Mono',monospace;margin-bottom:6px;}
.ptw-info-table th,.ptw-info-table td{border:1px solid #C9BE96;padding:4px 6px;vertical-align:top;line-height:1.35;}
.ptw-info-table th{width:14%;background:#F3ECD6;font-size:8.5px;letter-spacing:.4px;text-transform:uppercase;color:#6B6656;font-weight:600;}
.ptw-info-table td.blank{color:#B7AF8E;}
.ptw-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:2px;}
.compact-list{font-size:11px;line-height:1.35;padding-left:16px;}
.compact-table td{padding:5px;}
.sign-meta{font-size:7.5px;color:#8A8676;}
.cat-badge{display:inline-block;font-family:'IBM Plex Mono';font-size:10px;letter-spacing:.5px;padding:2px 8px;color:#fff;}
.permit-type-options{display:flex;gap:16px;margin:6px 0 4px;}
.permit-type-opt{display:flex;align-items:center;gap:6px;font-family:'IBM Plex Mono';font-size:12px;color:var(--ink);cursor:pointer;}
.panel-card .permit-type-opt{color:var(--paper);font-weight:500;}
.panel-card .permit-type-opt input[type=radio]{accent-color:var(--amber);width:14px;height:14px;flex-shrink:0;}
.permit-type-badge{display:inline-block;font-family:'Oswald',sans-serif;font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;padding:2px 8px;border:2px solid currentColor;}
.permit-type-hot{color:#B23A2E;border-color:#B23A2E;background:rgba(178,58,46,.08);}
.permit-type-cold{color:#2E6B8A;border-color:#2E6B8A;background:rgba(46,107,138,.08);}
.permit-type-unset{color:#8A8676;border-color:#C9BE96;}
.field-label .req{color:#B23A2E;}
.section-title{font-family:'Oswald',sans-serif;font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:#5A5648;border-bottom:1px solid #C9BE96;margin:14px 0 7px;padding-bottom:3px;}
.stamp{position:absolute;top:12px;right:14px;border:2px solid var(--muted);color:var(--muted);font-family:'Oswald',sans-serif;font-weight:700;font-size:11px;letter-spacing:1px;padding:3px 8px;transform:rotate(-10deg);opacity:.85;pointer-events:none;z-index:3;}
.stamp.pending{border-color:var(--amber-deep);color:var(--amber-deep);}
.stamp.authorized{border-color:var(--green);color:var(--green);border-width:3px;font-size:12px;}
.co-header{display:flex;align-items:center;gap:10px;border-bottom:1px solid #C9BE96;padding-bottom:10px;margin-bottom:10px;}
.co-badge{width:38px;height:38px;flex-shrink:0;object-fit:contain;background:#fff;border-radius:3px;padding:2px;}
.co-badge.doc-logo{width:44px;height:44px;padding:2px;}
.co-name{font-family:'Oswald',sans-serif;font-size:12px;font-weight:600;letter-spacing:.5px;color:var(--ink);}
.co-sub{font-size:8.5px;color:#7A745F;font-family:'IBM Plex Mono';letter-spacing:.5px;text-transform:uppercase;}
.doc-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:10px;margin-bottom:14px;}
.doc-head h1{font-family:'Oswald',sans-serif;font-size:17px;letter-spacing:1px;margin:0;}
.doc-head .rig{font-size:10.5px;color:#5A5648;margin-top:4px;font-family:'IBM Plex Mono';}
.permit-no{text-align:right;font-family:'IBM Plex Mono';}
.permit-no .num{font-size:13px;font-weight:600;color:var(--ink);}
.permit-no .lbl{font-size:9px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;}
.barcode{display:flex;gap:1.5px;height:28px;margin-top:6px;justify-content:flex-end;}
.barcode div{background:var(--ink);width:2px;}
.signer-pick{margin:0 0 8px;}
.signer-pick label{display:block;font-size:10px;letter-spacing:.4px;text-transform:uppercase;color:#8A8676;margin-bottom:3px;}
.signer-pick select,.signer-pick input{width:100%;margin-bottom:0;}
.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#3F7A4E;margin-right:6px;vertical-align:middle;box-shadow:0 0 0 0 rgba(63,122,78,.6);animation:livePulse 1.6s infinite;}
@keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(63,122,78,.55);}70%{box-shadow:0 0 0 6px rgba(63,122,78,0);}100%{box-shadow:0 0 0 0 rgba(63,122,78,0);}}
.reg-table{font-size:11px;}
.reg-table th{white-space:nowrap;}
.reg-table td.job-desc-cell{max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media (max-width:900px){
  .ptw-header{grid-template-columns:1fr;}
  .ptw-cols{grid-template-columns:1fr;}
  .ptw-header-codes{justify-content:flex-start;}
}
.placeholder-doc{min-height:340px;display:flex;align-items:center;justify-content:center;text-align:center;color:#8A8676;font-family:'IBM Plex Mono';font-size:13px;line-height:1.7;padding:0 40px;}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;font-size:12px;margin-bottom:12px;}
.field{margin-bottom:7px;}
.field label{display:block;font-size:9px;letter-spacing:.5px;text-transform:uppercase;color:#6B6656;font-family:'IBM Plex Mono';margin-bottom:2px;}
.field .val{border-bottom:1px dotted #A39C7F;min-height:15px;padding-bottom:2px;}
.field .val.blank{color:#B7AF8E;}
.field-job-desc{margin:0 0 14px;}
.field-job-desc .job-desc-val{
  border:1px solid #C9BE96;background:#F9F5E8;min-height:72px;padding:10px 12px;
  white-space:pre-wrap;line-height:1.55;font-size:13px;
}
.panel-card .job-desc-input{
  min-height:140px;resize:vertical;line-height:1.5;margin-bottom:8px;
  border-color:#5A4A2A;background:#161B20;
}
.panel-card .job-desc-input:focus{outline:1px solid var(--amber);border-color:var(--amber);}
.panel-card .locked-hint{margin-top:0;}
ul.doc-list{margin:0;padding-left:18px;font-size:12px;line-height:1.5;}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}
.tag{background:#E4DAB8;border:1px solid #C9BE96;font-size:10px;padding:3px 8px;font-family:'IBM Plex Mono';color:#4A4636;}
a.tag-link{text-decoration:none;color:#3A2E10;cursor:pointer;}
a.tag-link:hover{border-color:var(--amber-deep);background:#EDE4C4;}
#btnReprint{margin-top:8px;}
@media print{
  .topbar,.panel,.sidebar,.nav,.filters,.stepper,.carbon{display:none!important;}
  body{background:#fff;}
  .sheet{box-shadow:none;border:none;}
}

/* Print package — permit + attachments (single document, per-page orientation) */
@page permit{size:A4 portrait;margin:12mm;}
@page portrait{size:A4 portrait;margin:10mm;}
@page landscape{size:A4 landscape;margin:10mm;}

.print-sheet-wrap.print-sheet{page:permit;}
.print-sheet-wrap.print-sheet.has-attachments{page-break-after:always;break-after:page;}

.print-att-page{
  margin:0;
  padding:0;
  max-width:none;
  box-sizing:border-box;
}
.print-att-page:not(.print-att-first){
  page-break-before:always;
  break-before:page;
}
.print-att-page.portrait{page:portrait;}
.print-att-page.landscape{page:landscape;}

.print-att-empty,.print-att-fallback{
  padding:28px 16px;
  font-family:'IBM Plex Mono',monospace;
  font-size:12px;
  line-height:1.5;
}
.print-att-image,
.print-att-pdf-page{
  display:flex;
  justify-content:center;
  align-items:center;
  min-height:0;
  page-break-inside:avoid;
  break-inside:avoid;
}
.print-att-img{
  max-width:100%;
  max-height:calc(100vh - 48px);
  width:auto;
  height:auto;
  display:block;
  margin:0 auto;
  object-fit:contain;
}
.print-att-docx-body{
  padding:16px 20px;
  font-family:'Times New Roman',Times,serif;
  font-size:11pt;
  line-height:1.45;
  color:#000;
}
.print-att-docx-body p{margin:0 0 0.6em;}
.print-att-docx-body table{border-collapse:collapse;width:100%;margin:0.5em 0;}
.print-att-docx-body td,.print-att-docx-body th{border:1px solid #333;padding:4px 6px;vertical-align:top;}
.print-att-docx-body img{max-width:100%;height:auto;}
@media print{
  .print-att-page:not(.print-att-first){page-break-before:always;break-before:page;}
  .print-att-image,
  .print-att-pdf-page{
    width:100%;
    height:100%;
    page-break-inside:avoid;
    break-inside:avoid;
  }
  .print-att-img{
    max-width:100%;
    max-height:100%;
    width:auto;
    height:auto;
    object-fit:contain;
  }
  .print-sheet-wrap.print-sheet.has-attachments{page-break-after:always;break-after:page;}
}
table.doc-table{width:100%;border-collapse:collapse;font-size:10.5px;font-family:'IBM Plex Mono';margin-top:4px;}
table.doc-table th{text-align:left;font-size:8.5px;letter-spacing:.5px;text-transform:uppercase;color:#6B6656;border-bottom:1px solid #A39C7F;padding:4px 5px;}
table.doc-table td{border-bottom:1px dotted #C9BE96;padding:7px 5px;color:#B7AF8E;}
.sheet .sign-grid,
.print-sheet-wrap .sign-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:8px;}
.sign-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-top:8px;}
.sign-box{border:1px solid #C9BE96;padding:5px 3px;text-align:center;min-width:0;}
.quick-validity{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.quick-validity .btn{margin-bottom:0;}
.qr-block{text-align:right;margin-top:8px;}
.qr-block img{width:72px;height:72px;border:1px solid #C9BE96;padding:2px;background:#fff;display:block;margin-left:auto;}
.qr-caption{font-size:7.5px;text-transform:uppercase;letter-spacing:.4px;color:#6B6656;margin-top:3px;font-family:'IBM Plex Mono',monospace;}
.close-track{font-size:10.5px;line-height:1.6;margin:8px 0;}
.sheet .sign-grid.close-grid,
.print-sheet-wrap .sign-grid.close-grid,
.sign-grid.close-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.sign-box .role{font-size:7.5px;letter-spacing:.3px;text-transform:uppercase;color:#6B6656;font-family:'IBM Plex Mono';line-height:1.25;}
.sign-box .status{font-family:'Oswald',sans-serif;font-size:10px;font-weight:600;margin-top:4px;}
.sign-box .status.pending{color:var(--muted);}
.sign-box .status.approved{color:var(--green);}
.sign-box .time{font-size:8px;color:#8A8676;margin-top:2px;font-family:'IBM Plex Mono';line-height:1.35;}
.blank-note{margin-top:10px;border:1px dashed #B7AF8E;padding:7px 9px;font-family:'IBM Plex Mono';font-size:9.5px;color:#6B6656;line-height:1.45;}
@media print{
  .sheet .sign-grid,
  .print-sheet-wrap .sign-grid,
  .sign-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:6px;page-break-inside:avoid;margin-top:8px;}
  .sheet .sign-grid.close-grid,
  .print-sheet-wrap .sign-grid.close-grid,
  .sign-grid.close-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;}
  .sign-box{padding:5px 3px;border:1px solid #C9BE96;min-width:0;}
  .sign-box .role{font-size:7.5px;}
  .print-sheet-wrap .sheet{padding:14px 16px 16px 20px;}
  .print-sheet-wrap .sign-grid{margin-top:8px;}
  .qr-block img{width:56px;height:56px;}
  .ptw-header{page-break-inside:avoid;}
}

.panel{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:14px;}
.panel-card{background:#1B2126;border:1px solid #303840;padding:15px 17px;color:#C9C4B4;}
.panel-card h3{font-family:'Oswald',sans-serif;font-size:11.5px;letter-spacing:1px;text-transform:uppercase;color:var(--paper);margin:0 0 9px;}
.panel-card p.hint{font-size:10.5px;color:#6B7178;line-height:1.5;margin:0 0 9px;}
.panel-card input,.panel-card select,.panel-card textarea{margin-bottom:8px;}
.panel-card textarea{min-height:70px;resize:vertical;}
.btn{width:100%;background:#2B333B;border:1px solid #4A5359;color:var(--paper);font-family:'Oswald',sans-serif;font-size:11.5px;letter-spacing:.5px;text-transform:uppercase;padding:9px;cursor:pointer;margin-bottom:7px;transition:.15s;}
.btn:hover:not(:disabled){background:#3A424A;border-color:var(--amber);}
.btn:disabled{opacity:.35;cursor:not-allowed;}
.btn.approved{background:#1F3A26;border-color:var(--green);color:#8FD69E;}
.btn.print{background:var(--amber-deep);border-color:var(--amber);}
.btn.print:hover:not(:disabled){background:var(--amber);color:#3A2400;}
.btn.danger{border-color:#5A2E2A;color:#D98A78;}
.btn.inline{width:auto;display:inline-block;padding:7px 12px;margin:0;}
.printed-msg{font-size:10.5px;color:#8FD69E;font-family:'IBM Plex Mono';margin-top:4px;}

#view-dashboard,#view-register,#view-today,#view-admin,#view-master{flex-direction:column;width:100%;padding:32px 40px;color:#C9C4B4;gap:20px;}
.filters{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;background:#1B2126;border:1px solid #303840;padding:16px 18px;}
.filters .fgroup label{display:block;font-size:9.5px;letter-spacing:.5px;text-transform:uppercase;color:#6B7178;margin-bottom:5px;}
.metric-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.metric-card{background:#1B2126;border:1px solid #303840;padding:16px 18px;}
.metric-card .num{font-family:'Oswald',sans-serif;font-size:28px;font-weight:600;color:var(--paper);}
.metric-card .lbl{font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;color:#6B7178;margin-top:4px;}
.panel-2{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;}
.box{background:#1B2126;border:1px solid #303840;padding:18px 20px;}
.box h3{font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--paper);margin:0 0 14px;}
.trend{display:flex;align-items:flex-end;gap:4px;height:150px;}
.trend .bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;}
.trend .bar{width:100%;background:var(--amber);}
.trend .bar-day{font-size:8px;color:#6B7178;margin-top:5px;writing-mode:vertical-rl;}
.cat-row{display:flex;align-items:center;gap:10px;margin-bottom:11px;font-size:12px;}
.cat-row .cat-name{width:150px;flex-shrink:0;font-size:11px;}
.cat-bar-track{flex:1;background:#12161A;height:10px;}
.cat-bar-fill{height:100%;background:var(--amber);}
.cat-count{width:26px;text-align:right;font-size:11px;color:var(--paper);}
table.reg-table{width:100%;border-collapse:collapse;font-size:12px;}
table.reg-table th{text-align:left;font-size:9.5px;letter-spacing:.5px;text-transform:uppercase;color:#6B7178;border-bottom:1px solid #3A424A;padding:9px 8px;}
table.reg-table td{border-bottom:1px solid #262C32;padding:9px 8px;color:#C9C4B4;}
table.reg-table tr.clickable{cursor:pointer;}
table.reg-table tr.clickable:hover td{background:#222830;}
.status-pill{font-size:9.5px;padding:3px 8px;letter-spacing:.5px;text-transform:uppercase;}
.status-pill.issued,.status-pill.Active{background:#1F3A26;color:#8FD69E;}
.status-pill.closed,.status-pill.Closed{background:#2B333B;color:#9AA2A9;}
.status-pill.cancelled,.status-pill.Cancelled{background:#3A241F;color:#D98A78;}
.status-pill.draft,.status-pill.in_approval{background:#3A3420;color:#E2C07A;}
.status-pill.overdue{background:#4A2818;color:#F0A060;border:1px solid #B23A2E;}
table.reg-table tr.row-overdue td{background:#2A2018;}
table.reg-table tr.row-overdue:hover td{background:#352618;}
.today-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;}
/* superseded by cert live-worklist today-grid below when both present */
.today-list{display:flex;flex-direction:column;gap:8px;}
.today-row{display:flex;justify-content:space-between;align-items:center;background:#1B2126;border:1px solid #303840;border-left:3px solid #4A5359;padding:10px 14px;}
.today-row.issued{border-left-color:var(--amber);}
.today-row .today-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.today-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.today-row .tinfo{font-size:11px;color:#C9C4B4;}
.today-row .tinfo b{color:var(--paper);display:block;font-size:12.5px;margin-bottom:2px;font-family:'Oswald',sans-serif;}

.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.admin-form .row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.muted{color:#6B7178;font-size:11px;}
.list-item{border:1px solid #303840;padding:12px 14px;margin-bottom:8px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.list-item .meta{font-size:11px;color:#8A9098;margin-top:4px;}
.tabs{display:flex;gap:6px;margin-bottom:8px;}
.tabs button{background:#1B2126;border:1px solid #303840;color:#C9C4B4;font-family:'Oswald',sans-serif;font-size:11px;letter-spacing:.5px;text-transform:uppercase;padding:8px 14px;cursor:pointer;}
.tabs button.active{border-color:var(--amber);color:var(--paper);}
.ok-msg{color:#8FD69E;font-size:11px;margin-top:8px;}
.logo-preview{max-height:48px;max-width:120px;background:#fff;padding:3px;border-radius:3px;}
.app-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(12px);background:#20262C;color:#F4EFE0;border:1px solid #D98A2B;padding:12px 18px;font-family:'IBM Plex Mono',monospace;font-size:12px;z-index:1000;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;max-width:min(92vw,520px);text-align:center;}
.app-toast.visible{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}

.cert-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;margin:6px 0 4px;}
.cert-designer{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px;}
.cert-designer-row{border:1px solid #303840;padding:8px 10px;}
.cert-schema-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px;}
.cert-schema-builder{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;}
.schema-sec{border:1px solid #303840;padding:8px 10px;font-size:12px;}
#master-cert-designs{align-items:start;}
#certSchemaJson{min-height:220px;}
.cert-role-picks{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;}
.cert-role-picks label{display:flex;flex-direction:column;gap:4px;font-size:10px;color:#8A9098;text-transform:uppercase;letter-spacing:.4px;}
.cert-role-picks select{font-size:12px;}
.cert-check{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#C9C4B4;cursor:pointer;}
.cert-check input{width:14px;height:14px;accent-color:var(--amber);flex-shrink:0;}
.cert-row{border:1px solid #303840;padding:10px 12px;margin-bottom:8px;}
.cert-row .cert-row-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;}
.cert-row .cert-name{color:var(--paper);font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:.3px;}
.cert-row .cert-meta{font-size:10.5px;color:#8A9098;margin-top:4px;}
.cert-badge{display:inline-block;font-size:9px;letter-spacing:.5px;text-transform:uppercase;padding:2px 6px;border:1px solid #4A5359;color:#C9C4B4;}
.cert-badge.draft{border-color:#6B7178;}
.cert-badge.pending_approval{border-color:#C9A227;color:#E6C65C;}
.cert-badge.issued{border-color:var(--amber);color:var(--amber);}
.cert-badge.closed{border-color:var(--green);color:#8FD69E;}
.cert-badge.cancelled{border-color:var(--red);color:#D98A78;}
.cert-row-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.cert-row-actions .btn{width:auto;margin:0;padding:6px 10px;font-size:10.5px;}
.live-status{display:flex;align-items:center;margin-left:auto;align-self:flex-end;padding-bottom:4px;}
.live-dot.off{background:#6B7178;animation:none;box-shadow:none;}
.today-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start;}
.today-grid .box:last-child{grid-column:1 / -1;}
@media (max-width:900px){.today-grid{grid-template-columns:1fr;}.today-grid .box:last-child{grid-column:auto;}}

.modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px;}
.modal-backdrop{position:absolute;inset:0;background:rgba(8,10,12,.72);}
.modal-card{position:relative;background:var(--steel);border:1px solid #303840;border-top:3px solid var(--amber);width:min(920px,96vw);max-height:92vh;display:flex;flex-direction:column;}
.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:14px 16px;border-bottom:1px solid #303840;}
.modal-head h3{margin:0;font-family:'Oswald',sans-serif;font-size:14px;letter-spacing:.5px;text-transform:uppercase;color:var(--paper);}
.cert-modal-body{overflow:auto;padding:14px 16px;flex:1;color:#C9C4B4;}
.cert-modal-body input[type=text],
.cert-modal-body input[type=number],
.cert-modal-body input[type=date],
.cert-modal-body input[type=datetime-local],
.cert-modal-body input[type=time],
.cert-modal-body select,
.cert-modal-body textarea{
  width:100%;background:#12161A;border:1px solid #3A424A;color:var(--paper);padding:8px 10px;font-family:'IBM Plex Mono';font-size:12.5px;
}
.cert-modal-body input::placeholder,.cert-modal-body textarea::placeholder{color:#5A6169;}
.cert-modal-body .hint{color:#6B7178;font-size:10.5px;line-height:1.45;margin:6px 0 0;}
.modal-actions{display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px;border-top:1px solid #303840;}
.modal-actions .btn{width:auto;margin:0;min-width:120px;}
.cert-form-section{margin-bottom:14px;border:1px solid #303840;padding:10px 12px;}
.cert-form-section h4{margin:0 0 8px;font-family:'Oswald',sans-serif;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--amber);}
.cert-form-section h4 .muted{color:#6B7178;font-family:'IBM Plex Mono';font-size:10px;letter-spacing:0;text-transform:none;margin-left:6px;}
.cert-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;}
.cert-form-grid .full,.cert-field.full{grid-column:1 / -1;}
.cert-field{min-width:0;}
.yn-group{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:11px;color:#C9C4B4;}
.yn-group label{display:flex;align-items:center;gap:4px;cursor:pointer;}
.yn-radios{display:inline-flex;gap:10px;flex-wrap:wrap;font-size:12px;color:#C9C4B4;align-items:center;}
.yn-radios label,.yn-opt{display:inline-flex;align-items:center;gap:4px;color:#C9C4B4;cursor:pointer;}
.yn-radios input[type=radio],.cert-yn-table input[type=radio]{accent-color:var(--amber);width:14px;height:14px;flex-shrink:0;}
.check-list{display:grid;grid-template-columns:1fr;gap:6px;}
.check-list label,.check-list .cert-check{display:flex;gap:8px;align-items:flex-start;font-size:11px;color:#C9C4B4;}
.cert-check-cols{display:grid;gap:12px;margin-top:4px;}
.cert-check-cols.cols-1{grid-template-columns:1fr;}
.cert-check-cols.cols-2{grid-template-columns:1fr 1fr;}
.cert-check-cols.cols-3{grid-template-columns:1fr 1fr 1fr;}
.cert-check-group{min-width:0;}
.cert-yn-table,.gas-log-table{width:100%;border-collapse:collapse;font-size:11px;color:#C9C4B4;margin-top:4px;}
.cert-yn-table th,.cert-yn-table td,.gas-log-table th,.gas-log-table td{border:1px solid #3A424A;padding:5px 6px;vertical-align:middle;}
.cert-yn-table th,.gas-log-table th{background:#161B20;font-size:9px;letter-spacing:.4px;text-transform:uppercase;color:#C9C4B4;font-weight:600;text-align:left;}
.cert-yn-table .cert-check-item{color:#C9C4B4;font-size:11px;text-transform:none;letter-spacing:0;}
.cert-yn-table .yn-center{text-align:center;width:44px;}
.cert-table-wrap{overflow-x:auto;margin-top:4px;}
.gas-log-table input{width:100%;margin:0;padding:4px 6px;font-size:11px;min-width:56px;}
@media (max-width:720px){
  .cert-check-cols.cols-2,.cert-check-cols.cols-3{grid-template-columns:1fr;}
}

@media (max-width:980px){
  .sidebar{width:100%;}
  #view-new{flex-direction:column;}
  .panel-2,.admin-grid,.today-grid,.metric-row{grid-template-columns:1fr;}
  #view-dashboard,#view-register,#view-today,#view-admin,#view-master{padding:20px;}
  .cert-check-grid,.cert-form-grid,.cert-role-picks{grid-template-columns:1fr;}
}

.cert-returned { color: #d97706; }
