/* =========================
   ZAPP MASTER PORTAL (Scoped)
   Two-pane UI
   ========================= */

/* Hard scope: never leak to theme */
#zapp-portal-root,
#zapp-portal-root * {
  box-sizing: border-box !important;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, "Apple Color Emoji", "Segoe UI Emoji" !important;
}

/* Prevent theme weirdness */
#zapp-portal-root,
#zapp-portal-root * {
  opacity: 1 !important;
  filter: none !important;
  mix-blend-mode: normal !important;
  text-shadow: none !important;
}

/* Root wrapper */
#zapp-portal-root {
  display: block !important;
  width: 100% !important;
  overflow: visible !important;
  clip-path: none !important;
  -webkit-clip-path: none !important;
  mask: none !important;
  -webkit-mask: none !important;
}

#zapp-portal-root .zapp-portal-wrap {
  max-width: 1200px !important;
  width: 100% !important;
  margin: 26px auto !important;
  padding: 0 14px !important;
}

/* =========================
   DEFAULT THEME = DARK
   ========================= */

#zapp-portal-root .zapp-shell{
  --zbg0:#05060a; --zbg1:#070a12;
  --card:rgba(255,255,255,.06);
  --stroke:rgba(255,255,255,.10);
  --text:#eaf0ff;
  --muted:rgba(234,240,255,.70);
  --muted2:rgba(234,240,255,.55);
  --shadow:0 18px 60px rgba(0,0,0,.55);
  --r:26px;

  color:var(--text) !important;
  background:
    radial-gradient(1200px 700px at 10% 0%, rgba(99,102,241,.22), transparent 55%),
    radial-gradient(1100px 700px at 90% 10%, rgba(34,211,238,.18), transparent 55%),
    radial-gradient(1000px 600px at 30% 100%, rgba(168,85,247,.16), transparent 55%),
    linear-gradient(180deg, var(--zbg0), var(--zbg1)) !important;
  border:1px solid rgba(255,255,255,.08) !important;
  border-radius: 28px !important;
  box-shadow: var(--shadow) !important;
  overflow:hidden !important;
}

/* Top header */
#zapp-portal-root .zapp-top{
  padding: 18px 18px 10px !important;
  display:flex !important;
  justify-content:space-between !important;
  align-items:flex-end !important;
  gap:14px !important;
  flex-wrap:wrap !important;
}
#zapp-portal-root .zapp-title{
  margin:0 !important;
  font-size:28px !important;
  font-weight:900 !important;
  letter-spacing:.2px !important;
}
#zapp-portal-root .zapp-sub{
  margin-top:8px !important;
  font-size:13px !important;
  line-height:1.5 !important;
  color:var(--muted) !important;
}

#zapp-portal-root .zapp-pills{
  display:flex !important;
  gap:10px !important;
  flex-wrap:wrap !important;
  align-items:center !important;
}
#zapp-portal-root .z-pill{
  display:inline-flex !important;
  gap:8px !important;
  align-items:center !important;
  padding:9px 12px !important;
  border-radius:999px !important;
  background:rgba(255,255,255,.06) !important;
  border:1px solid rgba(255,255,255,.12) !important;
  color:var(--text) !important;
  font-size:12px !important;
  backdrop-filter: blur(14px) !important;
  -webkit-backdrop-filter: blur(14px) !important;
}
#zapp-portal-root .z-pill .dot{
  width:8px !important;
  height:8px !important;
  border-radius:999px !important;
  background:rgba(255,255,255,.70) !important;
  box-shadow:0 0 0 3px rgba(255,255,255,.10) !important;
}

/* Layout */
#zapp-portal-root .zapp-body{
  display:grid !important;
  grid-template-columns: 420px 1fr !important;
  min-height: 560px !important;
  border-top:1px solid rgba(255,255,255,.08) !important;
}

