.agv-card-clickable{cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.agv-card-clickable:hover,.agv-card-clickable:focus-visible{border-color:#a8c85b;box-shadow:0 10px 24px rgba(39,55,39,.08);transform:translateY(-2px);outline:none}.agv-card-clickable:focus-visible{outline:2px solid #9ebc45;outline-offset:3px}.agv-fleet-detail .back-link,.agv-member-detail .back-link{display:block;border:0;background:transparent;color:#6c7e27;padding:0;margin:0 0 12px;font:500 10px 'DM Mono',monospace;cursor:pointer;text-align:left}.agv-fleet-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.agv-fleet-summary>div{padding-right:14px;border-right:1px solid #edf0e9}.agv-fleet-summary>div:last-child{border-right:0}.agv-fleet-summary span,.agv-member-kpis span{display:block;color:#96a09b;font:500 9px 'DM Mono',monospace;letter-spacing:.06em}.agv-fleet-summary strong{display:block;font:500 25px 'Space Grotesk',sans-serif;margin:8px 0 3px}.agv-fleet-summary small,.agv-member-kpis small{color:#84902a;font-size:10px}.agv-member-list{display:grid;gap:7px}.agv-member-row{display:grid;grid-template-columns:34px minmax(0,1fr) 70px 130px 18px;align-items:center;gap:12px;width:100%;border:1px solid #edf0e9;background:#fbfcfa;border-radius:7px;padding:11px 12px;text-align:left;cursor:pointer;color:#303837;transition:background .15s ease,border-color .15s ease,transform .15s ease}.agv-member-row:hover,.agv-member-row:focus-visible{background:#f5f8ec;border-color:#bbd477;transform:translateX(2px);outline:none}.agv-member-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#dfff86;color:#4d6818;font:600 11px 'Space Grotesk',sans-serif}.agv-member-copy strong,.agv-member-copy small,.agv-member-health strong,.agv-member-health small{display:block}.agv-member-copy strong{font:600 12px 'Space Grotesk',sans-serif}.agv-member-copy small,.agv-member-health small{color:#8c9791;font-size:10px;margin-top:3px}.agv-member-health{text-align:right}.agv-member-health strong{font:600 16px 'Space Grotesk',sans-serif;color:#526b1e}.agv-detail-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:12px}.agv-member-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-top:1px solid #edf0e9;border-bottom:1px solid #edf0e9;padding:16px 0}.agv-member-kpis strong{display:block;font:500 22px 'Space Grotesk',sans-serif;margin:8px 0 2px}.agv-detail-section{padding-top:17px}.agv-readiness-list{display:grid;gap:0;margin-bottom:18px}.agv-readiness-list div{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #edf0e9}.agv-readiness-list span{color:#8c9791;font-size:10px}.agv-readiness-list strong{font:600 11px 'Space Grotesk',sans-serif;text-align:right}.agv-card-clickable .agv-panel-header button,.agv-card-clickable .agv-parts-panel{position:relative;z-index:1}@media (max-width:800px){.agv-fleet-summary,.agv-detail-grid{grid-template-columns:1fr 1fr}.agv-member-row{grid-template-columns:34px minmax(0,1fr) 55px 18px}.agv-member-row>.state-pill{display:none}}@media (max-width:560px){.agv-fleet-summary,.agv-detail-grid{grid-template-columns:1fr}.agv-member-kpis{grid-template-columns:1fr 1fr}.agv-member-row{grid-template-columns:30px minmax(0,1fr) 45px 18px;gap:8px;padding:9px}.agv-member-avatar{width:27px;height:27px}}
.agv-kind-pill{font:500 10px 'DM Mono',monospace;border-radius:10px;padding:5px 8px;white-space:nowrap}.agv-kind-mobile{color:#4d6818;background:#eef6d8;border:1px solid #d7e8ab}.agv-kind-arm{color:#2b5f8a;background:#e4f0fa;border:1px solid #bcdcf2}.agv-kind-humanoid{color:#7a3f9d;background:#f3e8fb;border:1px solid #e0c3f2}
.agv-carousel-heading{display:flex;align-items:center;justify-content:space-between;margin:4px 0 12px}.agv-carousel-heading h3{font:600 14px 'Space Grotesk',sans-serif;margin:0}.agv-carousel-actions{display:flex;align-items:center;gap:6px}.agv-carousel-button{display:grid;place-items:center;width:30px;height:30px;padding:0;font-size:14px}.agv-fleet-carousel,.agv-member-carousel{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:3px 3px 14px;scrollbar-width:thin}.agv-fleet-carousel>.agv-card{flex:0 0 min(440px,calc(78vw));scroll-snap-align:start}.agv-member-carousel>.agv-member-row{flex:0 0 min(440px,calc(78vw));scroll-snap-align:start}.agv-fleet-carousel::-webkit-scrollbar,.agv-member-carousel::-webkit-scrollbar{height:5px}.agv-fleet-carousel::-webkit-scrollbar-thumb,.agv-member-carousel::-webkit-scrollbar-thumb{background:#cad6a7;border-radius:10px}.agv-card-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.agv-member-carousel .agv-member-row{width:auto}.agv-member-carousel .agv-member-row:hover,.agv-member-carousel .agv-member-row:focus-visible{transform:translateY(-2px)}

/* ---- Fleet view layout: "Add a robot or fleet" form + fleet selector ----
   These classes were previously used in app.js's renderAgvView() markup
   with NO corresponding CSS anywhere in the codebase (confirmed by a
   full-repo search), so every element below rendered as bare, unstyled
   HTML -- cramped inline labels/inputs and plain unbordered text where a
   card was intended. Everything in this block is new visual styling only;
   no class names, markup structure, or data-action attributes were
   changed, so no click handler/behavior in app.js is affected. */
.agv-layout{display:grid;grid-template-columns:340px minmax(0,1fr);align-items:start;gap:16px}
.agv-list-panel{min-width:0}
.agv-form-grid{display:grid;gap:14px;margin-bottom:16px}
.agv-form-grid label{display:flex;flex-direction:column;gap:6px;font:500 12px 'Space Grotesk',sans-serif;color:#303837}
.agv-form-grid input,.agv-form-grid select{width:100%;box-sizing:border-box;padding:10px 11px;border:1px solid #d7ded4;background:#fbfcfa;color:#303837;border-radius:6px;font:inherit;min-height:42px}
.agv-form-grid input:focus,.agv-form-grid select:focus{outline:2px solid #9ebc45;outline-offset:2px}
@media (max-width:900px){.agv-layout{grid-template-columns:1fr}}

/* ---- Individual fleet card (name, kind/status pills, indicators,
   AI sub-assembly tree, parts list) -- the second screenshot's "terrible"
   view was this card rendering with no border/padding/spacing at all. */
.agv-card{display:flex;flex-direction:column;gap:14px;border:1px solid #e7e9e3;border-radius:9px;background:#fff;padding:16px;box-shadow:0 1px 2px rgba(27,45,35,.05)}
.agv-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.agv-card-header h3{margin:2px 0 0;font:600 16px 'Space Grotesk',sans-serif;color:#1c2624}
.agv-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:#8c9791;font-size:11px}
.agv-meta-row span:nth-child(2n){color:#c7d0c5}
.agv-indicators{display:flex;flex-wrap:wrap;gap:6px}
.agv-indicators span{font:500 10px 'DM Mono',monospace;letter-spacing:.02em;padding:5px 9px;border-radius:20px;background:#f6f8f4;border:1px solid #e7e9e3;color:#5f6d67}
.agv-assembly-panel,.agv-parts-panel{border-top:1px solid #edf0e9;padding-top:14px}
.agv-panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.agv-panel-header strong{font:600 12px 'Space Grotesk',sans-serif;color:#1c2624}
.agv-assembly-tree{display:grid;gap:2px;font-size:12px}
.agv-assembly-node{display:flex;align-items:center;gap:7px;padding:4px 0;color:#303837}
.agv-assembly-node strong{font:600 12px 'Space Grotesk',sans-serif}
.agv-assembly-leaf{display:flex;align-items:center;gap:7px;padding:3px 0;color:#8c9791;font-size:11px}
.agv-node-bullet{flex:0 0 auto;color:#8aa84a;font-size:11px}
.agv-parts-list{display:grid;gap:8px}
.agv-parts-list.closed{display:none}
.agv-part-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid #edf0e9;border-radius:7px;background:#fbfcfa}
.agv-part-row strong{display:block;font:600 12px 'Space Grotesk',sans-serif;color:#303837}
.agv-part-row small{display:block;color:#8c9791;font-size:10px;margin-top:2px}
.agv-part-qty{font:500 11px 'DM Mono',monospace;color:#8c9791;white-space:nowrap}
.agv-part-criticality{font:500 10px 'DM Mono',monospace;padding:4px 9px;border-radius:10px;white-space:nowrap}
.agv-part-criticality.critical{color:#9d3f36;background:#ffe8e2}
.agv-part-criticality.high{color:#8c5915;background:#fff3d9}
.agv-part-criticality.medium{color:#25756d;background:#e6f4ef}
@media (max-width:560px){.agv-part-row{grid-template-columns:1fr;justify-items:start;gap:6px}}
