/* Compact operational workspace; preserve the individual modules' controls. */
.ws-shell.app-shell { grid-template-columns:72px minmax(0,1fr); }
.ws-shell .main-shell { min-width:0; }
.ws-shell .topbar { min-height:72px; padding:12px 24px; background:#103d60; color:#fff; gap:18px; }
.ws-shell .page-title h1 { font-size:20px; color:#fff; }
.ws-shell .page-title p { display:none; }
.ws-shell .content { padding:18px 24px 32px; min-width:0; }
.ws-shell .ws-rail { width:72px; padding:10px 8px; background:#d8edf3; overflow:visible; z-index:45; height:100dvh; position:sticky; top:0; border-right:1px solid #c7e0e8; }
.ws-brand { display:flex; justify-content:center; padding:6px 0 20px; }
.ws-brand img { width:40px; height:40px; border-radius:50%; object-fit:contain; background:white; }
.ws-rail nav { display:flex; flex-direction:column; height:calc(100% - 72px); gap:8px; }
.ws-rail-button { position:relative; flex-shrink:0; width:52px; height:50px; border:0; border-radius:50%; display:grid; place-items:center; color:#173f59; background:transparent; cursor:pointer; }
.ws-rail-button svg { width:23px; height:23px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.ws-rail-button.is-active,.ws-rail-button:hover,.ws-rail-button:focus-visible { background:#fff; color:#09667c; }
.ws-rail-button span { display:none; position:absolute; left:60px; top:8px; background:#103d60; color:#fff; border-radius:8px; padding:9px 14px; box-shadow:0 4px 15px #1234; font-size:14px; white-space:nowrap; pointer-events:none; }
.ws-rail-button:hover span,.ws-rail-button:focus-visible span { display:block; }
.ws-rail-button.ws-bottom { margin-top:auto; }
.ws-subnav { display:flex; flex-wrap:wrap; gap:5px; padding:0 0 12px; margin-bottom:14px; border-bottom:1px solid #dfe8ed; }
.ws-subnav button { background:none; border:0; border-radius:7px; padding:9px 12px; font-size:13px; color:#496471; cursor:pointer; }
.ws-subnav button.is-active { background:#e0f0f2; color:#0d6575; font-weight:700; }
.ws-account-brand { white-space:nowrap; font-size:16px; display:flex; align-items:center; gap:7px; }
.ws-account-brand svg { width:22px; height:24px; stroke:currentColor; stroke-width:1.7; fill:none; }
#ws-quick-search-form { display:flex; width:clamp(160px,23vw,340px); background:#fff; border-radius:8px; }
#ws-quick-search-form input { width:100%; min-width:0; border:0; background:transparent; padding:10px; color:#163d55; font-size:12px; }
#ws-quick-search-form button { border:0; background:transparent; color:#163d55; font-size:22px; cursor:pointer; }
.ws-sort { display:inline-flex; align-items:center; gap:4px; color:inherit; font:inherit; text-transform:inherit; border:0; background:none; padding:0; cursor:pointer; text-align:left; }
.ws-shell .contact-table-wrap { max-height:68dvh; overflow:auto; }
.ws-shell .contact-table thead th { position:sticky; top:0; z-index:3; background:#f5f8fa; }
.ws-user-menu { position:relative; }
.ws-user-menu summary { list-style:none; cursor:pointer; }
.ws-user-menu summary::-webkit-details-marker { display:none; }
.ws-user-menu .avatar { width:40px; height:40px; background:#d7ffff; color:#123f60; }
.ws-user-menu>div { position:absolute; z-index:80; right:0; top:50px; width:235px; color:#213b49; background:white; border:1px solid #d9e5eb; border-radius:12px; box-shadow:0 8px 24px #1233; overflow:hidden; }
.ws-user-menu strong { display:block; padding:22px; background:#d8edf3; }
.ws-user-menu a,.ws-user-menu button { display:block; width:100%; text-align:left; padding:16px 22px; border:0; background:white; color:#234451; font:inherit; text-decoration:none; cursor:pointer; }
.ws-user-menu button { color:#b32929; }
.ws-toolbar { display:flex; gap:12px; align-items:end; flex-wrap:wrap; padding:16px; }
.ws-toolbar label { display:flex; flex-direction:column; gap:5px; font-size:11px; color:#597180; font-weight:600; text-transform:uppercase; }
.ws-toolbar input,.ws-toolbar select { min-height:40px; border:1px solid #d8e4e9; border-radius:8px; padding:8px 10px; font:inherit; font-size:13px; text-transform:none; color:#213e4e; background:white; max-width:100%; }
.ws-toolbar .ws-search { flex:1; min-width:200px; }
.ws-shell .primary-button,.ws-shell .secondary-button { font-size:13px; padding:10px 14px; }
.ws-shell .panel { border-radius:12px; box-shadow:none; }
.ws-shell .panel-header { padding:16px; gap:14px; }
.ws-shell .panel-header h2 { font-size:17px; margin:0; }
.ws-table-wrap { width:100%; overflow:auto; }
.ws-reservation-table { width:100%; table-layout:fixed; border-collapse:collapse; font-size:12px; }
.ws-reservation-table th { text-align:left; text-transform:uppercase; background:#f5f8fa; color:#647783; font-size:10px; font-weight:650; padding:12px 7px; border-block:1px solid #e3eaf0; }
.ws-reservation-table td { padding:13px 7px; border-bottom:1px solid #e6edf1; overflow-wrap:anywhere; vertical-align:middle; }
.ws-reservation-table th:nth-child(1) { width:15%; }
.ws-reservation-table th:nth-child(2) { width:5%; }
.ws-reservation-table th:nth-child(3) { width:16%; }
.ws-reservation-table th:nth-child(4),.ws-reservation-table th:nth-child(5),.ws-reservation-table th:nth-child(6) { width:8%; }
.ws-reservation-table th:nth-child(7) { width:3%; }
.ws-reservation-table th:nth-child(8) { width:10%; }
.ws-reservation-table th:nth-child(9) { width:11%; }
.ws-reservation-table th:nth-child(10) { width:9%; }
.ws-reservation-table th:nth-child(11) { width:7%; }
.ws-reservation-table td small,.ws-reception td small { display:block; font-size:10px; color:#72818a; margin-top:5px; line-height:1.4; }
.ws-reservation-table td:nth-child(3) small { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ws-link { background:none; border:0; color:#194d69; font:inherit; font-weight:650; cursor:pointer; padding:0; text-align:left; }
.ws-link:hover { text-decoration:underline; }
.ws-channel-logo { width:24px; height:24px; object-fit:contain; display:inline-block; vertical-align:middle; }
.ws-channel-fallback { font-size:9px; font-weight:650; }
.ws-status { display:inline-block; border-radius:14px; padding:4px 8px; font-size:10px; text-align:center; background:#edf2f5; color:#526570; }
.ws-paid,.ws-booking-confirmed { background:#ddf8e9; color:#17673f; }
.ws-partial,.ws-booking-pre { background:#fff0be; color:#896014; }
.ws-unpaid,.ws-booking-cancelled { background:#ffe2e3; color:#a7353b; }
.ws-booking-deleted { background:#e7e8eb; color:#59616c; }
.ws-row-actions { display:flex; gap:3px; flex-wrap:wrap; }
.ws-row-actions button { cursor:pointer; background:none; border:0; color:#1a698b; font-size:19px; padding:3px; }
.ws-calendar-scroll { overflow:auto; max-height:70dvh; margin:8px 0; }
.ws-calendar-grid { min-width:1540px; }
.ws-calendar-head { display:grid; grid-template-columns:124px repeat(var(--ws-days),minmax(60px,1fr)); position:sticky; top:0; z-index:4; background:white; border-block:1px solid #dce6ec; }
.ws-calendar-head>div { display:flex; align-items:center; flex-direction:column; border-right:1px solid #e6edf1; padding:10px 2px; font-size:12px; }
.ws-calendar-head small { color:#71828d; }
.ws-calendar-head .ws-today { background:#e0f2f5; color:#116277; }
.ws-calendar-unit { position:sticky; left:0; z-index:3; width:124px; flex-shrink:0; display:flex; flex-direction:column; justify-content:center; padding:8px 12px; background:#f0f7fa; border-right:1px solid #dce6ec; font-size:13px; }
.ws-calendar-unit small { color:#687e8b; font-size:9px; margin-top:4px; }
.ws-calendar-row { display:flex; border-bottom:1px solid #e1e9ee; }
.ws-calendar-track { flex:1; min-width:0; position:relative; background-image:linear-gradient(to right,#e6edf1 1px,transparent 1px); background-size:calc(100% / var(--ws-days)) 100%; }
.ws-calendar-bar { position:absolute; height:29px; border:0; border-radius:16px; display:flex; align-items:center; gap:6px; font-size:12px; font-weight:750; padding:2px 7px; cursor:pointer; overflow:hidden; white-space:nowrap; }
.ws-calendar-bar.ws-bar-continuation { border-top-left-radius:0; border-bottom-left-radius:0; }
.ws-calendar-bar>span:last-child { overflow:hidden; text-overflow:ellipsis; text-align:center; flex:1; }
.ws-calendar-logo { border-radius:50%; background:white; flex:0 0 25px; width:25px; height:25px; display:grid; place-items:center; }
.ws-calendar-logo img { width:20px; height:20px; }
.ws-bar-paid { background:#2f7fb8; color:#fff; }
.ws-bar-unpaid { background:#f2d261; color:#574409; }
.ws-bar-partial { background:#ee9744; color:#452c0c; }
.ws-bar-blocked { background:#dd535b; color:white; }
.ws-bar-maintenance { background:#bce8cb; color:#205633; }
.ws-bar-unknown { background:#d3dee5; color:#3b5160; }
.ws-legend { display:flex; flex-wrap:wrap; gap:16px; padding:0 16px 12px; font-size:11px; color:#5a717d; }
.ws-legend span { display:flex; align-items:center; gap:5px; }
.ws-legend i { display:inline-block; width:14px; height:9px; border-radius:3px; }
.ws-footnote { padding:10px 16px; font-size:11px; color:#748491; line-height:1.5; }
.ws-reception-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:18px; }
.ws-reception-grid .panel { min-width:0; align-self:start; }
.ws-reception-row { display:grid; grid-template-columns:48px minmax(0,1fr) 28px; gap:8px; align-items:center; padding:13px 15px; font-size:12px; border-top:1px solid #e6edf1; }
.ws-reception-row>div:nth-child(2) { min-width:0; overflow-wrap:anywhere; }
.ws-reception-row small { display:block; margin-top:4px; color:#72818a; font-size:10px; }
.ws-reception-dates { grid-column:1/-1; color:#597180; font-size:11px; }
.ws-reception-row>.ws-status { grid-column:1/3; justify-self:start; }
.ws-reception-row>.ws-instructions { grid-column:1/-1; justify-self:end; }
.conversation-commandbar .conversation-simple-filter { display:flex; flex-direction:column; gap:4px; font-size:10px; color:#597180; flex:0 1 175px; }
.ws-shell .conversation-commandbar { grid-template-columns:minmax(240px,1fr) minmax(150px,190px) minmax(150px,210px) auto; align-items:end; }
.ws-shell .conversation-commandbar-status { padding-bottom:2px; }
@media(max-width:1100px) { .ws-shell .conversation-commandbar { grid-template-columns:minmax(200px,1fr) 160px; } }
@media(max-width:620px) { .ws-shell .conversation-commandbar { grid-template-columns:1fr 1fr; } .ws-shell .conversation-commandbar .conversation-search { grid-column:1/-1; } }
.conversation-simple-filter select { font-size:12px; min-height:34px; padding:6px 9px; border:1px solid #d8e4e9; border-radius:7px; background:white; max-width:100%; }
.conversation-category-row[hidden],.conversation-commandbar .conversation-categories-trigger { display:none; }
.ws-reception-row>.action-row { grid-column:1 / -1; justify-content:flex-end; flex-wrap:wrap; }
.ws-reception-row>span { font-size:11px; }
.ws-reception { margin-bottom:20px; }
.ws-reception .data-table { min-width:850px; }
.ws-reception .data-table td { font-size:12px; }
#ws-payment-draft { width:100%; min-height:330px; padding:16px; border:1px solid #c7d9e1; border-radius:8px; font:inherit; }
.ws-kpis { display:grid; grid-template-columns:1fr 1fr 2fr; gap:16px; margin:0 0 18px; }
.ws-kpis article { border:1px solid #dce7ed; border-radius:12px; padding:20px; background:white; }
.ws-kpis span { display:block; color:#748897; font-size:12px; }
.ws-kpis strong { display:block; color:#163f60; font-size:24px; margin-top:8px; }
.ws-kpis article:last-child strong { font-size:18px; }
.ws-line-chart { width:100%; height:auto; max-height:350px; }
.ws-line-chart text { font-size:10px; fill:#80909d; }
.ws-series-current,.ws-series-prior { display:inline-block; width:18px; height:4px; background:#0e5a71; vertical-align:middle; }
.ws-series-prior { background:#97cde2; }
.ws-series-unit { display:inline-block; width:18px; height:4px; background:#e98a2c; vertical-align:middle; }
.ws-marketing .ws-marketing-toolbar { display:grid; grid-template-columns:minmax(145px, .85fr) minmax(155px, 1fr) minmax(130px, .8fr) minmax(190px, 1.6fr) 85px; gap:10px; padding:10px 12px; margin-bottom:8px; background:white; border:1px solid #dce7ed; border-radius:10px; }
.ws-marketing-toolbar label { min-width:0; font-size:10px; gap:4px; }
.ws-marketing .ws-marketing-toolbar.is-custom { grid-template-columns:minmax(140px,1fr) minmax(130px,1fr) minmax(190px,1.5fr) 85px minmax(140px,.8fr) minmax(140px,.8fr); }
.ws-marketing-toolbar input,.ws-marketing-toolbar select { width:100%; min-width:0; min-height:36px; height:36px; padding:6px 9px; font-size:12px; }
.ws-marketing-summary { display:flex; align-items:center; flex-wrap:wrap; gap:12px 28px; padding:10px 12px; margin-bottom:10px; background:white; border:1px solid #dce7ed; border-radius:9px; font-size:12px; color:#597180; }
.ws-marketing-summary strong { font-size:19px; color:#163f60; margin-left:8px; }
.ws-marketing-dates { margin-left:auto; font-size:12px; }
.ws-marketing .ws-occupancy .panel-header { padding:12px 16px; display:flex; flex-wrap:wrap; gap:10px; }
.ws-marketing-legend { display:flex; gap:10px 18px; flex-wrap:wrap; font-size:11px; }
.ws-marketing-legend span { display:flex; gap:6px; align-items:center; }
.ws-marketing-detail-heading { padding:12px 0 0; }
.ws-marketing-detail-heading h2 { font-size:17px; margin:0 0 6px; }
.ws-marketing-detail-heading p { font-size:12px; margin:0; }
.ws-marketing-detail-heading .ws-footnote { padding:8px 0; }
.marketing-dashboard .section-heading { flex-wrap:wrap; gap:8px; }
.marketing-dashboard .section-heading p { white-space:normal; min-width:0; }
.ws-unit-rankings .ws-donut-grid { margin-top:0; }
.ws-unit-ranking { min-width:0; padding:16px; }
.ws-unit-ranking h3 { font-size:15px; margin:0 0 12px; }
.ws-ranking-scroll { max-height:520px; overflow:auto; }
.ws-ranking-row { display:grid; grid-template-columns:minmax(70px, .8fr) minmax(40px, 1fr) minmax(80px, 1fr); gap:10px; align-items:center; padding:9px 4px; border-bottom:1px solid #e9eef1; font-size:12px; }
.ws-ranking-row small { display:block; font-size:10px; font-weight:400; color:#657d89; margin-top:3px; overflow-wrap:anywhere; }
.ws-ranking-row.is-selected { background:#fff3e8; border-radius:6px; }
.ws-ranking-value { text-align:right; font-weight:600; }
.ws-ranking-track { height:12px; background:#edf3f6; border-radius:5px; overflow:hidden; }
.ws-ranking-track i { display:block; height:100%; background:#367ebe; border-radius:5px; }
.ws-ranking-track i.is-negative { background:#c85656; }
@media(max-width:1100px) { .ws-marketing .ws-marketing-toolbar,.ws-marketing .ws-marketing-toolbar.is-custom { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:650px) { .ws-marketing .ws-marketing-toolbar,.ws-marketing .ws-marketing-toolbar.is-custom { grid-template-columns:repeat(2,minmax(0,1fr)); } .ws-marketing-summary { gap:8px; } .ws-marketing-dates { width:100%; margin:0; } }
.ws-donut-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:18px; }
.ws-donut-panel { padding:20px; }
.ws-donut-panel h3 { font-size:15px; color:#536e7f; margin:0 0 18px; }
.ws-donut-layout { display:flex; gap:24px; align-items:center; }
.ws-donut { width:170px; height:170px; border-radius:50%; flex-shrink:0; display:grid; place-items:center; }
.ws-donut>div { width:116px; height:116px; border-radius:50%; background:white; display:flex; align-items:center; justify-content:center; flex-direction:column; }
.ws-donut strong { font-size:23px; color:#194d69; }
.ws-donut span { font-size:11px; color:#74909d; }
.ws-donut-layout ul { flex:1; padding:0; max-height:210px; overflow:auto; list-style:none; }
.ws-donut-layout li { display:flex; align-items:center; gap:8px; padding:8px 0; font-size:12px; }
.ws-donut-layout li i { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
.ws-donut-layout li span { flex:1; }
.ws-other-indicators { margin-top:24px; }
.ws-other-indicators>summary { cursor:pointer; padding:16px; background:#e9f2f6; border-radius:8px; color:#274f67; }
.ws-shell.is-conversations { height:100dvh; }
.ws-shell.is-conversations .content { padding:0; display:flex; flex-direction:column; overflow:hidden; }
.ws-shell.is-conversations .ws-subnav { flex-shrink:0; margin:0; padding:6px 12px; }
.ws-shell.is-conversations .conversation-screen { flex:1; min-height:0; height:auto; }
.ws-submenu { position:relative; }
.ws-submenu summary { cursor:pointer; padding:9px 12px; color:#496471; font-size:13px; list-style:none; }
.ws-submenu>div { position:absolute; z-index:60; left:0; top:38px; min-width:220px; background:white; border:1px solid #d9e5eb; border-radius:10px; padding:6px; box-shadow:0 8px 20px #1232; }
.ws-submenu>div button { display:block; width:100%; text-align:left; }
.ws-subnav:has(.ws-submenu[open]) { overflow:visible; flex-wrap:wrap; }
@media (max-width:1100px) {
  .ws-shell .topbar { flex-wrap:wrap; }
  .ws-shell .topbar-actions { flex-wrap:wrap; }
  #ws-quick-search-form { max-width:100%; }
}
.ws-shell .contact-table-wrap { max-width:100%; }
@media(max-width:1000px) { .ws-reception-grid { grid-template-columns:1fr; } .ws-donut-grid { grid-template-columns:1fr; } }
@media(max-width:800px) { .ws-shell.app-shell { grid-template-columns:56px minmax(0,1fr); } .ws-shell .ws-rail { width:56px; padding:8px 3px; transform:none; position:sticky; } .ws-rail-button { width:48px; height:44px; } .ws-rail nav { gap:3px; } .ws-shell .topbar { padding:10px 12px; } .ws-shell .content { padding:12px; } .ws-shell .mobile-menu { display:none; } .ws-account-brand,.ws-shell .topbar-actions>.badge { display:none; } .ws-reservation-table { min-width:920px; } .ws-kpis { grid-template-columns:1fr; } .ws-reception-row { grid-template-columns:48px 1fr 100px; } .ws-subnav { flex-wrap:nowrap; overflow:auto; } .ws-subnav button { white-space:nowrap; } .ws-donut { width:130px; height:130px; } .ws-donut>div { width:88px; height:88px; } }
@media(prefers-reduced-motion:reduce) { .ws-shell * { scroll-behavior:auto; } }
@media(max-width:800px) {
  .ws-reservation-table { min-width:0; display:block; }
  .ws-reservation-table thead { display:none; }
  .ws-reservation-table tbody { display:block; }
  .ws-reservation-table tr { display:grid; grid-template-columns:1fr 1fr; margin:10px; border:1px solid #dce7ed; border-radius:10px; overflow:hidden; }
  .ws-reservation-table td { display:block; font-size:12px; padding:10px; }
  .ws-reservation-table td::before { display:block; color:#6c7e8b; font-size:10px; margin-bottom:5px; }
  .ws-reservation-table td:nth-child(1) { grid-column:1/-1; background:#f3f8fa; font-size:14px; }
  .ws-reservation-table td:nth-child(2)::before { content:'Canal'; }
  .ws-reservation-table td:nth-child(3)::before { content:'Unidad'; }
  .ws-reservation-table td:nth-child(4)::before { content:'Fecha de reserva'; }
  .ws-reservation-table td:nth-child(5)::before { content:'Check-in'; }
  .ws-reservation-table td:nth-child(6)::before { content:'Check-out'; }
  .ws-reservation-table td:nth-child(7)::before { content:'Pax'; }
  .ws-reservation-table td:nth-child(8)::before { content:'Precio total'; }
  .ws-reservation-table td:nth-child(9)::before { content:'Pago'; }
  .ws-reservation-table td:nth-child(10)::before { content:'Estado'; }
  .ws-row-actions button { min-width:40px; min-height:40px; }
  .ws-donut-layout { gap:12px; flex-wrap:wrap; }
}
