/* Escala visual compartilhada por login, páginas internas e páginas públicas. */
@font-face {
  font-family:Montserrat;
  src:url('assets/Montserrat.ttf') format('truetype');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
:root {
  --font-family:Montserrat,Arial,sans-serif;
  --font-caption:10px;
  --font-small:12px;
  --font-label:14px;
  --font-body:16px;
  --font-section:20px;
  --font-section-compact:18px;
  --font-title:28px;
  --font-title-compact:24px;
  --font-display:40px;
  --font-stat:56px;
  --font-stat-compact:48px;
  --font-error:80px;
  --line-body:1.6;
  --line-heading:1.3;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-8:32px;
  --space-10:40px;
  --space-12:48px;
  --space-16:64px;
  --radius-small:8px;
  --radius-control:12px;
  --radius-card:12px;
  --radius-round:50%;
  --content-width:1436px;
  --page-gutter:32px;
  --page-top:64px;
  --page-bottom:48px;
  --control-height:56px;
  --tabs-border-width:2px;
}
body { font-family:var(--font-family); font-size:var(--font-body); line-height:var(--line-body); }
button, input, select, textarea { font-family:inherit; }
input::file-selector-button { font:inherit; }
h1, h2, h3 { line-height:var(--line-heading); }
.booking-type-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); gap:var(--space-6); max-width:840px; margin:var(--space-8) auto 0; }
.booking-type-card { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--space-3); aspect-ratio:1; min-width:0; padding:var(--space-6); box-sizing:border-box; background:white; color:var(--navy); text-decoration:none; text-align:center; border:2px solid #d9e2f0; border-radius:var(--radius-card); }
.booking-type-card:hover { border-color:var(--navy); background:#f5f8fd; }
.booking-type-card:focus-visible { outline:3px solid #009fd4; outline-offset:var(--space-1); }
.booking-type-card .icon { width:var(--space-12); height:var(--space-12); flex-shrink:0; }
.booking-type-card strong { font-size:var(--font-section); line-height:var(--line-heading); }
.booking-type-card span { font-size:var(--font-label); line-height:var(--line-body); }
.institutional-page .module-page { --navy:#27348b; --ink:#535353; --paper:#f6f9fd; --lavender:#f2f3ff; }
.institutional-page .personal-bookings-page { padding:var(--page-top) var(--page-gutter) var(--page-bottom); }
.booking-status.cancelado { background:#ffd8d9; color:#ae1b23; }
.requests-page .statistics:not(.three) { grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); }
.requests-page .task-board:not(.task-board-filtered) { grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); }
.requests-page .task-board.execution-board { grid-template-columns:repeat(3,minmax(0,1fr)); }
@container(max-width:1000px) { .requests-page .task-board.execution-board { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@container(max-width:640px) { .requests-page .task-board.execution-board { grid-template-columns:minmax(0,1fr); } }
.requests-page .task-column.canceladas > h2, .requests-page .canceladas .kanban-icon, .requests-page .stat-card.gray .stat-icon, .requests-page .booking-status.cancelado { background:#eef0f3; color:#545d6b; }
.requests-page .stat-card.green .stat-icon { background:#edffd7; color:#70b626; }
.booking-modal-open { overflow:hidden; }
.booking-modal { --navy:#27348b; --ink:#535353; --paper:#f6f9fd; --lavender:#f2f3ff; box-sizing:border-box; width:min(960px,calc(100% - 32px)); max-width:960px; max-height:calc(100dvh - 32px); padding:0; border:0; border-radius:var(--radius-card); color:var(--ink); background:white; overflow:auto; overscroll-behavior:contain; box-shadow:0 16px 64px #0004; }
.booking-modal::backdrop { background:#10173499; }
.booking-modal:not([open]) { display:none; }
.booking-modal-close { position:sticky; display:block; top:var(--space-2); margin:var(--space-2) var(--space-2) -48px auto; z-index:1; width:40px; height:40px; padding:0; border:1px solid #d9e2f0; border-radius:var(--radius-small); background:white; color:var(--navy); font-size:28px; line-height:1; cursor:pointer; }
.booking-modal-close:focus-visible { outline:3px solid #009fd4; outline-offset:2px; }
.booking-modal-status { padding:var(--space-4) var(--space-16) var(--space-4) var(--space-6); }
.booking-modal-status button { margin-left:var(--space-3); }
.booking-modal .detail-sheet { border:0; border-radius:0; }
.booking-modal .sheet-topbar { padding-right:var(--space-16); }
.booking-modal .booking-type-grid { margin-top:var(--space-6); }
.booking-modal .equipment-picker { grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr)); }
.booking-modal .sheet-actions { flex-wrap:wrap; }
.booking-modal-success { padding:var(--space-8); }
.booking-modal[aria-busy=true] .booking-modal-body { pointer-events:none; }
.task-modal-open { overflow:hidden; }
.task-modal { --navy:#27348b; --ink:#535353; --paper:#f6f9fd; --lavender:#f2f3ff; box-sizing:border-box; width:min(1080px,calc(100% - 32px)); max-width:1080px; max-height:calc(100dvh - 32px); padding:0; border:0; border-radius:var(--radius-card); color:var(--ink); background:white; overflow:auto; overscroll-behavior:contain; box-shadow:0 16px 64px #0004; }
.task-modal::backdrop { background:#10173499; }
.task-modal:not([open]) { display:none; }
.task-modal-close { position:sticky; display:block; top:var(--space-2); margin:var(--space-2) var(--space-2) -48px auto; z-index:2; width:40px; height:40px; padding:0; border:1px solid #d9e2f0; border-radius:var(--radius-small); background:white; color:var(--navy); font-size:28px; line-height:1; cursor:pointer; }
.task-modal-close:focus-visible { outline:3px solid #009fd4; outline-offset:2px; }
.task-modal-status { padding:var(--space-4) var(--space-16) var(--space-4) var(--space-6); }
.task-modal-status button { margin-left:var(--space-3); }
.task-modal .detail-sheet { border:0; border-radius:0; }
.task-modal .sheet-topbar { padding-right:var(--space-16); }
.task-modal .sheet-actions { flex-wrap:wrap; }
.task-modal-success { padding:var(--space-10); }
.task-modal-success h1 { color:var(--navy); }
.task-modal[aria-busy=true] .task-modal-body { pointer-events:none; opacity:.72; }
@media(max-width:760px) {
  .booking-modal { width:calc(100% - 16px); max-height:calc(100dvh - 16px); }
  .booking-modal .booking-type-grid { grid-template-columns:repeat(3,minmax(0,1fr)); max-width:none; gap:var(--space-2); }
  .booking-modal .booking-type-card { padding:var(--space-3) 0; }
  .booking-modal .booking-type-card strong { font-size:var(--font-small); max-width:100%; overflow-wrap:anywhere; }
  .booking-modal .booking-type-card span { display:none; }
  .booking-modal .booking-type-card .icon { width:var(--space-8); height:var(--space-8); }
  .booking-modal .form-grid { grid-template-columns:minmax(0,1fr); }
  .task-modal { width:calc(100% - 16px); max-height:calc(100dvh - 16px); }
}
@media(max-width:760px) {
  .booking-type-grid { grid-template-columns:minmax(0,1fr); max-width:320px; }
  :root {
    --font-title:24px;
    --page-gutter:16px;
    --page-top:24px;
    --page-bottom:32px;
  }
}
/* Densidade do painel em desktop, próxima à referência com zoom de 80%.
   O escopo no body preserva login, páginas institucionais e leitura móvel. */
@media(min-width:761px) {
  .panel-page {
    --font-small:11px;
    --font-label:12px;
    --font-body:13px;
    --font-section:16px;
    --font-section-compact:15px;
    --font-title:23px;
    --font-title-compact:20px;
    --font-display:32px;
    --font-stat:44px;
    --font-stat-compact:38px;
    --font-error:64px;
    --space-2:6px;
    --space-3:10px;
    --space-4:12px;
    --space-5:16px;
    --space-6:20px;
    --space-8:26px;
    --space-10:32px;
    --space-12:38px;
    --space-16:52px;
    --radius-small:6px;
    --radius-control:10px;
    --radius-card:10px;
    --page-gutter:26px;
    --page-top:52px;
    --page-bottom:38px;
    --control-height:44px;
  }
}
