/* ============================================================
   NLMP 2.0 - "North Sea Desk" design system
   Maritime / offshore crew & finance back-office
   Borders-only depth · 4px grid · single orange action accent
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap');

:root{
  /* - Canvas & surfaces - Atlas Inexco light cool grey - */
  --canvas:        #F4F6F8;   /* atlasinexco.com canvas */
  --surface:       #FFFFFF;
  --surface-2:     #F7F9FB;   /* striped rows / raised */
  --surface-sunk:  #EAEDF1;   /* inset inputs */
  --surface-rail:  #2C353D;   /* Atlas dark slate - sidebar/topbar */
  --surface-rail2: #38434C;   /* rail raised */
  --surface-rail3: #ffffff14; /* rail hover wash */

  /* - Ink (4-level text hierarchy) - Atlas slate scale - */
  --ink:   #0A0A0A;
  --ink-2: #46535E;
  --ink-3: #788997;
  --ink-4: #A6B2BC;
  --ink-on-rail:   #EDEFF1;
  --ink-on-rail-2: #A7B2BB;
  --ink-on-rail-3: #6E7C86;

  /* - Brand secondary / structure - Atlas cyan - */
  --sea:    #0E8AA6;   /* cyan (darkened for contrast) - links & info */
  --sea-2:  #14A9C7;   /* Atlas bright cyan */

  /* - THE action accent - Atlas Inexco red - used sparingly - */
  --signal:      #EE3B33;
  --signal-press:#D7342D;
  --signal-soft: #FCE4E3;
  --signal-ink:  #B0231C;

  /* - Borders (progression) - */
  --line:        rgba(16,40,60,.11);
  --line-soft:   rgba(16,40,60,.06);
  --line-strong: rgba(16,40,60,.20);
  --line-rail:   rgba(255,255,255,.09);

  /* - Semantic - */
  --ok:#1B7F52;      --ok-soft:#E2F1E9;     --ok-ink:#13643F;
  --warn:#B47A0E;    --warn-soft:#F8EFD8;   --warn-ink:#8A5C06;
  --danger:#C23B3B;  --danger-soft:#FAE5E4; --danger-ink:#982B2B;
  --info:#0E8AA6;    --info-soft:#DEF0F4;   --info-ink:#0A6B82;
  --muted-soft:#EDF1F5; --muted-ink:#5C6E7E;

  /* - Radius - */
  --r-xs:5px; --r-sm:7px; --r-md:10px; --r-lg:14px; --r-pill:999px;

  /* - Shadow (only popovers/modals) - */
  --shadow-pop: 0 1px 2px rgba(12,36,54,.08), 0 8px 24px rgba(12,36,54,.12);
  --shadow-card: 0 1px 0 rgba(16,40,60,.03);

  /* - Type - */
  --font-display:'Poppins', system-ui, sans-serif;
  --font-ui:'Poppins', system-ui, -apple-system, sans-serif;
  --font-mono:'Poppins', system-ui, sans-serif;   /* one font everywhere, also for numbers and codes */

  /* - Layout - */
  --rail-w:248px;
  --topbar-h:60px;
}

*{box-sizing:border-box}
/* global icon base size - specific contexts override via higher specificity */
.ico{width:18px;height:18px;flex:0 0 auto;display:inline-block;vertical-align:middle}
.card-head > .ico{color:var(--ink-3)}
.empty .ico > svg,.dz-ico > svg,.fb-ico > svg{width:20px;height:20px}
html,body{margin:0;height:100%}
body{
  font-family:var(--font-ui);
  background:var(--canvas);
  color:var(--ink);
  font-size:14px;
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:var(--sea);text-decoration:none}
a:hover{text-decoration:underline}
::selection{background:var(--signal);color:#fff}

/* scrollbars */
*::-webkit-scrollbar{width:11px;height:11px}
*::-webkit-scrollbar-thumb{background:rgba(16,40,60,.18);border-radius:99px;border:3px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:rgba(16,40,60,.30);background-clip:content-box}

/* ============================================================
   App shell
   ============================================================ */
.app{display:grid;grid-template-columns:var(--rail-w) 1fr;height:100vh;overflow:hidden}

/* ---- Sidebar rail ---- */
.rail{
  background:var(--surface-rail);
  color:var(--ink-on-rail);
  display:flex;flex-direction:column;
  border-right:1px solid var(--line-rail);
  overflow:hidden;
}
.brand{
  display:flex;align-items:center;gap:11px;
  padding:16px 18px;height:var(--topbar-h);
  border-bottom:1px solid var(--line-rail);
  flex:0 0 auto;
}
.brand-mark{
  width:30px;height:30px;border-radius:8px;flex:0 0 auto;
  background:#fff;
  border:1px solid rgba(255,255,255,.16);
  display:grid;place-items:center;
}
.brand-mark svg{width:18px;height:18px}
.brand-mark img{height:24px;width:auto;display:block}
.brand-name{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:-.2px;color:#fff;line-height:1}
.brand-sub{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-on-rail-3);margin-top:3px}

.nav{flex:1 1 auto;overflow-y:auto;padding:10px 10px 24px}
.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);background-clip:content-box}
.nav-group{margin-top:14px}
.nav-group:first-child{margin-top:2px}
.nav-label{
  font-size:10.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-on-rail-3);padding:6px 10px 6px;display:flex;align-items:center;gap:8px;
}
.nav-label .rule{flex:1;height:1px;background:var(--line-rail)}

