/* Decision panel. Scoped under .dp so it cannot reach the rest of the portal.
   Colours are the shared design tokens (ds/tokens.css); the --dp-* names stay as the
   panel's local vocabulary. "Written by AI" is lavender, the language's twin/AI tone. */
.dp{--dp-line:var(--border-default);--dp-ink:var(--fg-default);--dp-mute:var(--fg-muted);
    --dp-blue:var(--accent-emphasis);--dp-warn:var(--warning-fg);--dp-bad:var(--danger-fg);
    --dp-good:var(--success-fg);--dp-ai:var(--tone-lavender-ink);--dp-text:var(--fg-secondary);
    font-size:.86rem;color:var(--dp-ink);display:flex;flex-direction:column;gap:14px}
.dp-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.dp-title{font-size:1.05rem;font-weight:500}
.dp-sub2{color:var(--dp-mute);font-size:.8rem}
.dp-badges{display:flex;gap:6px;flex-wrap:wrap}
.dp-tag{display:inline-block;padding:2px 8px;border-radius:20px;font-size:.7rem;
        font-weight:500;background:var(--neutral-bg);color:var(--dp-mute)}
.dp-tag-small{font-weight:500;text-transform:lowercase}
.dp-tag-live{background:var(--success-bg);color:var(--dp-good)}
.dp-tag-ai{background:var(--tone-lavender-bg);color:var(--dp-ai)}
.dp-tag-warn{background:var(--danger-bg);color:var(--dp-bad)}

.dp-section{border:1px solid var(--dp-line);border-radius:var(--radius-lg);padding:var(--space-5);
            background:var(--bg-raised);display:flex;flex-direction:column;gap:8px}
.dp-section.dp-ai{border-color:var(--tone-lavender-bg);background:var(--surface)}
.dp-h{display:flex;align-items:center;gap:8px;margin:0;font-size:.92rem;font-weight:500}
.dp-n{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;
      border-radius:50%;background:var(--neutral-bg);color:var(--dp-mute);font-size:.7rem}
.dp-sub{font-size:.75rem;font-weight:500;color:var(--dp-mute);text-transform:uppercase;
        letter-spacing:.4px}
.dp-note{color:var(--dp-mute);font-size:.8rem;margin:0}
.dp-tiny{color:var(--dp-mute);font-size:.74rem;margin:0}
.dp-private{color:var(--dp-good)}
.dp-error{color:var(--dp-bad);font-size:.8rem;margin:4px 0 0}
.dp-done{color:var(--dp-good);font-weight:500}

