/* Tryp Lisboa Caparica Mar — light design system (layered over Bootstrap 5).
   Brand blue #0167B1 sampled from the logo; lighter on/off blue #2F8ED6; grays as the workhorse.
   Buttons rounded by default. See plan.md §5. */

:root {
  /* BRAND (sampled from static/logo.png) */
  --tryp-blue:#0167B1; --tryp-blue-600:#015A9E; --tryp-blue-700:#014E88; --tryp-blue-800:#013D6B;
  --blue-on:#2F8ED6; --blue-on-hover:#1C7EC4; --blue-soft:#E6F1FB; --blue-soft-2:#CFE4F7; --blue-tint:#F3F8FD;
  /* GRAY */
  --gray-50:#F8FAFC; --gray-100:#F1F5F9; --gray-200:#E5EAF1; --gray-300:#D3DAE3; --gray-400:#AEB8C5;
  --gray-500:#7C8795; --gray-600:#5B6675; --gray-700:#404A59; --gray-800:#2A323D; --gray-900:#161C25;
  /* SEMANTIC */
  --success:#15893C; --success-soft:#E6F4EA; --success-2:#2E9E6B; --success-border:#BFE5CB;
  --danger:#C62828; --danger-soft:#FDECEC;
  --warning:#B7791F; --warning-soft:#FEF6E7; --orange:#E8851F; --orange-soft:#FDEFD9; --orange-ink:#9A5710;
  --blue-ink:#0C447C; /* readable dark-blue text on soft-blue tints */
  /* SURFACES / TEXT */
  --bg:var(--gray-100); --surface:#FFFFFF; --ink:var(--gray-900); --ink-2:var(--gray-700);
  --muted:var(--gray-500); --border:var(--gray-200); --border-2:var(--gray-300);
  --ring:rgba(1,103,177,.28);
  --font-sans:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --r-sm:8px; --r-md:10px; --r-lg:14px; --r-pill:999px;
  --sh-sm:0 1px 3px rgba(16,24,39,.08),0 1px 2px rgba(16,24,39,.05);
  --sh-md:0 4px 12px rgba(16,24,39,.08),0 2px 4px rgba(16,24,39,.05);
  --sh-lg:0 12px 28px rgba(16,24,39,.12),0 4px 8px rgba(16,24,39,.06);
}

* { box-sizing:border-box; }
html,body { height:100%; }
body {
  margin:0; font-family:var(--font-sans); color:var(--ink);
  background:linear-gradient(180deg,var(--gray-50) 0%,var(--gray-100) 100%);
  min-height:100%;
}
code { color:var(--tryp-blue-700); background:var(--blue-soft); padding:.05em .35em; border-radius:6px; }
.text-muted { color:var(--muted)!important; }
.narrow { max-width:680px; }

/* ---- Buttons (rounded by default) ---- */
.btn { display:inline-flex; align-items:center; gap:.4rem; font-weight:600; border-radius:var(--r-md);
  border:1px solid transparent; padding:.55rem 1rem; font-size:.9375rem; line-height:1.2; cursor:pointer;
  transition:background .15s,border-color .15s,color .15s,box-shadow .15s; background:var(--gray-100); color:var(--ink-2); }
.btn:focus-visible { outline:none; box-shadow:0 0 0 4px var(--ring); }
.btn--primary { background:var(--tryp-blue); border-color:var(--tryp-blue); color:#fff; }
.btn--primary:hover { background:var(--blue-on); border-color:var(--blue-on); }
.btn--primary:active { background:var(--tryp-blue-700); border-color:var(--tryp-blue-700); }
.btn--ghost { background:transparent; border-color:var(--border-2); color:var(--ink-2); }
.btn--ghost:hover { background:var(--gray-100); }
.btn--block { width:100%; justify-content:center; }
.btn--sm { padding:.35rem .7rem; font-size:.85rem; }
.btn[disabled] { opacity:.5; cursor:not-allowed; }
.btn-add { box-shadow:var(--sh-sm); }
.btn-add__plus { font-size:1.15rem; font-weight:700; line-height:1; }

/* ---- Header / nav ---- */
.app-header { background:var(--surface); border-bottom:1px solid var(--border); box-shadow:var(--sh-sm); }
/* .app-header__inner ALSO carries Bootstrap .container so the header shares the exact
   left/right edge of page content (no horizontal padding here — .container provides it). */
.app-header__inner { padding-top:.55rem; padding-bottom:.55rem; display:flex; align-items:center;
  justify-content:space-between; gap:1rem; }
.app-brand { display:flex; align-items:center; gap:.7rem; text-decoration:none; color:var(--ink); }
.app-brand__tag { font-weight:600; color:var(--muted); font-size:.85rem; letter-spacing:.02em; }
.lang-toggle { display:inline-flex; border:1px solid var(--border-2); border-radius:var(--r-pill); overflow:hidden; }
.lang-btn { border:0; background:var(--surface); color:var(--muted); font-weight:600; font-size:.8rem; padding:.3rem .7rem; cursor:pointer; }
.lang-btn.is-on { background:var(--blue-on); color:#fff; }

/* full width so the page's own .container centres on the SAME measure as the header */
.app-main { width:100%; }
.page-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1rem; }

/* spinner used by the Adicionar Pedido submit + Salas modal (was undefined → blank loaders) */
.spin { display:inline-block; width:1.1em; height:1.1em; border:2px solid currentColor; border-right-color:transparent;
  border-radius:50%; animation:spin .7s linear infinite; vertical-align:-2px; }
@keyframes spin { to { transform:rotate(360deg); } }

/* header collapses cleanly on phones (was: no media query → horizontal overflow) */
@media (max-width:768px){
  .app-header__inner{ flex-wrap:wrap; row-gap:.5rem; }
  .app-nav{ flex-wrap:wrap; gap:.5rem; }
  .app-links{ flex-wrap:wrap; }
  .app-nav__right{ flex-wrap:wrap; justify-content:flex-end; }
  .app-brand__tag{ display:none; }
}

/* ---- Cards ---- */
.card-elevated { background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-md); }
.table-wrap { overflow:hidden; }

