:root{
  --bg:#0f172a; --panel:#ffffff; --ink:#1e293b; --muted:#64748b;
  --line:#e2e8f0; --brand:#1d4ed8; --brand-ink:#fff;
  --ok:#166534; --ok-bg:#dcfce7; --err:#991b1b; --err-bg:#fee2e2;
  --warn:#92400e; --warn-bg:#fef3c7;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  color:var(--ink);background:#f1f5f9;line-height:1.5}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}

.topbar{display:flex;align-items:center;justify-content:space-between;
  background:var(--bg);color:#e2e8f0;padding:.7rem 1.2rem;flex-wrap:wrap;gap:.5rem}
.topbar .brand{color:#fff;font-weight:700;font-size:1.05rem}
.topbar nav{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.topbar nav a{color:#cbd5e1}
.topbar nav a:hover{color:#fff}
.who{color:#94a3b8;font-size:.9rem}
.role{font-size:.7rem;text-transform:uppercase;padding:.1rem .4rem;border-radius:4px;
  margin-left:.25rem}
.role-agent{background:#334155;color:#cbd5e1}
.role-processor{background:#0e7490;color:#fff}
.role-admin{background:#7c3aed;color:#fff}
.bell{position:relative;text-decoration:none}
.bell-badge{position:absolute;top:-8px;right:-10px;background:#ef4444;color:#fff;
  font-size:.65rem;font-weight:700;min-width:16px;height:16px;line-height:16px;
  text-align:center;border-radius:999px;padding:0 4px}
.notif-list{list-style:none;margin:0;padding:0}
.notif-item{padding:.7rem .2rem;border-bottom:1px solid var(--line)}
.notif-item:last-child{border-bottom:none}
.notif-item.unread{background:#eff6ff;border-radius:8px;padding-left:.6rem}
.notif-msg{font-size:.95rem}
.notif-time{font-size:.78rem;color:var(--muted);margin-top:.15rem}
.inline{display:inline;margin:0}
.linkbtn{background:none;border:none;color:#cbd5e1;cursor:pointer;font:inherit;padding:0}
.linkbtn:hover{color:#fff;text-decoration:underline}

.wrap{max-width:900px;margin:1.5rem auto;padding:0 1rem}
.foot{text-align:center;color:var(--muted);font-size:.8rem;padding:2rem 1rem}

/* Layout utilities (replace inline styles so the strict CSP needs no
   'unsafe-inline' for style attributes). */
.narrow{max-width:560px;margin-left:auto;margin-right:auto}
.row-between{display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:1rem}
.m0{margin:0}
.mt1{margin-top:1rem}
.mb1{margin-bottom:1rem}

.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:1.4rem;margin-bottom:1.2rem;box-shadow:0 1px 2px rgba(0,0,0,.04)}
h1{font-size:1.5rem;margin:.2rem 0 1rem}
h2{font-size:1.15rem;margin:0 0 .8rem}
.muted{color:var(--muted)}
.hero{background:linear-gradient(135deg,#1e3a8a,#1d4ed8);color:#fff;border:none}
.hero p{color:#dbeafe;max-width:52ch}

.btn{display:inline-block;background:var(--brand);color:var(--brand-ink);
  border:none;border-radius:8px;padding:.6rem 1.1rem;font:inherit;cursor:pointer}
.btn:hover{background:#1e40af;text-decoration:none}
.btn-light{background:#fff;color:var(--brand);border:1px solid var(--brand)}
.btn-danger{background:#b91c1c}
.btn-danger:hover{background:#991b1b}
.btn-sm{padding:.35rem .7rem;font-size:.85rem}

label{display:block;font-weight:600;margin:.8rem 0 .3rem;font-size:.9rem}
input,select,textarea{width:100%;padding:.55rem .7rem;border:1px solid var(--line);
  border-radius:8px;font:inherit;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #bfdbfe;border-color:var(--brand)}
textarea{min-height:90px;resize:vertical}
.hint{font-size:.8rem;color:var(--muted);margin-top:.2rem}
.price-row{display:flex;align-items:center;gap:.4rem}
.price-row .cur{font-weight:700;color:var(--muted)}
.price-row input{max-width:160px}
.sep{border:none;border-top:1px solid var(--line);margin:1.2rem 0}
.msg-thread{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.5rem}
.msg{border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;max-width:85%}
.msg-staff{align-self:flex-start;background:#eff6ff;border-color:#dbeafe}
.msg-agent{align-self:flex-end;background:#f8fafc}
.msg-meta{font-size:.75rem;color:var(--muted);margin-bottom:.25rem}
.msg-body{font-size:.93rem;white-space:pre-wrap}
.danger-link{color:#b91c1c}
/* Fees grid */
.fees-scroll{overflow-x:auto;margin:.5rem 0}
.fees-table{min-width:640px}
.fees-table th{white-space:nowrap}
.fees-table .sticky-col{position:sticky;left:0;background:var(--panel);z-index:1}
.fee-cell{display:flex;align-items:center;gap:.25rem}
.fee-cell .cur{color:var(--muted);font-size:.85rem}
.fee-cell input{width:90px;padding:.4rem .5rem}
/* Live feed */
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;
  margin-right:.35rem;animation:livepulse 1.6s ease-in-out infinite}
@keyframes livepulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
.live-tag{font-size:.7rem;font-weight:700;color:#16a34a;letter-spacing:.05em}
@media(prefers-reduced-motion:reduce){.live-dot{animation:none}}
.actions{margin-top:1.2rem;display:flex;gap:.6rem;flex-wrap:wrap}

.flashes{margin-bottom:1rem}
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:.5rem;font-size:.92rem}
.flash-success{background:var(--ok-bg);color:var(--ok)}
.flash-error{background:var(--err-bg);color:var(--err)}

table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
tr:hover td{background:#f8fafc}

.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;
  font-weight:600}
.s-pending{background:#fef9c3;color:#854d0e}
.s-done{background:#dcfce7;color:#166534}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}
.stat{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:1rem;
  text-align:center}
.stat .n{font-size:1.8rem;font-weight:700;color:var(--brand)}
.stat .l{font-size:.8rem;color:var(--muted)}

.kv{display:grid;grid-template-columns:180px 1fr;gap:.4rem .8rem;font-size:.93rem}
.kv dt{color:var(--muted);font-weight:600}
.kv dd{margin:0}
.pii{font-family:ui-monospace,Menlo,monospace}

.timeline{list-style:none;padding:0;margin:0}
.timeline li{border-left:2px solid var(--line);padding:.2rem 0 1rem 1rem;position:relative}
.timeline li::before{content:"";position:absolute;left:-6px;top:.35rem;width:10px;
  height:10px;border-radius:50%;background:var(--brand)}
.timeline .meta{font-size:.8rem;color:var(--muted)}

.tag{font-size:.78rem;color:var(--muted)}
.right{text-align:right}
.filters{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}
.filters a{padding:.3rem .7rem;border:1px solid var(--line);border-radius:999px;
  font-size:.82rem;color:var(--ink);background:#fff}
.filters a.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.filter-label{font-size:.8rem;color:var(--muted);font-weight:600;align-self:center}
.searchbar{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.searchbar input{flex:1;min-width:200px}
/* ===================== Premium staff dashboard ===================== */
:root{
  --done:#0ca30c; --done-soft:#e7f7e7;
  --pending:#f59e0b; --pending-soft:#fef3c7;
  --agent:#7c3aed; --agent-soft:#f1eafe;
  --brand-soft:#e6effe;
}
.dash{display:flex;flex-direction:column;gap:1.1rem}

@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes ringspin{from{stroke-dashoffset:327}}
.reveal{animation:rise .6s cubic-bezier(.2,.7,.2,1) both}
.d1{animation-delay:.06s}.d2{animation-delay:.13s}
.d3{animation-delay:.2s}.d4{animation-delay:.27s}

/* Hero */
.dash-hero{display:flex;justify-content:space-between;align-items:center;gap:1rem;
  flex-wrap:wrap;background:
    radial-gradient(120% 160% at 100% 0%, rgba(124,58,237,.35), transparent 55%),
    linear-gradient(135deg,#1e3a8a 0%,#1d4ed8 55%,#2563eb 100%);
  color:#fff;border-radius:16px;padding:1.6rem 1.8rem;
  box-shadow:0 12px 30px -12px rgba(29,78,216,.5)}
.dash-eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;
  color:#bfdbfe;font-weight:700;margin-bottom:.2rem}
.dash-hero h1{margin:0 0 .25rem;font-size:1.7rem;color:#fff}
.dash-hero p{margin:0;color:#dbeafe;font-size:.95rem}
.dash-hero-metric{text-align:right;min-width:120px}
.hm-num{font-size:2.6rem;font-weight:800;line-height:1;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums}
.hm-label{text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;color:#bfdbfe;
  margin-top:.2rem}

/* KPI tiles */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}
.kpi{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--line);
  border-radius:14px;padding:1.1rem 1.2rem;text-decoration:none;color:var(--ink);
  transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--brand)}
.kpi:hover{transform:translateY(-4px);box-shadow:0 16px 30px -18px rgba(15,23,42,.4);
  border-color:#cbd5e1;text-decoration:none}
.kpi-top{display:flex;align-items:center;gap:.45rem;font-size:.82rem;color:var(--muted);
  font-weight:600}
.kpi-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.dot-brand{background:var(--brand)} .dot-pending{background:var(--pending)}
.dot-done{background:var(--done)} .dot-agent{background:var(--agent)}
.kpi:nth-child(2)::after{background:var(--pending)}
.kpi:nth-child(3)::after{background:var(--done)}
.kpi:nth-child(4)::after{background:var(--agent)}
.kpi-num{font-size:2.2rem;font-weight:800;letter-spacing:-.02em;margin:.35rem 0 .1rem;
  font-variant-numeric:tabular-nums}
.kpi-sub{font-size:.78rem;color:var(--muted)}

/* Panels grid */
.dash-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:1.1rem}
@media(max-width:760px){.dash-grid{grid-template-columns:1fr}}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1.3rem}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}
.panel-head h2{margin:0;font-size:1.05rem}
.panel-link{font-size:.82rem}

/* Horizontal bars */
.bars{display:flex;flex-direction:column;gap:.7rem}
.bar-row{display:grid;grid-template-columns:130px 1fr 34px;align-items:center;gap:.7rem}
.bar-label{font-size:.85rem;color:var(--ink)}
.bar-track{height:12px;background:#eef2f7;border-radius:999px;overflow:hidden}
.bar-fill{height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,#3b82f6,#1d4ed8)}
.bar-val{font-size:.85rem;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}

/* Completion ring */
.ring-wrap{position:relative;width:170px;height:170px;margin:.4rem auto .8rem}
.ring{width:170px;height:170px;transform:rotate(-90deg)}
.ring-track{fill:none;stroke:var(--pending-soft);stroke-width:12}
.ring-value{fill:none;stroke:var(--done);stroke-width:12;stroke-linecap:round;
  stroke-dasharray:327;stroke-dashoffset:327;
  transition:stroke-dashoffset 1.2s cubic-bezier(.2,.7,.2,1)}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center}
.ring-pct{font-size:2rem;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ring-cap{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.ring-legend{display:flex;justify-content:center;gap:1.4rem}
.lg{font-size:.85rem;color:var(--muted);display:flex;align-items:center;gap:.4rem}
.lg b{color:var(--ink);font-variant-numeric:tabular-nums}
.lg-dot{width:10px;height:10px;border-radius:3px;display:inline-block}

/* Activity feed */
.feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.feed-item{display:flex;align-items:center;gap:.7rem;padding:.6rem 0;
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.feed-item:last-child{border-bottom:none}
.feed-badge{font-size:.7rem;font-weight:700;padding:.12rem .5rem;border-radius:999px}
.feed-ref{font-weight:700}
.feed-type{font-size:.85rem;color:var(--ink)}
.feed-agent{font-size:.82rem;color:var(--muted)}
.feed-time{margin-left:auto;font-size:.78rem;color:var(--muted);
  font-variant-numeric:tabular-nums}

/* Quick actions */
.quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem}
.qbtn{display:flex;align-items:center;gap:.6rem;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:.9rem 1.1rem;color:var(--ink);
  font-weight:600;text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s}
.qbtn span{font-size:1.2rem}
.qbtn:hover{transform:translateY(-3px);box-shadow:0 12px 24px -16px rgba(15,23,42,.4);
  border-color:#cbd5e1;text-decoration:none}

@media(prefers-reduced-motion:reduce){
  .reveal{animation:none}
  .bar-fill,.ring-value{transition:none}
  .kpi:hover,.qbtn:hover{transform:none}
}

.copybtn{margin-left:.5rem;font-size:.72rem;padding:.15rem .5rem;border:1px solid var(--line);
  border-radius:6px;background:#f8fafc;color:var(--brand);cursor:pointer;font-family:system-ui}
.copybtn:hover{background:#eff6ff}
.copybtn.copied{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-bg)}
.errpage{text-align:center;padding:3rem 1rem}
.errpage .code{font-size:3rem;font-weight:800;color:var(--brand)}
