/* AERU v2 design tokens — mirrors design-system/tokens/{colors,spacing,typography}.css. Drift checked by test/design-tokens.test.ts. */
@font-face { font-family:"Sora"; font-style:normal; font-weight:600 700; font-display:swap; src:url("/public/fonts/sora.woff2") format("woff2"); }
@font-face { font-family:"Inter"; font-style:normal; font-weight:400 600; font-display:swap; src:url("/public/fonts/inter.woff2") format("woff2"); }
@font-face { font-family:"IBM Plex Mono"; font-style:normal; font-weight:400; font-display:swap; src:url("/public/fonts/plex-mono-400.woff2") format("woff2"); }
@font-face { font-family:"IBM Plex Mono"; font-style:normal; font-weight:500; font-display:swap; src:url("/public/fonts/plex-mono-500.woff2") format("woff2"); }

:root, :root[data-mode="light"] {
  /* brand constants */
  --brand-cyan:#07BEFC; --brand-cyan-ink:#06233A; --brand-cyan-text:#0273A4; --brand-cyan-component:#0590C7; --brand-midnight:#0A0F1E;
  /* color */
  --bg:#F6F9FC; --bg-sunken:#EDF3FA; --surface:#FFFFFF; --surface-2:#EDF3FA;
  --border:#D9E2EE; --border-strong:#71849F;
  --text-primary:#0F1D33; --text-secondary:#44586F; --text-tertiary:#5B6E86;
  --accent:#07BEFC; --accent-text:#0273A4; --accent-component:#0590C7; --accent-ink:#06233A; --focus-ring:#0590C7;
  --accent-soft:#E0F4FA;
  --success-tx:#0E7A43; --success-bg:#E3F5EA; --success-bd:#4D9E6E;
  --warning-tx:#8A5A0B; --warning-bg:#FCF3DC; --warning-bd:#E7CE96;
  --danger-tx:#BE1E3C; --danger-bg:#FCE7EB; --danger-bd:#F1B3C0; --danger-solid:#C81E3D; --danger-solid-tx:#FFFFFF;
  --info-tx:#0B6E8A; --info-bg:#E0F4FA; --info-bd:#A5DCEC;
  /* semantic aliases (--text-body excluded here on purpose - see typography below) */
  --surface-page:var(--bg); --surface-card:var(--surface); --surface-inset:var(--surface-2);
  --text-muted:var(--text-secondary); --text-subtle:var(--text-tertiary);
  --text-link:var(--accent-text); --text-on-accent:var(--accent-ink);
  --border-default:var(--border); --border-control:var(--border-strong);
  --hover-overlay:rgba(15,29,51,.04); --press-overlay:rgba(15,29,51,.08);
  --scrim:rgba(15,29,51,.48);
  /* spacing / radius / elevation / focus / motion */
  --space-1:4px; --space-2:8px; --space-2-5:10px; --space-3:12px; --space-3-5:14px; --space-4:16px; --space-4-5:18px; --space-5:20px; --space-6:24px; --space-8:32px; --space-10:40px;
  --radius-badge:5px; --radius-control:8px; --radius-card:12px; --radius-card-lg:14px; --radius-hero:16px; --radius-pill:999px;
  --shadow-card:0 1px 2px rgba(15,29,51,.06),0 4px 12px rgba(15,29,51,.06);
  --shadow-popover:0 2px 6px rgba(15,29,51,.08),0 12px 32px rgba(15,29,51,.12);
  --focus-outline:2px solid var(--focus-ring); --focus-offset:2px;
  --control-h-sm:32px; --control-h-md:36px; --control-h-lg:44px;
  --sidebar-w:232px; --topbar-h:56px;
  --panel-w:320px; --detail-col-w:360px; --content-max:1240px;
  --ease-standard:cubic-bezier(.2,0,0,1); --duration-fast:120ms; --duration-base:180ms;
  /* typography */
  --text-display:48px; --text-h1:28px; --text-h1-sm:21px; --text-h2:18px; --text-h3:15px;
  --text-body:15px; --text-body-sm:13.5px; --text-secondary-size:12.5px; --text-label:11px; --text-label-min:10px;
  --text-mono:12px; --text-mono-sm:10.5px;
  --text-display-lg:56px; --text-headline:34px; --text-time-lg:30px; --text-time:24px; --text-time-sm:20px;
  --lh-display:1.1; --lh-heading:1.25; --lh-body:1.5; --lh-relaxed:1.7;
  --weight-regular:400; --weight-medium:500; --weight-semibold:600; --weight-bold:700;
  --tracking-label:.06em; --tracking-tight:-.01em;
  /* fonts (self-hosted, see @font-face above) */
  --font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-display:"Sora", var(--font-ui);
  --font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  color-scheme:light;
}
/* Dark: espelha design-system/tokens/colors.css e o override de sombra de spacing.css. Drift conferido por test/design-tokens.test.ts. */
:root[data-mode="dark"] {
  --bg:#0A0F1E; --bg-sunken:#0C1322; --surface:#0F1830; --surface-2:#101A30;
  --border:#1C2A44; --border-strong:#5270A6;
  --text-primary:#F4F7FC; --text-secondary:#A9BBD6; --text-tertiary:#8FA3BF;
  --accent:#07BEFC; --accent-text:#07BEFC; --accent-component:#07BEFC; --accent-ink:#06233A; --focus-ring:#07BEFC;
  --accent-soft:#0C2A3A;
  --success-tx:#6EE7B7; --success-bg:#0C2A1E; --success-bd:#14532D;
  --warning-tx:#FDE68A; --warning-bg:#2A2308; --warning-bd:#713F12;
  --danger-tx:#FCA5A5; --danger-bg:#2A0F16; --danger-bd:#7F1D1D; --danger-solid:#7F1D1D; --danger-solid-tx:#FFFFFF;
  --info-tx:#67E8F9; --info-bg:#0C2A3A; --info-bd:#0E7490;
  --hover-overlay:rgba(244,247,252,.05); --press-overlay:rgba(244,247,252,.09);
  --scrim:rgba(4,8,18,.64);
  --shadow-card:none; --shadow-popover:0 12px 32px rgba(0,0,0,.5);
  color-scheme:dark;
}

