/* ==========================================================================
   VKE Plant — minimal polish layer (loaded last, overrides page styles)
   Flat surfaces, hairline borders, one accent, short purposeful motion.
   ========================================================================== */
:root{
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --t-fast:140ms; --t-med:220ms;
  --hair:rgba(255,255,255,.07);
  --hair-2:rgba(255,255,255,.14);
}

/* Buttons ------------------------------------------------------------------ */
.btn{
  min-height:48px;padding:0 20px;border-radius:12px;font-size:14.5px;font-weight:600;letter-spacing:.01em;
  position:relative;overflow:hidden;isolation:isolate;
  transition:background var(--t-med) var(--ease-out),border-color var(--t-med) var(--ease-out),
             color var(--t-med) var(--ease-out),transform var(--t-fast) var(--ease-out),opacity var(--t-med);
}
.btn:active{transform:scale(.985)}
.btn:focus-visible,.chip:focus-visible,.status-btn:focus-visible,.nav-tab:focus-visible,.icon-btn:focus-visible{
  outline:2px solid rgba(var(--accent-rgb),.7);outline-offset:2px}

.btn-primary{
  background:var(--accent);color:#160d02;box-shadow:none;
  border:1px solid rgba(255,255,255,.18);
}
.btn-primary::after{ /* soft sheen that slides in on hover */
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);
  transform:translateX(-120%);transition:transform .7s var(--ease-out);
}
.btn-primary:hover{background:#F0932C;box-shadow:none}
.btn-primary:hover::after{transform:translateX(120%)}

.btn-ghost{background:transparent;border:1px solid var(--hair-2);color:var(--text)}
.btn-ghost:hover{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.24)}
.btn-ok{background:var(--ok);color:#04170f;box-shadow:none;border:1px solid rgba(255,255,255,.18)}
.btn-ok:hover{background:#4FDDA7}
.btn-danger{background:transparent;border:1px solid rgba(var(--stop-rgb),.4);color:#FF9A8C}
.btn-danger:hover{background:rgba(var(--stop-rgb),.1)}
.btn-sm{min-height:36px;padding:0 14px;font-size:13px;border-radius:10px}
.btn svg{width:17px;height:17px;stroke-width:1.8}

.icon-btn{background:transparent;border:1px solid var(--hair);transition:background var(--t-med),border-color var(--t-med),transform var(--t-fast)}
.icon-btn:hover{background:rgba(255,255,255,.05);border-color:var(--hair-2)}
.icon-btn:active{transform:scale(.94)}

/* Chips & segmented controls ----------------------------------------------- */
.chip{
  background:transparent;border:1px solid var(--hair);color:var(--text-2);font-weight:500;
  transition:background var(--t-med) var(--ease-out),border-color var(--t-med) var(--ease-out),
             color var(--t-med),transform var(--t-fast) var(--ease-out);
}
.chip:hover{border-color:var(--hair-2);color:var(--text);background:rgba(255,255,255,.03)}
.chip:active{transform:scale(.97)}
.chip.on{background:rgba(var(--accent-rgb),.12);border-color:rgba(var(--accent-rgb),.7);color:#FFE2BE}

.seg{background:transparent;border:1px solid var(--hair)}
.seg button{transition:background var(--t-med) var(--ease-out),color var(--t-med);font-weight:600}
.seg button.on{background:rgba(255,255,255,.08);color:#fff}

/* Operator status tiles ---------------------------------------------------- */
.status-btn{
  background:rgba(255,255,255,.02);border:1px solid var(--hair);border-radius:14px;
  transition:border-color var(--t-med) var(--ease-out),background var(--t-med) var(--ease-out),transform var(--t-fast) var(--ease-out);
}
.status-btn:hover{border-color:var(--hair-2);background:rgba(255,255,255,.04)}
.status-btn:active{transform:scale(.985)}
.status-btn.active-stop{border-color:var(--stop);background:rgba(var(--stop-rgb),.09);box-shadow:inset 0 0 0 1px rgba(var(--stop-rgb),.5)}
.status-btn.active-limit{border-color:var(--limit);background:rgba(var(--limit-rgb),.09);box-shadow:inset 0 0 0 1px rgba(var(--limit-rgb),.5)}
.status-btn.active-work{border-color:var(--ok);background:rgba(var(--ok-rgb),.09);box-shadow:inset 0 0 0 1px rgba(var(--ok-rgb),.5)}

/* Cards -------------------------------------------------------------------- */
.card,.kpi-card,.case-card,.mach-plate,.feat-box,.app-hero-card,.qr-card,.comp-card,.mission-box,.feedback-card{
  background:rgba(255,255,255,.025);border:1px solid var(--hair);box-shadow:none;
}
.card{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.case-card,.feat-box,.qr-card{transition:border-color var(--t-med) var(--ease-out),background var(--t-med) var(--ease-out),transform var(--t-med) var(--ease-out)}
.case-card:hover,.feat-box:hover,.qr-card:hover{border-color:var(--hair-2);background:rgba(255,255,255,.035);transform:translateY(-2px)}
.mach-plate::before{width:2px;background:var(--accent)}

/* Photo slots & inputs ----------------------------------------------------- */
.photo-slot{background:transparent;border:1px dashed var(--hair-2);transition:border-color var(--t-med),background var(--t-med)}
.photo-slot:hover{border-color:rgba(var(--accent-rgb),.7);background:rgba(var(--accent-rgb),.04)}
.input,.textarea,.select{border:1px solid var(--hair);background:rgba(8,9,15,.55);transition:border-color var(--t-med),box-shadow var(--t-med)}
.input:focus,.textarea:focus,.select:focus{border-color:rgba(var(--accent-rgb),.7);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.12)}

/* Manager tabs: underline indicator instead of filled pill ---------------- */
.mgr-nav{gap:4px}
.nav-tab{
  border:0;border-radius:8px;background:transparent;color:var(--text-3);font-weight:600;position:relative;
  transition:color var(--t-med),background var(--t-med);
}
.nav-tab::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-15px;height:2px;border-radius:2px;
  background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform var(--t-med) var(--ease-out);
}
.nav-tab:hover{background:rgba(255,255,255,.03);color:var(--text)}
.nav-tab.active{background:transparent;border:0;color:#fff}
.nav-tab.active::after{transform:scaleX(1)}

/* Tester pill: quiet glass chip instead of a loud orange button ------------ */
.tester-pill{
  background:rgba(16,18,27,.82);color:var(--text);border:1px solid var(--hair-2);box-shadow:0 8px 24px -10px rgba(0,0,0,.7);
  padding:9px 14px;font-weight:600;font-size:12.5px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.tester-pill:hover{transform:translateY(-1px);box-shadow:0 10px 28px -10px rgba(0,0,0,.8);border-color:rgba(var(--accent-rgb),.6)}
.tester-pill .live-dot{background:var(--accent);animation:pulse-dot 2.4s infinite}
@keyframes pulse-dot{0%{box-shadow:0 0 0 0 rgba(var(--accent-rgb),.55)}70%{box-shadow:0 0 0 6px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* Sheets, toasts, entrance motion ----------------------------------------- */
.sheet{border-color:var(--hair-2);animation:sheet-up .3s var(--ease-out)}
.toast{border:1px solid var(--hair-2);animation:toast-in .28s var(--ease-out)}
.reveal{animation-duration:.45s;animation-timing-function:var(--ease-out)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes sheet-up{from{transform:translateY(24px);opacity:.5}to{transform:none;opacity:1}}

/* Star rating -------------------------------------------------------------- */
.star-btn{transition:color var(--t-fast),transform var(--t-fast) var(--ease-out)}
.star-btn:hover,.star-btn.active{transform:scale(1.08)}

/* Presentation deck -------------------------------------------------------- */
.deck-dot{transition:width var(--t-med) var(--ease-out),background var(--t-med)}
.deck-dot.active{box-shadow:none}
.slide{animation-duration:.35s}
@keyframes slide-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Only apply hover motion on devices that can hover (no sticky hover on phones) */
@media (hover:none){
  .btn-primary:hover{background:var(--accent)}
  .btn-primary:hover::after{transform:translateX(-120%)}
  .case-card:hover,.feat-box:hover,.qr-card:hover{transform:none}
}
@media (prefers-reduced-motion:reduce){
  .btn-primary::after{display:none}
}

/* ---- Fix: category picker as a tidy tile grid -------------------------- */
#categoryChips{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
@media (min-width:520px){#categoryChips{grid-template-columns:repeat(4,1fr)}}
#categoryChips .chip{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:14px;
  min-height:84px;padding:14px;border-radius:14px;text-align:left;font-size:13.5px;font-weight:600;line-height:1.25;
  color:var(--text-2);white-space:normal;
}
#categoryChips .chip svg{width:24px;height:24px;flex:none;stroke-width:1.6;color:var(--text-3);transition:color var(--t-med)}
#categoryChips .chip:hover svg{color:var(--text-2)}
#categoryChips .chip.on{color:#fff}
#categoryChips .chip.on svg{color:var(--accent)}

/* ---- Fix: no broken-image icon in empty photo slots -------------------- */
.photo-slot:not(.has-img) img{display:none}
.photo-slot .ph-icon svg{width:22px;height:22px}

/* ---- Fix: tidy step headings, keep content clear of floating button ---- */
.eyebrow{letter-spacing:.14em;font-size:10.5px}
.app-container{padding-bottom:calc(96px + var(--safe-b))!important}
.tester-pill{bottom:calc(14px + var(--safe-b));right:14px}
.mach-id{font-size:19px}

/* ---- Fix: links styled as buttons, tab bar scrollbar & underline ------- */
a.btn,a.btn:hover,a.icon-btn{text-decoration:none}
.mgr-nav{padding-bottom:0;gap:2px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.mgr-nav::-webkit-scrollbar{display:none}
.nav-tab{padding:12px 14px;border-radius:8px 8px 0 0}
.nav-tab::after{bottom:-1px;left:10px;right:10px}
.nav-tab .tab-badge{background:rgba(255,255,255,.08);font-weight:600}
.filter-bar .btn{min-height:44px}

/* ---- Fix: Mobile layout perfection & responsiveness ------------------- */
.mach-plate > div:first-child{flex:1;min-width:0}
.mach-plate .btn{flex-shrink:0}
.mach-plate .mono{word-break:break-all}
@media (max-width: 480px) {
  .mach-plate{padding:14px}
  .mach-id{font-size:18px}
  .case-hdr{flex-direction:column;gap:6px}
  .case-hdr > div:last-child{text-align:left!important}
  .filter-bar{flex-direction:column;align-items:stretch}
  .filter-bar .seg{width:100%;display:flex}
  .filter-bar .seg button{flex:1}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:10px}
  .kpi-val{font-size:24px}
}

/* Enterprise field usability — shared across all five workspaces. */
:root{
 --bg:#0B0C10;--accent:#F59E0B;--accent-rgb:245,158,11;--accent-2:#FFC45C;
 --stop:#FF3B30;--stop-rgb:255,59,48;--ok:#10B981;--ok-rgb:16,185,129;
 --text:#F3F5F9;--text-2:#BDC5D3;--text-3:#9AA6B8;--border:rgba(255,255,255,.12);
 --surface-solid:#141820;
}
body{line-height:1.5;letter-spacing:.002em}
main,section,header,nav,article,.card,.sheet,.field,.brand,.case-hdr>div,.setup-layout>*{min-width:0}
h1,h2,h3,p,.badge,.site-code-pill,.site-pin-tag,.mach-name,.brand-txt,.case-body,.bubble{overflow-wrap:anywhere}
.mono,.num,.badge,.kpi-val,.hub-kpi-value,.pin-dot,time,input[inputmode="numeric"]{font-variant-numeric:tabular-nums}
:focus-visible{outline:3px solid #FFC45C!important;outline-offset:3px}
button,.btn,.btn-sm,.icon-btn,.chip[onclick],.chip[data-sub-index],.seg button,.nav-tab,.hub-tab,.key-btn,.pin-key,.btn-print{min-height:48px!important}
.icon-btn,.key-btn,.pin-key{min-width:48px}
.btn{white-space:normal;text-align:center;line-height:1.25;padding-block:10px;max-width:100%;height:auto}
.btn>svg{flex:none}
button:disabled,[aria-disabled="true"]{cursor:wait;opacity:.5}
.input,.textarea,select{min-height:48px;max-width:100%;font-size:16px!important}
textarea{resize:vertical;line-height:1.5}
.card,.site-card,.case-card{border-color:var(--border);box-shadow:0 8px 28px rgba(0,0,0,.16)}
.card-pad{padding:20px}
.badge{display:inline-flex;align-items:center;gap:5px;line-height:1.35;vertical-align:middle;max-width:100%;white-space:normal}
.b-stop{color:#FFB0A9!important}.b-ok{color:#73E7BC!important}.b-limit{color:#FFD38B!important}
.case-title,.case-meta-row,.case-actions,.chips,.toolbar-actions{flex-wrap:wrap;gap:8px}
#fleetTableContainer{overflow-x:auto;overscroll-behavior-inline:contain;max-width:100%}
#fleetTableContainer table{min-width:680px}
.sheet{max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(24px + var(--safe-b))}
.pin-overlay{overflow-y:auto;padding:20px 12px!important;overscroll-behavior:contain}
.pin-card{width:min(100%,360px)!important;max-width:100%;margin:auto}
.toast{overflow-wrap:anywhere;max-width:calc(100vw - 24px)}
[role="button"]{cursor:pointer;touch-action:manipulation}
.sites-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.setup-layout{grid-template-columns:minmax(0,1fr) minmax(0,480px)}
.row2,.row-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.skip-link{position:fixed;left:12px;top:-100px;padding:12px;background:#F59E0B;color:#111;z-index:10000}
.skip-link:focus{top:12px}
.sync-banner{margin:12px 0;padding:12px 14px;border:1px solid rgba(245,158,11,.4);border-radius:12px;background:rgba(245,158,11,.08);font-size:13px;color:#FFD38B}
@media(max-width:1080px){.setup-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){
 .topbar,.setup-header,.toolbar{flex-wrap:wrap;gap:8px;padding-inline:12px;max-width:100%}
 .topbar .brand{flex:1 1 160px}.brand-txt{overflow:visible}.brand-txt b,.brand-txt span{white-space:normal;overflow:visible;text-overflow:clip;letter-spacing:normal}
 .mgr-container,.hub-container,.app-container,.stickers-container{padding-inline:12px!important;max-width:100%}
 .hub-kpi-grid,.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .hub-tabs,.mgr-nav{display:flex;flex-wrap:wrap;overflow:visible}
 .hub-tab,.nav-tab{flex:1 1 130px;white-space:normal}
 .row2,.row-2{grid-template-columns:minmax(0,1fr)}
 .card-pad{padding:16px}.sheet{padding-inline:16px;width:100%}
 .setup-header .header-actions,.toolbar-actions{display:flex;flex-wrap:wrap;width:100%}
 .setup-layout{height:auto!important;min-height:calc(100dvh - 100px)}
 .bubble{max-width:100%;padding:12px}
 .sites-grid,.sticker-grid,.stickers-grid{grid-template-columns:minmax(0,1fr)}
 #tabCloudflare>div[style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
 .sheet>div>div[style*="grid-template-columns:140px"]{grid-template-columns:minmax(0,1fr)!important}
 .case-actions .btn{flex:1 1 120px}
 .pin-card{padding:20px!important}
}
@media(prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
 .blob{will-change:auto!important}
}
@media print{
 .skip-link,.sync-banner,.tester-pill,#toasts{display:none!important}
 .sticker-card{box-shadow:none!important;break-inside:avoid}
 .badge{color:#111!important;border-color:#777!important}
}

.ui-icon{display:inline-flex;width:18px;height:18px;flex:0 0 18px;vertical-align:-3px;align-items:center;justify-content:center;color:currentColor}
.ui-icon svg{width:100%;height:100%;stroke-width:1.8}
.vke-dialog{position:fixed;inset:0;margin:auto;width:min(760px,calc(100% - 24px));max-width:calc(100% - 24px);max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--border);border-radius:20px;background:var(--surface-solid);color:var(--text);box-shadow:0 24px 80px rgba(0,0,0,.6);overflow:auto}
.vke-dialog::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}
.vke-dialog .sheet{border:0;border-radius:0;width:100%;margin:0;max-width:none;position:relative;padding-top:24px}
.sheet-close{float:right;display:grid;place-items:center;margin:0 0 12px 12px;border-radius:10px}
.sheet-close svg{width:20px;height:20px}
@media(prefers-reduced-motion:reduce){.vke-dialog::backdrop{backdrop-filter:none}}
.sync-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.sync-banner[hidden]{display:none}
.sync-banner>span{flex:1 1 220px}
body{font-variant-numeric:tabular-nums}
button,.btn,[role="button"]{min-inline-size:48px}
