/* =====================================================================
   theme.css — visual refresh (loads after styles.css)
   Desk / paper idea: the app chrome is a calm cool-grey desk with ink-navy
   navigation; the measurement sheets stay white "paper" with the serif type
   of a PWD measurement book. One accent: hi-vis amber marks where you are.
   ===================================================================== */
:root{
  --ink:#0f2742;        /* navigation, headings */
  --ink-2:#1b3a5e;
  --survey:#1d63a6;     /* primary actions, links */
  --survey-dark:#164f86;
  --survey-soft:#e7f0f9;
  --desk:#eef2f5;       /* app background */
  --paper:#ffffff;
  --rule:#d5dde5;
  --rule-strong:#b9c6d2;
  --amber:#f0a202;      /* "you are here" + totals */
  --ok:#1f8a57; --bad:#c23a32;
  --text:#14212e; --muted:#5b6b79;
  /* map onto the existing variables */
  --blue:var(--survey); --blue-dark:var(--survey-dark); --blue-soft:var(--survey-soft);
  --navy:var(--ink); --yellow:#ffc533; --line:var(--rule); --bg:var(--desk);
  --green:var(--ok); --red:var(--bad);
  --ui:"IBM Plex Sans","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  --mono:"IBM Plex Mono","DejaVu Sans Mono",Menlo,Consolas,monospace;
  --r-lg:12px; --r-md:8px; --r-sm:6px;
  --lift:0 1px 2px rgba(15,39,66,.06),0 4px 14px rgba(15,39,66,.06);
}
html,body{background:var(--desk);color:var(--text);font:14px/1.5 var(--ui);-webkit-font-smoothing:antialiased}
.mono,td.num,.num{font-variant-numeric:tabular-nums}
a{color:var(--survey);text-underline-offset:2px}
:focus-visible{outline:2px solid var(--survey);outline-offset:2px}
::selection{background:#cfe0f3}

/* ---------- header: quiet utility bar ---------- */
.header{height:52px;padding:0 18px;gap:14px;background:var(--paper);border-bottom:1px solid var(--rule);box-shadow:none}
.brand{font:600 15px var(--ui);letter-spacing:-.01em;color:var(--ink)}
.logo{width:30px;height:30px;border-radius:7px;background:var(--ink);font:600 12px var(--ui);letter-spacing:.02em;box-shadow:inset 0 -3px 0 var(--amber)}
.nav{flex-wrap:nowrap;margin-left:18px;gap:2px}
.nav button{font:500 13.5px var(--ui);color:var(--muted);padding:6px 10px;border-radius:var(--r-sm)}
.nav button:hover{color:var(--ink);background:var(--desk)}
.nav button.active{color:var(--ink);background:var(--survey-soft)}
.userbar{margin-left:auto;gap:8px;flex-wrap:nowrap}
.userbar .btn{padding:6px 11px}
.pill{background:var(--desk);color:var(--ink-2);font-weight:500}

/* ---------- navigation ribbon ---------- */
#navbar{position:sticky;z-index:28;background:var(--ink);box-shadow:0 1px 0 rgba(0,0,0,.2),0 6px 16px rgba(15,39,66,.12)}
#navbar .nb-row{display:flex;align-items:stretch;padding:0 12px;min-height:46px}
#navbar .nb-main{display:flex;gap:0;flex:0 0 auto}
#navbar .nb-main::-webkit-scrollbar{display:none}
#navbar .nb-main-b{position:relative;border:0;background:transparent;color:#c9d6e3;font:400 14.5px var(--ui);padding:0 15px;white-space:nowrap;cursor:pointer;border-radius:0;transition:color .15s,background .15s}
#navbar .nb-main-b:hover{color:#fff;background:rgba(255,255,255,.06)}
#navbar .nb-main-b.on{color:#fff;background:var(--ink-2)}
#navbar .nb-main-b.on::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--amber)}
#navbar .nb-sub{background:var(--paper);border-bottom:1px solid var(--rule);padding:0 12px}
#navbar .nb-tabs{display:flex;flex-wrap:wrap;align-items:stretch;gap:0 2px}
#navbar .nb-tabs button{position:relative;border:0;background:none;color:var(--muted);font:400 13px var(--ui);padding:0 9px;height:40px;white-space:nowrap;cursor:pointer;border-radius:0}
#navbar .nb-tabs button:hover{color:var(--ink);background:#f5f8fb}
#navbar .nb-tabs button.on{color:var(--ink);font-weight:500}
#navbar .nb-tabs button.on::after{content:"";position:absolute;left:8px;right:8px;bottom:0;height:2px;background:var(--survey)}
#navbar .nb-tabs button.nb-act{color:var(--survey);font-weight:500}
#navbar .nb-tabs button.nb-act+button:not(.nb-act){margin-left:8px;box-shadow:-9px 0 0 -8px var(--rule-strong)}
#navbar .nb-hint{align-self:center;font-size:12.5px;color:var(--muted);margin-left:14px}
#navbar .nb-ctx{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:1 1 0;min-width:0;padding-left:16px}
#navbar .nb-crumb{display:flex;align-items:baseline;gap:6px;min-width:0;font-size:12.5px;color:#a9bfd4;white-space:nowrap;overflow:hidden}
#navbar .nb-crumb b{font-weight:500;color:#fff;overflow:hidden;text-overflow:ellipsis}
#navbar .nb-folder{overflow:hidden;text-overflow:ellipsis;max-width:140px}
#navbar .nb-sep{color:#5d7894}
#navbar .nb-move{flex:none;border:1px solid rgba(255,255,255,.28);background:transparent;color:#fff;font:500 12.5px var(--ui);padding:5px 10px;border-radius:var(--r-sm);cursor:pointer}
#navbar .nb-move:hover{border-color:var(--amber);color:var(--amber)}
#navbar .nb-work{flex:none;width:34px;font:400 12.5px var(--ui);padding:5px 4px;border-radius:var(--r-sm);border:1px solid rgba(255,255,255,.28);background:transparent;color:transparent;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,#fff 50%),linear-gradient(135deg,#fff 50%,transparent 50%);background-position:13px 14px,18px 14px;background-size:5px 5px;background-repeat:no-repeat;-webkit-appearance:none;appearance:none}
#navbar .nb-work option{color:var(--text)}
#main>.tabs{display:none}
@media (max-width:1100px){#navbar .nb-row{flex-wrap:wrap}#navbar .nb-ctx{max-width:100%;padding:6px 0}}

/* ---------- page furniture ---------- */
main{padding-top:24px}
.eyebrow{font:500 12px var(--ui);letter-spacing:0;text-transform:none;color:var(--survey)}
.work-title{font:600 24px/1.2 var(--ui);letter-spacing:-.015em;text-transform:none;color:var(--ink);margin:2px 0 14px}
.page-title{font:600 24px/1.2 var(--ui)}
h1,h2,h3{color:var(--ink);letter-spacing:-.01em}
h2{font-weight:600}h3{font-weight:600}
.back{font:500 13px var(--ui);color:var(--muted)}
.back:hover{color:var(--survey)}

/* ---------- surfaces ---------- */
.card{border:1px solid var(--rule);border-radius:var(--r-lg);box-shadow:var(--lift)}
.card.pad-sm{border-radius:var(--r-md)}
.empty{border:1px dashed var(--rule-strong);background:#fafbfc;color:var(--muted);border-radius:var(--r-lg)}
.hint{background:var(--survey-soft);border-color:#c9dcef;color:#24425f;border-radius:var(--r-sm)}

/* ---------- buttons ---------- */
.btn{font:500 13.5px var(--ui);border-radius:var(--r-sm);border-color:var(--rule-strong);padding:7px 13px;transition:background .12s,border-color .12s,box-shadow .12s}
.btn:hover{filter:none;border-color:var(--survey);color:var(--survey)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--survey);border-color:var(--survey);color:#fff;box-shadow:0 1px 0 var(--survey-dark)}
.btn.primary:hover{background:var(--survey-dark);border-color:var(--survey-dark);color:#fff}
.btn.green,.btn.ui-green{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.green:hover,.btn.ui-green:hover{background:#18744a;border-color:#18744a;color:#fff}
.btn.soft{background:var(--survey-soft);border-color:#c9dcef;color:var(--survey-dark)}
.btn.soft:hover{background:#d9e8f6;color:var(--survey-dark)}
.btn.navy{background:var(--ink);border-color:var(--ink)}
.btn.sm{font-size:12.5px;padding:4px 10px}
.btn.xs{font-size:12px;padding:2px 8px}
.btn.danger-solid,.btn.ui-red{background:#fff;border-color:#e3b3ae;color:var(--bad)}
.btn.danger-solid:hover,.btn.ui-red:hover{background:var(--bad);border-color:var(--bad);color:#fff}
.chip{border-radius:999px;font-weight:500}
.chip.code{font-family:var(--mono);font-weight:500;color:var(--survey-dark);background:var(--survey-soft);border-color:#c9dcef;border-radius:var(--r-sm)}

/* ---------- forms ---------- */
label.f>span{font:500 12.5px var(--ui);color:#3b4d5c}
.in,label.f input,label.f select,label.f textarea,.inline-select{border:1px solid var(--rule-strong);border-radius:var(--r-sm);background:#fff;transition:border-color .12s,box-shadow .12s}
.in,label.f input,label.f select{min-height:36px}
.in:hover,label.f input:hover,label.f select:hover,label.f textarea:hover,.inline-select:hover{border-color:#94a6b6}
.in:focus,label.f input:focus,label.f select:focus,label.f textarea:focus,.inline-select:focus{outline:none;border-color:var(--survey);box-shadow:0 0 0 3px rgba(29,99,166,.18)}

/* ---------- the paper: measurement & abstract sheets ---------- */
table.sheet{border-radius:2px;box-shadow:0 0 0 1px var(--rule-strong)}
table.sheet th,table.sheet td{border-color:#9fb0bf}
table.sheet th{font:600 11px var(--ui);letter-spacing:.02em;text-transform:none;color:var(--ink);background:#e9eff5}
table.sheet tbody tr:nth-child(even) td{background:#fbfcfd}
table.sheet tbody tr:hover td{background:#f4f8fc}
table.sheet td input:focus,table.sheet td textarea:focus{background:#fff8e1;box-shadow:inset 0 -2px 0 var(--amber);outline:none}
table.sheet .grand td{background:var(--ink)}
table.light th{font:500 12.5px var(--ui);color:var(--muted);border-bottom-color:var(--rule-strong)}
table.light tbody tr:hover td{background:#f7f9fb}

/* ---------- lists: works, schemes ---------- */
.work-row{padding:14px 16px;transition:background .12s}
.work-row:hover{background:#f7f9fb}
.work-row b{text-transform:none;font-weight:600;color:var(--ink)}
.scheme-card{border-radius:var(--r-lg);transition:border-color .12s,box-shadow .12s}
.scheme-card b{text-transform:none;font-weight:600}
.scheme-card:hover{border-color:var(--rule-strong);box-shadow:var(--lift)}
.scheme-card.active{border-color:var(--survey);box-shadow:0 0 0 3px rgba(29,99,166,.15)}

/* ---------- dashboard ---------- */
.dash-side{border-radius:var(--r-lg);box-shadow:var(--lift);border-color:var(--rule);top:150px}
.side-btn{font:500 13.5px var(--ui);background:transparent;border-radius:var(--r-md)}
.side-btn:hover{background:var(--desk);border-color:transparent}
.side-btn .ico{border-radius:var(--r-sm);border-color:var(--rule)}
.dash-head{background:var(--ink);border-radius:var(--r-lg);box-shadow:none;position:relative;overflow:hidden}
.dash-head::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:24px 24px;pointer-events:none}
.dash-head>*{position:relative}
.dash-head h1{font:600 26px/1.2 var(--ui);letter-spacing:-.02em}
.dash-head .eyebrow{color:var(--amber)}
.dash-stats .card.stat{border-radius:var(--r-md);background:rgba(255,255,255,.07)}
.dash-stats .card.stat small{font:500 12px var(--ui);letter-spacing:0;text-transform:none;color:#a9bfd4}
.dash-stats .card.stat strong{font-family:var(--mono);font-weight:500}
.dash-stats .card.stat.dark strong{color:var(--yellow)}
.stat small{font:500 12px var(--ui);letter-spacing:0;text-transform:none}
.stat strong{font-family:var(--mono);font-weight:500}
.nb-dashstrip{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;margin:14px 0}
.nb-chip{display:inline-flex;flex-direction:column;justify-content:center;background:var(--paper);border:1px solid var(--rule);border-radius:var(--r-md);padding:4px 12px;font-size:13px}
.nb-chip small{font-size:11.5px;color:var(--muted)}
.nb-dashstrip .btn{align-self:stretch}

/* ---------- purpose strip on charts ---------- */
.nb-purpose{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--rule);border-left:3px solid var(--amber);border-radius:var(--r-md);padding:8px 12px;margin:0 0 12px}
.nb-purpose button{border:1px solid var(--rule-strong);background:#fff;color:var(--ink);font:500 13px var(--ui);padding:4px 14px;border-radius:999px;cursor:pointer}
.nb-purpose button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.nb-purpose select{font-size:12.5px;padding:4px 6px;border-radius:var(--r-sm);border:1px solid var(--rule-strong)}

/* ---------- totals bar, memo, modal, toast ---------- */
.footer-total{background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-top:1px solid var(--rule);box-shadow:0 -4px 16px rgba(15,39,66,.06)}
.footer-total .grand{background:var(--ink);color:var(--yellow);border-radius:var(--r-sm);box-shadow:inset 0 -2px 0 var(--amber)}
.memo{background:var(--ink);border-radius:var(--r-lg)}
.memo .eyebrow{color:var(--amber)}
.modal-bg{background:rgba(15,39,66,.45);backdrop-filter:blur(3px)}
.modal{border-radius:var(--r-lg);box-shadow:0 24px 64px rgba(15,39,66,.35);animation:mIn .16s ease-out}
.modal .mh h2{font:600 17px var(--ui);color:var(--ink)}
.modal .mf{background:#f6f8fa}
@keyframes mIn{from{opacity:0;transform:translateY(6px) scale(.99)}to{opacity:1;transform:none}}
.toast{background:var(--ink);border-radius:var(--r-md);box-shadow:0 10px 30px rgba(15,39,66,.3);border-left:3px solid var(--amber)}
.subtabs{background:var(--desk);border-radius:var(--r-md)}
.subtabs button{font:400 13.5px var(--ui)}
.subtabs button.active{font-weight:500}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{#navbar{display:none!important}}

/* header tidy */
#saveStatus,.save-status{font-size:12px}
.header .btn{font-size:13px}
@media (max-width:900px){
  .header{height:auto;flex-wrap:wrap;padding:6px 12px;gap:6px}
  .nav{order:3;flex-basis:100%;margin-left:0;overflow-x:auto;scrollbar-width:none}
  .userbar{overflow-x:auto;max-width:100%;scrollbar-width:none}
  #navbar .nb-row{overflow-x:auto;scrollbar-width:none}
  #navbar .nb-tabs{flex-wrap:nowrap;overflow-x:auto}
}

/* ---------- sheets: dark rules on every row and column ---------- */
table.sheet,table.sheet th,table.sheet td{border:1px solid #1b2430!important}
table.sheet{border-collapse:collapse;box-shadow:none}
table.sheet td input,table.sheet td textarea{border:0!important}
.doc table th,.doc table td{border:1px solid #000}
.doc .meta td{border:0}

/* ---------- Allotment sheet title ---------- */
.allot-title{font:700 clamp(40px,6vw,72px)/1 var(--ui);letter-spacing:.14em;text-align:center;color:var(--ink);margin:6px 0 18px;padding:12px 0 14px;border-top:4px solid var(--ink);border-bottom:4px solid var(--ink)}

/* ---------- Bill form: 60% of the screen ---------- */
main.wide-bill{max-width:max(60vw,880px);padding-left:16px;padding-right:16px}
main.wide-bill .bill-layout>div:last-child{grid-template-columns:1fr}
@media(max-width:1000px){main.wide-bill{max-width:none}}

/* ---------- yellow allowed-qty strip and red excess strip ---------- */
.allow-row,.excess-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border-radius:var(--r-sm);padding:7px 12px;margin-top:8px;font-size:13.5px}
.allow-row{background:#fff3c4;border:1px solid #e5c24a;color:#4a3b00}
.allow-row .x,.excess-row .x{color:#8a7a3a}
.allow-row input{width:110px}
.allow-row .allow-auto{margin-left:auto;font-weight:600;border-color:#c9a21c;background:#fff;color:#6b5200}
.allow-row .allow-auto.is-auto{background:#2b7a46;border-color:#2b7a46;color:#fff;opacity:1}
.excess-row{background:#fff3c4;border:1px solid #d6402f;border-left:4px solid #d6402f;color:#b3261e}
.excess-row b,.excess-row .mono{color:#b3261e}
.excess-row .small{color:#8a3a33}

/* qty-allowed strip: excess quantity sits in the right-hand corner, red on yellow */
.allow-row{position:relative}
.allow-row .allow-excess{margin-left:6px;background:#fff3c4;color:#c01f12;border:1.5px solid #c01f12;border-radius:6px;padding:3px 10px;font-weight:800;font-size:13px;white-space:nowrap}
.allow-row .allow-auto{margin-left:auto}
.nb-purpose .nb-badge{font:600 12px var(--ui);padding:3px 10px;border-radius:999px;color:#fff;background:#1d63a6;white-space:nowrap}
.nb-purpose.nb-bill{border-left-color:#1f7a4d}.nb-purpose.nb-bill .nb-badge{background:#1f7a4d}.nb-purpose.nb-est{border-left-color:#1d63a6}
.nb-purpose .small.muted{flex-basis:100%}
/* header: let the right-hand buttons go to a second row when the screen is not wide enough (Admin settings tab added) */
@media (max-width:1600px){ .header{height:auto;min-height:52px;flex-wrap:wrap;row-gap:4px;padding-top:4px;padding-bottom:4px} .header .userbar{margin-left:auto} }