* { box-sizing:border-box; }
body { margin:0; min-height:100vh; display:flex; flex-direction:column; background:var(--bg); color:var(--text-secondary); font:400 14.5px/1.55 var(--font-ui); }
a { color:var(--accent-text); }
h1, h2, h3 { font-family:var(--font-display); color:var(--text-primary); margin:0 0 8px; line-height:1.2; }
h1 { font-size:21px; font-weight:600; }
h2 { font-size:16px; font-weight:600; }
p { margin:0 0 10px; }
.muted { color:var(--text-tertiary); }
.mono { font-family:var(--font-mono); font-size:12px; }
:focus-visible { outline:2px solid var(--focus-ring); outline-offset:2px; }

.top { position:sticky; top:0; z-index:5; height:var(--topbar-h); background:var(--surface); border-bottom:1px solid var(--border); display:flex; align-items:center; gap:var(--space-3-5); padding:0 var(--space-6); }
.logo { display:inline-flex; align-items:center; text-decoration:none; }
.logo-img { height:26px; width:auto; display:block; }
.org { font-size:12.5px; color:var(--text-tertiary); border-left:1px solid var(--border); padding-left:14px; }
.sp { flex:1; }
.inline { display:inline; margin:0; }

.sidebar { display:none; }
/* body is display:flex; flex-direction:column (see body rule below) so .main
   grows via flex:1 and the footer stays pinned. .shell (wraps nav/main/foot,
   see layout()) must carry the same two rules on pages with a sidebar, or the
   footer stops pinning on both /app/* and /my/* the moment this ships. */
body.has-sidebar .shell { display:flex; flex-direction:column; min-height:100vh; }
@media (min-width: 1024px) {
  .sidebar {
    display:flex; flex-direction:column; gap:var(--space-5);
    position:fixed; top:0; left:0; bottom:0; width:var(--sidebar-w);
    background:var(--surface); border-right:1px solid var(--border);
    padding:var(--space-5) var(--space-4);
  }
  .sidebar .logo { margin-left:6px; }
  .sidebar-nav { display:flex; flex-direction:column; gap:2px; }
  .sidebar-nav a { display:flex; align-items:center; gap:var(--space-2-5); min-height:var(--control-h-md); padding:0 var(--space-3) 0 var(--space-2-5); border-left:3px solid transparent; border-radius:var(--radius-control); color:var(--text-secondary); font-size:var(--text-body-sm); text-decoration:none; }
  .sidebar-nav a:hover { background:var(--hover-overlay); }
  .sidebar-nav a[aria-current="page"] { background:var(--surface-2); border-left-color:var(--accent); color:var(--text-primary); font-weight:var(--weight-medium); }
  .sidebar-hide { display:none; }
  body.has-sidebar .shell { margin-left:var(--sidebar-w); }
}

.main { flex:1; width:100%; max-width:var(--content-max); margin:0 auto; padding:var(--space-5) var(--space-6) var(--space-10); }

.card { background:var(--surface); border:1px solid var(--border); box-shadow:var(--shadow-card); border-radius:var(--radius-card-lg); padding:20px 22px; }
/* === F9 telas de conta === */
.auth { min-height:calc(100vh - var(--space-10)); display:flex; align-items:center; justify-content:center; padding:var(--space-6) 0; }
.auth-card { width:100%; max-width:400px; padding:var(--space-8) var(--space-6); display:flex; flex-direction:column; gap:var(--space-4); }
.auth-card .logo-img { height:28px; }
.auth-card h1 { margin:0; font-size:var(--text-h1-sm); font-weight:var(--weight-bold); }
.auth-card p { margin:0; }
.auth-links { display:flex; flex-direction:column; gap:var(--space-2); font-size:var(--text-body-sm); }

.stack { display:flex; flex-direction:column; gap:14px; }
label { display:flex; flex-direction:column; gap:5px; font-size:12.5px; font-weight:600; color:var(--text-secondary); }
input, select, textarea { font:inherit; color:var(--text-primary); background:var(--surface); border:1px solid var(--border-strong); border-radius:var(--radius-control); padding:var(--space-2) var(--space-2-5); min-height:var(--control-h-md); }
input::placeholder, textarea::placeholder { color:var(--text-tertiary); }
input:disabled, select:disabled, textarea:disabled { background:var(--surface-2); color:var(--text-tertiary); }
input[type="checkbox"], input[type="radio"] { min-height:0; width:18px; height:18px; accent-color:var(--accent-component); }
input[type="file"] { padding:var(--space-1) var(--space-2); }
/* 16px no toque: abaixo disso o iOS dá zoom automático ao focar o campo. */
@media (pointer: coarse), (max-width: 1023px) {
  input:not([type="checkbox"]):not([type="radio"]), select, textarea { font-size:16px; }
  input:not([type="checkbox"]):not([type="radio"]), select { min-height:var(--control-h-lg); }
}
textarea { min-height:96px; resize:vertical; }
input:user-invalid, select:user-invalid, textarea:user-invalid { border-color:var(--danger-tx); }

.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:var(--control-h-md); padding:0 var(--space-3-5); border-radius:var(--radius-control); font:600 13px/1 var(--font-ui); text-decoration:none; cursor:pointer; border:1px solid transparent; }
.btn.primary { background:var(--accent); color:var(--accent-ink); }
.btn.ghost { background:var(--surface); color:var(--text-primary); border-color:var(--border-strong); }
.btn.danger { background:var(--danger-solid); color:var(--danger-solid-tx); }

.alert { border-radius:var(--radius-control); padding:var(--space-2-5) var(--space-3); border:1px solid; font-size:13px; }
.alert.danger { background:var(--danger-bg); color:var(--danger-tx); border-color:var(--danger-bd); }
.alert.success { background:var(--success-bg); color:var(--success-tx); border-color:var(--success-bd); }
.alert.info { background:var(--info-bg); color:var(--info-tx); border-color:var(--info-bd); }

.badge { display:inline-flex; align-items:center; height:20px; padding:0 8px; border-radius:var(--radius-badge); font-size:10.5px; font-weight:700; border:1px solid; }
.badge.ok { background:var(--success-bg); color:var(--success-tx); border-color:var(--success-bd); }
.badge.alt { background:var(--warning-bg); color:var(--warning-tx); border-color:var(--warning-bd); }
.badge.can { background:var(--danger-bg); color:var(--danger-tx); border-color:var(--danger-bd); }
.badge.info { background:var(--info-bg); color:var(--info-tx); border-color:var(--info-bd); }
.badge.manual { background:var(--surface-2); color:var(--text-secondary); border-color:var(--border); }