/* ---- Auth ---- */
.auth-wrap { min-height:100vh; display:grid; place-items:center; padding:1.5rem; }
.auth-card { width:100%; max-width:380px; background:var(--surface); border:1px solid var(--border);
  border-radius:var(--r-lg); box-shadow:var(--sh-lg); padding:2rem 1.75rem; display:flex; flex-direction:column; gap:1rem; }
.auth-logo { align-self:center; }
.auth-title { text-align:center; font-size:1.15rem; margin:0; color:var(--ink); }
.auth-error { background:var(--danger-soft); color:var(--danger); border:1px solid #F5C2C2;
  border-radius:var(--r-sm); padding:.6rem .75rem; font-size:.875rem; margin:0; }

/* ---- Fields ---- */
.field { display:flex; flex-direction:column; gap:.3rem; }
.field__label { font-size:.8rem; font-weight:600; color:var(--ink-2); }
.input,.select,.count-input,.stepper__input { width:100%; font:inherit; color:var(--ink); background:var(--surface);
  border:1px solid var(--border-2); border-radius:var(--r-sm); padding:.5rem .7rem; transition:border-color .15s,box-shadow .15s; }
.input:focus,.select:focus,.count-input:focus,.stepper__input:focus { outline:none; border-color:var(--tryp-blue); box-shadow:0 0 0 4px var(--ring); }
.select { appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%237C8795' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .7rem center; padding-right:2rem; }

/* ---- Table + responsive reflow ---- */
.table.req-table { width:100%; margin:0; border-collapse:collapse; font-size:.9rem; }
.req-table thead th { text-align:left; text-transform:uppercase; letter-spacing:.03em; font-size:.72rem;
  color:var(--muted); background:var(--gray-50); padding:.7rem .85rem; border-bottom:1px solid var(--border); }
.req-table td { padding:.7rem .85rem; border-bottom:1px solid var(--border); vertical-align:middle; }
.req-table tbody tr:last-child td { border-bottom:0; }
.req-table .num { text-align:right; }
.empty-row td { text-align:center; color:var(--muted); padding:2rem 1rem; }

.badge { display:inline-block; font-size:.72rem; font-weight:600; padding:.25rem .55rem; border-radius:var(--r-pill);
  background:var(--gray-100); color:var(--ink-2); }
.badge::before { content:"\25CF"; margin-right:.3rem; font-size:.7em; vertical-align:middle; }
.badge--submitted,.badge--under_review { background:var(--blue-soft); color:var(--tryp-blue-700); }
.badge--pre_reserved,.badge--confirmed { background:var(--success-soft); color:var(--success); }
.badge--rejected,.badge--expired { background:var(--danger-soft); color:var(--danger); }
.badge--draft,.badge--cancelled { background:var(--gray-100); color:var(--gray-600); }
.chip { font-size:.72rem; font-weight:600; padding:.2rem .5rem; border-radius:var(--r-sm); background:var(--gray-100); color:var(--ink-2); }
.chip--tour_series { background:var(--blue-soft-2); color:var(--tryp-blue-700); }

@media (max-width:768px) {
  .req-table thead { display:none; }
  .req-table, .req-table tbody, .req-table tr, .req-table td { display:block; width:100%; }
  .req-table tr { border-bottom:8px solid var(--gray-100); padding:.3rem 0; }
  .req-table td { display:flex; justify-content:space-between; gap:1rem; border:0; padding:.4rem .85rem; text-align:right; }
  .req-table td::before { content:attr(data-label); font-weight:600; color:var(--muted); text-align:left; }
  .empty-row td::before { content:""; }
}

/* ---- Numeric stepper (top + bottom) ---- */
.stepper--v { display:flex; flex-direction:column; align-items:center; gap:.4rem; }
.stepper__btn { width:2.4rem; height:2.4rem; border-radius:var(--r-md); border:1px solid var(--border-2);
  background:var(--surface); font-size:1.2rem; font-weight:700; color:var(--tryp-blue-700); cursor:pointer; line-height:1; }
.stepper__btn:hover { background:var(--blue-soft); }
.stepper__btn[disabled] { opacity:.4; cursor:not-allowed; }
.stepper__input { text-align:center; max-width:4.5rem; font-weight:700; -moz-appearance:textfield; }
.nights-col { display:flex; flex-direction:column; align-items:center; }

/* ---- Room count grid ---- */
.count-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:.6rem; }
.count-tile { display:flex; flex-direction:column; gap:.25rem; font-size:.78rem; color:var(--ink-2); margin:0; }
.count-total { background:var(--blue-soft); border:1px solid var(--blue-soft-2); border-radius:var(--r-sm);
  padding:.4rem .5rem; justify-content:center; }
.count-total strong { font-size:1.25rem; color:var(--tryp-blue-700); }
@media (max-width:575px){ .count-grid { grid-template-columns:repeat(2,1fr); } }

/* ---- Summary box ---- */
.summary { background:var(--blue-tint); border:1px dashed var(--blue-soft-2); border-radius:var(--r-sm);
  padding:.6rem .75rem; min-height:2.6rem; color:var(--ink-2); font-size:.875rem; }

