:root{
  --bg:#f4f7fb;
  --paper:#ffffff;
  --soft:#eef4fb;
  --line:#d7e1ee;
  --text:#1f2937;
  --muted:#667085;
  --rtp:#0000ff;
  --weekend:#6f7884;
  --weekend-cell:#e6e8eb;

  --c-noite:#0a0094;
  --c-manha:#7ec4f2;
  --c-intermedio:#2e9e4f;
  --c-estudioC:#d99a1b;
  --c-vml:#c9a27a;

  /* Estúdio A — Informação RTP, gradação por horário/projeto (pedido explícito) */
  --c-noticias-manha:#cfe3fa;    /* Notícias 10/11/12 — azul clarinho */
  --c-jornal-tarde:#1a56db;      /* Jornal da Tarde — azul mais vivo */
  --c-noticias-tarde:#3d6fa5;    /* Notícias 14/15 — azul mais escurecido */
  --c-portugal-rede:#1e4877;     /* Portugal em Rede — ainda mais escuro */
  --c-noticias-noite:#0a1f3d;    /* Jornal 2 / Trio D'Ataque / Sáb. Desportivo / 24h / Notícias 1,2,3 — azul muito escuro */

  --c-praca:#f5941f;             /* Praça — laranja */
  --c-exterior:#d99a1b;          /* Exteriores — amarelo torrado */
  --c-vml-castanho:#8b5e34;      /* VML — castanho */

  --dot-previsao:#2f6fed;
  --dot-pendente:#f5c518;
  --dot-validado:#22a559;
  --dot-cancelado:#e0332f;
}
*{box-sizing:border-box}
body{margin:0;font-family:Verdana,Arial,sans-serif;background:var(--bg);color:var(--text)}

header{
  background:var(--paper);
  border-bottom:1px solid var(--line);
  border-top:6px solid var(--rtp);
  padding:14px 22px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}
.brand{display:flex;gap:14px;align-items:center}
.logo{width:50px;height:36px;border-radius:8px;background:var(--rtp);color:white;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:14px}
h1{margin:0;font-size:20px}
.subtitle{font-size:12px;color:var(--muted);margin-top:2px}

.header-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.role-select{border:1px solid var(--line);border-radius:10px;padding:9px 10px;font-size:12.5px;font-family:inherit;color:var(--text);background:white;font-weight:800}
.view-switch{display:flex;gap:8px}
.view-switch button{border:1px solid var(--line);background:white;color:var(--text);border-radius:10px;padding:9px 12px;font-weight:800;font-size:12.5px;cursor:pointer}
.view-switch button.active{background:var(--rtp);color:white;border-color:var(--rtp)}
#menuAreasDropdown button:hover{background:var(--soft)}
#menuAreasDropdown button.active{background:var(--rtp);color:white}
.view-switch button.locked{opacity:.4}

main{max-width:1550px;margin:0 auto;padding:18px}

.role-banner{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:9px 14px;font-size:12px;color:var(--muted);margin-bottom:14px}
.role-banner strong{color:var(--text)}

.toolbar{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:12px 14px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}
.toolbar-left{display:flex;align-items:center;gap:10px}
.toolbar-right{display:flex;gap:8px;flex-wrap:wrap}
.period{font-size:14px;font-weight:900}
button.btn{background:var(--rtp);border:1px solid var(--rtp);color:white;border-radius:10px;padding:9px 14px;font-weight:900;font-size:12.5px;cursor:pointer}
button.btn.secondary{background:white;color:var(--rtp)}
button.btn.ghost{background:white;color:var(--text);border-color:var(--line)}
button.btn:disabled{background:#c7cbd4;border-color:#c7cbd4;cursor:not-allowed}

.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:10.5px;color:var(--muted);margin-bottom:12px;align-items:center}
.legend .swatch{display:inline-flex;align-items:center;gap:4px}
.legend .box{width:10px;height:10px;border-radius:3px;display:inline-block}
.legend .dot{width:8px;height:8px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.15)}

.layout{display:grid;grid-template-columns:1fr 250px;gap:14px}