/* Finance block gets a distinct treatment - it is "a separate part" */
.nav-group.finance .nav-label{color:#F0A6A2}
.nav-group.finance{
  background:linear-gradient(180deg,rgba(238,59,51,.09),rgba(238,59,51,0));
  border:1px solid rgba(238,59,51,.18);
  border-radius:var(--r-md);
  padding:4px 4px 8px;margin:14px 2px;
}

.nav-item{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:var(--r-sm);
  color:var(--ink-on-rail-2);font-weight:500;font-size:13.3px;
  cursor:pointer;position:relative;margin:1px 0;
  border:1px solid transparent;
}
.nav-item:hover{background:rgba(255,255,255,.05);color:var(--ink-on-rail);text-decoration:none}
.nav-item .ico{width:17px;height:17px;flex:0 0 auto;opacity:.85}
.nav-item .ct{margin-left:auto;font-size:11px;font-family:var(--font-mono);color:var(--ink-on-rail-3);
  background:rgba(255,255,255,.06);padding:1px 6px;border-radius:99px}
.nav-item.active{
  background:var(--surface-rail2);color:#fff;
  border-color:var(--line-rail);
}
.nav-item.active::before{
  content:"";position:absolute;left:-10px;top:7px;bottom:7px;width:3px;
  background:var(--signal);border-radius:0 3px 3px 0;
}
.nav-group.finance .nav-item.active::before{left:-4px}
.nav-item.active .ico{opacity:1;color:#F2A6A0}
.nav-item.sub{padding-left:22px;font-size:12.8px}
.nav-item.sub .ico{width:15px;height:15px;opacity:.7}
.nav-item.sub:hover .ico,.nav-item.sub.active .ico{opacity:1}

.rail-foot{flex:0 0 auto;padding:12px;border-top:1px solid var(--line-rail);font-size:11px;color:var(--ink-on-rail-3)}
.rail-foot b{color:var(--ink-on-rail-2);font-weight:600}

/* ---- Main column ---- */
.main{display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{
  height:var(--topbar-h);flex:0 0 auto;
  background:var(--surface);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:14px;padding:0 22px;
}
.crumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-3);min-width:0}
.crumbs .sep{color:var(--ink-4)}
.crumbs .here{color:var(--ink);font-weight:600}
.crumbs a{color:var(--ink-3)}
.topbar-spacer{flex:1}
.searchbox{
  display:flex;align-items:center;gap:8px;background:var(--surface-sunk);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 11px;width:280px;color:var(--ink-3);
}
.searchbox{position:relative}
.search-pop{position:absolute;top:calc(100% + 6px);right:0;width:420px;max-height:min(560px,calc(100vh - 90px));overflow:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-pop);z-index:60;padding:6px 0;color:var(--ink)}
.search-pop .sp-group + .sp-group{border-top:1px solid var(--line-soft);margin-top:4px;padding-top:4px}
.search-pop .sp-head{display:flex;justify-content:space-between;padding:6px 14px 4px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.search-pop .sp-head .muted{font-weight:500;text-transform:none;letter-spacing:0}
.search-pop .sp-item{display:flex;align-items:center;gap:10px;padding:7px 14px;color:var(--ink);text-decoration:none}
.search-pop .sp-item.active{background:var(--surface-sunk)}
.search-pop .sp-item > svg{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto}
.search-pop .sp-txt{display:flex;flex-direction:column;min-width:0}
.search-pop .sp-title{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-pop .sp-sub{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-pop mark{background:rgba(20,169,199,.18);color:inherit;border-radius:3px;padding:0 1px}
.search-pop .sp-empty{padding:14px;font-size:13px;color:var(--ink-3)}
.searchbox input{border:0;background:transparent;outline:none;font:inherit;color:var(--ink);width:100%}
.searchbox kbd{font-family:var(--font-mono);white-space:nowrap;font-size:11px;background:var(--surface);border:1px solid var(--line);
  border-radius:4px;padding:1px 5px;color:var(--ink-3)}
.topbar-icon{width:36px;height:36px;border-radius:var(--r-sm);display:grid;place-items:center;color:var(--ink-2);cursor:pointer;position:relative}
.topbar-icon:hover{background:var(--surface-sunk)}
.topbar-icon .badge{position:absolute;top:5px;right:5px;width:7px;height:7px;border-radius:99px;background:var(--signal);border:2px solid var(--surface)}
.avatar{
  width:34px;height:34px;border-radius:99px;display:grid;place-items:center;cursor:pointer;
  background:linear-gradient(150deg,#46535E,#2C353D);color:#fff;font-weight:600;font-size:13px;
  border:1px solid var(--line-strong);
}

.scroll{flex:1 1 auto;overflow-y:auto}
.page{padding:24px 26px 64px}

/* ============================================================
   Page header
   ============================================================ */
.ph{display:flex;align-items:flex-start;gap:18px;margin-bottom:20px}
.ph-title{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:-.5px;color:var(--ink);line-height:1.1}
.ph-sub{color:var(--ink-3);font-size:13.5px;margin-top:5px;max-width:110ch}
.ph-actions{margin-left:auto;display:flex;gap:9px;align-items:center;flex-wrap:wrap}

/* ============================================================
   Buttons
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;gap:7px;
  font:inherit;font-weight:600;font-size:13px;
  padding:8px 13px;border-radius:var(--r-sm);cursor:pointer;
  border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);
  transition:background .12s ease,border-color .12s ease,box-shadow .12s ease;white-space:nowrap;
}
.btn:hover{background:var(--surface-2);border-color:var(--line-strong)}
.btn .ico{width:16px;height:16px}
.btn.primary{background:var(--signal);border-color:var(--signal);color:#fff}
.btn.primary:hover{background:var(--signal-press);border-color:var(--signal-press)}
.btn.sea{background:var(--sea);border-color:var(--sea);color:#fff}
.btn.sea:hover{background:var(--sea-2)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn.ghost:hover{background:var(--surface-sunk)}
.btn.sm{padding:5px 9px;font-size:12px;border-radius:var(--r-xs)}
.btn.icon{padding:7px;width:34px;justify-content:center}
.btn.icon.sm{padding:5px;width:28px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ============================================================
   Cards & panels
   ============================================================ */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card)}
.card-pad{padding:18px}
.card-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line-soft)}
.card-head h3{margin:0;font-family:var(--font-display);font-weight:600;font-size:14.5px;letter-spacing:-.1px}
.card-head .ph-sub{margin:0}
.card-head .right{margin-left:auto;display:flex;gap:8px;align-items:center}

/* collapsible section cards (dashboard) */
.card.collapsible > .card-head{cursor:default}
.card.collapsible .collapse-btn{color:var(--ink-3);transition:transform .15s ease}
.card.collapsible .collapse-btn:hover{color:var(--ink)}
.card.collapsible.collapsed .collapse-btn{transform:rotate(-90deg)}
.card.collapsible.collapsed > .card-head{border-bottom:0}
.card.collapsible.collapsed > :not(.card-head){display:none !important}

.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}

/* ============================================================
   KPI / stat - "ledger row" signature (leading rule, not icon-box)
   ============================================================ */
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:15px 16px 14px;position:relative;overflow:hidden}
.stat::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--line-strong)}
.stat.accent::before{background:var(--signal)}
.stat.sea::before{background:var(--sea)}
.stat.ok::before{background:var(--ok)}
.stat.warn::before{background:var(--warn)}
.stat-label{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:600;padding-left:11px}
.stat-val{font-family:var(--font-display);font-weight:700;font-size:27px;letter-spacing:-.6px;margin-top:6px;padding-left:11px;line-height:1;
  font-variant-numeric:tabular-nums}
.stat-val .cur{font-size:15px;color:var(--ink-3);font-weight:600;margin-right:3px}
.stat-meta{display:flex;align-items:center;gap:6px;margin-top:9px;padding-left:11px;font-size:12px;color:var(--ink-3)}
.delta{display:inline-flex;align-items:center;gap:3px;font-weight:600;font-family:var(--font-mono);font-size:11.5px;padding:1px 6px;border-radius:99px}
.delta.up{color:var(--ok-ink);background:var(--ok-soft)}
.delta.down{color:var(--danger-ink);background:var(--danger-soft)}

/* ============================================================
   Badges / chips / status
   ============================================================ */
.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:var(--r-pill);
  border:1px solid transparent;white-space:nowrap;line-height:1.5}
.badge .dt{width:6px;height:6px;border-radius:99px;background:currentColor}
.badge.ok{color:var(--ok-ink);background:var(--ok-soft)}
.badge.warn{color:var(--warn-ink);background:var(--warn-soft)}
.badge.danger{color:var(--danger-ink);background:var(--danger-soft)}
.badge.info{color:var(--info-ink);background:var(--info-soft)}
.badge.muted{color:var(--muted-ink);background:var(--muted-soft)}
.badge.signal{color:var(--signal-ink);background:var(--signal-soft)}
.badge.outline{background:transparent;border-color:var(--line-strong);color:var(--ink-2)}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--ink-2);
  background:var(--surface-sunk);border:1px solid var(--line-soft);padding:2px 8px;border-radius:var(--r-xs)}

/* ============================================================
   Tables
   ============================================================ */