/* Left pane */
#zapp-portal-root .z-left{
  padding: 16px !important;
  background: rgba(0,0,0,.15) !important;
  border-right:1px solid rgba(255,255,255,.08) !important;
}
#zapp-portal-root .z-search{
  width:100% !important;
  padding: 12px 12px !important;
  border-radius: 14px !important;
  border:1px solid rgba(255,255,255,.14) !important;
  background: rgba(255,255,255,.06) !important;
  color: var(--text) !important;
  outline: none !important;
}
#zapp-portal-root .z-search::placeholder{
  color: rgba(234,240,255,.55) !important;
}

/* List */
#zapp-portal-root .z-list{
  margin-top:12px !important;
  display:flex !important;
  flex-direction:column !important;
  gap:10px !important;
  max-height: 520px !important;
  overflow:auto !important;
  padding-right: 6px !important;
}
#zapp-portal-root .z-list::-webkit-scrollbar{ width: 8px; }
#zapp-portal-root .z-list::-webkit-scrollbar-thumb{
  background: rgba(255,255,255,.10);
  border-radius: 999px;
}

#zapp-portal-root .z-item{
  padding: 12px !important;
  border-radius: 18px !important;
  border:1px solid rgba(255,255,255,.12) !important;
  background: rgba(255,255,255,.06) !important;
  cursor:pointer !important;
  transition: transform .12s ease, border-color .12s ease, background .12s ease !important;
}
#zapp-portal-root .z-item:hover{
  transform: translateY(-1px) !important;
  border-color: rgba(255,255,255,.20) !important;
}
#zapp-portal-root .z-item.is-active{
  background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06)) !important;
  border-color: rgba(99,102,241,.40) !important;
  box-shadow: 0 12px 35px rgba(0,0,0,.35) !important;
}

#zapp-portal-root .z-uid{
  font-weight:900 !important;
  letter-spacing:.25px !important;
  font-size:13px !important;
}
#zapp-portal-root .z-meta{
  margin-top:6px !important;
  font-size:12px !important;
  color: var(--muted) !important;
  display:flex !important;
  gap:10px !important;
  flex-wrap:wrap !important;
}

/* Badges */
#zapp-portal-root .z-badge{
  display:inline-flex !important;
  align-items:center !important;
  gap:7px !important;
  padding: 7px 10px !important;
  border-radius:999px !important;
  font-size:12px !important;
  border:1px solid rgba(255,255,255,.16) !important;
  background: rgba(255,255,255,.06) !important;
}
#zapp-portal-root .z-badge .dot{
  width:8px !important;
  height:8px !important;
  border-radius:999px !important;
  background:rgba(255,255,255,.70) !important;
}
#zapp-portal-root .z-badge.good{ border-color: rgba(16,185,129,.45) !important; background: rgba(16,185,129,.12) !important; }
#zapp-portal-root .z-badge.warn{ border-color: rgba(245,158,11,.55) !important; background: rgba(245,158,11,.12) !important; }
#zapp-portal-root .z-badge.bad{ border-color: rgba(239,68,68,.55) !important; background: rgba(239,68,68,.12) !important; }
#zapp-portal-root .z-badge.neutral{ border-color: rgba(148,163,184,.35) !important; background: rgba(148,163,184,.12) !important; }

/* Right pane */
#zapp-portal-root .z-right{ padding: 18px !important; }

#zapp-portal-root .z-detail{
  border:1px solid rgba(255,255,255,.10) !important;
  background: rgba(255,255,255,.06) !important;
  border-radius: 22px !important;
  padding: 16px !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
}
#zapp-portal-root .z-detail h3{
  margin:0 0 8px 0 !important;
  font-size:16px !important;
}
#zapp-portal-root .z-detail .muted{
  color: var(--muted) !important;
  font-size:12px !important;
  line-height:1.55 !important;
}

