/* ===== Portal 3.0 Go (M0), choice (M1) and form (M2), result, status and file-request (M3) cards: chat-cards*.js =====
   Theme tokens only (dark default, [data-theme="light"], [data-theme="girly"]).
   Every control is at least 44 by 44 CSS pixels; state is always a word, never color only. */

.msg.card-pending .msg-bubble{border-left:3px solid var(--pb-blue)}

.pc-card{margin:8px 0;padding:12px;border:1px solid var(--pb-border-hover);border-radius:var(--pb-radius,10px);
  background:var(--pb-accent-soft);color:var(--pb-text);width:100%;box-sizing:border-box;font-size:inherit}
.pc-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.pc-chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:0.8em;font-weight:700;letter-spacing:0.04em;
  text-transform:uppercase;background:var(--pb-blue);color:#fff}
.pc-card[data-state="answered"] .pc-chip,.pc-card[data-state="closed"] .pc-chip,.pc-card[data-state="superseded"] .pc-chip,
.pc-card[data-state="expired"] .pc-chip,.pc-card[data-state="ready"] .pc-chip{background:var(--pb-surface-3);color:var(--pb-text)}
.pc-left{color:var(--pb-text-muted);font-size:0.9em}
.pc-prompt{font-weight:600;margin:2px 0}
.pc-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

.pc-rows{margin-top:6px}
.pc-row{padding:8px 0;border-top:1px solid var(--pb-border)}
.pc-row:first-child{border-top:0}
.pc-line{display:flex;gap:8px;align-items:baseline}
.pc-num{min-width:1.4em;color:var(--pb-text-muted);font-weight:700}
.pc-label{flex:1;white-space:pre-wrap;overflow-wrap:anywhere}
.pc-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}
.pc-status{flex:1;min-width:0;color:var(--pb-text-muted);font-size:0.95em;outline-offset:2px}
.pc-row-btns{display:flex;gap:8px;margin-left:auto}
.pc-detail{margin:6px 0 0 1.4em;padding:8px 10px;border-left:2px solid var(--pb-border-hover);color:var(--pb-text-muted)}
.pc-detail[hidden]{display:none}
.pc-detail-line{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0}
.pc-ask{margin-top:6px}
.pc-ask-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pc-ask-line .pc-ask-field{flex:1 1 14em;width:auto;min-width:0;margin-top:0;resize:none}
.pc-ask-btns{display:flex;flex-wrap:wrap;gap:8px}
.pc-ask-pending:not(:empty){display:flex;align-items:center;gap:8px;margin-top:6px;color:var(--pb-text);font-size:0.9em}
.pc-ask-pending-text{flex:1;min-width:0;overflow-wrap:anywhere}
.pc-ask-hint{margin-top:6px;color:var(--pb-text-muted);font-size:0.9em}
.pc-ask-hint[hidden]{display:none}
.pc-count-note{margin-top:4px;color:var(--pb-text);font-size:0.9em;overflow-wrap:anywhere}
.pc-count-note[hidden]{display:none}

.pc-btn{min-height:44px;min-width:44px;padding:8px 14px;border-radius:8px;border:1px solid var(--pb-border-hover);
  background:var(--pb-surface-2);color:var(--pb-text);font:inherit;cursor:pointer}