.table-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.tbl thead th{
  text-align:left;font-weight:600;font-size:11.5px;letter-spacing:.03em;text-transform:uppercase;
  color:var(--ink-3);padding:10px 14px;background:var(--surface-2);
  border-bottom:1px solid var(--line);position:sticky;top:0;white-space:nowrap;
}
.tbl thead th.num,.tbl td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.tbl tbody td{padding:11px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink);vertical-align:middle}
.tbl tbody tr:hover td{background:var(--surface-2)}
.tbl tbody tr.clickable{cursor:pointer}
.tbl tbody tr:last-child td{border-bottom:0}
/* audit column: who created / last modified the row */
.tbl .au-col{white-space:nowrap}
.audit{display:flex;flex-direction:column;gap:2px;font-size:11.5px;line-height:1.3;color:var(--ink-3);cursor:default}
.au-line{display:flex;align-items:center;gap:5px}
.au-line .ico{width:11px;height:11px;flex:0 0 auto;color:var(--ink-4)}
.au-line.m .ico{color:var(--sea)}
.au-by{color:var(--ink-2);font-weight:500}
.au-at{color:var(--ink-3)}
/* invoice detail: header fields in three blocks, wide lines table */
.inv-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 28px}
@media (max-width:1100px){.inv-details{grid-template-columns:1fr}}
.inv-block{display:flex;flex-direction:column;gap:10px}
.inv-block-t{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);border-bottom:1px solid var(--line-soft);padding-bottom:6px}
.inv-block .kv{flex-direction:row;gap:12px;align-items:baseline}
.inv-block .kv .k{width:150px;flex:0 0 auto}
.inv-block .kv .v{min-width:0;overflow-wrap:anywhere}
.inv-lines td.num,.inv-lines td.mono{white-space:nowrap}
.inv-lines .inline-row td{padding:5px 6px}
/* invoice attachments: selected (ordered) left, available documents right */
.att-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:1100px){.att-layout{grid-template-columns:1fr}}
.att-group-t{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);margin-bottom:8px}
.att-available{display:flex;flex-direction:column;gap:14px}
.att-option{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line-soft)}
.att-option:last-child{border-bottom:0}
.att-option > .ico{width:16px;height:16px;color:var(--ink-3)}
.att-option .doc-name,.att-option .doc-meta{display:block}
.attach-row[draggable="true"]{cursor:grab}
.attach-row.dragging-row{opacity:.45}
.inv-lines .inp.num{text-align:right}
.inv-lines .sel.sm{width:auto}
/* vessel invoice: lines grouped per employee (header row with subtotal, memory aids, then the lines) */
.inv-lines .grp-row{cursor:pointer}
.inv-lines .grp-row td,.inv-lines tbody .grp-row:hover td{background:#EAF0F4;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 14px}
.inv-lines .grp-row td:first-child{box-shadow:inset 3px 0 0 var(--sea)}
.grp-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px}
.grp-head b{font-weight:600}
.grp-head .muted{font-size:12px}
.grp-sub{font-size:12px;color:var(--ink-3);white-space:nowrap}
.grp-sub b{font-size:13px;color:var(--ink);margin-left:4px}
.grp-head .twist{width:16px;height:16px;color:var(--ink-3);transition:transform .12s;flex:0 0 auto}
.grp-row.open .twist{transform:rotate(90deg)}
.grp-row.flash td{animation:grpflash 1.4s ease-out}
@keyframes grpflash{from{background:rgba(20,169,199,.35)}}
.inv-lines .grp-memo td,.inv-lines tbody .grp-memo:hover td{background:var(--signal-soft);color:var(--ink-2);font-size:12.5px;padding:7px 14px 7px 46px;white-space:pre-wrap}
.grp-memo .ico{width:14px;height:14px;color:var(--signal-ink);vertical-align:-2px;margin-right:6px}
.grp-memo b{font-weight:600;color:var(--signal-ink);margin-right:8px}
.inv-lines.grouped tbody tr:not(.grp-row):not(.grp-memo) td:first-child{padding-left:46px}
.inv-emp-check td{white-space:nowrap}
.inv-emp-check td.cell-lead .av{vertical-align:middle;margin-right:4px}
.inv-emp-check .badge .ico{width:12px;height:12px}
/* A/R invoices: keep numbers, dates, periods and amounts on one line */
.inv-tbl td.cell-lead,.inv-tbl td.mono,.inv-tbl td.num{white-space:nowrap}
.tbl tfoot .tbl-total td{padding:11px 14px;border-top:1px solid var(--line);background:var(--surface-2)}
.tbl .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.tbl .strong{font-weight:600}
.tbl .sub{color:var(--ink-3);font-size:12px}
.tbl .right{text-align:right}
.cell-id{font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}
.cell-lead{font-weight:600}
.cell-2{display:flex;flex-direction:column;gap:1px}
.cell-2 .s{font-size:11.5px;color:var(--ink-3)}
.row-actions{display:flex;gap:4px;justify-content:flex-end;opacity:.55;transition:opacity .12s}
tr:hover .row-actions{opacity:1}