/* Key-value grid */
#zapp-portal-root .z-kv{
  display:grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap:12px !important;
  margin-top:14px !important;
}
#zapp-portal-root .z-kv .box{
  border:1px solid rgba(255,255,255,.12) !important;
  background: rgba(0,0,0,.14) !important;
  border-radius: 16px !important;
  padding: 12px !important;
}
#zapp-portal-root .z-kv .k{
  color: var(--muted2) !important;
  font-size:12px !important;
}
#zapp-portal-root .z-kv .v{
  margin-top:6px !important;
  font-weight:650 !important;
  font-size:13px !important;
  word-break:break-word !important;
}

/* Files */
#zapp-portal-root .z-files{
  margin-top:14px !important;
  display:flex !important;
  gap:10px !important;
  flex-wrap:wrap !important;
}
#zapp-portal-root .z-file{
  display:inline-flex !important;
  gap:8px !important;
  align-items:center !important;
  padding:10px 12px !important;
  border-radius:999px !important;
  background: rgba(255,255,255,.06) !important;
  border:1px solid rgba(255,255,255,.14) !important;
  color: var(--text) !important;
  text-decoration:none !important;
  font-size:12px !important;
}
#zapp-portal-root .z-file:hover{
  border-color: rgba(255,255,255,.22) !important;
}

#zapp-portal-root .z-empty{
  padding: 16px !important;
  border:1px dashed rgba(255,255,255,.20) !important;
  background: rgba(255,255,255,.05) !important;
  border-radius: 18px !important;
  color: var(--muted) !important;
  text-align:center !important;
}

/* =========================
   Progress bar + timeline
   ========================= */

#zapp-portal-root .z-headrow{
  display:flex !important;
  justify-content:space-between !important;
  align-items:flex-start !important;
  gap:14px !important;
  flex-wrap:wrap !important;
}

#zapp-portal-root .z-h-title{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
}

#zapp-portal-root .z-formtitle{
  font-size:14px !important;
  color: rgba(234,240,255,.78) !important;
}

#zapp-portal-root .z-shortuid{
  font-weight:900 !important;
  letter-spacing:.35px !important;
  font-size:18px !important;
}

#zapp-portal-root .z-copy{
  display:inline-flex !important;
  align-items:center !important;
  gap:8px !important;
  padding:8px 12px !important;
  border-radius:999px !important;
  border:1px solid rgba(255,255,255,.14) !important;
  background: rgba(255,255,255,.06) !important;
  color: var(--text) !important;
  text-decoration:none !important;
  font-size:12px !important;
}

#zapp-portal-root .z-copy:hover{
  border-color: rgba(255,255,255,.22) !important;
}

#zapp-portal-root .z-progress{
  margin-top:14px !important;
  border:1px solid rgba(255,255,255,.12) !important;
  background: rgba(0,0,0,.14) !important;
  border-radius: 18px !important;
  padding: 12px !important;
}

#zapp-portal-root .z-steps{
  display:grid !important;
  grid-template-columns:1fr 1fr 1fr !important;
  gap:10px !important;
}

#zapp-portal-root .z-step{
  position:relative !important;
  border:1px solid rgba(255,255,255,.12) !important;
  background: rgba(255,255,255,.05) !important;
  border-radius: 16px !important;
  padding: 12px !important;
}

#zapp-portal-root .z-step .t{
  font-weight:850 !important;
  font-size:12px !important;
  color: rgba(234,240,255,.86) !important;
}

#zapp-portal-root .z-step .d{
  margin-top:6px !important;
  font-size:12px !important;
  color: rgba(234,240,255,.62) !important;
  line-height:1.5 !important;
}

#zapp-portal-root .z-step.is-done{
  border-color: rgba(16,185,129,.35) !important;
  background: rgba(16,185,129,.10) !important;
}

#zapp-portal-root .z-step.is-live{
  border-color: rgba(245,158,11,.40) !important;
  background: rgba(245,158,11,.10) !important;
}

