/* Valor PM Dashboard — app design system (brand-consistent, functional) */
:root{
  --navy:#0F2A44; --navy9:#0A1E31; --navy8:#12324F; --navy7:#1B4066;
  --steel:#5B6770; --steel4:#7C8791; --steel3:#9AA6AE; --steel2:#C4CCD2;
  --line:#E1E5EA; --gold:#F2A900; --gold-b:#FFC130; --paper:#F7F8FA; --paper2:#EDF0F3;
  --ink:#12181F; --white:#fff; --ok:#1E6B32; --okbg:#EAF6EC; --bad:#C13333; --badbg:#FDECEC; --warn:#B5771A;
  --f-disp:'Anton','Arial Narrow',sans-serif; --f-body:'Chivo',system-ui,sans-serif; --f-mono:'Chivo Mono',ui-monospace,monospace;
  --radius:8px; --shadow:0 2px 10px rgba(15,42,68,.07); --shadow-md:0 12px 30px rgba(15,42,68,.12);
  --ease:cubic-bezier(.22,1,.36,.58); --appbar-h:60px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:var(--f-body);background:var(--paper);color:var(--ink);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit}
h1,h2,h3{font-family:var(--f-disp);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1;color:var(--navy)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* ---------- appbar ---------- */
.appbar{position:sticky;top:0;z-index:50;height:var(--appbar-h);background:var(--navy);color:#fff;display:flex;align-items:center;gap:1.2rem;padding:0 clamp(14px,3vw,26px)}
.brand{display:flex;align-items:center;gap:.55rem}
.brand__mark{width:30px;height:27px}
.brand__word{font-family:var(--f-disp);font-size:1.25rem;letter-spacing:.04em}
.brand__sub{color:var(--gold)}
.appnav{display:flex;gap:.3rem;margin-left:1rem;flex:1}
.appnav a{font-family:var(--f-mono);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--steel3);padding:.5rem .8rem;border-radius:6px;transition:background .15s,color .15s}
.appnav a:hover{color:#fff;background:rgba(255,255,255,.06)}
.appnav a.active{color:var(--navy9);background:var(--gold)}
.appbar__right{display:flex;align-items:center;gap:.9rem}
.userchip{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.05em;color:var(--steel2);text-align:right;line-height:1.3}
.userchip b{display:block;color:#fff;font-weight:600}
.userchip .role{color:var(--gold)}
.logout{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--steel3);border:1px solid rgba(255,255,255,.2);padding:.4rem .7rem;border-radius:6px}
.logout:hover{color:#fff;border-color:#fff}
.navburger{display:none;width:38px;height:38px;background:none;border:0;position:relative;cursor:pointer}
.navburger span,.navburger span::before,.navburger span::after{content:"";position:absolute;left:8px;width:22px;height:2.5px;background:#fff;transition:.25s}
.navburger span{top:18px}.navburger span::before{top:-7px}.navburger span::after{top:7px}

/* ---------- layout ---------- */
.app{max-width:1240px;margin:0 auto;padding:clamp(16px,3vw,32px)}
.pagehead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.4rem}
.pagehead h1{font-size:clamp(1.7rem,3.5vw,2.5rem)}
.eyebrow{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--steel);display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--gold)}
.crumb{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--steel);margin-bottom:.8rem}
.crumb a:hover{color:var(--gold)}
.muted{color:var(--steel)}
.loading{display:flex;align-items:center;gap:.7rem;justify-content:center;padding:5rem 1rem;color:var(--steel);font-family:var(--f-mono);letter-spacing:.06em}
.spinner{width:18px;height:18px;border:3px solid var(--steel2);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- KPI tiles ---------- */
.kpigrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:clamp(10px,1.4vw,16px);margin-bottom:1.6rem}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.15rem;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gold);opacity:0}
.kpi.hl::after{opacity:1}
.kpi__label{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);display:flex;align-items:center;gap:.35rem}
.kpi__val{font-family:var(--f-disp);font-size:2.15rem;color:var(--navy);line-height:1;margin-top:.5rem}
.kpi__val .u{font-size:1.1rem;color:var(--steel)}
.kpi__val.gold{color:var(--gold)}
.kpi__val.good{color:var(--ok)}.kpi__val.bad{color:var(--bad)}
.kpi__sub{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.04em;color:var(--steel4);margin-top:.35rem}
.kpi .prov{font-size:.6rem;color:var(--warn);text-transform:uppercase;letter-spacing:.1em}

/* ---------- cards / sections ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(16px,2vw,22px);margin-bottom:1.2rem}
.card h2,.card h3{font-size:1.15rem;margin-bottom:.9rem}
.section-row{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
@media(max-width:820px){.section-row{grid-template-columns:1fr}}

/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:.86rem}
.tbl th{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--steel);text-align:left;padding:.55rem .6rem;border-bottom:2px solid var(--line)}
.tbl td{padding:.6rem .6rem;border-bottom:1px solid var(--line)}
.tbl tr:hover td{background:var(--paper)}
.tbl .num{text-align:right;font-family:var(--f-mono)}
.linkrow{cursor:pointer}

/* ---------- project cards ---------- */
.projgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.projcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.2rem;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s}
.projcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.projcard h3{font-size:1.3rem}
.projcard .meta{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.06em;color:var(--steel);text-transform:uppercase;margin:.3rem 0 .9rem}
.mini{display:flex;gap:1.2rem;flex-wrap:wrap}
.mini div{font-family:var(--f-mono);font-size:.66rem;color:var(--steel);text-transform:uppercase;letter-spacing:.08em}
.mini b{display:block;font-family:var(--f-disp);font-size:1.3rem;color:var(--navy)}
.mini b.gold{color:var(--gold)}

