:root{--navy:#17107A;--navy2:#251aa3;--cyan:#16b8f2;--ink:#101827;--muted:#64748b;--line:#d9e4f5;--bg:#eef4fb;--card:#fff;--green:#0f8a47;--amber:#b77900;--red:#b42318}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 10% 0%,rgba(22,184,242,.18),transparent 28%),radial-gradient(circle at 90% 10%,rgba(23,16,122,.14),transparent 30%),var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}a{color:inherit}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{background:rgba(255,255,255,.88);border-right:1px solid var(--line);padding:20px;position:sticky;top:0;height:100vh;backdrop-filter:blur(18px)}.logo-wrap img{width:100%;max-width:235px;display:block;margin:0 auto 22px}.user-card{display:flex;gap:12px;align-items:center;padding:14px;border-radius:18px;background:linear-gradient(135deg,var(--navy),var(--navy2));color:white;margin-bottom:18px}.avatar{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--cyan);font-weight:900;font-size:22px}.user-card strong,.user-card span{display:block}.user-card span{opacity:.85;font-size:13px}nav{display:grid;gap:8px}nav a{text-decoration:none;padding:12px 14px;border-radius:14px;font-weight:800;color:var(--navy)}nav a:hover{background:#eef3ff}.main{padding:28px;max-width:1500px;width:100%}.mobilebar{display:none}.flashwrap{margin-bottom:16px}.flash{padding:13px 16px;border-radius:14px;margin-bottom:8px;border:1px solid var(--line);font-weight:800;background:white}.flash.good{background:#ecfdf3;color:var(--green)}.flash.warning{background:#fff7e6;color:var(--amber)}.flash.danger{background:#fff1f0;color:var(--red)}.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#fff,rgba(255,255,255,.76));border:1px solid var(--line);border-radius:26px;padding:24px;margin-bottom:18px;box-shadow:0 18px 45px rgba(15,23,42,.08)}.page-head h1{font-size:34px;margin:4px 0;color:var(--navy)}.page-head p{margin:0;color:var(--muted)}.eyebrow{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-weight:900;color:var(--cyan)}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;color:var(--navy);text-decoration:none;border-radius:14px;padding:11px 16px;font-weight:900;cursor:pointer;min-height:42px}.btn.primary{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;border:0}.btn.warning{background:#fff7e6;color:#8a5b00;border-color:#f0d18a}.btn.small{padding:8px 11px;min-height:auto;font-size:13px}.btn.big{min-height:58px;font-size:18px}.fullbtn{width:100%;margin-top:12px}.dash-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}.metric-card{background:white;border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:0 14px 35px rgba(15,23,42,.06)}.metric-card span{display:block;color:var(--muted);font-size:13px;font-weight:800}.metric-card strong{display:block;color:var(--navy);font-size:30px;margin-top:5px;word-break:break-word}.metric-card.available strong,.good{color:var(--green)}.metric-card.out strong,.warning{color:var(--amber)}.metric-card.service strong,.metric-card.overdue strong,.danger{color:var(--red)}.smart-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}.glass-card,.panel{background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:24px;padding:20px;box-shadow:0 16px 40px rgba(15,23,42,.07);backdrop-filter:blur(14px)}.weather-card{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,var(--navy),#392dbe);color:#fff;overflow:hidden;position:relative}.weather-card:after{content:"";position:absolute;right:-60px;top:-60px;width:180px;height:180px;border-radius:50%;background:rgba(22,184,242,.32)}.weather-card h2,.weather-card .eyebrow{color:#fff}.weather-card p{opacity:.9}.weather-big{font-size:58px;font-weight:900;z-index:1}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.section-head h2{margin:.2em 0}.mini-predictions{display:grid;gap:10px}.mini-predictions div,.timeline div,.note{border-left:4px solid var(--cyan);padding:10px 12px;background:#f8fbff;border-radius:12px}.mini-predictions b,.mini-predictions span,.mini-predictions small,.timeline b,.timeline span,.timeline small{display:block}.mini-predictions small,.timeline small{color:var(--muted)}.note-form{display:grid;grid-template-columns:1fr;gap:8px;margin:12px 0}.notes-list{display:grid;gap:10px}.note{display:flex;justify-content:space-between;gap:10px}.note p{margin:4px 0}.ghost-btn{border:0;background:#edf2ff;border-radius:50%;width:30px;height:30px;cursor:pointer;font-weight:900;color:var(--navy)}.attention-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.attention-list li{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:10px}.filterbar{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;margin:18px 0}.equipment-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.equipment-card{background:white;border:1px solid var(--line);border-radius:24px;overflow:hidden;box-shadow:0 16px 40px rgba(15,23,42,.07);transition:.18s}.equipment-card:hover{transform:translateY(-2px);box-shadow:0 20px 50px rgba(15,23,42,.11)}.photo{position:relative;display:block;height:170px;background:#eef4ff;overflow:hidden;text-decoration:none}.photo img{width:100%;height:100%;object-fit:cover}.photo-placeholder{width:100%;height:100%;display:grid;place-items:center;font-size:56px;background:linear-gradient(135deg,#eef4ff,#fff)}.photo-placeholder.large{height:320px}.status-tag{position:absolute;top:12px;right:12px;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;background:white;color:var(--navy);box-shadow:0 8px 22px rgba(0,0,0,.15)}.status-tag.available{color:var(--green)}.status-tag.out{color:var(--amber)}.status-tag.service{color:var(--red)}.equipment-body{padding:16px}.equipment-title{display:flex;justify-content:space-between;gap:10px}.equipment-title strong{color:var(--navy)}.equipment-title span,.equipment-body p,.card-meta{color:var(--muted)}.card-meta{display:grid;gap:6px;font-size:13px}.card-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.pill{display:inline-block;border-radius:999px;padding:6px 10px;font-weight:900;font-size:12px;background:#eef3ff;color:var(--navy)}.pill.good{background:#ecfdf3}.pill.warning{background:#fff7e6}.pill.danger{background:#fff1f0}.pill.neutral{color:var(--muted)}input,select,textarea{width:100%;padding:12px 13px;border-radius:14px;border:1px solid var(--line);font:inherit;background:white}label{display:block;color:var(--navy);font-weight:900;margin-bottom:6px}.gridform{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.gridform .full{grid-column:1/-1}.actions{display:flex;gap:10px;flex-wrap:wrap}.stack-form{display:grid;gap:10px}.auth-card{max-width:480px;margin:8vh auto;background:white;border:1px solid var(--line);border-radius:28px;padding:28px;box-shadow:0 20px 60px rgba(15,23,42,.12)}.auth-brand{text-align:center;margin-bottom:18px}.auth-brand img{max-width:280px;width:100%}.auth-brand h1{color:var(--navy);margin:14px 0 4px}.auth-link{text-align:center;color:var(--muted)}.asset-hero{display:grid;grid-template-columns:360px 1fr;gap:20px;background:white;border:1px solid var(--line);border-radius:28px;padding:20px;margin-bottom:18px}.asset-photo{border-radius:22px;overflow:hidden;background:#eef4ff}.asset-photo img{width:100%;height:320px;object-fit:cover}.asset-info h1{font-size:40px;color:var(--navy);margin:8px 0}.asset-note{background:#f8fbff;border-left:4px solid var(--cyan);padding:12px;border-radius:12px}.asset-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.qrbox{display:flex;gap:16px;align-items:center;background:#f8fbff;border:1px dashed #aebfee;border-radius:18px;padding:14px}.qrbox img{width:160px;height:160px}.scan-page{display:grid;grid-template-columns:380px 1fr;gap:20px;background:white;border:1px solid var(--line);border-radius:28px;padding:20px;box-shadow:0 16px 45px rgba(15,23,42,.08)}.scan-photo{border-radius:24px;overflow:hidden;background:#eef4ff}.scan-photo img{width:100%;height:100%;min-height:420px;object-fit:cover}.scan-content h1{font-size:38px;color:var(--navy);margin:8px 0}.scan-status{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:18px 0}.scan-status div{background:#f8fbff;border:1px solid var(--line);border-radius:18px;padding:14px}.scan-status span{color:var(--muted);font-size:12px;font-weight:900}.scan-status b{display:block;margin-top:4px}.scan-buttons{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:white;border:1px solid var(--line)}th{background:var(--navy);color:white;text-align:left;padding:11px;font-size:13px}td{border-top:1px solid var(--line);padding:11px;vertical-align:top}.person-row{display:grid;grid-template-columns:1fr 1fr 1.2fr 1fr auto auto auto;gap:8px;align-items:center;border-top:1px solid var(--line);padding:10px 0}.check{display:flex;gap:6px;align-items:center;margin:0}.check input{width:auto}.prediction-list{display:grid;gap:18px}.prediction-card{background:white;border:1px solid var(--line);border-radius:26px;padding:20px;box-shadow:0 14px 40px rgba(15,23,42,.07)}.prediction-head{display:flex;justify-content:space-between;gap:12px}.prediction-head h2{color:var(--navy);margin:4px 0}.staff-chip{height:fit-content;background:#eef3ff;color:var(--navy);border-radius:999px;padding:9px 12px;font-weight:900}.kit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-top:14px}.kit-box{background:#f8fbff;border:1px solid var(--line);border-radius:18px;padding:14px}.kit-box h3{margin:0 0 10px;color:var(--navy)}.kit-item{display:block;text-decoration:none;background:white;border:1px solid var(--line);border-radius:14px;padding:10px;margin-top:8px}.kit-item span,.kit-item small{display:block}.kit-item small{color:var(--muted)}.labels{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.label{border:1px solid #222;background:white;padding:10px;display:flex;align-items:center;gap:10px;break-inside:avoid}.label img{width:92px;height:92px}.label b,.label span,.label small{display:block}.label b{font-size:18px;color:var(--navy)}.muted{color:var(--muted)}code,pre{background:#f8fbff;border:1px solid var(--line);border-radius:10px;padding:2px 6px}pre{padding:14px;overflow:auto}.empty-state{grid-column:1/-1;background:white;border:1px solid var(--line);border-radius:24px;padding:30px;text-align:center}
@media(max-width:1000px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.main{padding:16px}.mobilebar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.dash-grid{grid-template-columns:repeat(2,1fr)}.smart-grid,.asset-hero,.scan-page{grid-template-columns:1fr}.filterbar,.gridform,.scan-status,.scan-buttons{grid-template-columns:1fr}.person-row{grid-template-columns:1fr}.weather-big{font-size:44px}.asset-photo img,.scan-photo img{height:260px;min-height:260px}.page-head{align-items:flex-start;flex-direction:column}.labels{grid-template-columns:1fr}}
@media print{.sidebar,.mobilebar,.no-print,.flashwrap{display:none!important}.app-shell{display:block}.main{padding:0}.labels{grid-template-columns:repeat(2,1fr)}.label{page-break-inside:avoid}.panel{box-shadow:none}}


.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.staff-card{background:white;border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:0 16px 40px rgba(15,23,42,.07)}
.staff-top{display:flex;gap:14px;align-items:center}
.avatar.big{width:58px;height:58px;font-size:28px}
.staff-top h2{margin:0;color:var(--navy)}
.staff-top p,.staff-top small{display:block;margin:3px 0;color:var(--muted)}
.staff-badges{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.staff-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
details{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
summary{font-weight:900;color:var(--navy);cursor:pointer}
.job-kit-summary{background:#eef8ff;border:1px solid #bfe9ff;border-left:5px solid var(--cyan);border-radius:16px;padding:12px;margin:14px 0}
.job-kit-summary strong,.job-kit-summary span{display:block}
.job-kit-summary span{color:var(--navy);font-weight:800;margin-top:4px}
.note-form textarea{min-height:70px}
@media(max-width:1000px){.staff-grid{grid-template-columns:1fr}}


/* v5 elegant sidebar */
.sidebar{
  background:rgba(255,255,255,.92);
}
nav{
  gap:4px;
}
nav a{
  font-weight:500;
  font-size:14px;
  letter-spacing:.01em;
  color:#26226f;
  padding:10px 12px;
}
nav a:hover{
  background:#f1f6ff;
  color:var(--navy);
}
.user-card strong{
  font-weight:650;
}
.user-card span{
  font-weight:400;
}
.quiet-head h1{
  font-weight:650;
}

/* v5 equipment-first prediction page */
.equipment-needed-list{
  display:grid;
  gap:18px;
}
.equipment-needed-card{
  background:white;
  border:1px solid var(--line);
  border-radius:26px;
  padding:22px;
  box-shadow:0 14px 40px rgba(15,23,42,.07);
}
.needed-main{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
}
.needed-main h2{
  color:var(--navy);
  font-size:30px;
  margin:4px 0;
  font-weight:700;
}
.tech-line{
  margin:0;
  color:var(--muted);
}
.needed-count{
  background:linear-gradient(135deg,var(--navy),var(--navy2));
  color:white;
  padding:10px 14px;
  border-radius:999px;
  font-weight:650;
  white-space:nowrap;
}
.needed-summary{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:14px 0 4px;
}
.needed-summary span{
  background:#eef8ff;
  border:1px solid #c9eaff;
  color:var(--navy);
  border-radius:999px;
  padding:7px 10px;
  font-size:13px;
  font-weight:650;
}
.needed-equipment-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
  gap:12px;
  margin-top:14px;
}
.needed-box{
  background:#f8fbff;
  border:1px solid var(--line);
  border-radius:18px;
  padding:14px;
}
.needed-box h3{
  margin:0 0 10px;
  color:var(--navy);
  font-size:16px;
  font-weight:700;
}
.needed-item{
  display:block;
  text-decoration:none;
  background:white;
  border:1px solid var(--line);
  border-radius:14px;
  padding:11px;
  margin-top:8px;
}
.needed-item span,.needed-item small{
  display:block;
}
.needed-item span{
  font-weight:650;
  color:var(--ink);
}
.needed-item small{
  margin-top:3px;
  color:var(--muted);
}
.needed-item.available{
  border-left:4px solid var(--green);
}
.needed-item.busy{
  border-left:4px solid var(--amber);
}
.missing-gear{
  color:var(--red);
  font-weight:650;
  margin:0;
}
@media(max-width:1000px){
  .needed-main{flex-direction:column}
  .needed-count{white-space:normal}
}


.vehicle-mini-list{display:grid;gap:10px;margin-top:10px}
.vehicle-mini-list div{border-left:4px solid var(--cyan);background:#f8fbff;border-radius:12px;padding:10px 12px}
.vehicle-mini-list b,.vehicle-mini-list span,.vehicle-mini-list small{display:block}
.vehicle-mini-list small{color:var(--muted)}
.vehicle-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.vehicle-card{background:white;border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:0 16px 40px rgba(15,23,42,.07);display:flex;gap:14px}
.vehicle-icon{width:54px;height:54px;border-radius:18px;background:#eef8ff;display:grid;place-items:center;font-size:28px}
.vehicle-card h2{color:var(--navy);margin:0 0 6px}
.vehicle-card p{color:var(--muted);margin:0 0 10px}
.vehicle-meta{display:grid;gap:4px;color:var(--muted);font-size:13px;margin-bottom:12px}
hr{border:0;border-top:1px solid var(--line);margin:18px 0}


/* v8 vehicle map */
.vehicle-map-panel{
  background:white;
  border:1px solid var(--line);
  border-radius:26px;
  padding:14px;
  box-shadow:0 16px 40px rgba(15,23,42,.07);
  margin-bottom:18px;
}
#vehicleMap{
  width:100%;
  height:520px;
  border-radius:20px;
  overflow:hidden;
}
.leaflet-popup-content{
  font-family:inherit;
}
@media(max-width:800px){
  #vehicleMap{height:420px}
}


/* v9 equipment priority emphasis */
.priority-gear-banner{
  margin:16px 0 12px;
  background:linear-gradient(135deg,#fff7e6,#fff1f0);
  border:2px solid #f4b84a;
  border-left:8px solid var(--amber);
  border-radius:20px;
  padding:16px;
}
.priority-gear-banner strong{
  display:block;
  color:#7a3f00;
  font-size:18px;
  margin-bottom:10px;
}
.priority-gear-banner div{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.priority-gear-banner span,.priority-pill{
  background:#17107A !important;
  color:white !important;
  border-color:#17107A !important;
  font-weight:800 !important;
}
.priority-box{
  border:2px solid #f4b84a !important;
  background:#fffaf0 !important;
  box-shadow:0 12px 28px rgba(183,121,0,.13);
}
.priority-box h3{
  font-size:18px;
}
.priority-box h3 small{
  float:right;
  background:#b77900;
  color:white;
  border-radius:999px;
  padding:3px 7px;
  font-size:10px;
  text-transform:uppercase;
}
.home-needed-card{
  border-left:5px solid var(--cyan);
}
.home-priority{
  color:#8a4d00 !important;
  font-weight:800 !important;
}
.home-map-card #homeVehicleMap{
  width:100%;
  height:330px;
  border-radius:18px;
  overflow:hidden;
  border:1px solid var(--line);
}
.vehicle-map-list{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:10px;
}
.vehicle-map-list span{
  background:#eef8ff;
  color:var(--navy);
  border:1px solid #c9eaff;
  padding:6px 9px;
  border-radius:999px;
  font-size:12px;
  font-weight:650;
}
@media(max-width:800px){
  .home-map-card #homeVehicleMap{height:280px}
}


/* v11 delete equipment */
.inline-delete-form{
  display:inline-block;
  margin:0;
}
.btn.danger{
  background:#dc2626;
  color:white;
  border-color:#dc2626;
}
.btn.danger:hover{
  filter:brightness(.95);
}
.danger-zone{
  border:2px solid #fecaca !important;
  background:#fff7f7 !important;
}
.danger-zone h2{
  color:#991b1b;
}
