/* ==========================================================================
   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}
}