/* ---- Calendar (modal date pickers) ---- */
.cal { border:1px solid var(--border-2); border-radius:var(--r-md); padding:.5rem; background:var(--surface); }
.cal__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:.4rem; }
.cal__title { font-weight:600; font-size:.85rem; color:var(--ink-2); text-transform:capitalize; }
.cal__nav { border:1px solid var(--border-2); background:var(--surface); border-radius:6px; width:1.7rem; height:1.7rem; cursor:pointer; color:var(--ink-2); line-height:1; }
.cal__nav:hover { background:var(--gray-100); }
.cal__grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.cal__dow { text-align:center; font-size:.65rem; color:var(--muted); padding:.2rem 0; }
.cal__day { border:0; background:transparent; border-radius:6px; aspect-ratio:1; cursor:pointer; font-size:.8rem; color:var(--ink); padding:0; }
.cal__day:hover { background:var(--blue-soft); }
.cal__day.is-empty { visibility:hidden; }
.cal__day.is-today { outline:1px dashed var(--blue-on); }
.cal__day.is-sel { background:var(--tryp-blue); color:#fff; font-weight:700; }
.cal__day.is-range { background:var(--blue-soft-2); }
.cal__day[disabled] { color:var(--gray-300); cursor:not-allowed; background:transparent; }

/* ===== Phase 2: availability calendar ===== */
.app-links { display:flex; align-items:center; gap:.2rem; margin-right:.4rem; }
.app-link { text-decoration:none; color:var(--tryp-blue); font-weight:600; font-size:.85rem; line-height:1.2; padding:.4rem .6rem; border-radius:var(--r-sm); display:inline-flex; align-items:center; }
.app-link:hover, .app-link.show, .app-link[aria-expanded="true"] { background:var(--tryp-blue); color:#fff; }

.seg-toggle { display:inline-flex; border:1px solid var(--border-2); border-radius:var(--r-pill); overflow:hidden; }
.seg-btn { border:0; background:var(--surface); color:var(--muted); font-weight:600; font-size:.8rem; padding:.4rem .9rem; cursor:pointer; }
.seg-btn.is-on { background:var(--blue-on); color:#fff; }

.avail-controls { display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap; margin-bottom:.75rem; }
.month-nav { display:flex; align-items:center; gap:.5rem; }
.month-label { font-weight:700; text-transform:capitalize; min-width:8rem; text-align:center; }
.range-pills { display:flex; gap:.35rem; }
.range-pill { border:1px solid var(--border-2); background:var(--surface); border-radius:var(--r-pill); padding:.3rem .8rem; font-weight:600; font-size:.85rem; cursor:pointer; color:var(--ink-2); }
.range-pill.is-on { background:var(--blue-on); border-color:var(--blue-on); color:#fff; }
.day-arrows { display:flex; gap:.25rem; }

.tl { overflow-x:auto; border:1px solid var(--border); border-radius:var(--r-md); }
.trow { display:flex; align-items:stretch; min-width:max-content; border-bottom:1px solid var(--gray-100); }
.trow:last-child { border-bottom:0; }
.tlabel { flex:0 0 150px; width:150px; padding:.4rem .6rem; font-size:.78rem; font-weight:600; color:var(--ink-2);
  background:var(--gray-50); border-right:1px solid var(--border); display:flex; align-items:center; gap:.4rem;
  position:sticky; left:0; z-index:1; }
.tcells { flex:1 1 auto; display:flex; min-width:0; }
.tcell { flex:1 0 40px; min-width:40px; text-align:center; padding:.3rem 0; font-size:.8rem; border-right:1px solid var(--gray-100); }
.tcell:last-child { border-right:0; }
.day-h { display:flex; flex-direction:column; line-height:1.1; color:var(--ink-2); font-weight:600; }
.day-h .d-mon { font-size:.6rem; color:var(--muted); text-transform:uppercase; }
.day-h.is-today { background:var(--blue-soft); color:var(--tryp-blue-700); }
.day-h.is-weekend { background:var(--gray-50); }
.tl-head { background:var(--surface); }
.tcell.num { color:var(--ink); font-variant-numeric:tabular-nums; }
.cell-pre { background:var(--orange-soft); color:var(--orange-ink); font-weight:600; }
.cell-delta--up { color:var(--success); font-weight:700; }
.cell-delta--down { color:var(--danger); font-weight:700; }
.cell-delta--flat { color:var(--gray-400); }

.tl-section { border-top:2px solid var(--border); }
.tl-sec-head { font-size:.72rem; font-weight:700; letter-spacing:.05em; color:var(--muted); padding:.5rem .6rem .2rem; }
.tl-track { position:relative; }
.grp-label { font-size:.78rem; }
.grp-label .ag, .ag { display:inline-block; background:var(--tryp-blue); color:#fff; font-size:.62rem; font-weight:700; padding:.05rem .3rem; border-radius:4px; margin-right:.2rem; }
.grp-bar { position:absolute; top:4px; bottom:4px; border-radius:var(--r-md); display:flex; align-items:center;
  padding:0 .5rem; overflow:hidden; box-shadow:var(--sh-sm); min-width:3px; }
.grp-bar__txt { font-size:.72rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#fff; }
.status--submitted { background:var(--tryp-blue); }
.status--under_review { background:var(--warning); }
.status--pre_reserved { background:var(--success-2); }
.status--confirmed { background:var(--success); }
.status--rejected,.status--cancelled,.status--expired { background:var(--gray-400); }
.status--draft { background:var(--gray-300); }
.status--draft .grp-bar__txt { color:var(--ink-2); }
.tl-empty { padding:.8rem .6rem; color:var(--muted); font-size:.85rem; }

.sala-label { flex-direction:column; align-items:flex-start; gap:.1rem; justify-content:center; }
.sala-cap { font-size:.66rem; color:var(--muted); font-weight:500; display:flex; align-items:center; gap:.2rem; }
.sala-cell { padding:0; display:flex; align-items:center; justify-content:center; }
.sala-cell.sala--free { background:var(--gray-50); }
.sala-cell.sala--red { background:var(--danger-soft); position:relative; }
.sala-cell.sala--red::after { content:""; position:absolute; inset:28%; background:var(--danger); border-radius:2px; }
.sala-cell.sala--green { background:var(--success-soft); color:var(--success); font-size:.7rem; font-weight:700; }
.sala-cell.sala--green::after { content:"\2713"; }
.ico-chair { vertical-align:-2px; }
.is-loading { opacity:.55; pointer-events:none; }

/* ---- salas picker (per request) ---- */
.pick-room { margin-bottom:1rem; }
.pick-room__head { margin-bottom:.4rem; }
.pick-days { display:flex; flex-wrap:wrap; gap:.35rem; }
.pick-day { cursor:pointer; margin:0; }
.pick-day input { position:absolute; opacity:0; width:0; height:0; }
.pick-day__lbl { display:flex; flex-direction:column; align-items:center; justify-content:center; width:2.6rem; height:2.6rem;
  border:1px solid var(--border-2); border-radius:var(--r-sm); font-size:.8rem; font-weight:600; line-height:1; color:var(--ink-2); background:var(--surface); }
.pick-day__lbl small { font-size:.58rem; color:var(--muted); text-transform:uppercase; }
.pick-day input:checked + .pick-day__lbl { background:var(--success); border-color:var(--success); color:#fff; }
.pick-day input:checked + .pick-day__lbl small { color:rgba(255,255,255,.85); }
.pick-day.is-taken .pick-day__lbl { background:var(--danger-soft); border-color:#f5c2c2; color:var(--danger); cursor:not-allowed; text-decoration:line-through; }

/* =========================================================================
   Phase 1 rework — Adicionar Pedido modal (progressive disclosure).
   Ported verbatim from the owner-approved mockup (/tmp/mockup.html); its hex
   values already match the §5.1 brand tokens above. Namespaced under .pf-*.
   ========================================================================= */
.pf-modal{color:#161C25;font-size:14px;line-height:1.45;}
#pedidoModal .modal-content.pf-modal{border:1px solid #E5EAF1;border-radius:14px;max-width:none;margin:0;
  display:flex;flex-direction:column;max-height:calc(100vh - 3.25rem);overflow:hidden;background:#fff;}
.pf-head{display:flex;align-items:center;justify-content:space-between;padding:20px 26px;border-bottom:1px solid #E5EAF1;background:#fff;flex:none;}
.pf-head h2{margin:0;font-size:19px;font-weight:600;color:#161C25;letter-spacing:-.2px;}
.pf-head .pf-sub{margin:3px 0 0;font-size:13px;color:#64748B;font-weight:400;}
.pf-htxt{display:flex;align-items:center;gap:14px;}
.pf-hicon{width:42px;height:42px;border-radius:11px;background:#0167B1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;}
.pf-x{width:34px;height:34px;border-radius:9px;border:1px solid #E5EAF1;background:#fff;color:#64748B;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:17px;}
.pf-x:hover{background:#F1F5F9;}
.pf-body{padding:22px 26px;background:#F8FAFC;overflow-y:auto;flex:1 1 auto;}
.pf-step{position:relative;margin-bottom:18px;}
.pf-step:last-child{margin-bottom:0;}
.pf-step.is-locked{display:none;}
.pf-card{background:#fff;border:1px solid #E5EAF1;border-radius:12px;padding:18px 20px;}
.pf-card.pf-active{border-color:#B7D6EE;}
.pf-cardhd{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.pf-num{flex:none;width:24px;height:24px;border-radius:50%;background:#0167B1;color:#fff;font-size:12.5px;font-weight:600;display:flex;align-items:center;justify-content:center;}
.pf-cardhd h3{margin:0;font-size:15px;font-weight:600;color:#161C25;}
.pf-cardhd .pf-hint{margin-left:auto;font-size:11.5px;color:#64748B;background:#F1F5F9;border:1px solid #E5EAF1;padding:3px 9px;border-radius:20px;font-weight:500;}
.pf-grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.pf-field label{display:block;font-size:12.5px;font-weight:600;color:#64748B;margin-bottom:6px;letter-spacing:.2px;}
.pf-input{width:100%;height:40px;border:1px solid #E5EAF1;border-radius:9px;padding:0 13px;font-size:14px;color:#161C25;background:#fff;outline:none;}
.pf-input:focus{border-color:#2F8ED6;box-shadow:0 0 0 3px rgba(47,142,214,.15);}
.pf-input::placeholder{color:#94A3B8;}
.pf-toggle2{display:flex;border:1px solid #E5EAF1;border-radius:9px;overflow:hidden;height:40px;background:#F1F5F9;}
.pf-toggle2 button{flex:1;border:none;background:transparent;font-size:13.5px;font-weight:600;color:#64748B;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;}
.pf-toggle2 .pf-divider{flex:0 0 1px;align-self:center;height:22px;background:#E5EAF1;}
.pf-toggle2 button.pf-on{background:#0167B1;color:#fff;}
.pf-mid{font-size:11px;color:#94A3B8;text-align:left;margin-top:6px;font-style:italic;}
.pf-cal{border:1px solid #E5EAF1;border-radius:10px;background:#fff;overflow:hidden;}
.pf-callabel{font-size:12.5px;font-weight:600;color:#64748B;margin-bottom:6px;letter-spacing:.2px;}
.pf-calhd{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:#F8FAFC;border-bottom:1px solid #E5EAF1;font-size:13px;font-weight:600;color:#161C25;}
.pf-calhd .pf-nav{width:26px;height:26px;border-radius:7px;border:1px solid #E5EAF1;background:#fff;display:flex;align-items:center;justify-content:center;color:#64748B;font-size:13px;cursor:pointer;}
.pf-calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;padding:8px;}
.pf-calgrid .pf-dow{font-size:10.5px;color:#94A3B8;text-align:center;font-weight:600;padding-bottom:3px;}
.pf-calgrid .pf-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12.5px;color:#161C25;border-radius:7px;cursor:pointer;border:0;background:transparent;padding:0;font-family:inherit;}
.pf-calgrid .pf-day.pf-muted{color:#CBD5E1;cursor:default;}
.pf-calgrid .pf-day.pf-range{background:var(--blue-soft);color:var(--blue-ink);}
.pf-calgrid .pf-day.pf-edge{background:var(--tryp-blue);color:#fff;font-weight:600;}
.pf-calgrid .pf-day:disabled{cursor:not-allowed;}
.pf-calgrid .pf-day:not(.pf-muted):not(.pf-edge):not(:disabled):hover{background:#E6F1FB;}
.pf-stepper-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:22px;}
.pf-stepper{display:flex;align-items:center;border:1px solid #E5EAF1;border-radius:10px;overflow:hidden;background:#fff;}
.pf-stepper button{width:42px;height:42px;border:none;background:#F1F5F9;font-size:20px;color:#0167B1;cursor:pointer;font-weight:500;}
.pf-stepper button:hover{background:#E5EAF1;}
.pf-stepper button:disabled{opacity:.4;cursor:not-allowed;}
.pf-stepper .pf-stepval{width:54px;text-align:center;font-size:21px;font-weight:700;color:#161C25;border:0;background:transparent;-moz-appearance:textfield;font-family:inherit;}
.pf-stepper .pf-stepval::-webkit-outer-spin-button,.pf-stepper .pf-stepval::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.pf-steplabel{font-size:12px;font-weight:600;color:#64748B;margin-bottom:8px;letter-spacing:.3px;}
.pf-cal3{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:start;}
.pf-tblwrap{overflow-x:auto;border:1px solid #E5EAF1;border-radius:10px;}
.pf-tbl{border-collapse:separate;border-spacing:0;width:100%;min-width:560px;font-size:13px;}
.pf-tbl th,.pf-tbl td{padding:7px 6px;text-align:center;border-bottom:1px solid #F1F5F9;white-space:nowrap;vertical-align:middle;}
.pf-tbl thead th{background:#F8FAFC;border-bottom:1px solid #E5EAF1;height:46px;}
.pf-tbl .pf-rowlbl{text-align:left;font-weight:600;color:#161C25;background:#fff;position:sticky;left:0;padding-left:14px;min-width:118px;border-right:1px solid #F1F5F9;z-index:1;}
.pf-tbl thead .pf-rowlbl{background:#F8FAFC;color:#64748B;font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;}
.pf-daychip{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:42px;height:38px;border-radius:8px;background:#E6F1FB;border:1px solid #B5D4F4;margin:0 auto;}
.pf-daychip b{font-size:14px;font-weight:700;color:#0167B1;line-height:1;}
.pf-daychip span{font-size:8.5px;font-weight:700;color:#2F8ED6;text-transform:uppercase;letter-spacing:.4px;margin-top:2px;}
.pf-tbl tbody tr:last-child td{border-bottom:none;}
.pf-cellinput{width:46px;height:32px;border:1px solid #E5EAF1;border-radius:7px;text-align:center;font-size:13px;font-weight:600;color:#161C25;background:#fff;outline:none;-moz-appearance:textfield;font-family:inherit;}
.pf-cellinput::-webkit-outer-spin-button,.pf-cellinput::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.pf-cellinput:focus{border-color:#2F8ED6;box-shadow:0 0 0 2px rgba(47,142,214,.15);}
.pf-cellinput.pf-zero{color:#94A3B8;font-weight:400;background:#FCFDFE;}
.pf-seg3{display:inline-flex;border:1px solid #E5EAF1;border-radius:7px;overflow:hidden;background:#F1F5F9;}
.pf-seg3 span{font-size:10.5px;font-weight:700;padding:5px 8px;color:#94A3B8;cursor:pointer;border-right:1px solid #E5EAF1;}
.pf-seg3 span:last-child{border-right:none;}
.pf-seg3 span.pf-pa{background:#0167B1;color:#fff;}
.pf-seg3 span.pf-mp{background:#E8851F;color:#fff;}
.pf-seg3 span.pf-fb{background:#15893C;color:#fff;}
.pf-bigtoggle{display:flex;gap:0;border:1px solid #E5EAF1;border-radius:11px;overflow:hidden;background:#F1F5F9;}
.pf-bigtoggle button{flex:1;border:none;background:transparent;padding:15px 14px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:11px;font-size:14px;font-weight:600;color:#64748B;border-right:1px solid #E5EAF1;}
.pf-bigtoggle button:last-child{border-right:none;}
.pf-bigtoggle button.pf-on{background:#0167B1;color:#fff;}
.pf-bigtoggle button i{font-size:20px;}
.pf-bigtoggle button small{display:block;font-size:11px;font-weight:400;opacity:.85;margin-top:2px;}
.pf-bigtoggle button .pf-bt-txt{text-align:left;}
.pf-availcell{display:inline-flex;align-items:center;justify-content:center;width:30px;height:26px;border-radius:7px;font-size:13px;border:1px solid transparent;cursor:pointer;padding:0;font-family:inherit;}
.pf-avail{background:var(--success-soft);color:var(--success);border-color:var(--success-border);}
.pf-notavail{background:#FBEAEA;color:#C62828;border-color:#F1C9C9;cursor:not-allowed;}
.pf-availcell.pf-sel{background:var(--tryp-blue);color:#fff;border-color:var(--tryp-blue);box-shadow:0 0 0 2px var(--ring);}
.pf-roomname{text-align:left!important;font-weight:600;cursor:help;}
.pf-roomname span{border-bottom:1px dotted #94A3B8;}
.pf-cbtoggle{position:relative;width:42px;height:23px;border-radius:20px;background:#CBD5E1;display:inline-block;cursor:pointer;vertical-align:middle;border:0;}
.pf-cbtoggle.pf-on{background:var(--success);}
.pf-cbtoggle:after{content:'';position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;background:#fff;transition:.15s;}
.pf-cbtoggle.pf-on:after{left:21px;}
.pf-receipt{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.pf-rcphd{background:var(--tryp-blue);color:#fff;padding:14px 20px;display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;}
.pf-rcprow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 20px;border-bottom:1px solid #F1F5F9;font-size:13.5px;}
.pf-rcprow .pf-rcplbl{color:#475569;display:flex;align-items:center;gap:8px;}
.pf-rcprow .pf-rcpval{font-weight:600;color:var(--ink);text-align:right;}
.pf-rcprow .pf-rcpcalc{color:#94A3B8;font-size:12px;font-weight:400;margin-left:6px;}
.pf-rcpsection{padding:8px 20px 6px;font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#94A3B8;background:#F8FAFC;border-bottom:1px solid #F1F5F9;}
.pf-pill{display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;margin:2px 4px 2px 0;}
.pf-pill-mp{background:var(--orange-soft);color:var(--orange-ink);}
.pf-pill-fb{background:var(--success-soft);color:var(--success);}
.pf-pill-pa{background:var(--blue-soft);color:var(--blue-ink);}
.pf-pill-room{background:#F1F5F9;color:#475569;border:1px solid #E5EAF1;}
.pf-rcptotal{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#F8FAFC;}
.pf-rcptotal .pf-tlbl{font-size:13px;color:#64748B;font-weight:500;}
.pf-rcptotal .pf-tval{font-size:24px;font-weight:700;color:var(--tryp-blue);}
.pf-foot{display:flex;gap:14px;padding:20px 26px;background:var(--surface);border-top:1px solid var(--border);flex:none;}
.pf-btn{height:52px;border-radius:11px;border:none;font-size:15.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;font-family:inherit;}
.pf-btn i{font-size:19px;}
.pf-btn-green{background:var(--success);color:#fff;flex:2;}
.pf-btn-green:hover{background:#127334;}
.pf-btn-green:disabled{opacity:.5;cursor:not-allowed;}
.pf-btn-red{background:#fff;color:#C62828;border:1px solid #F1C9C9;flex:1;}
.pf-btn-red:hover{background:#FBEAEA;}
.pf-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:#64748B;margin-top:12px;align-items:center;}
.pf-legend .pf-lg{display:inline-flex;align-items:center;gap:6px;}
.pf-dot{width:11px;height:11px;border-radius:3px;display:inline-block;}
.pf-empty{color:#94A3B8;font-size:13px;font-style:italic;padding:6px 2px;}
/* Salas modal shares the brand chrome of the Adicionar Pedido modal (was raw Bootstrap) */
#salasModal .modal-content{border:0;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-lg);}
#salasModal .modal-header{background:var(--tryp-blue);border-bottom:0;padding:16px 20px;}
#salasModal .modal-title{color:#fff;}
#salasModal .btn-close{filter:brightness(0) invert(1);opacity:.9;}
@media(max-width:760px){.pf-grid2{grid-template-columns:1fr;}.pf-cal3{grid-template-columns:1fr;}.pf-stepper-wrap{padding-top:0;}.pf-head,.pf-body,.pf-foot{padding-left:16px;padding-right:16px;}.pf-foot{flex-direction:column;}.pf-btn{width:100%;}}

/* ===== Phase 1 rework v2: rooms-per-day intro, total row, F&B meal control, priced receipt ===== */
.pf-roomintro{background:#F8FAFC;border:1px dashed #B7D6EE;border-radius:10px;padding:18px 20px;text-align:center;}
.pf-roomintro-q{display:block;font-size:15px;font-weight:600;color:#161C25;margin-bottom:12px;}
.pf-roomintro-row{display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap;}
.pf-roomintro-row .pf-input{max-width:160px;text-align:center;font-size:16px;font-weight:600;}
.pf-totrow td{background:#EAF1FB;font-weight:700;}
.pf-totrow .pf-rowlbl{background:#dbe8f8;color:var(--blue-ink);}
.pf-totcell{color:var(--blue-ink);font-variant-numeric:tabular-nums;}

.pf-meal{display:flex;align-items:center;gap:6px;justify-content:center;}
.pf-meal-box{width:24px;height:24px;border-radius:6px;border:1px solid;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;background:transparent;padding:0;}
.pf-meal-box.pf-off{background:#FBEAEA;border-color:#F1C9C9;color:#C62828;}
.pf-meal-box.pf-on{background:var(--success-soft);border-color:var(--success-border);color:var(--success);}
.pf-meal-tog{display:inline-flex;border:1px solid #E5EAF1;border-radius:7px;overflow:hidden;background:#F1F5F9;}
.pf-meal-tog span{font-size:10px;font-weight:700;padding:4px 7px;color:#94A3B8;cursor:pointer;border-right:1px solid #E5EAF1;}
.pf-meal-tog span:last-child{border-right:none;}
.pf-meal-tog.pf-none{opacity:.65;}
.pf-meal-tog.pf-buffet span[data-val="buffet"]{background:var(--blue-on);color:#fff;}
.pf-meal-tog.pf-servido span[data-val="servido"]{background:#2F8ED6;color:#fff;}

.pf-rcptbl{width:100%;border-collapse:collapse;font-size:13.5px;}
.pf-rcptbl td{padding:9px 14px;border-bottom:1px solid #F1F5F9;vertical-align:middle;}
.pf-rcptbl td.pf-eur{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600;color:#161C25;}
.pf-rcptbl td.pf-rcp-q{color:#64748B;font-size:12.5px;white-space:nowrap;}
.pf-rcptbl small{color:#94A3B8;font-weight:400;}
.pf-rcp-colhd td{font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:#94A3B8;background:#fff;border-bottom:1px solid #E5EAF1;}
.pf-rcpsec td{font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#475569;background:#F8FAFC;}
.pf-rcp-empty{color:#94A3B8;font-style:italic;}
.pf-incl{color:#15893C !important;font-weight:600;}
.pf-info{color:#94A3B8;cursor:help;vertical-align:-2px;}
.pf-rcptotal-row td{background:#F8FAFC;border-top:1px solid #E5EAF1;border-bottom:none;font-weight:600;color:#64748B;padding-top:14px;padding-bottom:14px;}
.pf-rcptotal-row .pf-tval{font-size:19px;font-weight:700;color:#0167B1;}

/* ===== Nav dropdowns + account pages + repository scaffolds ===== */
.app-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1;}
.app-nav__right{display:flex;align-items:center;gap:12px;}
button.app-link{background:none;border:0;cursor:pointer;font-family:inherit;}
.app-acct{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-pill);padding:.35rem .85rem;font-size:.85rem;font-weight:600;color:var(--gray-700);cursor:pointer;display:inline-flex;align-items:center;gap:.4rem;}
.app-acct:hover{background:var(--gray-100);}
.app-acct code{font-size:.72rem;color:#64748B;}
/* Agency account button = primary blue (matches + Adicionar Pedido); its menu = the PT/EN blue, white text. */
.app-acct--primary{background:var(--tryp-blue);border-color:var(--tryp-blue);color:#fff;}
.app-acct--primary:hover{background:var(--tryp-blue-600);}
.app-nav .dropdown-menu{background:var(--blue-on);border-color:var(--blue-on);}
.app-nav .dropdown-menu .dropdown-item{color:#fff;}
.app-nav .dropdown-menu .dropdown-item .ti{color:rgba(255,255,255,.85);}
.app-nav .dropdown-menu .dropdown-item:hover{background:rgba(255,255,255,.18);color:#fff;}
.app-nav .dropdown-menu .dropdown-item:active{background:var(--tryp-blue);color:#fff;}
.app-nav .dropdown-menu .dropdown-divider{border-top-color:rgba(255,255,255,.35);}
.acct-menu__user{color:#fff;font-weight:700;font-size:.8rem;opacity:.95;padding:.4rem .7rem;}
.dropdown-menu{border:1px solid #E5EAF1;border-radius:11px;box-shadow:0 12px 28px rgba(16,24,39,.14);font-size:.9rem;padding:.4rem;min-width:240px;}
.dropdown-item{border-radius:7px;padding:.5rem .7rem;display:flex;align-items:center;gap:.55rem;color:#161C25;}
.dropdown-item .ti{color:#64748B;font-size:16px;}
.dropdown-item:hover{background:#F1F5F9;}
.dropdown-item:active{background:#0167B1;color:#fff;}
.dropdown-item:active .ti{color:#fff;}
.dropdown-menu form{margin:0;}
.dropdown-menu form .dropdown-item{width:100%;border:0;background:none;text-align:left;cursor:pointer;font:inherit;}

.acct-card{padding:22px 24px;}
.acct-card .pf-field{margin-bottom:14px;}
.acct-card .pf-input:disabled{background:#F1F5F9;color:#64748B;cursor:not-allowed;}
.acct-card hr{border:0;border-top:1px solid #E5EAF1;margin:18px 0;}
.acct-hint{font-size:12px;color:#64748B;display:block;margin-top:4px;}
.req{color:#C62828;}
.acct-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:14px;font-weight:500;}
.acct-ok{background:#E3F3E8;color:#15893C;border:1px solid #BFE5CB;}
.acct-err{background:#FBEAEA;color:#C62828;border:1px solid #F1C9C9;}

.empty-state{text-align:center;padding:56px 24px;color:#64748B;background:#fff;border:1px dashed #D3DAE3;border-radius:14px;}
.empty-state .ti{font-size:42px;color:#B5D4F4;display:block;margin-bottom:10px;}
.empty-state h2{font-size:18px;color:#161C25;margin:0 0 6px;font-weight:600;}
.empty-state p{max-width:560px;margin:0 auto;font-size:14px;line-height:1.6;}

.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;}
.doc-card{background:#fff;border:1px solid #E5EAF1;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(16,24,39,.08);}
.doc-card__thumb{aspect-ratio:4/3;background:#F1F5F9;display:flex;align-items:center;justify-content:center;}
.doc-card__thumb img{width:100%;height:100%;object-fit:cover;}
.doc-card__body{padding:12px 14px;display:flex;flex-direction:column;gap:10px;}
.doc-card__name{font-weight:600;font-size:14px;color:#161C25;}

.album{margin-bottom:28px;}
.album__title{font-size:15px;font-weight:600;color:var(--ink);margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border);}
.album__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
.photo{position:relative;margin:0;border-radius:12px;overflow:hidden;background:#F1F5F9;aspect-ratio:3/2;}
.photo img{width:100%;height:100%;object-fit:cover;display:block;}
.photo__name{position:absolute;left:0;right:0;bottom:0;padding:6px 10px;font-size:12px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.6));}
.photo__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:rgba(16,24,39,.5);opacity:0;transition:opacity .15s;}
.photo:hover .photo__overlay{opacity:1;}
.photo__btn{display:inline-flex;align-items:center;gap:5px;background:#fff;color:#0167B1;border-radius:999px;padding:.3rem .8rem;font-size:12px;font-weight:700;text-decoration:none;}
.photo__btn:hover{background:#0167B1;color:#fff;}
.photo__btn button,.photo__overlay form{margin:0;}
.doc-ico{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:48px;}
.doc-ico--pdf{color:#C62828;}
.doc-ico--ppt{color:#E8851F;}
.album-upload{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.album-upload .pf-input{max-width:240px;}
.album-upload input[type=file]{max-width:300px;}

/* ===== Repository admin: library / groups / categorias (drag & drop) ===== */
.repo-card{margin-top:16px;padding:22px 24px;}
.repo-card .h6,.repo-upload .h6{font-size:15px;font-weight:600;margin:0 0 12px;}
.repo-empty{color:var(--muted);font-size:13px;font-style:italic;margin:0;}
.repo-newgroup{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;}
.repo-newgroup .pf-input{max-width:320px;}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;}
.lib-item{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;}
.lib-thumb{position:relative;aspect-ratio:4/3;background:var(--gray-100);display:flex;align-items:center;justify-content:center;cursor:grab;}
.lib-thumb img{width:100%;height:100%;object-fit:cover;}
.lib-thumb--doc img{object-fit:contain;background:#fff;}
.lib-thumb .doc-ico{font-size:42px;}
.st-row{position:absolute;left:4px;bottom:4px;display:flex;gap:4px;}
.st{font-size:9px;font-weight:700;line-height:1;padding:3px 5px;border-radius:5px;background:var(--danger);color:#fff;display:inline-flex;align-items:center;gap:2px;}
.st .ti{font-size:11px;}
.st.ok{background:var(--success);}
.lib-row{display:flex;align-items:center;gap:4px;padding:6px;}
.lib-name,.group-name{flex:1;min-width:0;border:1px solid var(--border);border-radius:6px;padding:.3rem .4rem;font-size:12px;font-family:inherit;}
.diskette{border:0;background:none;cursor:pointer;font-size:16px;padding:2px;line-height:1;}
.diskette.is-clean{color:var(--success);}
.diskette.is-dirty{color:var(--danger);}
.lib-del,.group-del{border:0;background:none;cursor:pointer;color:var(--muted);padding:2px;}
.lib-del:hover,.group-del:hover{color:var(--danger);}
.group-card{border:1px solid var(--border);border-radius:10px;margin-bottom:12px;background:#fff;}
.group-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--gray-100);background:var(--gray-50);border-radius:10px 10px 0 0;}
.drag-handle{cursor:grab;color:var(--muted);font-size:18px;display:inline-flex;}
.group-drop{min-height:64px;padding:8px;display:flex;flex-wrap:wrap;gap:8px;}
.group-drop.drag-over{background:var(--blue-soft);outline:2px dashed var(--blue-on);outline-offset:-4px;}
.group-item{position:relative;width:84px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff;font-size:10px;}
.group-item img{width:84px;height:60px;object-fit:cover;display:block;}
.group-item--doc{display:flex;flex-direction:column;align-items:center;justify-content:center;height:84px;color:var(--tryp-blue);}
.group-item--doc .ti{font-size:26px;}
.group-item span{display:block;padding:3px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2);}
.gi-del{position:absolute;top:2px;right:2px;width:16px;height:16px;border:0;border-radius:50%;background:rgba(16,24,39,.6);color:#fff;font-size:12px;line-height:14px;cursor:pointer;padding:0;}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
.cat-card{border:1px solid var(--border);border-radius:10px;background:#fff;}
.cat-title{font-size:13px;font-weight:600;margin:0;padding:8px 12px;border-bottom:1px solid var(--gray-100);background:var(--gray-50);border-radius:10px 10px 0 0;}
.cat-drop{min-height:60px;padding:10px;display:flex;flex-direction:column;gap:6px;}
.cat-drop.drag-over{background:var(--blue-soft);outline:2px dashed var(--blue-on);outline-offset:-4px;}
.cat-group{position:relative;display:flex;align-items:center;gap:6px;background:var(--blue-soft);color:var(--tryp-blue-800);border-radius:7px;padding:.35rem 1.5rem .35rem .6rem;font-size:12.5px;font-weight:600;}
.cg-del{position:absolute;right:6px;border:0;background:none;color:var(--tryp-blue-700);font-size:15px;cursor:pointer;padding:0;line-height:1;}