.pc-btn:hover:not(:disabled){border-color:var(--pb-blue)}
.pc-btn:focus-visible,.pc-note:focus-visible{outline:2px solid var(--pb-blue);outline-offset:2px}
.pc-btn:disabled{opacity:0.55;cursor:not-allowed}
.pc-btn[hidden]{display:none}
.pc-primary{background:var(--pb-blue);border-color:var(--pb-blue);color:#fff;font-weight:700}
.pc-secondary{background:transparent}
.pc-more{background:transparent}
.pc-wide{display:block;width:100%;margin-top:10px}
.pc-link{background:transparent;border-color:transparent;color:var(--pb-blue);text-decoration:underline;padding-left:0}

.pc-confirm{margin-top:10px;padding:10px;border:1px solid var(--pb-blue);border-radius:8px;background:var(--pb-surface)}
.pc-confirm[hidden]{display:none}
.pc-confirm-title{font-weight:700;margin-bottom:6px}
.pc-confirm-item{margin:2px 0;overflow-wrap:anywhere}
.pc-actions{display:flex;justify-content:space-between;gap:8px;margin-top:8px}

.pc-note-label{display:block;margin-top:10px;color:var(--pb-text-muted);font-size:0.9em}
.pc-note{display:block;width:100%;box-sizing:border-box;min-height:44px;margin-top:4px;padding:8px;border-radius:8px;
  border:1px solid var(--pb-border-hover);background:var(--pb-surface);color:var(--pb-text);font:inherit;resize:vertical}
.pc-note[hidden],.pc-note-label[hidden]{display:none}
.pc-note::placeholder{color:var(--pb-text-muted);opacity:1}
.pc-footer,.pc-end{margin-top:6px;color:var(--pb-text-muted);font-size:0.9em}

/* Choice cards (M1): real radios / tick boxes; the whole label row is the 44px target */
.pc-choice .pc-fieldset{margin:6px 0 0;padding:0;border:0;min-width:0}
.pc-legend{padding:0;margin-bottom:4px;color:var(--pb-text-muted);font-size:0.9em}
.pc-option{padding:2px 0;min-height:44px}
.pc-option .pc-line{align-items:center}
.pc-input{flex:0 0 auto;width:20px;height:20px;margin:0 0 0 4px;accent-color:var(--pb-blue);cursor:pointer}
.pc-input[hidden]{display:none}
.pc-opt-label{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:44px;padding:4px 0;cursor:pointer}
.pc-opt-label:has(.pc-input:disabled),.pc-opt-label:has(.pc-input[hidden]){cursor:default}
.pc-option .pc-ctl{flex:0 0 auto;margin-top:0}
.pc-option .pc-ask[hidden],.pc-other[hidden]{display:none}
.pc-other{margin-top:8px}
.pc-input:focus-visible{outline:2px solid var(--pb-blue);outline-offset:2px}
.pc-rec,.pc-picked{display:inline-block;padding:1px 8px;border-radius:999px;font-size:0.8em;font-weight:700;
  border:1px solid var(--pb-blue);color:var(--pb-text);background:var(--pb-surface-2)}
.pc-picked{background:var(--pb-blue);color:#fff}
.pc-picked[hidden]{display:none}
.pc-choice .pc-status{display:block;margin-top:6px}
.pc-choice .pc-status:empty{display:none}
.pc-choice .pc-actions{margin-top:10px}
.pc-choice .pc-actions[hidden],.pc-choice .pc-footer[hidden]{display:none}

/* Form cards (M2): real text fields and a pressed yes/no pair; the fixed warning always shows */
.pc-form .pc-fieldset{margin:6px 0 0;padding:0;border:0;min-width:0}
.pc-form .pc-field{padding:8px 0}
.pc-field-label{display:block;margin-bottom:4px;white-space:pre-wrap;overflow-wrap:anywhere}
.pc-optional{margin-left:6px;color:var(--pb-text-muted);font-size:0.85em}
.pc-hint{margin:0 0 4px;color:var(--pb-text-muted);font-size:0.9em;white-space:pre-wrap;overflow-wrap:anywhere}
.pc-form .pc-field-input{display:block;width:100%;box-sizing:border-box;min-height:44px;padding:8px;border-radius:8px;
  border:1px solid var(--pb-border-hover);background:var(--pb-surface);color:var(--pb-text);font:inherit}
.pc-form textarea.pc-field-input{resize:vertical}
.pc-form .pc-field-input:focus-visible{outline:2px solid var(--pb-blue);outline-offset:2px}
.pc-yn-set{margin:0;padding:0;border:0;min-width:0}
.pc-yn-set .pc-legend{color:var(--pb-text);font-size:inherit;white-space:pre-wrap;overflow-wrap:anywhere}
.pc-yn-row{display:flex;gap:8px}
.pc-yn{min-height:44px;min-width:72px}
.pc-yn[aria-pressed="true"]{background:var(--pb-blue);border-color:var(--pb-blue);color:#fff;font-weight:700}
.pc-value{white-space:pre-wrap;overflow-wrap:anywhere;padding:6px 10px;border-left:2px solid var(--pb-blue);background:var(--pb-surface)}
.pc-value[hidden]{display:none}
.pc-warn{margin-top:8px;font-weight:600;color:var(--pb-text)}
.pc-secret-card{white-space:pre-wrap;overflow-wrap:anywhere}
.pc-secret-warn{margin-top:6px;font-weight:700}
.pc-form .pc-status{display:block;margin-top:6px}
.pc-form .pc-status:empty{display:none}
.pc-form .pc-actions[hidden],.pc-form .pc-footer[hidden]{display:none}

/* Result (M3): table always, bars sized by style.width, line chart from numbers only */
.pc-result .pc-table-wrap{margin-top:8px;overflow-x:auto}
.pc-table{border-collapse:collapse;width:100%;font-size:0.95em}
.pc-table th,.pc-table td{padding:6px 8px;border-top:1px solid var(--pb-border);text-align:left;overflow-wrap:anywhere}
.pc-table td{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.pc-table thead th{color:var(--pb-text-muted);font-weight:600;border-top:0}
.pc-table thead th+th{text-align:right}
.pc-table tbody th{font-weight:400}
.pc-bars{margin-top:8px;display:grid;gap:6px}
.pc-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto;gap:8px;align-items:center}
.pc-bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--pb-text-muted);font-size:0.9em}
.pc-bar-track{height:12px;border-radius:6px;background:var(--pb-surface-3);overflow:hidden}
.pc-bar-fill{height:100%;min-width:2px;border-radius:6px;background:var(--pb-blue)}
.pc-bar-value{font-variant-numeric:tabular-nums;font-size:0.9em}
.pc-line-chart{display:block;width:100%;height:80px;margin-top:8px}
.pc-line-path{fill:none;stroke:var(--pb-blue);stroke-width:2;vector-effect:non-scaling-stroke}
/* Status (M3): one card per id, the latest update in place; older instances are one-line stubs */
.pc-status-card[data-state="done"] .pc-chip{background:var(--pb-surface-3);color:var(--pb-text)}
.pc-status-card[data-state="failed"] .pc-chip{background:var(--pb-red,#c62828);color:#fff}
.pc-status-text{margin-top:6px;overflow-wrap:anywhere}
.pc-progress{margin-top:8px;height:10px;border-radius:5px;background:var(--pb-surface-3);overflow:hidden}
.pc-progress-fill{height:100%;background:var(--pb-blue)}
.pc-earlier{margin-top:4px;padding-left:10px;border-left:2px solid var(--pb-border-hover);color:var(--pb-text-muted);font-size:0.9em}
.pc-earlier[hidden]{display:none}
.pc-earlier-item{padding:2px 0;overflow-wrap:anywhere}
.pc-status-stub{margin:4px 0;color:var(--pb-text-muted);font-size:0.9em;font-style:italic}
/* File request (M3 PR B): a drop zone plus a Choose file button; controls are removed once answered */
.pc-drop{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;padding:12px;border:2px dashed var(--pb-border-hover);border-radius:8px}
.pc-drop.pc-drop-over{border-color:var(--pb-blue);background:var(--pb-surface)}
.pc-drop-text,.pc-accept{color:var(--pb-text-muted);font-size:0.95em}
.pc-accept{margin-top:6px}
.pc-chosen{margin-top:6px;overflow-wrap:anywhere}.pc-chosen:empty{display:none}
.pc-file .pc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.pc-file-ctl[hidden],.pc-file-input[hidden]{display:none}
.pc-say{margin-top:6px;color:var(--pb-text-muted);overflow-wrap:anywhere;outline-offset:2px}.pc-say:empty{display:none}
.pc-file .pc-value{margin-top:6px}

/* Light and girly: stronger control borders (3 to 1) on their light bubbles */
[data-theme="light"] .pc-card{background:var(--pb-surface);border-color:var(--pb-text-dim)}
[data-theme="light"] .pc-btn,[data-theme="light"] .pc-note{border-color:var(--pb-text-dim)}
[data-theme="light"] .pc-link{color:var(--pb-blue-dark)}
[data-theme="light"] .pc-primary{border-color:var(--pb-blue-dark);background:var(--pb-blue-dark)}
[data-theme="girly"] .pc-card{background:var(--pb-surface-2);border-color:var(--pb-text-muted)}
[data-theme="girly"] .pc-btn,[data-theme="girly"] .pc-note{border-color:var(--pb-text-muted)}
[data-theme="girly"] .pc-primary{border-color:var(--pb-blue);background:var(--pb-blue)}
[data-theme="light"] .pc-option .pc-rec{border-color:var(--pb-blue-dark);color:var(--pb-text)}
[data-theme="light"] .pc-option .pc-picked{border-color:var(--pb-blue-dark);background:var(--pb-blue-dark)}
[data-theme="light"] .pc-option .pc-input{accent-color:var(--pb-blue-dark)}
[data-theme="girly"] .pc-option .pc-rec{border-color:var(--pb-text-muted);color:var(--pb-text)}
[data-theme="girly"] .pc-option .pc-picked{border-color:var(--pb-blue);background:var(--pb-blue)}
[data-theme="light"] .pc-form .pc-field-input{border-color:var(--pb-text-dim)}
[data-theme="light"] .pc-form .pc-yn[aria-pressed="true"]{border-color:var(--pb-blue-dark);background:var(--pb-blue-dark)}
[data-theme="girly"] .pc-form .pc-field-input{border-color:var(--pb-text-muted)}
[data-theme="girly"] .pc-form .pc-yn[aria-pressed="true"]{border-color:var(--pb-blue);background:var(--pb-blue)}
[data-theme="light"] .pc-bar-fill,[data-theme="light"] .pc-progress-fill{background:var(--pb-blue-dark)}
[data-theme="light"] .pc-line-path{stroke:var(--pb-blue-dark)}
[data-theme="light"] .pc-bar-track,[data-theme="light"] .pc-progress{background:var(--pb-surface-2);box-shadow:inset 0 0 0 1px var(--pb-text-dim)}
[data-theme="girly"] .pc-bar-track,[data-theme="girly"] .pc-progress{background:var(--pb-surface);box-shadow:inset 0 0 0 1px var(--pb-text-muted)}
[data-theme="light"] .pc-drop{border-color:var(--pb-text-dim)}
[data-theme="girly"] .pc-drop{border-color:var(--pb-text-muted)}

/* Phone: label on its own line, controls below; three 44px controls fit in about 300px */
@media (max-width:480px){
  .pc-card{padding:10px}
  .pc-ctl{gap:8px}
  .pc-status{flex-basis:100%;order:3}
  .pc-row-btns{margin-left:auto}
}
@media (prefers-reduced-motion:reduce){.pc-btn{transition:none}}

/* ===== M4 pending decisions tray (card-tray.js): top-right panel, chat-button count, phone strip and sheet ===== */
.pc-tray-btn{position:relative;display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:28px;padding:0 10px;
  border:1px solid var(--pb-border-hover);border-radius:var(--pb-radius-sm);background:transparent;color:var(--pb-text-dim);font:inherit;
  font-size:var(--pb-fs-md);font-weight:600;line-height:1;font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap}
/* Option A count pill: a 28px chip like its toolbar neighbours, an invisible --pb-hit box (sizes.css pattern), states by data-state. */
.pc-tray-btn::before{content:"";position:absolute;left:0;right:0;top:min(0px,calc((100% - var(--pb-hit)) / 2));bottom:min(0px,calc((100% - var(--pb-hit)) / 2))}
.pc-tray-btn:hover,.pc-tray-btn[data-state="waiting"]{border-color:var(--pb-blue);color:var(--pb-text)}
.pc-tray-ic{width:14px;height:14px;flex-shrink:0;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='2' width='8' height='4' rx='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='2' width='8' height='4' rx='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E") center/contain no-repeat}
.pc-tray-n{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:20px;height:18px;padding:0 6px;margin-left:-4px;
  border-radius:var(--pb-radius-pill);background:var(--pb-accent);color:var(--pb-on-accent);font-weight:700}
.pc-tray-n[hidden],.pc-tray-btn[data-state="waiting"] .pc-tray-ic{display:none}
.pc-tray-btn[data-state="checking"] .pc-tray-ic{width:12px;height:12px;box-sizing:border-box;border-radius:50%;
  border:2px solid var(--pb-border-hover);border-top-color:var(--pb-blue);background:none;-webkit-mask:none;mask:none}
/* Could not check: an alert circle in the danger colour, so it differs from the checking ring even with no motion. */
.pc-tray-btn[data-state="error"] .pc-tray-ic{border:0;background:var(--pb-danger-text);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 7v6M12 16.5v.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9.5'/%3E%3Cpath d='M12 7v6M12 16.5v.5'/%3E%3C/svg%3E") center/contain no-repeat}
@media (prefers-reduced-motion:no-preference){.pc-tray-btn[data-state="checking"] .pc-tray-ic{animation:pc-tray-spin .9s linear infinite}}
@keyframes pc-tray-spin{to{transform:rotate(360deg)}}
.pc-tray-btn:focus-visible,.pc-tray-head:focus-visible,.pc-tray button:focus-visible,.pc-tray-strip button:focus-visible{outline:2px solid var(--pb-blue);outline-offset:2px}
.pc-tray{position:fixed;right:16px;top:52px;z-index:140;width:340px;max-width:calc(100vw - 32px);max-height:calc(100vh - 140px);
  overflow-y:auto;box-sizing:border-box;padding:12px;border:1px solid var(--pb-border);border-radius:var(--pb-radius,10px);
  background:var(--pb-surface);color:var(--pb-text);box-shadow:var(--pb-shadow,0 8px 24px rgba(0,0,0,.35));transition:opacity .15s}
.pc-tray[hidden],.pc-tray-strip[hidden],.pc-tray-backdrop[hidden]{display:none}
.pc-tray-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.pc-tray-head{margin:0;font-size:1em;font-weight:700}
.pc-tray-list{list-style:none;margin:0;padding:0}
.pc-tray-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:8px 0;border-top:1px solid var(--pb-border)}
.pc-tray-kind{font-size:0.75em;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:var(--pb-blue)}
.pc-tray-title{flex:1 1 100%;font-weight:600;overflow-wrap:anywhere}
.pc-tray-meta{flex:1 1 auto;display:flex;flex-wrap:wrap;gap:2px 10px;color:var(--pb-text-muted);font-size:0.85em}
.pc-tray-actions{margin-left:auto}
.pc-tray-far{flex-basis:100%;color:var(--pb-text-muted);font-size:0.85em}
.pc-tray-empty,.pc-tray-foot{color:var(--pb-text-muted);font-size:0.85em;padding:6px 0}
.pc-tray-strip{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 8px;margin:0 8px 6px;box-sizing:border-box;
  border:1px solid var(--pb-blue);border-radius:var(--pb-radius,10px);background:var(--pb-surface);color:var(--pb-text)}
.pc-tray-strip-text{flex:1;font-weight:600}
.pc-tray-backdrop{position:fixed;inset:0;z-index:9997;background:rgba(0,0,0,.45)}
.pc-tray.pc-tray-sheet{left:0;right:0;top:auto!important;bottom:56px;width:auto;max-width:none;max-height:70vh;z-index:9998;
  border-radius:var(--pb-radius,10px) var(--pb-radius,10px) 0 0}
[data-theme="light"] .pc-tray,[data-theme="light"] .pc-tray-strip{box-shadow:0 8px 24px rgba(0,0,0,.12)}
[data-theme="girly"] .pc-tray,[data-theme="girly"] .pc-tray-strip{box-shadow:0 8px 24px rgba(160,40,110,.18)}
@media (max-width:1024px){.pc-tray-btn{height:auto;min-height:44px;min-width:44px;justify-content:center}.pc-tray-btn::before{display:none}
  .pc-tray-l{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .pc-tray-btn[data-state="waiting"] .pc-tray-ic{display:block}.pc-tray-n{margin-left:0}}
@media (prefers-reduced-motion:reduce){.pc-tray,.pc-tray-btn{transition:none}}