.foot { height:36px; border-top:1px solid var(--border); background:var(--surface); display:flex; align-items:center; padding:0 20px; color:var(--text-secondary); font:400 11.5px var(--font-mono); }

@media (max-width: 640px) {
  .top { padding:0 var(--space-4); gap:var(--space-2); }
  .main { padding:var(--space-4) var(--space-4) var(--space-8); }
  .org { display:none; }
  .card { padding:16px; }
  .auth { align-items:flex-start; }
  .auth-card { padding:var(--space-6) var(--space-4); }
}

/* --- trips --- */
.search-row input { flex:1; }
.cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:10px; }
/* Service card (traveler timeline): flight renders as a leg — time + IATA at
   each end of a route line, duration in the middle; other types show
   location + start/end. */
/* === F9 card de serviço (service-card.ts) === */
.svc { display:block; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); }
/* Sem overflow:hidden (cortaria o painel do menu ⋯): a faixa de metadados e o rodapé, quando são o último bloco, herdam o raio de baixo. */
.svc > .svc-meta:last-child, .svc > .svc-foot:last-child { border-bottom-left-radius:inherit; border-bottom-right-radius:inherit; }
.timeline .now .svc { box-shadow:var(--shadow-card); }
.svc-head { display:flex; align-items:center; gap:var(--space-2-5); flex-wrap:wrap; padding:var(--space-3) var(--space-5); border-bottom:1px solid var(--border); }
.svc-tile { display:flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:7px; background:var(--surface-2); color:var(--text-secondary); }
.svc-name { font:600 var(--text-body-sm)/1.2 var(--font-display); color:var(--text-primary); }
.svc-kind { font:inherit; color:inherit; }
.svc-code { font-weight:var(--weight-medium); }
.svc-body { padding:var(--space-4) var(--space-5); }
.svc-title { margin:0 0 var(--space-2); font-size:var(--text-body-sm); font-weight:var(--weight-semibold); color:var(--text-primary); }
.svc-loc, .svc-when { margin:0; font-size:var(--text-body-sm); color:var(--text-secondary); }
.svc-loc + .svc-when { margin-top:var(--space-1); }
.leg { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:var(--space-6); }
.leg-pt { display:flex; flex-direction:column; gap:var(--space-1); }
.leg-pt.end { align-items:flex-end; text-align:right; }
.leg-time { font:500 var(--text-time-lg)/1 var(--font-mono); color:var(--text-primary); font-variant-numeric:tabular-nums; }
.leg-iata { font:600 var(--text-body-sm)/1.3 var(--font-ui); color:var(--text-primary); }
.leg-date { font-size:var(--text-secondary-size); color:var(--text-tertiary); }
.leg-mid { display:flex; flex-direction:column; align-items:center; gap:var(--space-2); }
.leg-dur { font:400 var(--text-mono)/1 var(--font-mono); color:var(--text-secondary); }
.leg-line { position:relative; width:100%; height:0; border-top:1px dashed var(--border-strong); }
.leg-line::before, .leg-line::after { content:""; position:absolute; top:-4px; width:8px; height:8px; border-radius:50%; }
.leg-line::before { left:0; background:var(--accent); }
.leg-line::after { right:0; box-sizing:border-box; border:1.5px solid var(--border-strong); background:var(--surface); }
.svc-meta { margin:0; display:grid; grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); gap:var(--space-4); padding:var(--space-3) var(--space-5); background:var(--surface-2); }
.svc-meta dt { font-size:var(--text-mono-sm); font-weight:var(--weight-semibold); letter-spacing:.08em; text-transform:uppercase; color:var(--text-tertiary); }
.svc-meta dd { margin:var(--space-1) 0 0; font-size:var(--text-body-sm); color:var(--text-secondary); }
.svc-meta .prov { margin:0; font-size:inherit; color:inherit; }
.svc-update { margin:0 var(--space-5) var(--space-4); padding:var(--space-3); border:1px solid var(--warning-bd); border-radius:var(--radius-control); background:var(--warning-bg); font-size:var(--text-body-sm); color:var(--text-primary); }
.svc-meta + .svc-update, .svc-body + .svc-update { margin-top:var(--space-4); }
.svc-update p { margin:var(--space-1) 0 0; }
.svc-update p:first-child { margin-top:0; }
.svc-update.muted { border-color:var(--border); background:var(--surface-2); color:var(--text-tertiary); }
.svc-foot { padding:var(--space-3) var(--space-5); border-top:1px solid var(--border); font-size:var(--text-secondary-size); color:var(--text-tertiary); }
.svc[data-variant="compact"] .leg-time { font-size:var(--text-time-sm); }
.svc[data-variant="compact"] .svc-body { padding:var(--space-3) var(--space-4); }
.svc[data-variant="compact"] .svc-head, .svc[data-variant="compact"] .svc-meta, .svc[data-variant="compact"] .svc-foot { padding-left:var(--space-4); padding-right:var(--space-4); }
.day + .day { margin-top:var(--space-4); }
.day-label { margin:0 0 var(--space-2); font:600 var(--text-body-sm)/1.2 var(--font-display); color:var(--text-primary); }
@media (max-width: 640px) {
  .svc-head { padding:var(--space-2-5) var(--space-3-5); }
  .svc-body { padding:var(--space-3-5); }
  .leg { gap:var(--space-3-5); }
  .leg-time { font-size:var(--text-time); }
  .svc-meta { padding:var(--space-2-5) var(--space-3-5); gap:var(--space-3); }
  .svc-update { margin-left:var(--space-3-5); margin-right:var(--space-3-5); }
  .svc-foot { padding:var(--space-2-5) var(--space-3-5); }
}
.card + .card, form .card + .card { margin-top:12px; }
.grid-4 { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:var(--space-2-5); }
.actions { display:flex; gap:var(--space-2); flex-wrap:wrap; }
.top-gap { margin-top:var(--space-3); }
.upper { text-transform:uppercase; }
label.invalid input, label.invalid select, label.invalid textarea { border-color:var(--danger-tx); }
label .error { color:var(--danger-tx); font-weight:500; }
details > summary { cursor:pointer; color:var(--accent-text); font-weight:600; font-size:13px; margin-top:8px; }
.table-wrap { overflow-x:auto; }
.table { width:100%; border-collapse:collapse; font-size:13px; }
.table th, .table td { text-align:left; padding:8px 6px; border-bottom:1px solid var(--border); vertical-align:top; }
.table th { font-size:11px; letter-spacing:.4px; text-transform:uppercase; color:var(--text-tertiary); }
.row-actions { white-space:nowrap; display:flex; gap:6px; }
/* Mobile: a .stacked table turns each row into a labeled block (design
   system: "tabelas viram listas de cards" abaixo de 768). Labels come from
   td[data-label]; the actions cell has none. */