/* assignment detail: operations / finance parts, auto-determined fields */
.asg-part .btn{flex:0 0 auto}
.asg-dim{opacity:.55}
.asg-general .form-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.asg-general .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* timesheet review drawer: scrollable list of days read from the PDF */
.tsr-scroll{max-height:340px;overflow:auto;border:1px solid var(--line-soft);border-radius:var(--r-sm)}
.tsr-scroll .tbl tbody td{padding:5px 12px}
.tsr-days-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.tsr-days-head .form-section{flex:1;margin:0 12px 0 0}
.tsr-links{padding:8px 0;font-size:12.5px}
.lbl-link{margin-left:auto;font-weight:500;font-size:11.5px}
/* timesheets tab: calendar left, insurance + documents in a compact side column */
.ts-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start;margin-top:14px}
@media (max-width:1200px){.ts-layout{grid-template-columns:1fr}}
.ts-side{display:flex;flex-direction:column;gap:16px}
.side-pad{padding:12px 14px}
.card-head.clickable-head{cursor:pointer}
.card-head.clickable-head:hover h3{color:var(--sea)}
.cfg-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px 14px}
@media (max-width:1100px){.cfg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cfg-grid .fg{gap:4px}
.ins-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ins-grid .fg{gap:4px}
.ins-grid .fg label{font-size:11.5px}
.ins-grid .inp.sm{min-height:31px;display:flex;align-items:center;white-space:nowrap;overflow:hidden}
.inp-affix.sm .pre{padding:5px 8px;font-size:12px}
.inp-affix.sm input{padding:5px 8px;font-size:12.5px;min-width:0;width:100%}
.ins-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}
.dropzone.compact{display:flex;align-items:center;gap:12px;padding:10px 14px;text-align:left;font-size:12px;line-height:1.35}
.dropzone.compact .dz-ico{width:32px;height:32px;margin:0;flex:0 0 auto}
.dropzone.compact .dz-ico svg{width:16px;height:16px}
.doc-list{margin-top:8px}
.doc-row{display:flex;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid var(--line-soft)}
.doc-row:last-child{border-bottom:0}
.doc-row > .ico{width:16px;height:16px;color:var(--ink-3)}
.doc-main{flex:1;min-width:0}
.doc-name{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-meta{font-size:11px;color:var(--ink-3)}
.tsr-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0;padding:12px 16px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--r-md)}
.tsr-add{display:flex;align-items:center;gap:12px;margin-top:8px;font-size:12px}
.tsr-scroll [data-f="warn"]{font-size:11.5px;color:var(--warn-ink);white-space:nowrap}
.tsr-scroll [data-f="warn"] svg{width:13px;height:13px;vertical-align:-2px}
.tsr-cal{gap:6px}
.tsr-cal .tcell{min-height:58px;padding:6px 8px}
.tsr-cal .tcell .hrs{font-size:14px}
.tsr-bulk{margin-bottom:10px;gap:8px}
.tsr-bulk .sel.sm{width:auto}
.tsr-b-lbl{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-3)}
.tsr-b-lbl .inp{width:62px}
.up-ranges{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.up-range{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:99px;font-size:12px;background:var(--surface-2);border:1px solid var(--line-soft)}
.up-range b{font-weight:600}
.up-range.mob,.up-range.demob{background:var(--signal-soft);color:var(--signal-ink);border-color:transparent}
/* timesheet upload summary */
.up-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 24px;margin-bottom:16px}
@media (max-width:1100px){.up-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
.up-strip{display:flex;flex-wrap:wrap;gap:4px}
.up-day{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:6px;font-size:11px;font-weight:600;
  background:var(--ok-soft,#E3F5EC);color:var(--ink-2);border:1px solid var(--line-soft)}
.up-day.mob,.up-day.demob{background:var(--signal-soft);color:var(--signal-ink)}
.up-legend{display:flex;align-items:center;gap:6px;font-size:11.5px;margin-top:10px}
.up-legend .up-day{width:12px;height:12px;border-radius:3px;margin-left:8px}
.up-legend .up-day:first-child{margin-left:0}

/* pager below every table (added by paginateTables in app.js) */
.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:8px 14px;
  border-top:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
.pager-size{display:flex;align-items:center;gap:8px;margin-right:auto}
.pager-size .sel{width:auto;font-size:12px;padding-top:4px;padding-bottom:4px}
.pager-info{font-variant-numeric:tabular-nums}
.pager-page{font-variant-numeric:tabular-nums;min-width:74px;text-align:center}
.pager .btn[disabled]{opacity:.4;cursor:default}

/* group header row (for grouped worklists / vessel grouping) */
.tbl tr.grouprow td{background:var(--surface-sunk);font-weight:600;color:var(--ink-2);
  border-bottom:1px solid var(--line);font-size:12.5px}
.tbl tr.grouprow .gh{display:flex;align-items:center;gap:9px}
.tbl tr.grouprow .gh .ico{width:15px;height:15px;color:var(--ink-3)}

/* mini avatar */
.av{width:28px;height:28px;border-radius:99px;display:inline-grid;place-items:center;font-size:11px;font-weight:600;color:#fff;
  background:linear-gradient(150deg,#5A6873,#2C353D);flex:0 0 auto}
.av.sm{width:22px;height:22px;font-size:10px}
.who{display:flex;align-items:center;gap:9px;min-width:0}
.who .nm{font-weight:600;line-height:1.2}
/* link to an employee or assignment detail page (also inside clickable rows) */
a.xlink{color:inherit;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
a.xlink:hover{color:var(--sea);text-decoration-color:currentColor}
.who .ro{font-size:11.5px;color:var(--ink-3);line-height:1.2}

/* ============================================================
   Toolbar / filters
   ============================================================ */
.toolbar{display:flex;align-items:center;gap:9px;padding:12px 14px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.toolbar .grow{flex:1}
/* dropdown filters in a toolbar: same height as the search field */
.toolbar > .sel{width:auto;height:38px;padding-top:0;padding-bottom:0}
.toolbar > .seg{height:38px;align-items:stretch}
.toolbar > .seg button{display:flex;align-items:center;gap:6px}
.seg button .ct{font-size:11px;background:var(--surface-sunk);color:var(--ink-3);padding:0 6px;border-radius:99px;font-variant-numeric:tabular-nums}
.seg button.active .ct{background:var(--surface-2)}
.seg{display:inline-flex;background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px}
.seg button{white-space:nowrap;border:0;background:transparent;font:inherit;font-size:12.5px;font-weight:500;color:var(--ink-2);
  padding:5px 11px;border-radius:var(--r-xs);cursor:pointer}
.seg button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card);font-weight:600}
.field-search{display:flex;align-items:center;gap:8px;background:var(--surface-sunk);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:7px 11px;color:var(--ink-3);min-width:220px}
.field-search input{border:0;background:transparent;outline:none;font:inherit;color:var(--ink);width:100%}
.chk{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);cursor:pointer;user-select:none}
.chk input{accent-color:var(--signal);width:15px;height:15px}

/* ============================================================
   Forms
   ============================================================ */
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 18px}
.form-grid.cols-1{grid-template-columns:1fr}
.form-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.form-grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fg{display:flex;flex-direction:column;gap:6px;min-width:0}
.fg.span-2{grid-column:1/-1}
.fg label{font-size:12px;font-weight:600;color:var(--ink-2)}
.fg label .req{color:var(--signal);margin-left:2px}
.inp,.sel,textarea.inp{
  font:inherit;font-size:13.5px;color:var(--ink);
  background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:8px 11px;outline:none;width:100%;transition:border-color .12s,box-shadow .12s;
}
.inp:focus,.sel:focus,textarea.inp:focus{border-color:var(--sea);box-shadow:0 0 0 3px rgba(14,169,199,.18);background:var(--surface)}
.inp::placeholder{color:var(--ink-4)}
.inp.mono{font-family:var(--font-mono)}
.sel{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236E8295' stroke-width='2.4'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:30px;cursor:pointer}
.inp-affix{display:flex;align-items:center;background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
.inp-affix .pre{padding:8px 10px;color:var(--ink-3);background:var(--surface-2);border-right:1px solid var(--line);font-weight:600;font-size:12.5px}
.inp-affix input{border:0;background:transparent;padding:8px 11px;outline:none;font:inherit;width:100%;font-family:var(--font-mono)}
.help{font-size:11.5px;color:var(--ink-3)}

/* toggle */
.switch{display:inline-block;position:relative;width:38px;height:22px;flex:0 0 auto;cursor:pointer;vertical-align:middle}
.switch input{display:none}
.switch .tk{position:absolute;inset:0;background:#BFC9D1;border-radius:99px;transition:background .15s;box-shadow:inset 0 0 0 1px rgba(16,40,60,.10)}
.switch .tk::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:99px;transition:transform .15s;box-shadow:0 1px 2px rgba(16,40,60,.30);border:1px solid rgba(16,40,60,.06)}
.switch input:checked + .tk{background:var(--ok);box-shadow:none}
.switch input:checked + .tk::after{transform:translateX(16px)}

/* ============================================================
   Tabs
   ============================================================ */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto}
.tab{padding:10px 14px;font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:7px}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--ink);border-bottom-color:var(--signal)}
.tab .ct{font-family:var(--font-mono);font-size:11px;background:var(--surface-sunk);padding:0 6px;border-radius:99px;color:var(--ink-3)}

/* ============================================================
   Drag/drop dropzone (invoice import, document upload)
   ============================================================ */
.dropzone{
  border:1.5px dashed var(--line-strong);border-radius:var(--r-md);
  background:repeating-linear-gradient(45deg,var(--surface-2),var(--surface-2) 12px,var(--surface) 12px,var(--surface) 24px);
  padding:30px;text-align:center;color:var(--ink-3);cursor:pointer;transition:border-color .15s,background .15s;
}
.dropzone:hover,.dropzone.drag{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-ink)}
.dropzone .dz-ico{width:40px;height:40px;margin:0 auto 10px;display:grid;place-items:center;border-radius:50%;background:var(--surface);border:1px solid var(--line)}
.dropzone b{color:var(--ink);font-family:var(--font-display)}

/* ============================================================
   Timeline / rotation signature (Mob → onboard → Demob)
   ============================================================ */
.rota{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;font-size:12px}
.rota .seg-r{padding:9px 13px;display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--line-soft);flex:0 0 auto}
.rota .seg-r:last-child{border-right:0}
.rota .seg-r.onboard{flex:1;background:var(--info-soft)}
.rota .seg-r.mob{background:var(--surface-2)}
.rota .seg-r.demob{background:var(--surface-2)}
.rota .k{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:600}
.rota .v{font-weight:600;color:var(--ink);font-family:var(--font-mono)}

/* progress */
.prog{height:7px;border-radius:99px;background:var(--surface-sunk);overflow:hidden;border:1px solid var(--line-soft)}
.prog > i{display:block;height:100%;background:var(--ok);border-radius:99px}
.prog.warn > i{background:var(--warn)}
.prog.sea > i{background:var(--sea)}
.prog-row{display:flex;align-items:center;gap:10px}
.prog-row .pct{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-2);width:38px;text-align:right}

/* permission matrix - subtle indicators, not buttons */
.perm{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;line-height:1}
.perm::before{content:"";width:7px;height:7px;border-radius:99px;flex:0 0 auto}
.perm.full{color:var(--ok-ink)}.perm.full::before{background:var(--ok)}
.perm.read{color:var(--sea)}.perm.read::before{background:var(--sea)}
.perm.none{color:var(--ink-4)}.perm.none::before{background:var(--ink-4);opacity:.45}

/* masterdata category section header */
.md-cat{display:flex;align-items:center;gap:10px;margin:24px 2px 12px}
.md-cat:first-of-type{margin-top:6px}
.md-cat .t{font-family:var(--font-display);font-weight:600;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-2)}
.md-cat .rule{flex:1;height:1px;background:var(--line)}
.md-cat .ct{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);background:var(--surface-sunk);padding:1px 7px;border-radius:99px}

/* ============================================================
   Timesheet calendar
   ============================================================ */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.cal .dow{font-size:11px;font-weight:600;text-align:center;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:0 0 4px}
