/* ============================================================
   AGENDA PSI — CANCELAMENTOS 3.0
   Reaproveita o shell, tokens (--dd-*) e primitivos de dashboard-2.0.css.
   Toda a lógica vive em loadCancellations() (painel-2.0-runtime.js),
   INTOCADA — ids e data-cancel-filter/data-open preservados 1:1.
   ============================================================ */

.aps-kicker{color:var(--dd-violet);font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.aps-avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--dd-blue-soft);color:#1f4f96;font-weight:700;font-size:12px;flex:none}
.aps-card{background:var(--dd-surface);border:1px solid var(--dd-border);border-radius:var(--dd-radius-lg);box-shadow:var(--dd-shadow-sm)}
.aps-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:13.5px;padding:10px 18px;border-radius:var(--dd-radius-md);border:1px solid transparent;cursor:pointer;transition:background var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease);white-space:nowrap}
.aps-btn--primary{background:var(--dd-violet);color:#fff;box-shadow:var(--dd-shadow-sm)}
.aps-btn--primary:hover{background:var(--dd-violet-dark)}
.aps-btn--primary:disabled{opacity:.55;cursor:not-allowed}
.aps-btn--secondary{background:var(--dd-surface);color:var(--dd-ink);border-color:var(--dd-border-strong)}
.aps-btn--secondary:hover{border-color:var(--dd-violet);background:var(--dd-violet-soft)}
.aps-btn--secondary:disabled{opacity:.55;cursor:not-allowed;border-color:var(--dd-border);background:var(--dd-surface)}
.aps-btn:focus-visible{box-shadow:var(--dd-shadow-focus)}
.aps-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--dd-radius-md);border:1px solid var(--dd-border);background:var(--dd-surface);color:var(--dd-ink-soft);cursor:pointer}
.aps-icon-btn:hover{background:var(--dd-bg);color:var(--dd-ink)}
.aps-icon-btn:focus-visible{box-shadow:var(--dd-shadow-focus)}

/* ============================================================
   CABEÇALHO
   ============================================================ */
.cancel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}
.cancel-head-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.policy-state{display:flex;align-items:center;gap:8px;padding:9px 14px;border:1px solid var(--dd-green-soft);border-radius:var(--dd-radius-md);color:#0b6b47;background:var(--dd-green-soft);font-size:13px;font-weight:700}
.policy-state.off{border-color:var(--dd-amber-soft);color:#8a5a09;background:var(--dd-amber-soft)}

/* ============================================================
   RESUMO — 5 cards clicáveis (mesmo padrão de filtro por card)
   ============================================================ */
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.metric-grid:has(.metric-card[data-cancel-filter="unknown"]:not([hidden])){grid-template-columns:repeat(5,minmax(0,1fr))}
.metric-card{
  display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:15px 17px;font:inherit;color:inherit;
  border:1px solid var(--dd-border);border-radius:var(--dd-radius-lg);background:var(--dd-surface);cursor:pointer;
  transition:transform var(--dd-fast) var(--dd-ease),box-shadow var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease);
}
.metric-card:hover,.metric-card:focus-visible{transform:translateY(-2px);box-shadow:var(--dd-shadow-md);border-color:var(--dd-border-strong)}
.metric-card.active{border-color:var(--dd-violet);background:var(--dd-violet-soft)}
.metric-card[hidden]{display:none}
.metric-card strong{font-family:var(--dd-font-display);font-size:22px;font-weight:700;color:var(--dd-ink)}
.metric-card span{margin-top:2px;color:var(--dd-ink-soft);font-size:12.5px;font-weight:600}
.metric-card small{margin-top:2px;color:var(--dd-ink-mute);font-size:11px}

/* ============================================================
   LAYOUT PRINCIPAL — histórico + lateral (política/sobre)
   ============================================================ */
.cancel-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:16px;align-items:start}
.section-card{padding:20px}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.section-head h2{margin:0;color:var(--dd-ink);font:700 16px/1.2 var(--dd-font-display)}
.section-head p{margin:3px 0 0;color:var(--dd-ink-soft);font-size:12.5px}