@media (max-width: 640px) {
  .table.stacked thead { display:none; }
  .table.stacked, .table.stacked tbody, .table.stacked tr, .table.stacked td { display:block; }
  .table.stacked tr { padding:10px 0; border-bottom:1px solid var(--border); }
  .table.stacked td { padding:2px 0; border:0; display:flex; gap:var(--space-2); }
  .table.stacked td[data-label]::before { content:attr(data-label); flex:0 0 72px; padding-top:2px; font-size:var(--text-label); letter-spacing:.4px; text-transform:uppercase; color:var(--text-tertiary); }
  .table.stacked td.row-actions { padding-top:6px; }
}
.btn.small { min-height:28px; padding:0 9px; font-size:12px; }
@media (max-width: 720px) { .grid-4 { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } }

/* --- occurrences / public --- */
.sec { margin-bottom: 20px; }
.h-row { display:flex; align-items:center; justify-content:space-between; gap:var(--space-2-5); flex-wrap:wrap; margin-bottom:var(--space-2); }
.h-row h2 { margin:0; }
.grid-2 { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--space-2-5); }
.small-note { font-size:12px; }
.public-text { color:var(--text-primary); font-size:var(--text-body); line-height:1.6; white-space:pre-line; }
.internal { margin-top:var(--space-3); padding:var(--space-2-5) var(--space-3); border-radius:var(--radius-control); background:var(--warning-bg); border:1px solid var(--warning-bd); color:var(--warning-tx); font-size:13px; }
.internal p { margin:4px 0 0; color:inherit; }
.copy-row { display:flex; gap:var(--space-2); }
.copy-row input { flex:1; }
.inline-label { flex-direction:row; align-items:center; gap:8px; }
.plain { list-style:none; padding:0; margin:var(--space-3) 0 0; font-size:12.5px; color:var(--text-tertiary); }
.alert.alt { background:var(--warning-bg); color:var(--warning-tx); border-color:var(--warning-bd); }
/* === F9 páginas públicas === */
body.public { background:var(--bg); }
.public-main { max-width:520px; padding-top:var(--space-6); display:flex; flex-direction:column; gap:var(--space-3); }
.public-brand { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); }
.public-brand .logo-img { height:24px; }
.public-card { display:flex; flex-direction:column; gap:var(--space-3); padding:var(--space-5); }
.public-card .r1 { display:flex; gap:var(--space-2); flex-wrap:wrap; }
.public-title { margin:0; font-size:var(--text-h1-sm); font-weight:var(--weight-bold); }
.public-card p { margin:0; }
.reassure { margin:0; font-size:var(--text-body-sm); color:var(--text-secondary); }
.public-service { margin:0; font-size:var(--text-body-sm); color:var(--text-secondary); }
.public-block { display:flex; flex-direction:column; gap:var(--space-1); padding:var(--space-3); border:1px solid var(--border); border-radius:var(--radius-card); background:var(--surface); }
.public-block p { margin:0; }
.public-block.warn { border-color:var(--warning-bd); background:var(--warning-bg); }
.public-block.warn .label-caps { color:var(--warning-tx); }
.btn.wide { width:100%; margin:14px 0 6px; min-height:44px; font-size:14px; }
@media (max-width: 720px) { .grid-2 { grid-template-columns:minmax(0,1fr); } }

.lookup { margin-top:var(--space-3); padding:var(--space-3) var(--space-3-5); border-radius:10px; background:var(--surface-2); border:1px solid var(--border); font-size:13.5px; }
.lookup .r1 { display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; margin-bottom:6px; }
.table.compact th { text-transform:none; letter-spacing:0; font-size:12px; width:90px; }

/* --- shell chrome (fatia 1) --- */
.chip-copilot { display:inline-flex; align-items:center; gap:8px; height:32px; padding:0 var(--space-3); border:1px solid var(--border-strong); border-radius:var(--radius-control); color:var(--text-secondary); font-size:12px; }
.chip-copilot .kbd { background:var(--surface-2); border-radius:4px; padding:1px 6px; color:var(--text-link); }
.icon-btn { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:var(--radius-control); border:1px solid var(--border-strong); color:var(--text-secondary); background:var(--surface); }
.icon-btn.inert { cursor:default; }
.icon { display:block; }

.avatar-menu { position:relative; }
.avatar-trigger { list-style:none; display:flex; align-items:center; gap:4px; cursor:pointer; }
.avatar-trigger::-webkit-details-marker { display:none; }
.avatar-trigger::marker { content:""; }
.avatar { width:32px; height:32px; border-radius:var(--radius-control); background:var(--surface-2); border:1px solid var(--border); color:var(--text-primary); font:600 11px var(--font-ui); display:flex; align-items:center; justify-content:center; }
.avatar-panel { position:absolute; right:0; top:calc(100% + 6px); min-width:200px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); box-shadow:var(--shadow-popover); padding:var(--space-2); display:flex; flex-direction:column; gap:4px; z-index:10; }
.avatar-panel .avatar-name { font:600 12.5px var(--font-ui); color:var(--text-primary); padding:6px 8px; border-bottom:1px solid var(--border); margin-bottom:4px; }
.avatar-panel a, .avatar-panel button { display:flex; align-items:center; gap:8px; padding:8px; border-radius:6px; color:var(--text-primary); font:500 13px var(--font-ui); background:none; border:none; text-align:left; width:100%; cursor:pointer; text-decoration:none; }
.avatar-panel a:hover, .avatar-panel button:hover { background:var(--hover-overlay); }
@media (max-width: 640px) {
  .chip-copilot { display:none; }
}