.agenda-grid{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:16px;overflow:hidden;background:white}
.agenda-grid.day-only{grid-template-columns:1fr}
.agenda-head{background:var(--soft);font-size:11.5px;font-weight:900;text-align:center;color:var(--muted);padding:9px 7px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.agenda-head.weekend-head{background:var(--weekend);color:white}
.agenda-col{min-height:220px;padding:8px;border-right:1px solid var(--line);background:white;cursor:pointer}
.agenda-col:last-child{border-right:0}
.agenda-col.weekend-soft{background:var(--weekend-cell)}
.agenda-empty{font-size:10px;color:#b6bcc6;text-align:center;padding-top:10px}

.tipo-badge{display:inline-block;font-size:8.5px;font-weight:900;padding:2px 6px;border-radius:20px;margin-top:5px;letter-spacing:.02em}
.tipo-badge.contrato{background:#eef2ff;color:#3730a3;border:1px solid #c7d2fe}
.tipo-badge.extra{background:#fff7ed;color:#9a3412;border:1px solid #fed7aa}
.tipo-badge.funcionario{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}

.card{position:relative;background:white;border:1px solid var(--line);border-left:5px solid var(--rtp);border-radius:11px;padding:8px 20px 8px 8px;margin-bottom:7px;font-size:11px;line-height:1.35}
.card .horario-head{font-weight:950;font-size:12.5px;color:#111827}
.card .funcao{font-weight:800;font-size:11px;color:#111827;margin-top:2px}
.card .funcao.cancelado{text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:var(--dot-cancelado);color:#8a8f99}
.card .sub{opacity:.85;color:var(--muted);font-size:10.5px;margin-top:3px}
.card .qtd{font-weight:900;color:var(--rtp)}
.card .codigo{opacity:.75;font-size:9.5px;font-weight:800;color:var(--muted)}
.status-dot{position:absolute;top:7px;right:7px;width:10px;height:10px;border-radius:50%;border:2px solid white;box-shadow:0 0 0 1px rgba(0,0,0,.18)}

.calendar{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.weekdays div{background:var(--soft);border-right:1px solid var(--line);padding:9px;font-size:11.5px;color:var(--muted);font-weight:900;text-align:center}
.weekdays div:last-child{border-right:0}
.weekdays .weekend-head{background:var(--weekend);color:white}
.day{min-height:100px;border-right:1px solid var(--line);border-top:1px solid var(--line);padding:7px;background:white;cursor:pointer}
.day:nth-child(7n){border-right:0}
.day.out{background:#f8fafc;color:#98a2b3}
.day.weekend{background:var(--weekend-cell)}
.day-number{font-weight:900;font-size:13px;margin-bottom:4px}
.summary-line{font-size:9.5px;line-height:1.4;border-radius:6px;margin-bottom:4px;overflow:hidden;border:1px solid var(--line)}
.summary-line .head{padding:2px 5px;font-weight:900}
.summary-line .body{padding:2px 5px;background:white;color:var(--text)}

.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px}
.panel h3{margin:0 0 10px;font-size:13px;color:var(--rtp)}
.tree ul{list-style:none;margin:0;padding-left:12px}
.tree>ul{padding-left:0}
.tree li{margin:4px 0;font-size:11.5px}
.tree .day{font-weight:900;background:none;min-height:auto;padding:0;border:0}
.tree .turno{color:var(--muted);font-weight:800}
.note{font-size:11px;color:var(--muted)}

.hidden{display:none!important}

.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-box{width:min(360px,100%);background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.12);padding:28px;border-top:6px solid var(--rtp)}
.login-box .field input{width:100%}
.user-info{font-size:12px;font-weight:800;color:var(--text);background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.user-info .papel{display:block;font-weight:400;color:var(--muted);font-size:10.5px;margin-top:1px}

.modal-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:50;padding:24px;align-items:center;justify-content:center}
.modal-backdrop.open{display:flex}
.modal{width:min(560px,96vw);max-height:90vh;overflow:auto;background:white;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.30);border:1px solid var(--line)}
.modal.wide{width:min(920px,96vw)}
.modal-head{border-bottom:1px solid var(--line);padding:16px;display:flex;justify-content:space-between;align-items:flex-start}
.modal-head h2{margin:0;font-size:16px}
.modal-body{padding:16px}
.form{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:12px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:11px;color:var(--muted);font-weight:900}
.field input,.field select{border:1px solid var(--line);background:white;border-radius:10px;padding:9px;font-family:inherit;color:var(--text);font-size:12.5px}
.full{grid-column:1/-1}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

.pdf-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pdf-tabs button{border:1px solid var(--line);background:white;color:var(--rtp);border-radius:10px;padding:8px 12px;font-weight:900;cursor:pointer;font-size:12px}
.pdf-tabs button.active{background:var(--rtp);color:white;border-color:var(--rtp)}
.pdf-doc{background:white;border:1px solid #111;padding:14px;color:#111;font-family:Arial,sans-serif;font-size:11px}
.pdf-doc h2{text-align:center;font-size:16px;margin:0 0 2px;color:#111}
.pdf-doc h3{text-align:center;font-size:12px;margin:0 0 12px;color:#444;font-weight:normal}
.pdf-doc table{border-collapse:collapse;width:100%;font-size:10.5px;margin-bottom:14px}
.pdf-doc th,.pdf-doc td{border:1px solid #111;padding:5px;text-align:center;color:#111}
.pdf-doc th{background:#e5e7eb}
.pdf-doc .func-title{background:#111;color:white;font-weight:900;padding:5px;text-align:left;margin-top:10px}
.pdf-note{font-size:11px;color:var(--muted);margin-bottom:10px}

@media(max-width:1100px){
  .layout{grid-template-columns:1fr}
  .agenda-grid,.agenda-grid.day-only{display:block}
  .agenda-head,.agenda-col{border-right:0}
}

.person-grid-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:16px;background:white}
.person-grid{display:grid}
.person-grid .rowhead,.person-grid .colhead{border:1px solid #c3ccd9;box-sizing:border-box;padding:5px}
.person-grid .rowhead{background:#f8fafc;font-weight:900;font-size:10px;white-space:nowrap;position:sticky;left:0;z-index:2}
.person-grid .rowhead span{font-weight:400;color:var(--muted);display:block;font-size:9px}
.person-grid .colhead{background:var(--soft);font-size:9px;font-weight:900;text-align:center;color:var(--muted);box-sizing:border-box}
.person-grid .colhead.weekend{background:var(--weekend);color:white}
.person-grid .corner{background:#f8fafc;border:1px solid #c3ccd9;box-sizing:border-box;position:sticky;left:0;z-index:3}
.person-grid .cell{position:relative;height:72px;border:1px solid #c3ccd9;box-sizing:border-box;text-align:center;font-size:9.5px;cursor:pointer;padding:2px;background:white}
.person-grid .cell.folga{background:#eef0f3;color:#9aa1ab;font-weight:900;font-size:9.5px;display:flex;align-items:center;justify-content:center}
.person-grid .cell.weekend-bg{background:var(--weekend-cell)}
.person-grid .cell.cell-selected{outline:3px solid #4f46e5;outline-offset:-3px;z-index:1}
@keyframes blinkRed{0%,100%{opacity:1} 50%{opacity:.25}}
.blink-red{animation:blinkRed 1s infinite}
.modal-close-x{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:white;color:var(--muted);font-size:15px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.modal-footer-ts{padding:7px 16px;border-top:1px solid var(--line);font-size:10px;color:var(--muted);text-align:right;background:#fafbfc;border-radius:0 0 18px 18px}
.modal-close-x:hover{background:#fef2f2;color:#b91c1c;border-color:#fecaca}
.cell-warning-dot{position:absolute;top:0;left:1px;width:8px;height:8px;border-radius:50%;background:#f5c518;border:1px solid rgba(0,0,0,.25);z-index:2}
.pg-time{font-weight:900;font-size:10px}
.pg-code{font-size:9.5px;font-weight:800;opacity:.95}