.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.filter-button{padding:8px 14px;border:1px solid var(--dd-border);border-radius:999px;color:var(--dd-ink-soft);background:var(--dd-surface);font-size:12.5px;font-weight:600;cursor:pointer;transition:background var(--dd-fast) var(--dd-ease),border-color var(--dd-fast) var(--dd-ease),color var(--dd-fast) var(--dd-ease)}
.filter-button:hover{border-color:var(--dd-border-strong)}
.filter-button.active{border-color:var(--dd-violet);color:var(--dd-violet-dark);background:var(--dd-violet-soft)}

.cancel-resource-state{padding:12px 14px;margin-bottom:14px;border-radius:var(--dd-radius-md);color:var(--dd-ink-soft);background:var(--dd-bg);font-size:13px}
.cancel-resource-state.error{color:#a32a20;background:#fbeae8}
/* [hidden] do navegador perde para display:flex/grid de mesma
   especificidade — mesmo ajuste já feito nas demais páginas 3.0. */
.cancel-resource-state[hidden]{display:none}

.occurrence-list{display:grid;gap:9px}
/* Larguras minimas por coluna (nao 0/auto): sem isso, o nome do
   paciente nao quebra nem trunca dentro da coluna flex e desenha por
   cima das colunas seguintes em vez de empurrar o grid — mesma proporcao
   de colunas do 2.0 (.occurrence-functional-2.0.css), so com tokens 3.0. */
.occurrence{display:grid;grid-template-columns:minmax(190px,1.3fr) minmax(150px,.85fr) minmax(120px,.6fr) minmax(145px,auto);gap:14px;align-items:center;padding:15px;border:1px solid var(--dd-border);border-radius:var(--dd-radius-lg);background:var(--dd-surface)}
.occurrence[hidden]{display:none}
.occurrence-person{display:flex;align-items:center;gap:11px;min-width:0}
.occurrence-person>div{min-width:0}
.occurrence-person .aps-avatar{flex:none}
.occurrence strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dd-ink);font-size:14px;font-weight:700}
.occurrence span,.occurrence small{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dd-ink-mute);font-size:12.5px;line-height:1.35}
.occurrence-label{color:var(--dd-ink);font-size:13px;font-weight:700}
.status-pill{display:inline-flex;padding:5px 11px;border-radius:999px;font-size:11.5px;font-weight:700}
.status-pill.free{color:#0b6b47;background:var(--dd-green-soft)}
.status-pill.refund{color:var(--dd-ink-mute);background:var(--dd-bg)}
.occurrence-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}
.occurrence-actions .aps-btn{min-height:36px;padding:0 10px;white-space:nowrap;font-size:12px}

/* ============================================================
   LATERAL — política atual / sobre o histórico
   ============================================================ */
.policy-summary{display:flex;flex-direction:column;gap:14px}
.policy-rule{display:flex;align-items:flex-start;gap:12px}
.policy-icon{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:10px;color:var(--dd-violet);background:var(--dd-violet-soft);font-weight:700;font-size:13px}
.policy-icon svg{width:16px;height:16px}
.policy-rule strong{display:block;color:var(--dd-ink);font-size:13px;font-weight:700}
.policy-rule span{display:block;margin-top:2px;color:var(--dd-ink-soft);font-size:12.5px;line-height:1.4}
.policy-summary>.aps-btn{align-self:flex-start}

.flow-list{display:flex;flex-direction:column;gap:14px}
.flow-item{display:flex;align-items:flex-start;gap:12px}
.flow-number{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;color:var(--dd-violet-dark);background:var(--dd-violet-soft);font-size:11.5px;font-weight:800}
.flow-item strong{display:block;color:var(--dd-ink);font-size:13px;font-weight:700}
.flow-item span{display:block;margin-top:2px;color:var(--dd-ink-soft);font-size:12.5px;line-height:1.4}