/* --- dashboard: Copiloto panel (fatia 2) --- */

.btn:disabled { opacity:.5; cursor:not-allowed; }
.prov { margin:6px 0 0; font-size:12px; color:var(--text-tertiary); }
.prov details > summary { margin-top:4px; font-size:12px; }
.prov .plain { margin-top:4px; }

/* === F9 componentes (ui.ts) === */
.sprite { position:absolute; }
.icon { flex:none; }

/* botão: .ghost é o secundário com borda; .quiet é o sem borda; .lg 44px; .block ocupa a linha */
.btn { transition:background var(--duration-fast) var(--ease-standard), filter var(--duration-fast) var(--ease-standard); }
.btn.primary:hover, .btn.danger:hover { filter:brightness(.95); }
.btn.ghost:hover { background:var(--hover-overlay); }
.btn.quiet { background:transparent; color:var(--accent-text); }
.btn.quiet:hover { background:var(--hover-overlay); }
.btn.lg { min-height:var(--control-h-lg); padding:0 var(--space-4-5); font-size:var(--text-body-sm); }
.btn.block { display:flex; width:100%; }

.icon-btn { cursor:pointer; padding:0; }
.icon-btn:hover { background:var(--hover-overlay); }
summary.icon-btn { list-style:none; }
summary.icon-btn::-webkit-details-marker { display:none; }

.tag { display:inline-flex; align-items:center; height:22px; padding:0 var(--space-2-5); border-radius:var(--radius-pill); border:1px solid var(--border); background:var(--surface); color:var(--text-secondary); font-size:var(--text-mono); font-weight:var(--weight-medium); }

.avatar.s24 { width:24px; height:24px; font-size:var(--text-label-min); border-radius:7px; }
.avatar.s18 { width:18px; height:18px; font-size:var(--text-label-min); border-radius:var(--radius-badge); border:0; }
.avatar.accent { background:var(--accent-soft); color:var(--accent-text); border-color:var(--info-bd); }
.avatars { display:inline-flex; }
.avatars .avatar + .avatar { margin-left:-6px; box-shadow:0 0 0 2px var(--surface); }

.label-caps { margin:0; display:flex; align-items:center; gap:var(--space-2); font-size:var(--text-mono-sm); font-weight:var(--weight-semibold); letter-spacing:.08em; text-transform:uppercase; color:var(--text-tertiary); }
.label-caps .hint { font-size:var(--text-mono); font-weight:var(--weight-regular); letter-spacing:0; text-transform:none; }
.label-caps .dot { width:8px; height:8px; border-radius:50%; border:1.5px solid var(--border-strong); }
.label-caps .dot.now { background:var(--accent); border-color:var(--accent); }
.label-caps .dot.past { background:var(--border-strong); }

.menu { position:relative; }
.menu-panel { position:absolute; right:0; top:calc(100% + 6px); min-width:200px; z-index:10; display:flex; flex-direction:column; gap:var(--space-1); padding:var(--space-2); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); box-shadow:var(--shadow-popover); }
.menu-panel a, .menu-panel button { display:flex; align-items:center; gap:var(--space-2); width:100%; min-height:var(--control-h-md); padding:0 var(--space-2); border:0; border-radius:var(--radius-control); background:none; color:var(--text-primary); font:500 var(--text-body-sm) var(--font-ui); text-align:left; text-decoration:none; cursor:pointer; }
.menu-panel a:hover, .menu-panel button:hover { background:var(--hover-overlay); }
.menu-panel form { margin:0; }

.tabs { display:flex; gap:var(--space-1); border-bottom:1px solid var(--border); overflow-x:auto; }
.tabs a { display:inline-flex; align-items:center; gap:var(--space-2); min-height:var(--control-h-md); padding:0 var(--space-3); border-bottom:2px solid transparent; margin-bottom:-1px; color:var(--text-secondary); font-size:var(--text-body-sm); font-weight:var(--weight-medium); text-decoration:none; white-space:nowrap; }
.tabs a:hover { color:var(--text-primary); }
.tabs a[aria-current="page"] { color:var(--text-primary); border-bottom-color:var(--accent); }
.tabs .count { font:400 var(--text-mono) var(--font-mono); color:var(--text-tertiary); }

/* Estado vazio com ícone e ações (F9). */
.empty-state { display:flex; flex-direction:column; align-items:center; gap:var(--space-3); padding:var(--space-6); border:1px dashed var(--border-strong); border-radius:var(--radius-card); background:var(--surface); text-align:center; }
.empty-state h3 { margin:0; font-size:var(--text-h3); }
.empty-state p { margin:0; max-width:420px; color:var(--text-secondary); font-size:var(--text-body-sm); }
.empty-state .actions { justify-content:center; }
.empty-icon { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:10px; background:var(--surface-2); color:var(--text-secondary); }

.meta-list { margin:0; display:flex; flex-direction:column; gap:6px; font-size:var(--text-secondary-size); color:var(--text-tertiary); }
.meta-list div { display:flex; justify-content:space-between; gap:var(--space-3); }
.meta-list dd { margin:0; color:var(--text-secondary); text-align:right; }

/* dialog nativo; folha em tela cheia no celular; mostrado no fluxo quando não há JS */
.dialog { width:min(480px, calc(100vw - 32px)); max-height:90vh; padding:0; border:1px solid var(--border); border-radius:var(--radius-card-lg); background:var(--surface); color:var(--text-secondary); box-shadow:var(--shadow-popover); }
.dialog::backdrop { background:var(--scrim); }
.dialog-head { display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); padding:var(--space-4) var(--space-5); border-bottom:1px solid var(--border); }
.dialog-head h2 { margin:0; font-size:var(--text-h2); }
.dialog-head form { margin:0; }
.dialog-body { display:flex; flex-direction:column; gap:var(--space-3); padding:var(--space-5); overflow:auto; }
/* Só sem JS: aeru.js marca data-js em todo dialog que abre em modal, e a regra deixa de valer para ele. */
dialog.dialog:not([open]):not([data-js]):target, dialog.dialog[data-open]:not([open]):not([data-js]) { display:block; position:static; width:auto; margin:var(--space-4) 0; }
@media (max-width: 640px) {
  .dialog[open] { width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; margin:0; border:0; border-radius:0; }
  .dialog .actions .btn { min-height:var(--control-h-lg); flex:1; }
}
@media (prefers-reduced-motion: no-preference) {
  .dialog[open] { animation:dialog-in var(--duration-base) var(--ease-standard); }
}
@keyframes dialog-in { from { opacity:0; transform:translateY(8px); } }