#zapp-portal-root .z-step.is-bad{
  border-color: rgba(239,68,68,.45) !important;
  background: rgba(239,68,68,.10) !important;
}

/* Timeline */
#zapp-portal-root .z-timeline{
  margin-top:14px !important;
  border:1px solid rgba(255,255,255,.12) !important;
  background: rgba(255,255,255,.05) !important;
  border-radius: 18px !important;
  padding: 12px !important;
}

#zapp-portal-root .z-timeline h4{
  margin:0 0 8px 0 !important;
  font-size:13px !important;
  font-weight:900 !important;
}

#zapp-portal-root .z-tl{
  display:flex !important;
  flex-direction:column !important;
  gap:10px !important;
}

#zapp-portal-root .z-tl-item{
  display:flex !important;
  gap:10px !important;
  align-items:flex-start !important;
}

#zapp-portal-root .z-tl-dot{
  width:10px !important;
  height:10px !important;
  border-radius:999px !important;
  background: rgba(255,255,255,.65) !important;
  box-shadow:0 0 0 4px rgba(255,255,255,.08) !important;
  margin-top:4px !important;
  flex:0 0 10px !important;
}

#zapp-portal-root .z-tl-dot.good{ background: rgba(16,185,129,.9) !important; }
#zapp-portal-root .z-tl-dot.warn{ background: rgba(245,158,11,.9) !important; }
#zapp-portal-root .z-tl-dot.bad{ background: rgba(239,68,68,.95) !important; }

#zapp-portal-root .z-tl-text .a{
  font-weight:850 !important;
  font-size:12px !important;
}

#zapp-portal-root .z-tl-text .b{
  margin-top:4px !important;
  font-size:12px !important;
  color: rgba(234,240,255,.60) !important;
}

/* Responsive */
@media(max-width: 980px){
  #zapp-portal-root .zapp-body{ grid-template-columns: 1fr !important; }
  #zapp-portal-root .z-left{
    border-right:none !important;
    border-bottom:1px solid rgba(255,255,255,.08) !important;
  }
  #zapp-portal-root .z-list{ max-height: 360px !important; }
  #zapp-portal-root .z-kv{ grid-template-columns: 1fr !important; }
  #zapp-portal-root .z-steps{ grid-template-columns: 1fr !important; }
}

/* =========================
   LIGHT MODE OVERRIDE
   Enable by adding class:
   <div id="zapp-portal-root" class="zapp-light">
   ========================= */

#zapp-portal-root.zapp-light{
  --bg:#f8fafc;
  --card:#ffffff;
  --border:#e5e7eb;
  --text:#0f172a;
  --muted:#64748b;
  --muted2:#94a3b8;
  --accent:#2563eb;
  --success:#16a34a;
  --warning:#d97706;
  --danger:#dc2626;
}

/* Shell becomes light */
#zapp-portal-root.zapp-light .zapp-shell{
  background: var(--bg) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .06) !important;
}

/* Top text */
#zapp-portal-root.zapp-light .zapp-sub{
  color: var(--muted) !important;
}

/* Left pane light */
#zapp-portal-root.zapp-light .z-left{
  background: #f1f5f9 !important;
  border-right: 1px solid var(--border) !important;
}
#zapp-portal-root.zapp-light .z-search{
  background: #ffffff !important;
  border: 1px solid var(--border) !important;
  color: var(--text) !important;
}
#zapp-portal-root.zapp-light .z-search::placeholder{
  color: #94a3b8 !important;
}

/* Cards */
#zapp-portal-root.zapp-light .z-detail,
#zapp-portal-root.zapp-light .z-item,
#zapp-portal-root.zapp-light .z-progress,
#zapp-portal-root.zapp-light .z-timeline{
  background: var(--card) !important;
  border: 1px solid var(--border) !important;
  box-shadow: 0 6px 18px rgba(15, 23, 42, .05) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* List item */