.tcell{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:8px 9px;min-height:66px;display:flex;flex-direction:column;gap:5px;position:relative;transition:border-color .12s,box-shadow .12s}
.tcell:hover{border-color:var(--line-strong);box-shadow:var(--shadow-card)}
.tcell .top{display:flex;align-items:center;justify-content:space-between;min-height:16px}
.tcell .d{font-size:11.5px;font-family:var(--font-mono);color:var(--ink-3)}
.tcell .hrs{font-weight:700;font-size:16px;font-family:var(--font-display);color:var(--ink);letter-spacing:-.3px;line-height:1}
.tcell .ot{align-self:flex-start;font-size:10px;font-weight:600;color:var(--signal-ink);background:var(--signal-soft);padding:1px 6px;border-radius:99px}
.tcell .ck{color:var(--ok);display:inline-flex}
.tcell .ck svg{width:15px;height:15px}
.tcell .pend{width:7px;height:7px;border-radius:99px;background:var(--warn);display:inline-block}
.tcell.work.pending{border-style:dashed;border-color:var(--line-strong);background:var(--surface-2)}
.tcell.work.pending .d{color:var(--warn-ink);font-weight:600}
.tcell.mob{background:var(--signal-soft);border-color:rgba(238,59,51,.28)}
.tcell.mob .hrs{color:var(--signal)}
.tcell .md{align-self:flex-start;font-size:10px;font-weight:700;color:var(--signal-ink);letter-spacing:.02em}
.inp[readonly]{background:var(--surface-2);color:var(--ink-2)}
/* file picker field */
.file-field{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px dashed var(--line-strong);border-radius:var(--r-sm);background:var(--surface-2);cursor:pointer;min-width:0}
.file-field input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.file-field .btn{pointer-events:none;flex:0 0 auto}
.file-field .file-name{font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-field:hover{border-color:var(--sea)}
.file-field.invalid{border-color:var(--danger)}
.tcell.unregistered{background:var(--surface-2)}
/* editable cell (employee portal) */
.tcell-inp{width:100%;border:1px solid var(--line);border-radius:var(--r-xs);padding:4px 6px;text-align:center;
  font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--ink);background:var(--surface-sunk);outline:none}
.tcell-inp:focus{border-color:var(--sea);box-shadow:0 0 0 3px rgba(14,169,199,.18);background:var(--surface)}
.tcell .mini{font-size:10px;color:var(--ink-3);text-align:center;margin-top:1px}

/* ============================================================
   Tree (items to be invoiced)
   ============================================================ */
.tree{font-size:13px}
.tnode{border-bottom:1px solid var(--line-soft)}
.tnode .trow{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer}
.tnode .trow:hover{background:var(--surface-2)}
.tnode .twist{width:16px;height:16px;color:var(--ink-3);transition:transform .12s;flex:0 0 auto}
.tnode.open > .trow .twist{transform:rotate(90deg)}
.tnode .tlabel{font-weight:600;display:flex;align-items:center;gap:8px}
.tnode .tmeta{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:12px}
.tchildren{display:none;padding-left:26px;border-left:2px solid var(--line-soft);margin-left:18px}
.tnode.open > .tchildren{display:block}
.leaf{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--line-soft)}
.leaf:hover{background:var(--surface-2)}
.leaf:last-child{border-bottom:0}
.leaf .lcur{margin-left:auto;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}
.leaf.disabled{opacity:.5}
.leaf.disabled .chk input{pointer-events:none}
/* vessel invoice: documents to attach per employee */
.doc-pick{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:8px 12px;border-bottom:1px solid var(--line-soft);font-size:12px}
.doc-pick .k{width:150px;flex:0 0 auto;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3)}
.doc-chip{font-size:12px}

/* ============================================================
   Empty / loading / misc
   ============================================================ */
.empty{text-align:center;padding:46px 20px;color:var(--ink-3)}
.empty .ico{width:46px;height:46px;margin:0 auto 12px;display:grid;place-items:center;border-radius:50%;background:var(--surface-sunk);color:var(--ink-3)}
.empty b{display:block;color:var(--ink);font-family:var(--font-display);font-size:15px;margin-bottom:4px}
.divider{height:1px;background:var(--line-soft);margin:16px 0}
.kv{display:flex;flex-direction:column;gap:2px}
.kv .k{font-size:11.5px;color:var(--ink-3);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.kv .v{font-size:13.5px;color:var(--ink);font-weight:500}
.kv .v.mono{font-family:var(--font-mono)}
.client-kv{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px}
.client-kv .v{overflow-wrap:anywhere}
@media (max-width:1100px){.client-kv{grid-template-columns:repeat(2,minmax(0,1fr))}}
.muted{color:var(--ink-3)}
.amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}
.amount.neg{color:var(--danger)}
.flag{font-size:13px}
.flagsvg{border-radius:2px;box-shadow:0 0 0 1px rgba(16,40,60,.14);vertical-align:-3px;display:inline-block}

/* note / callout */
.note{display:flex;gap:11px;padding:13px 15px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface-2)}
.note .ico{flex:0 0 auto;width:20px;height:20px;color:var(--sea)}
.note.signal{background:var(--signal-soft);border-color:rgba(232,97,44,.3)}
.note.signal .ico{color:var(--signal)}
.note .t{font-weight:600;margin-bottom:2px}
.note .d{font-size:12.5px;color:var(--ink-2)}

/* ============================================================
   Modal / drawer
   ============================================================ */
.overlay{position:fixed;inset:0;background:rgba(10,26,38,.42);backdrop-filter:blur(2px);z-index:50;display:flex;justify-content:flex-end;
  opacity:0;animation:fade .15s ease forwards}
.drawer{width:min(560px,94vw);background:var(--surface);height:100%;display:flex;flex-direction:column;box-shadow:var(--shadow-pop);
  transform:translateX(20px);animation:slidein .2s cubic-bezier(.2,.7,.3,1) forwards}
.drawer.wide{width:min(820px,96vw)}
.drawer-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}
.drawer-head h3{margin:0;font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.3px}
.drawer-body{flex:1;overflow-y:auto;padding:20px}
.drawer-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end;background:var(--surface-2)}
@keyframes fade{to{opacity:1}}
@keyframes slidein{to{transform:translateX(0)}}

/* centered modal (confirms / small forms) */
.overlay.center{justify-content:center;align-items:center}
.modal{width:min(520px,94vw);max-height:90vh;background:var(--surface);border-radius:var(--r-lg);display:flex;flex-direction:column;
  box-shadow:var(--shadow-pop);transform:translateY(12px) scale(.98);animation:popin .18s cubic-bezier(.2,.7,.3,1) forwards;overflow:hidden}
.modal.wide{width:min(680px,95vw)}
.modal.xl{width:min(1080px,96vw);max-height:92vh}
.modal .drawer-body{overflow-y:auto;min-height:0}
@keyframes popin{to{transform:translateY(0) scale(1)}}
.modal .drawer-body{padding:20px}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.danger:hover{background:var(--danger-ink);border-color:var(--danger-ink)}
.modal-ico{width:40px;height:40px;border-radius:11px;flex:0 0 auto;display:grid;place-items:center;margin-bottom:2px}
.modal-ico.danger{background:var(--danger-soft);color:var(--danger-ink)}
.modal-ico.warn{background:var(--warn-soft);color:var(--warn-ink)}
.modal-ico.ok{background:var(--ok-soft);color:var(--ok-ink)}
.modal-ico.sea{background:var(--info-soft);color:var(--info-ink)}
.confirm-msg{display:flex;gap:14px;align-items:flex-start}
.confirm-msg .txt{font-size:13.5px;color:var(--ink-2);line-height:1.5}
.confirm-msg .txt b{color:var(--ink)}

/* dropdown row menu */
.menu{position:fixed;z-index:70;min-width:190px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--shadow-pop);padding:5px;animation:fade .12s ease}
.menu button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:transparent;font:inherit;
  font-size:13px;font-weight:500;color:var(--ink);padding:8px 10px;border-radius:var(--r-sm);cursor:pointer}