/* Toque: no celular e em ponteiro grosso, todo controle do shell tem 44×44 (spec §5.5). */
@media (pointer: coarse), (max-width: 1023px) {
  .top .btn, .top .icon-btn, .top .avatar-trigger, .menu > summary { min-height:var(--control-h-lg); min-width:var(--control-h-lg); }
  .avatar-panel a, .avatar-panel button, .menu-panel a, .menu-panel button { min-height:var(--control-h-lg); }
  .top .logo { min-height:var(--control-h-lg); }
  /* F9.2: conteúdo das telas do viajante também em 44 px. */
  .btn, .btn.small, .tabs a, a.back, .past > summary { min-height:var(--control-h-lg); }
  .dialog-head .icon-btn { min-width:var(--control-h-lg); min-height:var(--control-h-lg); }
  .auth-links a { display:inline-flex; align-items:center; justify-content:center; min-height:var(--control-h-lg); min-width:var(--control-h-lg); }
}

/* === F9 viajante: detalhe da viagem === */
.back { display:inline-flex; align-items:center; gap:6px; min-height:var(--control-h-sm); font-size:var(--text-body-sm); font-weight:var(--weight-medium); text-decoration:none; }
.back:hover { text-decoration:underline; }
.trip-head { display:flex; flex-direction:column; gap:var(--space-3); margin-bottom:var(--space-4); }
.trip-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--space-4); flex-wrap:wrap; }
.trip-title { display:flex; align-items:center; gap:var(--space-3); flex-wrap:wrap; }
.trip-title h1 { margin:0; font-size:var(--text-h1); font-weight:var(--weight-bold); line-height:1.15; }
.trip-meta { margin:6px 0 0; display:flex; flex-wrap:wrap; gap:var(--space-1) var(--space-3); font-size:var(--text-body-sm); color:var(--text-secondary); }
.trip-meta .mono:first-child { color:var(--text-tertiary); }
.trip-actions { display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; }
.trip-grid { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--space-5); align-items:start; }
.timeline { display:flex; flex-direction:column; gap:var(--space-5); min-width:0; }
.tl-sec { display:flex; flex-direction:column; gap:var(--space-2-5); }
.tl-sec h2 { margin:0; font-size:var(--text-h3); }
.tl-sec > .muted { margin:0; }
.past > summary { list-style:none; margin:0; color:inherit; font:inherit; }
.past > summary::-webkit-details-marker { display:none; }
.past > summary .label-caps::after { content:"Mostrar"; margin-left:auto; color:var(--accent-text); font-size:var(--text-body-sm); font-weight:var(--weight-medium); letter-spacing:0; text-transform:none; }
.past[open] > summary .label-caps::after { content:"Ocultar"; }
.past[open] > summary { margin-bottom:var(--space-2-5); }
.add-dashed { display:flex; align-items:center; gap:var(--space-2-5); min-height:var(--control-h-lg); padding:0 var(--space-5); border:1px dashed var(--border-strong); border-radius:var(--radius-card); color:var(--accent-text); font-size:var(--text-body-sm); font-weight:var(--weight-medium); text-decoration:none; }
.add-dashed:hover { background:var(--hover-overlay); }
.trip-panel { display:flex; flex-direction:column; gap:var(--space-4); }
.panel-card { padding:var(--space-4); display:flex; flex-direction:column; gap:var(--space-3); }
.panel-head { display:flex; align-items:center; justify-content:space-between; gap:var(--space-2); }
.panel-card h2 { margin:0; display:flex; align-items:center; gap:var(--space-2); font-size:var(--text-h3); }
.panel-card h2 .count { color:var(--text-tertiary); font-weight:var(--weight-medium); }
.panel-card p { margin:0; font-size:var(--text-body-sm); }
.people { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--space-2-5); }
.people li { display:flex; align-items:center; gap:var(--space-2-5); }
.people .who { flex:1; min-width:0; display:flex; flex-direction:column; }
.people .name { font-size:var(--text-body-sm); font-weight:var(--weight-medium); color:var(--text-primary); }
.people .role { font-size:var(--text-mono); color:var(--text-tertiary); }
.trip-panel .meta-list { padding:0 var(--space-1); }
.trip-chips { display:flex; gap:var(--space-2); overflow-x:auto; }
.chip { display:inline-flex; align-items:center; gap:6px; min-height:var(--control-h-lg); padding:0 var(--space-3); border:1px solid var(--border); border-radius:var(--radius-pill); background:var(--surface); color:var(--text-primary); font-size:var(--text-secondary-size); font-weight:var(--weight-medium); white-space:nowrap; text-decoration:none; }
.bottom-bar { position:sticky; bottom:0; z-index:4; display:grid; grid-template-columns:1fr 1fr; gap:var(--space-2); margin:var(--space-4) calc(-1 * var(--space-4)) calc(-1 * var(--space-8)); padding:var(--space-2-5) var(--space-4) var(--space-4-5); background:var(--surface); border-top:1px solid var(--border); }
.bottom-bar .btn { min-height:var(--control-h-lg); }
@media (min-width: 1024px) {
  .trip-grid { grid-template-columns:minmax(0,1fr) var(--panel-w); }
  .trip-chips, .bottom-bar { display:none; }
}
/* Celular e tablet: os botões do cabeçalho saem, o menu ⋯ fica (ele tem todos os gatilhos);
   os cards do painel saem (o conteúdo deles está nos chips e nos dialogs), a lista "Criada por…" fica. */
@media (max-width: 1023px) {
  .trip-actions > .btn { display:none; }
  .trip-panel .panel-card { display:none; }
  .trip-title h1 { font-size:var(--text-h1-sm); }
}

