/* Product-wide interaction tokens; visual layout stays in feature styles. */
:root { --interaction-fast:120ms; --interaction-panel:180ms; --interaction-ease:cubic-bezier(.2,.7,.2,1); }
.portal-page { --surface-floating:var(--surface-canvas); --surface-border:var(--border-default); }
.portal-page button,.portal-page a,.portal-page input,.portal-page textarea,.portal-page select { -webkit-tap-highlight-color:transparent; }
.portal-page button,.portal-page a.portal-button,.portal-page .portal-button { transition:background-color var(--interaction-fast),border-color var(--interaction-fast),color var(--interaction-fast),box-shadow var(--interaction-fast),opacity var(--interaction-fast); }
.portal-page button:not(:disabled):active,.portal-page a.portal-button:active { filter:none; }
.portal-page button:disabled { cursor:default; opacity:.5; }
.portal-page button[aria-busy="true"] { cursor:progress; opacity:.8; }
.portal-page button[aria-busy="true"]::before { content:""; display:inline-block; flex:none; width:16px; height:16px; margin:0; background:currentColor; mask:var(--spinner-mask) center/contain no-repeat; -webkit-mask:var(--spinner-mask) center/contain no-repeat; animation:interaction-spin .8s steps(8) infinite; }
.portal-page :is(button,a,[tabindex]):focus-visible { outline:2px solid var(--text-tertiary); outline-offset:3px; }
.portal-page :is(h1,h2,h3)[tabindex="-1"]:focus { outline:none; }
.portal-page main:not(.dashboard-main) { animation:interaction-arrive var(--interaction-panel) var(--interaction-ease); }
.portal-dialog[open] { animation:interaction-arrive 140ms var(--interaction-ease); }
.portal-dialog::backdrop { animation:interaction-fade 140ms ease-out; }
.country-shape,.small-country { transition:fill var(--interaction-fast); }
.country-detail[aria-busy="true"] .country-metrics { opacity:.6; }
.country-detail .country-metrics { transition:opacity var(--interaction-fast); }
.task-flow-controls { display:flex; justify-content:space-between; gap:12px; padding-top:8px; }
.task-flow-controls button { border:0; background:none; padding:5px 0; color:var(--text-secondary); font-size:var(--font-caption); }
.task-complete-actions { display:flex; gap:15px; align-items:center; }
.company-file-chip { display:inline-flex; align-items:center; gap:7px; }
.company-file-chip button { border:0; padding:1px 4px; background:none; color:var(--text-secondary); font-size:var(--font-body); }
.confirm-dialog .dialog-actions { justify-content:flex-end; gap:10px; }
.portal-page button.danger { color:#a83420; }
.portal-page .portal-dialog { border-color:var(--surface-border); border-radius:16px; background:var(--surface-floating); padding:28px; box-shadow:var(--shadow-floating); }
.portal-page .portal-dialog::backdrop { background:#19191540; backdrop-filter:blur(2px); }
.portal-page .dialog-heading { gap:16px; margin-bottom:20px; }
.portal-page .dialog-heading h2 { color:var(--text-primary); font-size:20px; line-height:1.5; font-weight:500; letter-spacing:-.025em; }
.portal-page .portal-dialog>p { color:var(--text-secondary); font-size:var(--font-body); line-height:1.85; }
.portal-page .dialog-actions { gap:8px; padding-top:20px; border-top:1px solid var(--border-subtle); }
.portal-page .portal-dialog .portal-icon-button { width:36px; height:36px; flex-shrink:0; }
.portal-page .portal-dialog .portal-button { min-height:40px; font-size:var(--font-body); border-radius:9px; }
.portal-page .portal-toast { padding:12px 18px; border-color:var(--surface-border); border-radius:12px; background:#fff; color:var(--text-primary); font-size:var(--font-body); line-height:1.7; box-shadow:0 4px 24px #0000000d; }
.task-progress-caption,.task-status { font-size:var(--font-small); }
@keyframes interaction-arrive { from {opacity:.7;transform:translateY(4px);} to {opacity:1;transform:translateY(0);} }
@keyframes interaction-fade { from {opacity:0;} to {opacity:1;} }
@keyframes interaction-spin { to {transform:rotate(360deg);} }
@media (pointer:coarse) { .portal-page :is(.portal-icon-button,.map-controls button,.country-detail-heading button,.selected-country-chip button,.task-flow-controls button) { min-width:40px;min-height:40px; } .portal-page .country-choice { min-height:40px; } }
@media(max-width:760px) { .portal-page .portal-dialog { padding:24px; border-radius:16px; } }
@media (prefers-reduced-motion:reduce) { .portal-page *, .portal-page *::before, .portal-page *::after { animation:none!important;transition:none!important;scroll-behavior:auto!important; } html {scroll-behavior:auto;} }
.portal-page .portal-button.is-destructive { color:#fff; background:#a93d29; border-color:#a93d29; }
.portal-page .portal-button.is-destructive:hover { color:#fff; background:#8f3020; border-color:#8f3020; }