#zapp-portal-root.zapp-light .z-item:hover{
  border-color: #cbd5e1 !important;
}
#zapp-portal-root.zapp-light .z-item.is-active{
  background: #eef2ff !important;
  border-color: var(--accent) !important;
  box-shadow: 0 10px 22px rgba(37, 99, 235, .10) !important;
}

#zapp-portal-root.zapp-light .z-uid{
  color: var(--text) !important;
}
#zapp-portal-root.zapp-light .z-meta,
#zapp-portal-root.zapp-light .muted{
  color: var(--muted) !important;
}

/* Badges become crisp */
#zapp-portal-root.zapp-light .z-badge{
  background: #f8fafc !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}
#zapp-portal-root.zapp-light .z-badge .dot{
  background: #94a3b8 !important;
}
#zapp-portal-root.zapp-light .z-badge.good{
  background:#dcfce7 !important;
  border-color:#bbf7d0 !important;
  color: var(--success) !important;
}
#zapp-portal-root.zapp-light .z-badge.warn{
  background:#fef3c7 !important;
  border-color:#fde68a !important;
  color: var(--warning) !important;
}
#zapp-portal-root.zapp-light .z-badge.bad{
  background:#fee2e2 !important;
  border-color:#fecaca !important;
  color: var(--danger) !important;
}

/* KV boxes */
#zapp-portal-root.zapp-light .z-kv .box{
  background: #f8fafc !important;
  border-color: var(--border) !important;
}
#zapp-portal-root.zapp-light .z-kv .k{
  color: var(--muted2) !important;
}
#zapp-portal-root.zapp-light .z-kv .v{
  color: var(--text) !important;
}

/* Progress blocks */
#zapp-portal-root.zapp-light .z-progress{
  background:#ffffff !important;
  border-color: var(--border) !important;
}
#zapp-portal-root.zapp-light .z-step{
  background: #ffffff !important;
  border-color: var(--border) !important;
}
#zapp-portal-root.zapp-light .z-step .t{ color: var(--text) !important; }
#zapp-portal-root.zapp-light .z-step .d{ color: var(--muted) !important; }

#zapp-portal-root.zapp-light .z-step.is-done{
  background:#ecfdf5 !important;
  border-color:#a7f3d0 !important;
}
#zapp-portal-root.zapp-light .z-step.is-live{
  background:#eff6ff !important;
  border-color:#bfdbfe !important;
}
#zapp-portal-root.zapp-light .z-step.is-bad{
  background:#fef2f2 !important;
  border-color:#fecaca !important;
}

/* Timeline */
#zapp-portal-root.zapp-light .z-timeline{
  background:#ffffff !important;
  border-color: var(--border) !important;
}
#zapp-portal-root.zapp-light .z-timeline h4{ color: var(--text) !important; }
#zapp-portal-root.zapp-light .z-tl-text .a{ color: var(--text) !important; }
#zapp-portal-root.zapp-light .z-tl-text .b{ color: var(--muted) !important; }

#zapp-portal-root.zapp-light .z-tl-dot{
  box-shadow:0 0 0 4px rgba(15,23,42,.06) !important;
}
#zapp-portal-root.zapp-light .z-tl-dot.good{ background: var(--success) !important; }
#zapp-portal-root.zapp-light .z-tl-dot.warn{ background: var(--warning) !important; }
#zapp-portal-root.zapp-light .z-tl-dot.bad{ background: var(--danger) !important; }

/* Files */
#zapp-portal-root.zapp-light .z-file{
  background:#ffffff !important;
  border-color: var(--border) !important;
  color: var(--text) !important;
}
#zapp-portal-root.zapp-light .z-file:hover{
  border-color: #cbd5e1 !important;
}

/* Scrollbar light */
#zapp-portal-root.zapp-light .z-list::-webkit-scrollbar-thumb{
  background: rgba(15,23,42,.12);
}