/* === F9 viajante: conteúdo de dialog === */
.dialog-body h3 { margin:0; font-size:var(--text-h3); }
.dialog-body .table-wrap { margin:0 calc(-1 * var(--space-1)); }
.dialog-body .actions { justify-content:flex-end; }
.dialog-body form + form, .dialog-body .table-wrap + form { padding-top:var(--space-4); border-top:1px solid var(--border); }
@media (min-width: 641px) {
  #dlg-servico { width:min(640px, calc(100vw - 32px)); }
  #dlg-pessoas { width:min(760px, calc(100vw - 32px)); }
}
.dialog-body { min-width:0; }
@media (max-width: 560px) {
  .dialog-body .grid-2 { grid-template-columns:minmax(0,1fr); }
  .dialog-body .grid-4 { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
}
@media (max-width: 1023px) {
  .trip-title-row { flex-wrap:nowrap; }
  .trip-actions { flex-shrink:0; }
}

/* === F9 agência: detalhe === */
.panel-warn { display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-2); padding:var(--space-2-5) var(--space-3); border:1px solid var(--warning-bd); border-radius:var(--radius-control); background:var(--warning-bg); color:var(--warning-tx); font-size:var(--text-secondary-size); font-weight:var(--weight-medium); }
.calm { display:flex; align-items:center; gap:var(--space-3); margin:0; padding:var(--space-3-5) var(--space-5); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); font-size:var(--text-body-sm); color:var(--text-secondary); }
.tl-sec .label-caps a { margin-left:auto; font-size:var(--text-body-sm); font-weight:var(--weight-medium); letter-spacing:0; text-transform:none; }
.internal { margin-bottom:var(--space-4); }

/* === F9 viajante: Minhas viagens === */
.page-head { display:flex; align-items:center; justify-content:space-between; gap:var(--space-4); flex-wrap:wrap; margin-bottom:var(--space-5); }
.page-head h1 { margin:0; font-size:var(--text-h1); font-weight:var(--weight-bold); line-height:1.15; }
.tripcards { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:var(--space-4); margin-top:var(--space-5); }
.tripcard { display:flex; flex-direction:column; gap:var(--space-3); min-height:132px; padding:var(--space-4-5) var(--space-5); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); box-shadow:var(--shadow-card); color:inherit; text-decoration:none; }
.tripcard:hover { border-color:var(--border-strong); }
.tripcard-top { display:flex; align-items:flex-start; justify-content:space-between; gap:var(--space-3); }
.tripcard h3 { margin:0; font-size:var(--text-h2); line-height:1.2; }
.tripcard .ref { display:block; margin-top:var(--space-1); color:var(--text-tertiary); }
.tripcard-route { margin:0; font-size:var(--text-body-sm); font-weight:var(--weight-medium); color:var(--text-primary); }
.tripcard-sub { margin:0; font-size:var(--text-body-sm); color:var(--text-secondary); }
.tripcard-foot { margin:auto 0 0; padding-top:var(--space-3); border-top:1px solid var(--border); font-size:var(--text-secondary-size); color:var(--text-tertiary); }
.tripcard.new { align-items:center; justify-content:center; gap:var(--space-2); background:transparent; border-style:dashed; border-color:var(--border-strong); box-shadow:none; color:var(--accent-text); font-size:var(--text-body-sm); font-weight:var(--weight-medium); }
.tripcard.new:hover { background:var(--hover-overlay); }
.tab-empty { margin-top:var(--space-5); }
@media (max-width: 640px) { .page-head h1 { font-size:var(--text-h1-sm); } }

/* === F9 páginas de formulário === */
.form-page { max-width:720px; display:flex; flex-direction:column; gap:var(--space-4); }
.form-page .page-head { margin-bottom:0; }
.form-page .card { padding:var(--space-5); }
.form-page .card h2 { margin:0 0 var(--space-1); font-size:var(--text-h3); }
.form-actions { display:flex; gap:var(--space-2); flex-wrap:wrap; }
.only-narrow { display:none; }
@media (max-width: 1023px) { .only-narrow { display:flex; } }
@media (max-width: 640px) {
  .form-actions { position:sticky; bottom:0; margin:0 calc(-1 * var(--space-4)) calc(-1 * var(--space-8)); padding:var(--space-2-5) var(--space-4) var(--space-4-5); background:var(--surface); border-top:1px solid var(--border); }
  .form-actions .btn { flex:1; min-height:var(--control-h-lg); }
}