.menu button:hover{background:var(--surface-2)}
.menu button.danger-item{color:var(--danger-ink)}
.menu button.danger-item:hover{background:var(--danger-soft)}
.menu button .ico{width:15px;height:15px;color:var(--ink-3)}
.menu button.danger-item .ico{color:var(--danger-ink)}
.menu .sep{height:1px;background:var(--line-soft);margin:4px 2px}
.menu .mlabel{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:700;padding:6px 10px 3px}

/* interactive affordances added by CRUD wiring */
.perm.editable{cursor:pointer;border-radius:var(--r-xs);padding:2px 6px;transition:background .12s}
.perm.editable:hover{background:var(--surface-sunk)}
.tcell.editable{cursor:pointer}
.tcell.editable:hover{border-color:var(--sea);box-shadow:0 0 0 3px rgba(14,169,199,.14)}
.pill-select{display:inline-flex;gap:6px;flex-wrap:wrap}
.chip-toggle{font-size:12px;font-weight:600;padding:4px 11px;border-radius:var(--r-pill);border:1px solid var(--line-strong);
  background:var(--surface);color:var(--ink-2);cursor:pointer}
.chip-toggle.on{background:var(--signal);border-color:var(--signal);color:#fff}

/* toast */
.toast-wrap{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{display:flex;align-items:center;gap:10px;background:var(--surface-rail);color:#fff;padding:11px 16px;border-radius:var(--r-md);
  box-shadow:var(--shadow-pop);font-size:13px;font-weight:500;animation:fade .15s ease}
.toast .ico{width:17px;height:17px;color:#6FCF9B}

/* sea divider line in finance header */
.finance-banner{
  display:flex;align-items:center;gap:13px;padding:13px 18px;margin-bottom:20px;border-radius:var(--r-md);
  background:linear-gradient(100deg,#2C353D,#3C4853);color:#fff;border:1px solid var(--line-rail);position:relative;overflow:hidden
}
.finance-banner .fb-ico{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.08);display:grid;place-items:center;border:1px solid var(--line-rail)}
.finance-banner .fb-t{font-family:var(--font-display);font-weight:700;font-size:15px}
.finance-banner .fb-d{font-size:12.5px;color:var(--ink-on-rail-2)}
.finance-banner .fb-right{margin-left:auto;display:flex;gap:18px;position:relative}
.finance-banner .fb-stat .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-on-rail-2)}
.finance-banner .fb-stat .n{font-family:var(--font-mono);font-weight:600;font-size:16px}

/* ============================================================
   Maritime hero band (dashboard identity)
   ============================================================ */
.sea-hero{
  position:relative;overflow:hidden;border-radius:var(--r-lg);margin-bottom:20px;
  background:linear-gradient(112deg,#0A2030 0%,#123A52 50%,#1A5468 100%);
  color:#fff;border:1px solid var(--line-rail);padding:26px 28px;
}
.sea-hero .deco{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.sea-hero .content{position:relative;z-index:2}
.sea-hero .eyebrow{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#84B4CC;display:flex;align-items:center;gap:8px}
.sea-hero .eyebrow .ico{width:15px;height:15px}
.sea-hero h1{font-family:var(--font-display);font-weight:800;font-size:29px;letter-spacing:-.8px;margin:11px 0 6px;line-height:1.02}
.sea-hero .lead{color:#B7CCD9;font-size:13.5px;max-width:56ch}
.sea-hero .hero-kpis{display:flex;gap:34px;margin-top:22px;flex-wrap:wrap}
.sea-hero .hk .l{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:#84B4CC;font-weight:600;display:flex;align-items:center;gap:6px}
.sea-hero .hk .l .ico{width:13px;height:13px}
.sea-hero .hk .n{font-family:var(--font-display);font-weight:700;font-size:25px;letter-spacing:-.5px;margin-top:5px;font-variant-numeric:tabular-nums;line-height:1}
.sea-hero .hk .n .u{font-size:12px;color:#9DC0D0;font-weight:600;margin-left:2px}
.sea-hero .hk .n .sig{color:#FF8A6B}

/* ============================================================
   North Sea operations map
   ============================================================ */
.opsmap-card .card-head .pin{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3)}
.opsmap{width:100%;display:block;border-radius:0}
.map-legend{display:flex;gap:20px;flex-wrap:wrap;align-items:center;padding:12px 18px;border-top:1px solid var(--line-soft);font-size:12px;color:var(--ink-2)}
.map-legend .it{display:flex;align-items:center;gap:7px}
.map-legend .sw{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.map-legend .sw.round{border-radius:99px}

/* ============================================================
   Crew readiness cards (people-first)
   ============================================================ */
.crew-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:14px}
.crew-card{position:relative;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);
  box-shadow:var(--shadow-card);overflow:hidden;display:flex;flex-direction:column;cursor:pointer;
  transition:border-color .12s,box-shadow .12s,transform .12s}
.crew-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-pop);transform:translateY(-1px)}
.crew-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ok)}
.crew-card.bench::before{background:var(--ink-4)}
.crew-card.attention::before{background:var(--warn)}
.crew-card .cc-top{display:flex;align-items:center;gap:11px;padding:14px 15px 11px}
.av.sq{width:42px;height:42px;border-radius:11px;font-size:14px;flex:0 0 auto}
.crew-card .nm{font-family:var(--font-display);font-weight:600;line-height:1.15;font-size:14px}
.crew-card .pos{font-size:12px;color:var(--ink-3);margin-top:1px}
.crew-card .avail{margin-left:auto;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:5px;white-space:nowrap}
.crew-card .avail .d{width:7px;height:7px;border-radius:99px;background:currentColor}
.crew-card .cc-body{padding:0 15px 13px;display:flex;flex-direction:column;gap:10px}
.crew-card .cc-line{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2)}
.crew-card .cc-line .ico{width:14px;height:14px;color:var(--ink-3)}
.crew-card .cc-foot{display:flex;align-items:center;gap:11px;padding:11px 15px;border-top:1px solid var(--line-soft);background:var(--surface-2)}
.crew-card .cc-foot .meta{display:flex;flex-direction:column;gap:1px;line-height:1.2}
.crew-card .cc-foot .meta .k{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600}
.crew-card .cc-foot .meta .v{font-size:12.5px;font-weight:600}
.ring{position:relative;width:40px;height:40px;flex:0 0 auto}
.ring .pct{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:600;color:var(--ink)}

/* ============================================================
   Feedback additions - form sections, bulk bar, ts multi-select,
   attachment order editor, mapping helpers
   ============================================================ */
/* form section subheading inside a drawer form */
.form-section{grid-column:1/-1;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--ink-3);border-bottom:1px solid var(--line-soft);padding-bottom:6px;margin-top:6px}

/* small controls (used in bulk bar / inline) */
.inp.sm,.sel.sm{padding:5px 9px;font-size:12.5px}
.sel.sm{padding-right:26px;background-position:right 8px center}
.mini-lbl{font-size:11px;font-weight:600;color:var(--ink-3)}

/* bulk action bar (AR/AP bulk finalize, timesheet multi-day marking) */
.bulkbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;margin:0 0 2px;
  background:var(--signal-soft);border:1px solid rgba(232,97,44,.3);border-radius:var(--r-md);font-size:13px;color:var(--ink-2)}
.bulkbar .grow{flex:1}
.bulkbar[hidden]{display:none}

/* timesheet calendar - multi-select + per-cell edit affordance */
.tcell.selectable{cursor:pointer}
.tcell.selectable:hover{border-color:var(--sea);box-shadow:0 0 0 3px rgba(14,169,199,.14)}
.tcell.selected{border-color:var(--sea);box-shadow:0 0 0 2px var(--sea) inset;background:rgba(14,169,199,.06)}
.tcell.dragging{border-color:var(--sea);box-shadow:0 0 0 2px var(--sea) inset;background:rgba(14,169,199,.12)}
.cal{user-select:none}
.tcell-edit{position:absolute;bottom:5px;right:5px;width:22px;height:22px;border-radius:var(--r-xs);border:1px solid var(--line);
  background:var(--surface);color:var(--ink-3);display:grid;place-items:center;cursor:pointer;opacity:0;transition:opacity .12s}