/* 1 — fit */
.dp-fit-head{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.dp-score{flex:0 0 auto;text-align:center;min-width:88px;padding:8px 10px;border-radius:10px;
          background:var(--accent-subtle)}
.dp-score-n{display:block;font-size:var(--text-3xl);font-weight:300;letter-spacing:-.025em;color:var(--foreground)}
.dp-score-l{font-size:.7rem;color:var(--dp-mute)}
.dp-shared{flex:1 1 220px;min-width:0}
.dp-shared-t{font-size:.75rem;font-weight:500;color:var(--dp-mute);text-transform:uppercase;
             letter-spacing:.4px;margin-bottom:4px}
.dp-because{margin:0 0 4px}
.dp-gap{margin:0 0 4px;color:var(--dp-warn)}
.dp-gap-l{font-weight:500;font-size:.72rem;text-transform:uppercase}
.dp-cases,.dp-outcomes,.dp-checks,.dp-ai-list,.dp-missing,.dp-deadlines,.dp-matched{
  list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.dp-case{border-left:3px solid var(--dp-line);padding-left:10px}
.dp-case-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:.72rem}
.dp-rank{font-weight:500;color:var(--dp-mute)}
.dp-sim{padding:1px 7px;border-radius:20px;background:var(--neutral-bg);color:var(--dp-mute)}
.dp-sim-strong{background:var(--success-bg);color:var(--dp-good)}
.dp-sim-moderate{background:var(--warning-bg);color:var(--dp-warn)}
.dp-fresh{color:var(--dp-mute)}
.dp-fresh-stale{color:var(--dp-bad)}
.dp-case-h{font-weight:500;margin-top:2px}
.dp-case-s{margin:2px 0;color:var(--dp-text)}
.dp-matched li{display:flex;gap:6px;font-size:.76rem;align-items:baseline}
.dp-sphere{font-weight:500;color:var(--dp-mute);flex:0 0 auto}
.dp-sim-s{color:var(--dp-mute);flex:0 0 auto}
.dp-exc{color:var(--dp-text)}
.dp-from{margin-top:4px;font-size:.72rem;color:var(--dp-mute);display:flex;gap:4px;
         flex-wrap:wrap;align-items:center}
.dp-card-ref{border:1px solid var(--dp-line);background:var(--bg-raised);border-radius:6px;
             padding:1px 6px;font:inherit;font-size:.7rem;color:var(--dp-mute);cursor:pointer}
.dp-card-ref:hover{border-color:var(--dp-blue);color:var(--dp-blue)}

/* 2 — value */
.dp-fees{width:100%;border-collapse:collapse;font-size:.8rem}
.dp-fees th{text-align:left;font-weight:500;padding:5px 6px;vertical-align:top}
.dp-fees td{padding:5px 6px;vertical-align:top;color:var(--dp-text)}
.dp-fees tbody tr+tr{border-top:1px solid var(--dp-line)}
.dp-fees thead th{font-size:.7rem;color:var(--dp-mute);text-transform:uppercase}
.dp-total{font-weight:500;white-space:nowrap;text-align:right;color:var(--dp-ink)}
.dp-cases-n{display:block;font-weight:400;font-size:.68rem;color:var(--dp-mute)}
.dp-fee-off .dp-off{color:var(--dp-mute);font-style:italic}
.dp-empty{margin:0;color:var(--dp-mute)}
.dp-effort,.dp-capacity{display:flex;gap:8px;flex-wrap:wrap}
.dp-metric{flex:1 1 90px;padding:8px 10px;border-radius:8px;background:var(--bg-page)}
.dp-metric-wide{flex:2 1 200px}
.dp-metric-v{display:block;font-weight:500}
.dp-metric-l{font-size:.7rem;color:var(--dp-mute)}
.dp-metric-zero .dp-metric-v{color:var(--dp-bad)}
.dp-of{font-weight:400;color:var(--dp-mute)}

/* fee on a case, and the forecasts */
.dp-why{margin:2px 0;color:var(--dp-mute);font-size:.8rem}
.dp-case-fee{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-top:6px;
             padding:6px 8px;border-radius:8px;background:var(--bg-page)}
.dp-fee-model{font-size:.7rem;font-weight:500;text-transform:uppercase;color:var(--dp-mute)}
.dp-fee-amount{font-weight:500}
.dp-fee-note{flex:1 1 100%;color:var(--dp-text);font-size:.78rem}
.dp-fee-none{margin-top:6px;color:var(--dp-mute);font-size:.78rem;font-style:italic}
.dp-forecasts{display:flex;gap:8px;flex-wrap:wrap}
.dp-forecast{flex:1 1 110px;padding:8px 10px;border-radius:8px;background:var(--bg-raised);
             border:1px solid var(--tone-lavender-bg);display:flex;flex-direction:column;gap:2px}
.dp-forecast .dp-metric-v{font-weight:500}
.dp-forecast .dp-tag{align-self:flex-start}

/* a locked block: fixed decoration, a white blurred layer, the reason on top */
.dp-locked{position:relative;border-radius:10px;overflow:hidden;min-height:132px;
           background:var(--bg-raised)}
.dp-lock-art{position:absolute;inset:0;padding:14px;display:flex;flex-direction:column;
             gap:10px;justify-content:center}
.dp-lock-bars{display:flex;flex-direction:column;gap:7px}
.dp-lock-bars span{height:12px;border-radius:6px;background:linear-gradient(
  90deg,var(--tone-blue-bg),var(--tone-lavender-bg))}
.dp-lock-chart{display:flex;align-items:flex-end;gap:7px;height:70px}
.dp-lock-chart span{flex:1;border-radius:5px 5px 0 0;background:linear-gradient(
  180deg,var(--tone-blue-ink),var(--tone-blue-bg))}
/* THE VEIL. White and blurred, over decoration that is already meaningless -- the blur is
   the look, not the protection. The protection is that the markup underneath never held
   anything: see app/static/panel/locked.js. */
.dp-lock-veil{position:absolute;inset:0;display:flex;align-items:center;
              justify-content:center;padding:16px;text-align:center;
              background:rgb(249 251 252 / .6);backdrop-filter:blur(5px);
              -webkit-backdrop-filter:blur(5px)}
.dp-lock-reason{margin:0;font-weight:500;color:var(--dp-ink);max-width:36ch}

/* stopped at the daily cap: a statement, not a failure and not a lock */
.dp-stopped{border:1px solid var(--dp-line);border-left:3px solid var(--dp-warn);
            border-radius:8px;padding:8px 10px;background:var(--bg-raised)}
.dp-stopped-m{margin:0;font-weight:500}

/* 3 — path */
.dp-steps{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.dp-step-h{display:flex;gap:6px;align-items:center;font-weight:500;flex-wrap:wrap}
.dp-step-n{display:inline-flex;align-items:center;justify-content:center;width:18px;
           height:18px;border-radius:50%;background:var(--tone-blue-bg);color:var(--tone-blue-ink);font-size:.68rem}
.dp-seen{font-weight:400;font-size:.7rem;color:var(--dp-mute)}
.dp-step-d{margin:2px 0;color:var(--dp-text)}
.dp-outcome{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline}
.dp-pol{font-size:.68rem;font-weight:500;text-transform:uppercase;color:var(--dp-mute)}
.dp-pol-positive .dp-pol{color:var(--dp-good)}
.dp-pol-negative .dp-pol{color:var(--dp-bad)}
.dp-pol-mixed .dp-pol{color:var(--dp-warn)}

/* 4 — insight */
.dp-ai-head{display:flex;gap:6px}
.dp-ai-body{display:flex;flex-direction:column;gap:10px}
.dp-ai-list li,.dp-missing li{color:var(--dp-text)}
.dp-why-matters{display:block;font-size:.74rem;color:var(--dp-mute)}
.dp-missing-q{font-weight:500;display:block}
.dp-missing-w{font-size:.74rem;color:var(--dp-mute)}

/* 5 — urgency */
.dp-deadline{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline;font-size:.8rem}
.dp-dl-d{font-weight:500;white-space:nowrap}
.dp-dl-n{color:var(--dp-warn);white-space:nowrap}
.dp-conf-inferred .dp-dl-d{font-weight:500}

/* 6 — pre-checks */
.dp-check{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline;font-size:.8rem}
.dp-check-i{flex:0 0 auto;width:16px;height:16px;border-radius:50%;display:inline-flex;
            align-items:center;justify-content:center;font-size:.7rem;background:var(--success-bg);
            color:var(--dp-good)}
.dp-check-mismatch .dp-check-i,.dp-check-no_shared_language .dp-check-i{
  background:var(--danger-bg);color:var(--dp-bad)}
.dp-check-unverifiable .dp-check-i{background:var(--warning-bg);color:var(--dp-warn)}
.dp-check-t{font-weight:500}
.dp-check-r{font-size:.7rem;color:var(--dp-mute);text-transform:uppercase}
.dp-check-d{color:var(--dp-text);flex:1 1 100%}
.dp-check-n{flex:1 1 100%;color:var(--dp-warn);font-size:.76rem}
.dp-lic{padding:1px 6px;border-radius:6px;background:var(--neutral-bg)}
.dp-lic-unverified{background:var(--warning-bg);color:var(--dp-warn)}
.dp-conflict{margin:4px 0 0;padding:8px 10px;border-radius:8px;background:var(--bg-page);
             color:var(--dp-mute);font-size:.76rem}

/* chosen by the client (carrier 077) */
.dp-picked{margin-top:6px;display:flex;flex-direction:column;gap:1px}
.dp-picked-t{font-size:.78rem;font-weight:500;color:var(--dp-blue)}

/* 7 — actions */
.dp-actions{display:flex;gap:8px;flex-wrap:wrap}
.dp-accept,.dp-reject-open,.dp-reject-send,.dp-reject-cancel{
  font:inherit;font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);
  min-height:var(--control-h-md);padding:0 var(--space-4);cursor:pointer;border:1px solid transparent;
  transition:background-color var(--duration-fast),border-color var(--duration-fast)}
.dp-accept:focus-visible,.dp-reject-open:focus-visible,.dp-reject-send:focus-visible,
.dp-reject-cancel:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.dp-accept{background:var(--dp-blue);color:var(--fg-on-accent)}
.dp-accept:hover:not([disabled]){background:var(--accent-hover)}
.dp-reject-open:hover:not([disabled]),.dp-reject-cancel:hover{background:var(--bg-surface);color:var(--fg-default)}
.dp-reject-open,.dp-reject-cancel{background:var(--bg-raised);border-color:var(--border-control);
                                  color:var(--fg-secondary)}
.dp-reject-send{background:var(--danger-solid);color:var(--fg-on-accent)}
.dp-accept[disabled],.dp-reject-open[disabled]{opacity:.45;cursor:not-allowed}
.dp-busy{opacity:.6;cursor:progress}
.dp-reject{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px;
           border-top:1px solid var(--dp-line)}
/* The UA sheet's `[hidden]{display:none}` loses to the class rule above, so the decline
   form rendered open on first paint -- the panel would have greeted every expert with a
   half-filled decline. Stated here rather than relying on the cascade. */
.dp-reject[hidden]{display:none}
.dp-label{font-size:.75rem;font-weight:500;color:var(--dp-mute)}
.dp-reject select,.dp-reject textarea{font:inherit;font-size:var(--text-md);padding:7px var(--space-3);
  border:1px solid var(--border-control);border-radius:var(--radius-md);background:var(--bg-raised);width:100%;color:var(--fg-default)}
.dp-reject select:focus,.dp-reject textarea:focus{outline:none;border-color:var(--accent-emphasis);box-shadow:0 0 0 3px var(--ring-soft)}
.dp-reject-foot{display:flex;gap:8px;align-items:center;justify-content:flex-end;
                flex-wrap:wrap}
.dp-reject-foot .dp-tiny{margin-right:auto}

@media (max-width:520px){
  .dp-fit-head{flex-direction:column}
  .dp-score{width:100%}
  .dp-total{text-align:left}
}
