/* Pulso 1.0 · shared component contract. Foundations: pulso.tokens.json. */
.p-button { min-height:var(--p-control-default); display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px 18px; border:1px solid var(--p-border-control); border-radius:var(--p-radius-sm); background:var(--p-surface); color:var(--p-text); text-decoration:none; font:600 14px/1.4 var(--p-font-body); cursor:pointer; transition:background var(--p-motion-fast),border-color var(--p-motion-fast); }
.p-button:hover { background:var(--p-surface-raised); }
.p-button:active { transform:translateY(1px); }
.p-button.primary { background:var(--p-action); border-color:var(--p-action); color:var(--p-action-ink); }
.p-button.primary:hover { background:var(--p-action-hover); border-color:var(--p-action-hover); }
.p-button.primary:active { background:var(--p-action-active); }
.p-button.ghost { border-color:transparent; background:transparent; color:var(--p-brand); }
.p-button.danger { background:var(--p-danger-fill); border-color:var(--p-danger-fill); color:#fff; }
.p-button.large { min-height:var(--p-control-large); padding:14px 24px; }
.p-button.compact { min-height:var(--p-control-compact); padding:6px 12px; }
.p-button.icon { padding:0; width:44px; height:44px; }
.p-button:disabled,.p-button[aria-disabled="true"] { opacity:.45; cursor:not-allowed; transform:none; }
.p-button[aria-busy="true"]::before { content:""; width:14px; height:14px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:p-spin .8s linear infinite; }
@keyframes p-spin { to { transform:rotate(360deg); } }
:where(.p-button,.p-input,.p-select,.p-tab,.p-check input,.p-switch input,summary,a):focus-visible { outline:3px solid var(--p-focus); outline-offset:3px; }
.p-badge { display:inline-flex; align-items:center; gap:6px; padding:5px 8px; border:1px solid var(--p-border); border-radius:6px; color:var(--p-text-muted); font-size:12px; line-height:1.3; font-weight:600; }
.p-badge.live,.p-badge.error { color:var(--p-danger); }
.p-badge.live::before { content:""; background:currentColor; width:6px; height:6px; border-radius:50%; }
.p-badge.success { color:var(--p-success); }.p-badge.warning { color:var(--p-warning); }.p-badge.info { color:var(--p-info); }
.p-badge.editorial { color:var(--p-highlight-ink); background:var(--p-highlight); border-color:transparent; }
.p-field { display:grid; gap:8px; font-size:14px; min-width:0; }
.p-label { font-weight:600; }.p-help { color:var(--p-text-muted); font-size:12px; margin:0; }
.p-input,.p-select { box-sizing:border-box; width:100%; min-height:44px; border:1px solid var(--p-border-control); border-radius:8px; background:var(--p-bg); color:var(--p-text); padding:10px 12px; font:400 14px/1.5 var(--p-font-body); }
.p-input::placeholder { color:var(--p-text-subtle); }
.p-input[aria-invalid="true"] { border-color:var(--p-danger); }
.p-input:disabled { opacity:.5; cursor:not-allowed; }
.p-error { color:var(--p-danger); font-size:12px; margin:0; }
.p-check,.p-switch { display:flex; align-items:center; gap:10px; min-height:44px; cursor:pointer; font-size:14px; }
.p-check input { width:18px; height:18px; accent-color:var(--p-action); }
.p-switch input { appearance:none; width:40px; height:24px; border-radius:20px; background:var(--p-border-control); position:relative; margin:0; border:2px solid transparent; cursor:pointer; flex:none; }
.p-switch input::after { content:""; position:absolute; left:2px; top:2px; width:16px; height:16px; border-radius:50%; background:white; transition:transform var(--p-motion-fast); }
.p-switch input:checked { background:var(--p-action); }.p-switch input:checked::after { transform:translateX(16px); }
.p-tabs { display:flex; gap:4px; border-bottom:1px solid var(--p-border); overflow-x:auto; }
.p-tab { min-height:44px; white-space:nowrap; background:none; border:0; border-bottom:2px solid transparent; color:var(--p-text-muted); padding:10px 16px; cursor:pointer; font:500 14px var(--p-font-body); }
.p-tab[aria-selected="true"] { border-color:var(--p-brand); color:var(--p-brand); }
.p-panel { background:var(--p-surface); border:1px solid var(--p-border); border-radius:var(--p-radius-md); }
.p-table-scroll { overflow-x:auto; max-width:100%; border:1px solid var(--p-border); border-radius:12px; }
.p-table { border-collapse:collapse; width:100%; font-size:13px; font-variant-numeric:tabular-nums; }
.p-table caption { text-align:left; padding:16px; font-weight:600; color:var(--p-text); }
.p-table th,.p-table td { text-align:right; padding:14px 16px; border-top:1px solid var(--p-border); white-space:nowrap; }
.p-table th { color:var(--p-text-muted); background:var(--p-surface-raised); font-weight:500; }
.p-table th:first-child,.p-table td:first-child { text-align:left; }
.p-table th button { color:inherit; background:none; border:0; min-height:32px; cursor:pointer; font:inherit; padding:0; }
.p-alert { padding:16px; border:1px solid var(--p-border); border-left:3px solid var(--p-info); border-radius:10px; font-size:14px; color:var(--p-text-muted); line-height:1.6; }
.p-alert strong { display:block; color:var(--p-text); margin-bottom:5px; }.p-alert.warning { border-left-color:var(--p-warning); }.p-alert.error { border-left-color:var(--p-danger); }
.p-empty { text-align:center; padding:32px; border:1px dashed var(--p-border-control); border-radius:12px; color:var(--p-text-muted); font-size:14px; }.p-empty strong { color:var(--p-text); display:block; margin-bottom:8px; }
.p-skeleton { min-height:16px; border-radius:6px; background:var(--p-surface-raised); position:relative; overflow:hidden; }
.p-skeleton::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,transparent,#8994ac18,transparent); transform:translateX(-100%); animation:p-shimmer 1.6s infinite; }@keyframes p-shimmer { to { transform:translateX(100%); } }
.p-accordion { border:1px solid var(--p-border); border-radius:12px; padding:0 16px; }
.p-accordion summary { cursor:pointer; min-height:52px; padding:14px 0; font-weight:600; }.p-accordion p { color:var(--p-text-muted); font-size:14px; padding-bottom:16px; line-height:1.6; }
.p-dialog { border:1px solid var(--p-border-control); border-radius:20px; background:var(--p-surface); color:var(--p-text); padding:0; width:min(480px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto; box-shadow:0 24px 80px #0005; }
.p-dialog::backdrop { background:var(--p-overlay); }.p-dialog-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 24px; border-bottom:1px solid var(--p-border); }.p-dialog h2 { margin:0; font:500 24px var(--p-font-display); }.p-dialog-body { padding:24px; }.p-dialog-foot { display:flex; justify-content:flex-end; gap:12px; padding:0 24px 24px; }
.p-toast { position:fixed; z-index:var(--p-layer-toast); right:24px; bottom:24px; max-width:min(400px,calc(100vw - 32px)); background:var(--p-surface-raised); color:var(--p-text); border:1px solid var(--p-border-control); border-radius:12px; padding:16px 20px; box-shadow:0 10px 30px #0004; font-size:14px; }
.p-toast:empty { display:none; }
.p-metric { padding:20px; display:grid; gap:8px; }.p-metric small { color:var(--p-text-muted); font-size:12px; }.p-metric strong { font:500 36px/1.1 var(--p-font-display); font-variant-numeric:tabular-nums; letter-spacing:-.04em; }
.p-match { padding:20px; }.p-match-head { display:flex; justify-content:space-between; gap:16px; font-size:12px; color:var(--p-text-muted); }.p-match-teams { display:grid; grid-template-columns:1fr auto 1fr; gap:16px; align-items:center; text-align:center; padding:24px 0; }.p-match-teams strong { font:500 36px var(--p-font-display); }.p-match-teams span { font-size:14px; }.p-match-foot { border-top:1px solid var(--p-border); padding-top:16px; display:flex; align-items:center; gap:12px; justify-content:space-between; color:var(--p-text-muted); font-size:12px; }
.p-code { border:1px solid var(--p-border); background:var(--p-bg); border-radius:10px; padding:16px; font:12px/1.7 Consolas,monospace; overflow-x:auto; color:var(--p-text-muted); white-space:pre-wrap; overflow-wrap:anywhere; }
.p-pick { padding:24px; display:grid; gap:20px; }.p-pick h4 { font:500 24px/1.2 var(--p-font-display); margin:12px 0 6px; }.p-pick p,.p-pick dt { font-size:12px; color:var(--p-text-muted); }.p-pick dl { display:flex; flex-wrap:wrap; gap:24px; margin:0; }.p-pick dd { font:500 22px/1.3 var(--p-font-display); margin:8px 0 0; font-variant-numeric:tabular-nums; }
@media (prefers-reduced-motion:reduce) { .p-skeleton::after,.p-button[aria-busy]::before { animation:none; } *,*::before,*::after { transition-duration:.01ms!important; scroll-behavior:auto!important; } }
@media (max-width:600px) { .p-button.compact,.p-table th button { min-height:44px; } }