.tcell:hover .tcell-edit{opacity:1}
.tcell-edit svg{width:12px;height:12px}
.tcell-edit:hover{border-color:var(--sea);color:var(--sea)}

/* ts step header labels get an icon */
.ts-steps .fg label{display:flex;align-items:center;gap:6px}
.ts-steps .fg label .ico{width:14px;height:14px;color:var(--ink-3)}

/* A/R attachment order (client detail + editor) */
.attach-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;counter-reset:att}
.attach-list li{display:flex;align-items:center;gap:9px}
.attach-list li[draggable="true"]{cursor:grab;padding:4px 6px;margin:-4px -6px;border-radius:var(--r-sm)}
.attach-list li[draggable="true"]:hover{background:var(--surface-sunk)}
.attach-list li.dragging-row{opacity:.45}
.attach-list li .grip{color:var(--ink-4);display:inline-flex;order:1;margin-left:auto}
.attach-list li .grip svg{width:15px;height:15px}
.attach-list li::before{counter-increment:att;content:counter(att);font-family:var(--font-mono);font-size:11px;font-weight:700;
  width:20px;height:20px;border-radius:6px;background:var(--surface-sunk);color:var(--ink-3);display:grid;place-items:center;flex:0 0 auto}
.attach-list-edit{display:flex;flex-direction:column;gap:6px}
.attach-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}
.attach-row .grip{color:var(--ink-4);display:inline-flex}
.attach-row .grip svg{width:15px;height:15px}
.attach-row .num-badge{font-family:var(--font-mono);font-size:11px;font-weight:700;width:20px;height:20px;border-radius:6px;
  background:var(--surface-sunk);color:var(--ink-3);display:grid;place-items:center;flex:0 0 auto}
.attach-add{display:flex;gap:9px;align-items:center}
.attach-add .sel{max-width:340px}

/* responsive */
@media(max-width:980px){
  :root{--rail-w:0px}
  .rail{display:none}
  .app{grid-template-columns:1fr}
}

/* ============================================================
   Multi-page additions: rail footer links, portal without rail,
   demo overview page and prototype notes
   ============================================================ */
.rail-links{display:flex;gap:12px;margin-top:8px}
.rail-links a{color:var(--ink-on-rail-2);font-weight:600}
.rail-links a:hover{color:#fff;text-decoration:none}
.app.no-rail{grid-template-columns:1fr}
.portal-page{max-width:1100px}
.prototype-note{margin-top:22px;padding:12px 15px;border:1px dashed var(--line-strong);border-radius:var(--r-md);font-size:12.5px;color:var(--ink-3);background:var(--surface)}
.prototype-note b{color:var(--ink-2);margin-right:6px}
.demo-body{height:auto;min-height:100%;overflow:auto}
.demo-page{padding-top:34px}
.demo-brand{padding:0 0 14px;height:auto;border:0}
.demo-brand .brand-name{color:var(--ink)}
.demo-h2{font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:26px 0 12px}
.demo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.demo-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink);box-shadow:var(--shadow-card)}
.demo-card:hover{border-color:var(--sea);text-decoration:none}
.demo-card strong{font-family:var(--font-display);font-weight:600;font-size:14px}
.demo-card span{font-size:12.5px;color:var(--ink-3)}

/* ============================================================
   Memory aids: red notes panel (employee, timesheet, invoice,
   statement) and radio choices in forms
   ============================================================ */
.memo-aids{margin-bottom:16px;padding:12px 16px 6px;background:var(--signal-soft);border:1px solid rgba(238,59,51,.22);border-left:4px solid var(--signal);border-radius:var(--r-md)}
.memo-head{display:flex;align-items:center;gap:7px;margin-bottom:4px;font-size:11.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--signal-ink)}
.memo-head .ico{width:15px;height:15px}
.memo-ctx{font-weight:500;letter-spacing:0;text-transform:none;color:var(--ink-3)}
.memo-link{margin-left:auto;display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--signal-ink)}
.memo-link .ico{width:14px;height:14px}
.memo-aids ul{list-style:none;margin:0;padding:0}
.memo-aids li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:8px 0;line-height:1.5}
.memo-aids li + li{border-top:1px solid rgba(238,59,51,.16)}
.memo-type{flex:0 0 76px}
.memo-type .badge{width:100%;justify-content:center}
.memo-period{flex:0 0 auto;min-width:170px;font-weight:600;color:var(--signal-ink)}
.memo-comment{flex:1 1 220px;min-width:0;color:var(--ink-2);white-space:pre-wrap;word-break:break-word}
.memo-aids .row-actions{margin-left:auto;align-self:center}
.cell-comment{white-space:pre-wrap;max-width:420px;color:var(--ink-2)}

.radio-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;border-radius:var(--r-sm)}
.radio-list.invalid{outline:1px solid var(--danger);outline-offset:3px}
.radio-opt{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer}
.radio-opt:hover{border-color:var(--line-strong)}
.radio-opt:has(input:checked){border-color:var(--signal);background:var(--signal-soft)}
.radio-opt input{accent-color:var(--signal);margin-top:3px}
.radio-opt b{display:block;font-size:13px;font-weight:600;color:var(--ink)}
.radio-opt small{display:block;font-size:11.5px;color:var(--ink-3);line-height:1.35}
@media(max-width:640px){.radio-list{grid-template-columns:1fr}}