/* progress bar */
.bar{height:8px;background:var(--paper2);border-radius:99px;overflow:hidden;margin-top:.7rem}
.bar>span{display:block;height:100%;background:var(--gold)}

/* badges/pills */
.pill{display:inline-block;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;padding:.25rem .55rem;border-radius:99px;border:1px solid var(--line)}
.pill.active{color:var(--ok);border-color:#B6E0BE;background:var(--okbg)}
.pill.on_hold{color:var(--warn);border-color:#EAD9B0;background:#FBF3E3}
.pill.complete{color:var(--steel);background:var(--paper2)}
.pill.open{color:var(--bad);border-color:#F3C2C2;background:var(--badbg)}
.pill.closed{color:var(--ok);background:var(--okbg)}

/* ---------- forms ---------- */
.field{margin-bottom:1rem}
.field label{display:block;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--navy);margin-bottom:.4rem}
.field .req{color:var(--gold)}
.field input,.field select,.field textarea{width:100%;padding:.7rem .8rem;background:var(--paper);border:1.5px solid var(--line);border-radius:6px;color:var(--ink)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold);background:#fff;box-shadow:0 0 0 3px rgba(242,169,0,.16)}
.field textarea{min-height:90px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1rem}
@media(max-width:560px){.grid2,.grid3{grid-template-columns:1fr}}
.btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--gold);color:var(--navy9);font-family:var(--f-mono);font-weight:600;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;border:2px solid var(--gold);border-radius:6px;padding:.75rem 1.3rem;cursor:pointer;transition:transform .15s,box-shadow .2s,background .2s}
.btn:hover{background:var(--gold-b);transform:translateY(-1px);box-shadow:0 8px 20px rgba(242,169,0,.28)}
.btn.block{width:100%;justify-content:center}
.btn.ghost{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn.ghost:hover{background:var(--navy);color:#fff;box-shadow:none}
.btn.sm{padding:.45rem .8rem;font-size:.68rem}
.formstatus{margin-top:.9rem;padding:.8rem 1rem;border-radius:6px;font-size:.9rem;display:none}
.formstatus.ok{display:block;background:var(--okbg);border:1px solid #B6E0BE;color:var(--ok)}
.formstatus.bad{display:block;background:var(--badbg);border:1px solid #F3C2C2;color:var(--bad)}

/* item-quantity chips (daily report) */
.chips{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:560px){.chips{grid-template-columns:1fr}}
.chip{display:flex;align-items:center;gap:.6rem;border:1.5px solid var(--line);border-radius:6px;padding:.5rem .7rem;background:#fff}
.chip label{flex:1;font-family:var(--f-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--navy);margin:0}
.chip .unit{color:var(--steel);font-size:.66rem}
.chip input{width:88px;padding:.45rem .5rem;text-align:right}
.toggle{display:flex;align-items:center;gap:.7rem;padding:.8rem 1rem;border:1.5px solid var(--line);border-radius:6px}
.toggle input{width:20px;height:20px;accent-color:var(--bad)}

/* charts */
.chart{width:100%;height:auto;display:block}
.chart .axis{stroke:var(--line);stroke-width:1}
.chart .barv{fill:var(--navy)}
.chart .barv.gold{fill:var(--gold)}
.chart text{font-family:var(--f-mono);font-size:9px;fill:var(--steel)}

/* misc */
.empty{padding:2.5rem 1rem;text-align:center;color:var(--steel);font-family:var(--f-mono);letter-spacing:.05em}
.provnote{font-family:var(--f-mono);font-size:.68rem;color:var(--warn);letter-spacing:.03em;margin-top:.4rem}
.row-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.fab{position:fixed;right:18px;bottom:18px;z-index:40}

@media(max-width:1040px){
  .navburger{display:block}
  .appnav{position:fixed;inset:var(--appbar-h) 0 auto 0;flex-direction:column;gap:0;background:var(--navy9);padding:.5rem;transform:translateY(-120%);transition:transform .3s var(--ease);box-shadow:var(--shadow-md);z-index:45}
  .appnav.open{transform:translateY(0)}
  .appnav a{padding:.9rem;border-bottom:1px solid rgba(255,255,255,.08)}
}
@media(max-width:760px){
  .userchip{display:none}
  .brand__word{font-size:1.1rem}
}

/* ---------- demo mode + media gallery ---------- */
.demo-banner{background:var(--gold);color:var(--navy9);text-align:center;font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:.45rem 1rem}
.demo-banner b{font-weight:700}
.role-switch{display:flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:99px;padding:.2rem .3rem .2rem .7rem}
.role-switch span{font-family:var(--f-mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--steel3)}
.role-switch select{background:var(--navy8);color:#fff;border:0;border-radius:99px;font-family:var(--f-mono);font-size:.74rem;font-weight:600;padding:.4rem .6rem;cursor:pointer}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem}
.media-tile{position:relative;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,var(--navy) 0%,var(--navy8) 100%);display:flex;align-items:flex-end;border:1px solid var(--line)}
.media-tile .ph-ic{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3)}
.media-tile .ph-ic svg{width:34px;height:34px}
.media-tile .cap{position:relative;z-index:1;width:100%;padding:.5rem .55rem;background:linear-gradient(180deg,transparent,rgba(10,30,49,.9));color:#fff;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.02em;line-height:1.3}
.media-tile .vbadge{position:absolute;top:.4rem;right:.4rem;z-index:2;background:var(--gold);color:var(--navy9);font-family:var(--f-mono);font-size:.56rem;font-weight:600;padding:.12rem .4rem;border-radius:4px;letter-spacing:.06em}
@media(max-width:760px){.role-switch span{display:none}}