/* === F9.2 telas de criação no celular === */
/* Início/término: data e hora + fuso viram um bloco rotulado; nunca 4 colunas espremidas. */
.dt-groups { display:flex; flex-direction:column; gap:var(--space-3); }
.dt-group { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:var(--space-2-5); align-items:end; }
input[type="datetime-local"] { min-width:0; width:100%; }
.svc-flight { padding-top:var(--space-3); border-top:1px solid var(--border); }
.svc-flight .small-note { margin:0; }
.grid-2.keep { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
.member-block + .member-block { padding-top:var(--space-4); border-top:1px solid var(--border); }
input[type="file"]::file-selector-button { font:inherit; font-weight:600; color:var(--text-primary); background:var(--surface-2); border:1px solid var(--border-strong); border-radius:var(--radius-badge); padding:var(--space-1) var(--space-2-5); margin-right:var(--space-2-5); }
@media (max-width: 720px) {
  .dt-group { grid-template-columns:minmax(0,1fr); padding:var(--space-3); background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius-control); }
  .dt-group input, .dt-group select { background:var(--surface); }
  .dialog-body .grid-2.keep { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .table.stacked td[data-label]::before { flex-basis:104px; }
}
@media (max-width: 640px) {
  /* Rodapé fixo do dialog: a ação principal fica à vista no formulário longo. */
  .dialog-body form.stack > .actions:last-child { position:sticky; bottom:calc(-1 * var(--space-5)); z-index:2; margin:0 calc(-1 * var(--space-5)) calc(-1 * var(--space-5)); padding:var(--space-2-5) var(--space-5) var(--space-4-5); background:var(--surface); border-top:1px solid var(--border); }
  .dialog[open] { display:flex; flex-direction:column; }
  .dialog[open] .dialog-body { flex:1; min-height:0; }
  .dialog-body > form.stack:last-child { flex:1; }
  .dialog-body form.stack > .actions:last-child { margin-top:auto; }
  .dialog-body input[type="file"] { min-height:var(--control-h-lg); }
}

/* === F9 agência: tabela de viagens === */
.table-card { padding:0; overflow:hidden; }
.table.trips { font-size:var(--text-body-sm); }
.table.trips th { padding:var(--space-2-5) var(--space-5); font-size:var(--text-mono-sm); font-weight:var(--weight-semibold); letter-spacing:.08em; }
.table.trips td { padding:var(--space-3) var(--space-5); vertical-align:middle; }
.table.trips tbody tr:last-child td { border-bottom:0; }
.trip-row { position:relative; }
.trip-row:hover { background:var(--hover-overlay); }
.trip-row.selected { background:var(--surface-2); box-shadow:inset 3px 0 0 var(--accent); }
.row-link { color:var(--text-primary); font-weight:var(--weight-medium); text-decoration:none; }
.row-link::after { content:""; position:absolute; inset:0; }
.row-link:focus-visible { outline:none; }
.trip-row:has(.row-link:focus-visible) { outline:var(--focus-outline); outline-offset:-2px; }
.trip-row .route { display:block; margin-top:2px; }
.wide-only { display:none; }
@media (min-width: 1280px) { .wide-only { display:inline; } .narrow-only { display:none; } }
@media (max-width: 640px) {
  .table.trips td { padding:2px var(--space-4); }
  .table.trips tr { padding:var(--space-3) 0; }
}
.search-row { display:flex; gap:var(--space-2); margin-bottom:var(--space-4); max-width:460px; }
.search-row input { flex:1; }
.with-panel { display:block; }

/* === F9 agência: coluna de detalhe (três colunas ≥ 1280px) === */
.detail-col { display:none; }
@media (min-width: 1280px) {
  .main:has(.with-panel) { max-width:none; }
  .with-panel { display:grid; grid-template-columns:minmax(0,1fr) var(--detail-col-w); gap:var(--space-6); align-items:start; }
  .detail-col { display:flex; flex-direction:column; gap:var(--space-4); position:sticky; top:calc(var(--topbar-h) + var(--space-5)); max-height:calc(100vh - var(--topbar-h) - var(--space-10)); overflow:auto; padding:var(--space-4); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); box-shadow:var(--shadow-card); }
}
.detail-hint { margin:auto; display:flex; flex-direction:column; align-items:center; gap:var(--space-2); padding:var(--space-8) var(--space-4); color:var(--text-tertiary); font-size:var(--text-body-sm); text-align:center; }
.detail-head { display:flex; flex-direction:column; gap:var(--space-1); }
.detail-head h2 { margin:0; font-size:var(--text-h2); }
.detail-ref { margin:0; display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; color:var(--text-tertiary); }
.detail-meta { margin:0; font-size:var(--text-secondary-size); color:var(--text-secondary); }
.detail-sec { display:flex; flex-direction:column; gap:var(--space-2-5); }
.page-head .muted { font-size:var(--text-body-sm); }

/* === F9 agência: Hoje === */
.page-head.baseline { justify-content:flex-start; align-items:baseline; }
.kpis { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:var(--space-3); max-width:780px; margin-bottom:var(--space-5); }
.kpi { display:flex; flex-direction:column; gap:var(--space-2); padding:var(--space-3-5) var(--space-4); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); box-shadow:var(--shadow-card); }
.kpi-label { font-size:var(--text-secondary-size); font-weight:var(--weight-medium); color:var(--text-secondary); }
.kpi-value { font:500 var(--text-time)/1 var(--font-mono); color:var(--text-primary); }
.kpi-value.warn { color:var(--warning-tx); }
.cop { display:flex; flex-direction:column; align-items:flex-start; gap:var(--space-2-5); padding:var(--space-3-5); margin-bottom:var(--space-5); background:var(--info-bg); border:1px solid var(--info-bd); border-radius:var(--radius-card); box-shadow:none; }
.cop-hd { display:flex; align-items:center; gap:var(--space-2); width:100%; margin:0; color:var(--info-tx); }
.cop-hd .icon { color:var(--info-tx); }
.cop-name { font:600 var(--text-body-sm) var(--font-display); color:var(--info-tx); }
.cop-hd .mono { margin-left:auto; font-size:var(--text-mono-sm); }
.cop-say { margin:0; font-size:var(--text-body-sm); color:var(--text-primary); }
.sec h2 { display:flex; align-items:baseline; gap:var(--space-2-5); margin:0 0 var(--space-3); font-size:var(--text-h2); }
.sec h2 .muted { font:400 var(--text-body-sm) var(--font-ui); }
.sec h2 a { margin-left:auto; font:500 var(--text-body-sm) var(--font-ui); }
.occ-card { display:flex; flex-direction:column; gap:var(--space-2); padding:var(--space-3-5) var(--space-4); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-card); color:inherit; text-decoration:none; }
a.occ-card:hover { border-color:var(--border-strong); }
.occ-card .r1 { display:flex; gap:var(--space-2); flex-wrap:wrap; }
.occ-card p { margin:0; }
.occ-title { font-size:var(--text-body-sm); font-weight:var(--weight-semibold); color:var(--text-primary); }
.occ-meta { font-size:var(--text-secondary-size); color:var(--text-tertiary); }
@media (max-width: 640px) { .kpis { grid-template-columns:1fr 1fr; } }

/* === F9 agência: ocorrência === */
/* No painel da ocorrência o card do link fica no celular (ele não tem chip nem dialog). */
.trip-panel.always .panel-card { display:flex; }
.trip-panel.always .copy-row { flex-wrap:wrap; }
.trip-panel.always .copy-row input { min-width:0; }

/* === F9.3 agência no celular === */
/* Celular: "Nova viagem" vira só o ícone (o aria-label e o texto de leitor de tela continuam). */
@media (max-width: 479px) { .top .btn-label { display:none; } }
/* Alvos de 44 px nas listas e cabeçalhos de seção da agência. */
@media (max-width: 1023px) {
  .sec h2 a { display:inline-flex; align-items:center; min-height:var(--control-h-lg); }
  .row-link.narrow-only { display:inline-flex; align-items:center; min-height:var(--control-h-lg); }
}
@media (max-width: 640px) { .table.stacked.trips td { align-items:center; } }