/* ---------- workplanner: timeline, month calendar, flight details ---------- */
.ret svg{transform:scaleX(-1)}
.wp-top{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.wp-top .grow{flex:1}
.wp-month{font-family:var(--font-display);font-weight:700;font-size:17px;letter-spacing:-.3px;min-width:160px;text-align:center}
.wp-tl{overflow-x:auto;user-select:none}
.wp-row{display:grid;grid-template-columns:230px repeat(var(--wp-days),minmax(28px,1fr));min-width:calc(230px + var(--wp-days) * 28px);border-bottom:1px solid var(--line-soft)}
.wp-row:last-child{border-bottom:0}
.wp-name{grid-column:1;grid-row:1/-1;padding:8px 14px;display:flex;align-items:center;min-width:0;border-right:1px solid var(--line);background:var(--surface);position:sticky;left:0;z-index:3}
.wp-name .who{min-width:0}
.wp-name .nm,.wp-name .ro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wp-head .wp-name{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.wp-dh{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;font-size:10px;font-weight:600;color:var(--ink-3);border-right:1px solid var(--line-soft)}
.wp-dh b{font-size:12px;line-height:18px;min-width:20px;text-align:center;color:var(--ink-2);font-weight:600;border-radius:99px}
.wp-dh.we,.wp-day.we,.wp-mday.we{background:var(--surface-2)}
.wp-dh.today b,.wp-mday.today .n{background:var(--signal);color:#fff}
.wp-day{border-right:1px solid var(--line-soft);cursor:cell}
.wp-day.today{background:rgba(238,59,51,.05)}
.wp-day:hover,.wp-mday:hover{background:rgba(20,169,199,.08)}
.wp-day.sel,.wp-mday.sel{background:rgba(20,169,199,.2)}
.wp-dragging .wp-bar,.wp-dragging .wp-mark{pointer-events:none}
.wp-bar{z-index:1;align-self:center;min-width:0;height:22px;margin:0 2px;padding:0 8px;border-radius:6px;border:1px solid;font-size:11.5px;font-weight:600;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:box-shadow .12s}
.wp-bar:hover{box-shadow:0 0 0 3px rgba(14,169,199,.18)}
.wp-bar.ok{background:var(--info-soft);border-color:rgba(14,138,166,.35);color:var(--info-ink)}
.wp-bar.none{background:var(--surface);border-style:dashed;border-color:var(--line-strong);color:var(--ink-2)}
.wp-bar.cont-l{margin-left:0;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}
.wp-bar.cont-r{margin-right:0;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}
.wp-mark{z-index:2;justify-self:center;align-self:center;width:20px;height:20px;border-radius:99px;display:inline-grid;place-items:center;border:1px solid;cursor:pointer;font-size:9px;font-weight:700;position:relative}
.wp-mark svg{width:12px;height:12px}
.wp-mark.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.wp-mark:hover{box-shadow:0 0 0 3px rgba(14,169,199,.2)}
.wp-mark .n{position:absolute;top:-6px;right:-6px;min-width:13px;height:13px;border-radius:99px;background:var(--surface-rail);color:#fff;font-size:9px;line-height:13px;text-align:center}
.wp-mhead{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line-soft)}
.wp-mhead div{font-size:11px;font-weight:600;text-align:center;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);padding:8px 0}
.wp-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line-soft);user-select:none}
.wp-week:last-child{border-bottom:0}
.wp-mday{border-right:1px solid var(--line-soft);padding:4px 6px;display:flex;align-items:flex-start;justify-content:space-between;gap:4px;cursor:cell;min-width:0}
.wp-mday:nth-child(7){border-right:0}
.wp-mday .n{font-size:12px;font-weight:600;line-height:20px;min-width:20px;text-align:center;border-radius:99px;color:var(--ink-2)}
.wp-mday.out{background:var(--surface-2)}
.wp-mday.out .n{color:var(--ink-4)}
.wp-mfl{display:flex;gap:3px;flex-wrap:wrap;justify-content:flex-end}
.wp-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 14px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-3)}
.wp-legend > span{display:inline-flex;align-items:center;gap:6px}
.wp-legend .wp-bar{width:26px;height:14px;padding:0;margin:0;cursor:default}
.wp-legend .wp-mark{width:16px;height:16px;cursor:default}
.wp-legend .wp-mark svg{width:10px;height:10px}
.wp-legend .hint{margin-left:auto}
/* planning drawer and flight lists */
.wp-plan-kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;padding:14px 16px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--r-md)}
.wp-plan-kv .span-2{grid-column:1/-1}
.wp-plan-kv .v{white-space:pre-line}
.wp-flist{display:flex;flex-direction:column;gap:8px}
.wp-frow{display:flex;align-items:flex-start;gap:11px;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--warn);border-radius:var(--r-sm);background:var(--surface)}
.wp-frow.ok{border-left-color:var(--ok)}
.wp-frow[data-action]{cursor:pointer}
.wp-frow[data-action]:hover{border-color:var(--line-strong);border-left-color:var(--sea)}
.wp-fico{flex:0 0 auto;width:28px;height:28px;border-radius:99px;display:grid;place-items:center;background:var(--surface-sunk);color:var(--ink-2)}
.wp-fico svg{width:15px;height:15px}
.wp-fmain{flex:1;min-width:0}
.wp-fmain .t{font-weight:600;font-size:13px;line-height:1.35}
.wp-fmain .s,.wp-fact .s{font-size:11.5px;color:var(--ink-3);line-height:1.45}
.wp-frow .s.ok{color:var(--ok-ink);display:flex;align-items:center;gap:5px;margin-top:3px}
.wp-frow .s.ok svg{width:13px;height:13px}
.wp-fact{display:flex;align-items:center;gap:4px;flex:0 0 auto}
.wp-flist.compact .wp-frow{padding:7px 9px;gap:9px;align-items:center}
.wp-flist.compact .wp-fico{width:24px;height:24px}
.wp-flist.compact .wp-frow .s.ok{margin:0}
.wp-flist.compact .wp-frow .s.ok svg{width:16px;height:16px}
.wp-chips{display:flex;gap:5px;flex-wrap:wrap}
.wp-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px 2px 7px;border-radius:var(--r-pill);border:1px solid;cursor:pointer;white-space:nowrap}
.wp-chip svg{width:12px;height:12px}
.wp-chip.ok{background:var(--ok-soft);border-color:transparent;color:var(--ok-ink)}
.wp-chip:hover{box-shadow:0 0 0 3px rgba(14,169,199,.16)}
.wp-dir{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.wp-dir svg{width:14px;height:14px;color:var(--ink-3)}
.wp-mini{padding:9px 10px;border:1px solid var(--line-soft);border-radius:var(--r-sm);cursor:pointer;margin-bottom:8px}
.wp-mini:hover{border-color:var(--sea);box-shadow:0 0 0 3px rgba(14,169,199,.12)}
.wp-mini-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.wp-mini-fl{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
/* travel on the timesheet calendars */
.tcell .fl{display:inline-flex;align-items:center;gap:2px;padding:1px 5px;border-radius:99px;background:var(--info-soft);color:var(--info-ink);font-size:10px;font-weight:700}
.tcell .fl svg{width:12px;height:12px}
.badge svg{width:12px;height:12px}
.radio-list:has(> .radio-opt:nth-child(2):last-child){grid-template-columns:repeat(2,1fr)}
.wp-ftbl td{white-space:nowrap}
.wp-ftbl td.wp-text{white-space:pre-line;min-width:160px;line-height:1.4}
.wp-dir{gap:9px}
.wp-fmain .txt{white-space:pre-line;overflow-wrap:anywhere}
.wp-fmain .txt svg{width:12px;height:12px;vertical-align:-1px;color:var(--ink-3)}
.att-group-head{display:flex;align-items:center;gap:8px}
.att-group-head .btn{margin-left:auto}

/* Dropdown with an Add button, and the panel that checks a new name against the existing ones (vessel on an assignment) */
.pick-add{display:flex;gap:8px}
.pick-add .sel{flex:1;min-width:0}
.pick-panel{margin-top:8px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-2);padding:12px;display:flex;flex-direction:column;gap:10px}
.pick-panel[hidden]{display:none}
.pick-head{display:flex;align-items:center;justify-content:space-between;font-size:13px}
.pick-result{display:flex;flex-direction:column;gap:10px}
.pick-sub{font-size:12px;font-weight:600;color:var(--ink-2)}
.pick-list{display:flex;flex-direction:column;max-height:236px;overflow:auto;border:1px solid var(--line-soft);border-radius:var(--r-sm);background:var(--surface)}
.pick-list:empty{display:none}
.pick-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-bottom:1px solid var(--line-soft);font-size:13px}
.pick-row:last-child{border-bottom:0}
.pick-row .nm{flex:1;min-width:0;font-weight:500;display:flex;align-items:center;gap:7px}
.pick-row .nm svg{width:15px;height:15px;color:var(--ink-3);flex:0 0 auto}
.pick-row.arch .nm{color:var(--ink-2)}
.pick-row .when{font-size:12px;color:var(--ink-3);white-space:nowrap}
.pick-row mark{background:var(--warn-soft);color:inherit;border-radius:3px;padding:0 1px}
.pick-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:var(--ink-2)}
.pick-foot .btn{flex:0 0 auto}

/* A/P & A/R tab on the employee: two compact lists side by side, drafts stand out, and the annual statement preview */
.fin-tbl thead th,.fin-tbl td{padding-left:10px;padding-right:10px}
.fin-tbl td.num{white-space:nowrap}
.fin-tbl .amount{font-size:12.5px}
.fin-tbl tr.fin-draft td{background:var(--warn-soft)}
.fin-tbl .cell-2 > span:first-child{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fin-tbl .cell-2 a{white-space:nowrap}
.fin-report-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:14px}
.fin-report-head .t{font-family:var(--font-display);font-size:18px;font-weight:700;letter-spacing:-.3px}
.fin-report-kv{display:grid;grid-template-columns:repeat(2,auto);gap:8px 28px}
.fin-attach{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}

/* Timesheet: day type label in a calendar cell, and the A/R invoice lines that follow from the registered days */
.tcell .dt{align-self:flex-start;font-size:10px;font-weight:700;color:var(--info-ink);background:var(--info-soft);padding:1px 6px;border-radius:99px}
.ts-out{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.ts-out:last-of-type{border-bottom:0}
.ts-out .s{display:block;font-size:11.5px;color:var(--ink-3)}

/* Workplanner: reference to the supplier invoice a flight or course period came from */
.wp-src{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;margin-top:3px}
.wp-src svg{width:13px;height:13px}