/* ============================================================
   MODAIS — política / cancelar pelo profissional
   ============================================================ */
.cancel-modal-bg{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:20px;background:rgba(33,26,72,.42);backdrop-filter:blur(4px)}
.cancel-modal-bg.open{display:grid}
.cancel-modal{width:min(100%,540px);padding:24px;background:var(--dd-surface);border:1px solid var(--dd-border);border-radius:var(--dd-radius-xl);box-shadow:var(--dd-shadow-md)}
.cancel-modal h2{margin:0;font-family:var(--dd-font-display);font-size:19px;font-weight:700;color:var(--dd-ink)}
.cancel-modal-copy{margin:6px 0 0;color:var(--dd-ink-soft);font-size:13px;line-height:1.5}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}
.form-field{display:grid;gap:6px}
.form-field.full{grid-column:1/-1}
.form-field label{color:var(--dd-ink-soft);font-size:12.5px;font-weight:700}
.form-field input,.form-field select,.form-field textarea{width:100%;padding:0 12px;border:1px solid var(--dd-border);border-radius:var(--dd-radius-md);outline:0;background:var(--dd-surface);color:var(--dd-ink);font-size:13.5px;font-family:inherit}
.form-field input,.form-field select{height:42px}
.form-field textarea{min-height:96px;padding:11px 12px;resize:vertical}
.form-field input:focus-visible,.form-field select:focus-visible,.form-field textarea:focus-visible{box-shadow:var(--dd-shadow-focus);border-color:var(--dd-violet)}
.form-hint{color:var(--dd-ink-mute);font-size:11.5px}
.check-row{display:flex;align-items:flex-start;gap:11px;cursor:pointer}
.check-row input{margin-top:3px;width:18px;height:18px;accent-color:var(--dd-violet);cursor:pointer}
.check-row strong{display:block;color:var(--dd-ink);font-size:13.5px}
.check-row small{display:block;margin-top:2px;color:var(--dd-ink-mute);font-size:12px}
.cancel-warning{margin-top:16px;padding:12px 14px;border-radius:var(--dd-radius-md);color:#8a5a09;background:var(--dd-amber-soft);font-size:12.5px;line-height:1.5}
.cancel-modal-feedback{min-height:18px;margin:14px 0 0;color:#a32a20;font-size:13px}
.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid var(--dd-border)}

/* ============================================================
   RESPONSIVO
   ============================================================ */
@media (max-width:1180px){
  .metric-grid{grid-template-columns:1fr 1fr}
  .metric-grid:has(.metric-card[data-cancel-filter="unknown"]:not([hidden])){grid-template-columns:1fr 1fr}
}
@media (max-width:1080px){
  .cancel-layout{grid-template-columns:1fr}
}
@media (max-width:780px){
  .cancel-head{display:block}
  .cancel-head-actions{margin-top:14px;flex-direction:column;align-items:stretch;gap:10px}
  .cancel-head-actions .aps-btn{width:100%}
  .metric-grid{grid-template-columns:1fr 1fr;gap:10px}
  .metric-card{padding:12px 14px}
  .metric-card strong{font-size:19px}
  .section-card{padding:15px}
  .section-head{display:block}
  .section-head .aps-btn{width:100%;margin-top:10px}
  .occurrence{grid-template-columns:1fr 1fr}
  .occurrence-person{grid-column:1/-1}
  .occurrence-actions{justify-content:flex-start}
  .form-grid{grid-template-columns:1fr}
  .form-field.full{grid-column:auto}
}
@media (max-width:560px){
  .metric-grid{grid-template-columns:1fr}
  .occurrence{grid-template-columns:1fr}
  .occurrence-person{grid-column:auto}
  .occurrence-actions{display:grid}
  .occurrence-actions .aps-btn{width:100%}
}
