@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,500;1,500&display=swap');

:root {
    --ink: #16233F;
    --ink-2: #1E3055;
    --sand: #eef1f6;
    --paper: #fafbfd;
    --terra: #2f5c9e;
    --brass: #D4A94A;
    --sage: #7f9586;
    --muted: #667085;
    --line: rgba(22, 35, 63, .13);
    --serif: "Playfair Display", Georgia, serif;
    --sans: "DM Sans", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); font-family: var(--sans); background: var(--paper); }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
button { cursor: pointer; }

.brand { display: inline-flex; align-items: center; gap: 12px; font-size: 15px; letter-spacing: .05em; text-transform: uppercase; }
.brand b { font-weight: 600; }
.brand--light { color: white; }
.brand-mark { display: grid; grid-template-columns: repeat(2, 9px); gap: 3px; width: 21px; height: 25px; align-items: end; }
.brand-mark i { display: block; height: 100%; border: 1px solid currentColor; border-radius: 9px 9px 1px 1px; }
.brand-mark i:last-child { height: 72%; }
.eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; font-size: 10px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.eyebrow > span { width: 28px; height: 1px; background: var(--terra); }
.eyebrow--light { color: rgba(255,255,255,.76); }
.eyebrow--light > span { background: var(--brass); }

.site-header { position: absolute; z-index: 10; top: 0; left: 0; right: 0; height: 94px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 0 5vw; color: white; border-bottom: 1px solid rgba(255,255,255,.16); }
.site-nav { display: flex; gap: 34px; font-size: 12px; }
.site-nav a { opacity: .76; transition: opacity .2s; }
.site-nav a:hover { opacity: 1; }
.header-cta { justify-self: end; display: flex; align-items: center; gap: 18px; font-size: 11px; text-transform: uppercase; letter-spacing: .1em; }
.header-cta span { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.4); border-radius: 50%; }

.hero { position: relative; height: min(830px, 94vh); min-height: 680px; color: white; overflow: hidden; }
.hero-media { position: absolute; inset: 0; background: url('../img/hero.png') center/cover no-repeat; transform: scale(1.015); animation: heroReveal 1.4s ease both; }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,21,24,.82) 0%, rgba(8,21,24,.42) 44%, rgba(8,21,24,.05) 75%), linear-gradient(0deg, rgba(8,20,23,.4), transparent 50%); }
.hero-content { position: absolute; left: 8.5vw; top: 48%; transform: translateY(-50%); max-width: 760px; }
.hero h1 { margin: 0; font: 500 clamp(54px, 6.3vw, 104px)/.98 var(--serif); letter-spacing: -.045em; }
.hero h1 em, .manifesto h2 em, .section-heading h2 em, .closing h2 em { font-weight: 500; color: var(--brass); }
.hero-copy { max-width: 470px; margin: 30px 0 0 4px; color: rgba(255,255,255,.72); font-size: 15px; line-height: 1.75; }
.hero-scroll { position: absolute; left: 8.5vw; bottom: 42px; display: flex; align-items: center; gap: 13px; font-size: 10px; text-transform: uppercase; letter-spacing: .14em; }
.hero-scroll span { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.4); border-radius: 50%; }
.hero-note { position: absolute; right: 5vw; bottom: 42px; display: flex; gap: 14px; align-items: center; }
.hero-note > span { font: italic 500 32px var(--serif); color: var(--brass); }
.hero-note p { margin: 0; padding-left: 14px; border-left: 1px solid rgba(255,255,255,.25); color: rgba(255,255,255,.65); font-size: 10px; line-height: 1.5; text-transform: uppercase; letter-spacing: .1em; }
@keyframes heroReveal { from { opacity: 0; transform: scale(1.07); } to { opacity: 1; transform: scale(1.015); } }

.availability-wrap { position: relative; z-index: 2; width: min(1220px, 90vw); margin: -32px auto 0; }
.availability-bar { min-height: 112px; display: grid; grid-template-columns: 1.2fr repeat(3, .9fr) 1.15fr; align-items: stretch; background: white; box-shadow: 0 24px 80px rgba(31,38,36,.14); }
.availability-bar > * { border-right: 1px solid var(--line); }
.availability-bar > *:last-child { border: 0; }
.availability-intro { display: flex; gap: 13px; align-items: center; padding: 26px; }
.pulse-dot { width: 9px; height: 9px; flex: none; border-radius: 50%; background: var(--terra); box-shadow: 0 0 0 6px rgba(47,92,158,.12); }
.availability-intro small, .availability-bar label span { display: block; margin-bottom: 7px; color: #88908d; font-size: 9px; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; }
.availability-intro strong { font-size: 12px; font-weight: 500; }
.availability-bar label { display: flex; justify-content: center; flex-direction: column; padding: 22px 27px; }
.availability-bar input, .availability-bar select { width: 100%; color: var(--ink); background: transparent; border: 0; outline: 0; font: 500 14px var(--serif); }
.availability-bar button { display: flex; align-items: center; justify-content: space-between; padding: 0 30px; color: white; background: var(--terra); border: 0; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; transition: background .2s; }
.availability-bar button:hover { background: #244a80; }
.availability-bar button span { font-size: 20px; }
.notice { display: flex; gap: 14px; align-items: center; margin: 24px 0; padding: 16px 20px; font-size: 13px; line-height: 1.5; border: 1px solid; }
.notice--success { color: #476b56; background: #f0f7f2; border-color: #b9d4c1; }
.notice--success > span { display: grid; place-items: center; width: 25px; height: 25px; border-radius: 50%; color: white; background: #64866e; }
.notice--error { color: #854b39; background: #fff2ec; border-color: #e7b9a9; }

.search-result-heading { display: flex; align-items: end; justify-content: space-between; margin: 100px 0 40px; }
.search-result-heading h2, .section-heading h2, .manifesto h2 { margin: 0; font: 500 clamp(42px, 5vw, 76px)/1.05 var(--serif); letter-spacing: -.035em; }
.search-result-heading > p { padding-bottom: 8px; color: var(--muted); font-size: 12px; }
.availability-results { display: grid; gap: 16px; margin-bottom: 100px; }
.result-card { position: relative; display: grid; grid-template-columns: 80px 1fr 180px; gap: 32px; padding: 32px; overflow: hidden; background: white; border: 1px solid var(--line); }
.result-number { font: italic 500 30px var(--serif); color: var(--terra); }
.result-main > span { font-size: 9px; color: var(--sage); text-transform: uppercase; letter-spacing: .15em; }
.result-main h3 { margin: 7px 0 8px; font: 500 30px var(--serif); }
.result-main p { margin: 0 0 16px; color: var(--muted); font-size: 13px; }
.amenities { display: flex; flex-wrap: wrap; gap: 6px; }
.amenities span { padding: 6px 9px; color: #61706a; background: #f0f2ed; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.result-price { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.result-price small { color: var(--muted); font-size: 9px; text-transform: uppercase; }
.result-price strong { margin: 3px 0; font: 500 31px var(--serif); }
.result-price > span { color: var(--muted); font-size: 10px; }
.text-button { margin-top: auto; padding: 0; color: var(--terra); background: transparent; border: 0; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; }
.text-button b { margin-left: 10px; font-size: 18px; }
.reserve-form { position: absolute; z-index: 3; inset: 0; display: none; grid-template-columns: 1fr auto; gap: 18px 32px; align-items: end; padding: 27px 32px; background: var(--ink); color: white; }
.reserve-form.is-open { display: grid; animation: panelIn .25s ease both; }
.reserve-form-heading { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: flex-start; }
.reserve-form-heading small { color: var(--brass); text-transform: uppercase; letter-spacing: .12em; }
.reserve-form-heading h4 { margin: 3px 0; font: 500 22px var(--serif); }
.reserve-form-heading button { color: white; background: transparent; border: 0; font-size: 24px; }
.form-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.form-grid label span, .payment-form label span { display: block; margin-bottom: 6px; color: rgba(255,255,255,.55); font-size: 8px; text-transform: uppercase; letter-spacing: .13em; }
.form-grid input, .form-grid textarea { width: 100%; padding: 10px 0; color: white; background: transparent; border: 0; border-bottom: 1px solid rgba(255,255,255,.26); outline: 0; }
.field-wide { grid-column: 1 / -1; }
.primary-button { display: flex; align-items: center; justify-content: space-between; min-width: 200px; padding: 16px 18px; color: white; background: var(--terra); border: 0; font-size: 10px; text-transform: uppercase; letter-spacing: .12em; }
.form-privacy { grid-column: 1 / -1; margin: 0; color: rgba(255,255,255,.4); font-size: 9px; }
.empty-state { grid-column: 1 / -1; padding: 70px; text-align: center; border: 1px dashed var(--line); }
.empty-state > span { font-size: 50px; color: var(--terra); }
.empty-state h3 { font: 500 27px var(--serif); }
.empty-state p { color: var(--muted); }
@keyframes panelIn { from { opacity: 0; transform: translateX(20px); } }

.manifesto { display: grid; grid-template-columns: .8fr 2.2fr; min-height: 650px; margin-top: 90px; background: var(--sand); }
.manifesto-side { position: relative; padding: 110px 6vw; border-right: 1px solid var(--line); }
.vertical-word { position: absolute; left: 50%; bottom: -21px; margin: 0; transform: translateX(-50%); color: rgba(20,36,38,.045); font-size: 106px; font-weight: 600; letter-spacing: .08em; writing-mode: vertical-rl; }
.manifesto-copy { padding: 110px 8vw; }
.manifesto-copy > p { width: min(540px, 90%); margin: 32px 0 70px; color: var(--muted); font-size: 15px; line-height: 1.8; }
.manifesto-stats { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.manifesto-stats div { display: flex; gap: 17px; align-items: end; padding: 30px 25px 0 0; }
.manifesto-stats strong { font: italic 500 42px var(--serif); color: var(--terra); }
.manifesto-stats span { padding-bottom: 5px; color: var(--muted); font-size: 9px; line-height: 1.5; text-transform: uppercase; letter-spacing: .1em; }

.rooms-section { padding: 120px 5vw 140px; }
.section-heading { display: flex; justify-content: space-between; align-items: end; max-width: 1220px; margin: 0 auto 60px; }
.section-heading > p { width: 340px; margin: 0 0 8px; color: var(--muted); font-size: 13px; line-height: 1.75; }
.room-showcase { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; max-width: 1220px; margin: auto; }
.room-tile { position: relative; min-height: 480px; display: flex; flex-direction: column; padding: 32px; background: #e7e0d5; overflow: hidden; }
.room-tile:nth-child(1) { background: #e4ddd2; }
.room-tile:nth-child(3) { background: #d9dfd7; }
.room-tile--featured { color: white; background: var(--ink) !important; transform: translateY(-18px); }
.room-index { font: italic 500 26px var(--serif); color: var(--terra); }
.favorite { position: absolute; right: 26px; top: 28px; padding: 8px 12px; color: var(--ink); background: var(--brass); font-size: 8px; text-transform: uppercase; letter-spacing: .12em; }
.room-tile-body { margin-top: auto; }
.room-tile-body > small { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .12em; }
.room-tile--featured .room-tile-body > small, .room-tile--featured .room-tile-body p { color: rgba(255,255,255,.55); }
.room-tile h3 { margin: 8px 0 15px; font: 500 38px var(--serif); }
.room-tile p { color: var(--muted); font-size: 13px; line-height: 1.6; }
.room-tile-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 30px; padding-top: 18px; border-top: 1px solid currentColor; font-size: 10px; }
.room-tile-footer strong { font: 500 18px var(--serif); }
.room-tile-footer a { color: var(--terra); text-transform: uppercase; letter-spacing: .08em; }

.closing { min-height: 450px; display: flex; justify-content: space-between; align-items: end; padding: 90px 8vw; color: white; background: var(--ink); }
.closing h2 { margin: 0; font: 500 clamp(38px, 5vw, 68px)/1.08 var(--serif); }
.closing > a { display: flex; align-items: center; justify-content: space-between; width: 210px; padding: 18px 0; border-bottom: 1px solid rgba(255,255,255,.4); font-size: 10px; text-transform: uppercase; letter-spacing: .1em; }
.closing > a span { font-size: 22px; }
.site-footer { display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; padding: 45px 5vw; background: #0e1b1d; color: rgba(255,255,255,.65); font-size: 10px; }
.site-footer > p { text-align: center; }
.site-footer > div { justify-self: end; display: flex; gap: 20px; }
.whatsapp { position: fixed; z-index: 20; right: 22px; bottom: 22px; display: flex; align-items: center; gap: 9px; padding: 7px 13px 7px 7px; color: white; background: #234f3c; border-radius: 30px; box-shadow: 0 8px 30px rgba(0,0,0,.2); }
.whatsapp span { display: grid; place-items: center; width: 31px; height: 31px; border: 1px solid rgba(255,255,255,.5); border-radius: 50%; font: italic 500 15px var(--serif); }
.whatsapp small { font-size: 9px; text-transform: uppercase; letter-spacing: .1em; }

/* Login */
.login-page { min-height: 100vh; background: var(--sand); }
.login-shell { min-height: 100vh; display: grid; grid-template-columns: 1.1fr .9fr; }
.login-visual { position: relative; display: flex; flex-direction: column; justify-content: space-between; padding: 52px 6vw; color: white; background: linear-gradient(180deg, rgba(9,25,27,.2), rgba(9,25,27,.85)), url('../img/hero.png') center/cover; }
.login-visual h1 { margin: 0; font: 500 clamp(47px, 5vw, 75px)/1.04 var(--serif); letter-spacing: -.04em; }
.login-visual h1 em { color: var(--brass); }
.login-visual div > p:last-child { max-width: 390px; color: rgba(255,255,255,.63); }
.login-visual > small { color: rgba(255,255,255,.55); text-transform: capitalize; }
.login-panel { display: grid; place-items: center; padding: 40px; }
.login-form-wrap { width: min(410px, 100%); }
.login-kicker { color: var(--terra); font-size: 9px; font-weight: 600; letter-spacing: .18em; }
.login-form-wrap h2 { margin: 15px 0 8px; font: 500 42px var(--serif); }
.login-form-wrap > p { color: var(--muted); font-size: 13px; }
.login-form { display: grid; gap: 24px; margin-top: 45px; }
.login-form label > span { display: block; margin-bottom: 9px; color: var(--muted); font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.login-form input:not([type=checkbox]) { width: 100%; padding: 13px 0; background: transparent; border: 0; border-bottom: 1px solid var(--line); outline: 0; }
.password-field { position: relative; }
.password-field button { position: absolute; right: 0; bottom: 13px; color: var(--terra); background: transparent; border: 0; font-size: 10px; text-transform: uppercase; }
.login-form .checkbox { display: flex; gap: 9px; align-items: center; }
.login-form .checkbox span { margin: 0; text-transform: none; letter-spacing: 0; }
.login-form .primary-button { width: 100%; margin-top: 7px; }
.secure-note { margin-top: 26px; text-align: center; font-size: 9px !important; }
.secure-note span { margin-right: 8px; color: #5a9a6f; }

/* Dashboard */
.dashboard-page { min-height: 100vh; background: #f4f2ed; }
.sidebar { position: fixed; z-index: 10; inset: 0 auto 0 0; width: 250px; display: flex; flex-direction: column; padding: 34px 24px 28px; color: white; background: #16233F; }
.sidebar .brand { margin: 4px 12px 60px; }
.sidebar nav { display: grid; gap: 5px; }
.sidebar nav a, .sidebar-bottom > a, .sidebar-bottom button { display: flex; gap: 14px; align-items: center; padding: 13px 15px; color: rgba(255,255,255,.52); background: transparent; border: 0; border-radius: 4px; font-size: 11px; width: 100%; }
.sidebar nav a span, .sidebar-bottom span { width: 18px; text-align: center; font-size: 16px; }
.sidebar nav a.active { color: white; background: rgba(255,255,255,.08); }
.sidebar nav a.active span { color: var(--brass); }
.sidebar-bottom { margin-top: auto; }
.sidebar-bottom form { margin-bottom: 20px; }
.user-chip { display: flex; align-items: center; gap: 11px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.1); }
.user-chip > span { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; color: var(--ink); background: var(--brass); font: 500 13px var(--serif); }
.user-chip strong, .user-chip small { display: block; }
.user-chip strong { font-size: 10px; font-weight: 500; }
.user-chip small { margin-top: 3px; color: rgba(255,255,255,.4); font-size: 8px; text-transform: uppercase; letter-spacing: .1em; }
.dashboard-main { margin-left: 250px; padding: 45px clamp(30px, 4vw, 66px) 80px; }
.dashboard-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 34px; }
.dashboard-header h1 { margin: 0 0 6px; font: 500 38px var(--serif); }
.dashboard-header > div > p:last-child { margin: 0; color: var(--muted); font-size: 12px; }
.header-actions { display: flex; gap: 13px; align-items: center; }
.live-chip { padding: 10px 13px; color: #50725e; background: #e4eee6; border-radius: 20px; font-size: 9px; text-transform: uppercase; letter-spacing: .1em; }
.live-chip i { display: inline-block; width: 6px; height: 6px; margin-right: 7px; background: #568668; border-radius: 50%; animation: pulse 1.5s infinite; }
@keyframes pulse { 50% { opacity: .35; } }
.round-button { position: relative; width: 39px; height: 39px; border: 1px solid var(--line); border-radius: 50%; background: white; }
.round-button b { position: absolute; right: -2px; top: -3px; display: grid; place-items: center; width: 16px; height: 16px; color: white; background: var(--terra); border-radius: 50%; font-size: 8px; }
.pulse-grid { display: grid; grid-template-columns: 1.15fr 1fr .85fr; gap: 16px; }
.pulse-grid article { min-height: 270px; padding: 25px; background: white; border: 1px solid rgba(20,36,38,.08); }
.occupancy-card { color: white; background: var(--ink) !important; }
.occupancy-card > div:first-child { display: flex; justify-content: space-between; }
.occupancy-card p, .card-title p { margin: 0; font-size: 8px; letter-spacing: .14em; }
.occupancy-card > div:first-child span { color: rgba(255,255,255,.38); font-size: 8px; }
.occupancy-dial { width: 145px; height: 145px; display: grid; place-items: center; margin: 10px auto 4px; border-radius: 50%; background: conic-gradient(var(--brass) calc(var(--value) * 1%), rgba(255,255,255,.1) 0); }
.occupancy-dial::before { content: ""; position: absolute; width: 122px; height: 122px; background: var(--ink); border-radius: 50%; }
.occupancy-dial > div { position: relative; text-align: center; }
.occupancy-dial strong { display: block; font: 500 40px var(--serif); }
.occupancy-dial strong small { font-size: 18px; }
.occupancy-dial span { color: rgba(255,255,255,.45); font-size: 8px; }
.occupancy-legend { display: flex; justify-content: center; gap: 15px; font-size: 8px; color: rgba(255,255,255,.55); }
.status-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; }
.status-libre { background: #75a084; }
.status-ocupada { background: var(--terra); }
.status-atencion { background: var(--brass); }
.card-title { display: flex; justify-content: space-between; align-items: flex-start; }
.card-title h2 { margin: 6px 0 0; font: 500 20px var(--serif); }
.card-title > span { color: var(--muted); font-size: 9px; }
.flow-numbers { display: grid; grid-template-columns: 1fr 1fr; margin-top: 35px; }
.flow-numbers > div { display: flex; gap: 14px; align-items: center; }
.flow-icon { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; }
.flow-in { color: #527461; background: #e7f0e9; }
.flow-out { color: #a75d40; background: #fae9e2; }
.flow-numbers small, .income-value small { display: block; color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.flow-numbers strong { display: block; margin-top: 3px; font: 500 30px var(--serif); }
.flow-line { height: 3px; margin-top: 30px; background: #ece9e2; }
.flow-line span { display: block; height: 100%; background: var(--terra); }
.day-flow-card > p { color: var(--muted); font-size: 9px; }
.income-spark { font-size: 30px !important; color: var(--terra) !important; }
.income-value { margin-top: 30px; }
.income-value strong { display: block; margin-top: 3px; font: 500 32px var(--serif); }
.income-month { display: flex; justify-content: space-between; margin-top: 20px; padding-top: 15px; border-top: 1px solid var(--line); font-size: 9px; }
.income-month span { color: var(--muted); }
.download-link { display: flex; justify-content: space-between; margin-top: 24px; color: var(--terra); font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; }

.dashboard-section { margin-top: 48px; scroll-margin-top: 20px; }
.section-bar { display: flex; justify-content: space-between; align-items: end; margin-bottom: 20px; }
.section-bar h2 { margin: 0; font: 500 27px var(--serif); }
.room-legend { display: flex; gap: 18px; color: var(--muted); font-size: 8px; }
.room-legend i { margin-right: 5px; }
.floor-stack { display: grid; gap: 12px; }
.floor-row { display: grid; grid-template-columns: 58px 1fr; gap: 12px; }
.floor-label { display: flex; flex-direction: column; align-items: center; justify-content: center; color: white; background: var(--ink); }
.floor-label span { font: italic 500 20px var(--serif); color: var(--brass); }
.floor-label small { font-size: 7px; letter-spacing: .12em; }
.room-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.room-card { min-width: 0; padding: 15px; background: white; border-top: 3px solid; }
.room-card--libre { border-color: #75a084; }
.room-card--ocupada { border-color: var(--terra); }
.room-card--limpieza, .room-card--mantenimiento, .room-card--bloqueada { border-color: var(--brass); }
.room-card-top { display: grid; grid-template-columns: auto 1fr auto; gap: 7px; align-items: center; }
.room-card-top small { color: var(--muted); font-size: 6px; letter-spacing: .09em; }
.room-card-top strong { font: 500 18px var(--serif); }
.room-card-body { min-height: 68px; margin-top: 18px; }
.room-card-body > span { color: var(--muted); font-size: 7px; text-transform: uppercase; letter-spacing: .09em; }
.room-card-body h3 { overflow: hidden; margin: 4px 0; font-size: 10px; font-weight: 600; white-space: nowrap; text-overflow: ellipsis; }
.room-card-body p { margin: 0; color: var(--muted); font-size: 8px; }
.room-status-form select { width: 100%; padding: 8px; color: var(--muted); background: #f5f3ee; border: 0; font-size: 8px; }
.section-count { color: var(--muted); font-size: 9px; text-transform: uppercase; }
.reservation-list { display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.reservation-row { position: relative; display: grid; grid-template-columns: 55px 1.5fr 1fr .7fr auto 1.15fr; gap: 16px; align-items: center; min-height: 82px; padding: 12px 17px; background: white; }
.date-block { text-align: center; padding-right: 14px; border-right: 1px solid var(--line); }
.date-block strong { display: block; font: 500 25px var(--serif); }
.date-block span { color: var(--terra); font-size: 7px; letter-spacing: .1em; }
.guest-block { display: flex; align-items: center; gap: 10px; min-width: 0; }
.guest-avatar { display: grid; flex: none; place-items: center; width: 32px; height: 32px; color: white; background: var(--sage); border-radius: 50%; font-size: 8px; }
.guest-block strong, .guest-block small { display: block; }
.guest-block strong { font-size: 10px; }
.guest-block small, .stay-block small, .balance-block small { margin-top: 4px; color: var(--muted); font-size: 7px; }
.stay-block strong, .balance-block strong { display: block; margin-top: 4px; font-size: 9px; }
.has-balance { color: var(--terra); }
.reservation-status { padding: 7px 9px; color: var(--muted); background: #eeeae3; border-radius: 20px; font-size: 7px; text-align: center; text-transform: uppercase; white-space: nowrap; }
.reservation-status--check_in_realizado { color: #4f6b58; background: #e2eee5; }
.reservation-status--solicitud { color: #8c673b; background: #f5ead8; }
.reservation-actions, .reservation-actions form { display: flex; justify-content: flex-end; gap: 5px; }
.reservation-actions button, .payment-form button { padding: 8px 9px; color: var(--muted); background: white; border: 1px solid var(--line); font-size: 7px; text-transform: uppercase; }
.reservation-actions .action-primary, .payment-form .action-primary { color: white; background: var(--ink); border-color: var(--ink); }
.more-button { color: var(--terra) !important; }
.payment-form { position: absolute; z-index: 4; inset: 0; display: none; grid-template-columns: 1.2fr repeat(3, 1fr) auto auto; gap: 15px; align-items: end; padding: 12px 18px; color: white; background: var(--ink); }
.payment-form.is-open { display: grid; }
.payment-form > div small, .payment-form > div strong { display: block; }
.payment-form > div small { color: rgba(255,255,255,.5); font-size: 8px; }
.payment-form > div strong { margin-top: 5px; font: 500 15px var(--serif); }
.payment-form input, .payment-form select { width: 100%; padding: 7px 0; color: white; background: transparent; border: 0; border-bottom: 1px solid rgba(255,255,255,.25); outline: 0; font-size: 9px; }
.payment-form select option { color: var(--ink); }
.payment-form button { height: 34px; }
.empty-dashboard { padding: 50px; text-align: center; background: white; color: var(--muted); }

/* Operational pages */
.admin-page-header { display: flex; justify-content: space-between; align-items: end; margin-bottom: 34px; }
.admin-page-header h1 { margin: 8px 0 6px; font: 500 clamp(38px, 4vw, 56px) var(--serif); letter-spacing: -.035em; }
.admin-page-header > div > p:last-child { margin: 0; color: var(--muted); font-size: 12px; }
.admin-primary-link { display: flex; align-items: center; justify-content: space-between; gap: 28px; min-width: 175px; padding: 16px 18px; color: white; background: var(--terra); border: 0; font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.admin-primary-link span { font-size: 18px; }
.back-link { color: var(--terra); font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.form-step { display: flex; align-items: center; gap: 12px; }
.form-step > span { font: italic 500 35px var(--serif); color: var(--terra); }
.form-step small { padding-left: 12px; border-left: 1px solid var(--line); color: var(--muted); font-size: 8px; line-height: 1.5; letter-spacing: .1em; }
.admin-toolbar { display: flex; gap: 10px; align-items: end; margin-bottom: 18px; padding: 14px; background: white; border: 1px solid rgba(20,36,38,.08); }
.admin-toolbar label > span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 7px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.admin-toolbar input, .admin-toolbar select { min-width: 145px; height: 36px; padding: 0 10px; color: var(--ink); background: #f5f3ee; border: 0; outline: 0; font-size: 9px; }
.admin-toolbar .toolbar-search { position: relative; flex: 1; }
.admin-toolbar .toolbar-search > span { position: absolute; left: 12px; top: 8px; color: var(--terra); font-size: 18px; }
.admin-toolbar .toolbar-search input { width: 100%; padding-left: 37px; }
.admin-toolbar button { height: 36px; padding: 0 17px; color: white; background: var(--ink); border: 0; font-size: 8px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.admin-toolbar > a { height: 36px; display: flex; align-items: center; padding: 0 10px; color: var(--terra); font-size: 8px; text-transform: uppercase; }
.admin-toolbar--simple .toolbar-search { max-width: 620px; }
.admin-data-card { background: white; border: 1px solid rgba(20,36,38,.08); }
.data-card-heading { display: flex; justify-content: space-between; align-items: end; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.data-card-heading > div { display: flex; gap: 9px; align-items: baseline; }
.data-card-heading strong { font: 500 27px var(--serif); }
.data-card-heading span, .data-card-heading small { color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .1em; }
.admin-table-wrap { overflow-x: auto; }
.admin-table { width: 100%; border-collapse: collapse; }
.admin-table th { padding: 13px 17px; color: #8b918e; background: #f7f5f1; font-size: 7px; font-weight: 600; letter-spacing: .12em; text-align: left; text-transform: uppercase; white-space: nowrap; }
.admin-table td { padding: 16px 17px; border-top: 1px solid rgba(20,36,38,.08); font-size: 9px; white-space: nowrap; }
.admin-table td > strong, .admin-table td > small { display: block; }
.admin-table td > small { margin-top: 4px; color: var(--muted); }
.table-person { display: flex; align-items: center; gap: 10px; }
.table-person > span { display: grid; flex: none; place-items: center; width: 31px; height: 31px; color: white; background: var(--sage); border-radius: 50%; font-size: 7px; }
.table-person strong, .table-person small { display: block; }
.table-person small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.table-empty { padding: 55px 20px; color: var(--muted); text-align: center; }
.reservation-create-form { display: grid; gap: 16px; }
.form-section { display: grid; grid-template-columns: 220px 1fr; gap: 38px; padding: 34px; background: white; border: 1px solid rgba(20,36,38,.08); }
.form-section-title { display: flex; gap: 15px; align-items: flex-start; }
.form-section-title > span { font: italic 500 28px var(--serif); color: var(--terra); }
.form-section-title h2 { margin: 3px 0 8px; font: 500 23px var(--serif); }
.form-section-title p { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.6; }
.admin-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.admin-form-grid label > span { display: block; margin-bottom: 8px; color: var(--muted); font-size: 7px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; }
.admin-form-grid input, .admin-form-grid select, .admin-form-grid textarea { width: 100%; padding: 11px 12px; color: var(--ink); background: #f5f3ee; border: 1px solid transparent; outline: 0; font-size: 10px; transition: border-color .2s, background .2s; }
.admin-form-grid input:focus, .admin-form-grid select:focus, .admin-form-grid textarea:focus { background: white; border-color: var(--terra); }
.admin-form-grid textarea { resize: vertical; }
.admin-form-grid .span-2 { grid-column: 1 / -1; }
.form-submit-bar { display: flex; justify-content: flex-end; align-items: center; gap: 28px; padding: 20px 0; }
.form-submit-bar > div { text-align: right; }
.form-submit-bar > div span, .form-submit-bar > div strong { display: block; }
.form-submit-bar > div span { color: var(--muted); font-size: 8px; }
.form-submit-bar > div strong { margin-top: 4px; color: #547260; font-size: 9px; letter-spacing: .12em; }
.guest-directory { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.guest-card { min-width: 0; padding: 23px; background: white; border: 1px solid rgba(20,36,38,.08); }
.guest-card-top { display: flex; justify-content: space-between; align-items: center; }
.guest-card-top > span { display: grid; place-items: center; width: 38px; height: 38px; color: white; background: var(--ink); border-radius: 50%; font: 500 9px var(--serif); }
.guest-card-top small { color: var(--terra); font-size: 7px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.guest-card h2 { overflow: hidden; margin: 22px 0 5px; font: 500 22px var(--serif); text-overflow: ellipsis; white-space: nowrap; }
.guest-card > p { margin: 0; color: var(--muted); font-size: 8px; }
.guest-contact { display: grid; gap: 7px; margin: 24px 0; padding: 15px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--muted); font-size: 9px; }
.guest-card footer { display: flex; justify-content: space-between; align-items: center; }
.guest-card footer small { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.guest-card footer strong { font: 500 12px var(--serif); }

/* Inventory and calendar */
.inventory-summary { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 42px; background: white; border: 1px solid rgba(20,36,38,.08); }
.inventory-summary > div { padding: 21px 24px; border-right: 1px solid var(--line); }
.inventory-summary > div:last-child { border: 0; }
.inventory-summary small, .inventory-summary span { display: block; color: var(--muted); font-size: 7px; letter-spacing: .1em; text-transform: uppercase; }
.inventory-summary strong { display: block; margin: 7px 0 2px; font: 500 28px var(--serif); }
.room-admin-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
.managed-room-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.managed-room { min-width: 0; padding: 18px; background: white; border-top: 3px solid; }
.managed-room--libre { border-color: #75a084; }
.managed-room--ocupada { border-color: var(--terra); }
.managed-room--limpieza, .managed-room--mantenimiento, .managed-room--bloqueada { border-color: var(--brass); }
.managed-room-head { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; align-items: center; }
.managed-room-head small { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.managed-room-head strong { font: 500 22px var(--serif); }
.managed-room-body { min-height: 94px; padding-top: 28px; }
.managed-room-body > span { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.managed-room-body h3 { margin: 5px 0 6px; font: 500 18px var(--serif); }
.managed-room-body p { margin: 0; color: var(--muted); font-size: 8px; }
.active-block { display: flex; gap: 9px; align-items: center; margin: 10px 0; padding: 9px; color: #855537; background: #faf0df; }
.active-block > span { display: grid; place-items: center; width: 20px; height: 20px; color: white; background: var(--brass); border-radius: 50%; font-size: 9px; }
.active-block strong, .active-block small { display: block; }
.active-block strong { font-size: 8px; }
.active-block small { margin-top: 2px; font-size: 7px; }
.room-edit { margin-top: 16px; border-top: 1px solid var(--line); }
.room-edit summary, .operations-panel summary { display: flex; justify-content: space-between; padding: 12px 0 0; color: var(--terra); cursor: pointer; font-size: 8px; font-weight: 600; letter-spacing: .08em; list-style: none; text-transform: uppercase; }
.room-edit form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding-top: 12px; }
.room-edit label span, .compact-form label span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 7px; text-transform: uppercase; letter-spacing: .08em; }
.room-edit input, .room-edit select, .compact-form input, .compact-form select, .compact-form textarea { width: 100%; padding: 8px; color: var(--ink); background: #f5f3ee; border: 0; outline: 0; font-size: 8px; }
.room-edit button, .compact-form button { padding: 10px; color: white; background: var(--ink); border: 0; font-size: 7px; letter-spacing: .08em; text-transform: uppercase; }
.room-edit button { grid-column: 1 / -1; }
.operations-panel { padding: 24px; color: white; background: var(--ink); }
.operations-title h2 { margin: 0 0 22px; font: 500 27px var(--serif); }
.operations-panel details { padding: 0 0 16px; border-top: 1px solid rgba(255,255,255,.12); }
.operations-panel summary { padding-top: 16px; color: white; }
.compact-form { display: grid; gap: 11px; padding-top: 17px; }
.compact-form label span { color: rgba(255,255,255,.48); }
.compact-form input, .compact-form select, .compact-form textarea { color: white; background: rgba(255,255,255,.08); }
.compact-form select option { color: var(--ink); }
.compact-form button { color: var(--ink); background: var(--brass); }
.compact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.type-admin-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.type-admin-grid > article { padding: 26px; background: white; border: 1px solid rgba(20,36,38,.08); }
.type-admin-grid article > div:first-child { display: flex; justify-content: space-between; align-items: center; }
.type-admin-grid article > div:first-child > span { font: italic 500 23px var(--serif); color: var(--terra); }
.type-admin-grid article > div:first-child small { color: var(--muted); font-size: 7px; text-transform: uppercase; }
.type-admin-grid h3 { margin: 25px 0 8px; font: 500 25px var(--serif); }
.type-admin-grid p { min-height: 42px; color: var(--muted); font-size: 9px; line-height: 1.6; }
.type-admin-grid > article > strong { font: 500 23px var(--serif); }
.type-admin-grid > article > strong small { color: var(--muted); font: 400 8px var(--sans); }
.season-rates { display: grid; gap: 6px; margin-top: 20px; padding-top: 15px; border-top: 1px solid var(--line); }
.season-rates span { color: var(--muted); font-size: 8px; }
.season-rates b { color: var(--ink); }
.calendar-controls { display: flex; justify-content: space-between; align-items: end; margin-bottom: 14px; }
.calendar-controls > a { color: var(--terra); font-size: 8px; font-weight: 600; text-transform: uppercase; letter-spacing: .09em; }
.calendar-controls form { display: flex; align-items: end; gap: 7px; }
.calendar-controls label span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 7px; text-transform: uppercase; }
.calendar-controls input { height: 34px; padding: 0 10px; border: 1px solid var(--line); background: white; font-size: 9px; }
.calendar-controls button { height: 34px; padding: 0 14px; color: white; background: var(--ink); border: 0; font-size: 8px; }
.calendar-shell { background: white; border: 1px solid rgba(20,36,38,.08); }
.calendar-legend { display: flex; justify-content: flex-end; gap: 18px; padding: 15px 18px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 7px; text-transform: uppercase; }
.calendar-swatch { display: inline-block; width: 9px; height: 9px; margin-right: 5px; }
.calendar-swatch.confirmed { background: var(--sage); }
.calendar-swatch.occupied { background: var(--terra); }
.calendar-swatch.request { background: var(--brass); }
.calendar-swatch.blocked { background: #6a7070; }
.calendar-scroll { overflow-x: auto; }
.occupancy-calendar { width: 100%; min-width: 1100px; border-collapse: collapse; table-layout: fixed; }
.occupancy-calendar th, .occupancy-calendar td { height: 56px; border-right: 1px solid rgba(20,36,38,.07); border-bottom: 1px solid rgba(20,36,38,.07); }
.occupancy-calendar thead th { height: 70px; color: var(--muted); background: #f7f5f1; text-align: center; }
.occupancy-calendar thead th:first-child { width: 145px; text-align: left; padding-left: 16px; }
.occupancy-calendar thead th span, .occupancy-calendar thead th small { display: block; font-size: 6px; letter-spacing: .08em; }
.occupancy-calendar thead th strong { display: block; margin: 2px 0; font: 500 18px var(--serif); color: var(--ink); }
.occupancy-calendar tbody th { padding: 0 15px; text-align: left; background: #fcfbf8; }
.occupancy-calendar tbody th strong, .occupancy-calendar tbody th span { display: block; }
.occupancy-calendar tbody th strong { font: 500 16px var(--serif); }
.occupancy-calendar tbody th span { margin-top: 3px; color: var(--muted); font-size: 7px; }
.occupancy-calendar td { padding: 4px; text-align: center; }
.occupancy-calendar .today { background: #fcf5ec; }
.calendar-event { min-height: 38px; display: grid; place-items: center; padding: 3px; color: white; font-size: 7px; overflow: hidden; }
.event-confirmada { background: var(--sage); }
.event-check_in_realizado { background: var(--terra); }
.event-solicitud { color: var(--ink); background: var(--brass); }
.event-blocked { background: #6a7070; }
.calendar-free { color: #d5d3ce; }

/* Reservation, guest and cash detail */
.table-link { color: var(--terra); font-size: 8px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.reservation-detail-hero { display: grid; grid-template-columns: 2fr 1fr 1fr; margin-bottom: 20px; color: white; background: var(--ink); }
.reservation-detail-hero > div { padding: 24px 27px; border-right: 1px solid rgba(255,255,255,.13); }
.reservation-detail-hero > div:last-child { border: 0; }
.reservation-detail-hero small, .reservation-detail-hero strong, .reservation-detail-hero span { display: block; }
.reservation-detail-hero small { color: rgba(255,255,255,.48); font-size: 7px; letter-spacing: .13em; }
.reservation-detail-hero strong { margin: 8px 0 5px; font: 500 22px var(--serif); }
.reservation-detail-hero strong i { padding: 0 10px; color: var(--brass); font-style: normal; }
.reservation-detail-hero span { color: rgba(255,255,255,.62); font-size: 8px; }
.reservation-detail-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(320px, .8fr); gap: 18px; align-items: start; }
.detail-sidebar { display: grid; gap: 18px; }
.detail-panel { padding: 28px; background: white; border: 1px solid rgba(20,36,38,.08); }
.detail-panel--dark { color: white; background: var(--ink); }
.detail-panel-title { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 27px; }
.detail-panel-title > span { font: italic 500 27px var(--serif); color: var(--terra); }
.detail-panel--dark .detail-panel-title > span { color: var(--brass); }
.detail-panel-title h2 { margin: 1px 0 6px; font: 500 24px var(--serif); }
.detail-panel-title p { margin: 0; color: var(--muted); font-size: 8px; line-height: 1.5; }
.detail-panel--dark .detail-panel-title p { color: rgba(255,255,255,.48); }
.detail-panel .admin-primary-link { justify-self: end; width: auto; cursor: pointer; }
.locked-note { margin: 0; padding: 18px; color: var(--muted); background: #f5f3ee; font-size: 9px; line-height: 1.6; }
.action-stack { display: grid; gap: 7px; }
.action-stack button { display: flex; justify-content: space-between; width: 100%; padding: 13px 0; color: white; background: transparent; border: 0; border-bottom: 1px solid rgba(255,255,255,.14); cursor: pointer; font-size: 9px; }
.action-stack button span { color: var(--brass); }
.cancel-operation { margin-top: 22px; padding-top: 17px; border-top: 1px solid rgba(255,255,255,.14); }
.cancel-operation summary { color: #e3a08a; cursor: pointer; font-size: 8px; letter-spacing: .1em; text-transform: uppercase; }
.cancel-operation form { display: grid; gap: 8px; margin-top: 12px; }
.cancel-operation textarea { min-height: 78px; padding: 10px; color: white; background: rgba(255,255,255,.08); border: 0; outline: 0; resize: vertical; font-size: 8px; }
.cancel-operation button { padding: 10px; color: white; background: var(--terra); border: 0; font-size: 7px; letter-spacing: .08em; text-transform: uppercase; }
.audit-note { padding: 16px; background: rgba(255,255,255,.07); }
.audit-note small, .audit-note span { color: rgba(255,255,255,.45); font-size: 7px; }
.audit-note p { margin: 8px 0; font: 500 15px var(--serif); line-height: 1.4; }
.payment-detail-form { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin-bottom: 20px; }
.payment-detail-form label:last-of-type { grid-column: 1 / -1; }
.payment-detail-form label span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 7px; text-transform: uppercase; }
.payment-detail-form input, .payment-detail-form select { width: 100%; padding: 9px; background: #f5f3ee; border: 0; outline: 0; font-size: 8px; }
.payment-detail-form button { grid-column: 1 / -1; padding: 11px; color: white; background: var(--terra); border: 0; font-size: 7px; letter-spacing: .08em; text-transform: uppercase; }
.payment-timeline { display: grid; gap: 10px; }
.payment-timeline > div { display: flex; gap: 10px; align-items: center; padding-top: 10px; border-top: 1px solid var(--line); }
.payment-timeline > div > span { display: grid; flex: none; place-items: center; width: 27px; height: 27px; color: white; background: var(--sage); border-radius: 50%; font-size: 7px; }
.payment-timeline strong, .payment-timeline small { display: block; }
.payment-timeline strong { font-size: 9px; }
.payment-timeline small { margin-top: 3px; color: var(--muted); font-size: 7px; }
.guest-profile { display: grid; grid-template-columns: 1.8fr repeat(3, 1fr); margin-bottom: 22px; background: white; border: 1px solid rgba(20,36,38,.08); }
.guest-profile > div { min-width: 0; padding: 24px; border-right: 1px solid var(--line); }
.guest-profile > div:last-child { border: 0; }
.guest-profile small, .guest-profile strong, .guest-profile span { display: block; }
.guest-profile small { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.guest-profile strong { overflow: hidden; margin: 9px 0 4px; font: 500 19px var(--serif); text-overflow: ellipsis; white-space: nowrap; }
.guest-profile span { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.guest-profile-identity { display: flex; gap: 14px; align-items: center; }
.guest-profile-identity > span { display: grid; flex: none; place-items: center; width: 49px; height: 49px; color: white; background: var(--ink); border-radius: 50%; font: 500 12px var(--serif); }
.guest-profile-identity h2 { margin: 4px 0; font: 500 21px var(--serif); }
.guest-profile-identity p { margin: 0; color: var(--muted); font-size: 8px; }
.cash-pulse { display: grid; grid-template-columns: repeat(3, 1fr); margin-bottom: 22px; background: white; border: 1px solid rgba(20,36,38,.08); }
.cash-pulse > div { padding: 25px; border-right: 1px solid var(--line); }
.cash-pulse > div:last-child { border: 0; }
.cash-pulse small, .cash-pulse strong, .cash-pulse span { display: block; }
.cash-pulse small { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.cash-pulse strong { margin: 8px 0 4px; font: 500 27px var(--serif); }
.cash-pulse span { color: var(--muted); font-size: 8px; }
.cash-layout { display: grid; grid-template-columns: 1.6fr .7fr; gap: 18px; margin-bottom: 22px; }
.cash-current { padding: 28px; background: white; border: 1px solid rgba(20,36,38,.08); }
.cash-current-head { display: flex; justify-content: space-between; align-items: start; }
.cash-current-head small { color: var(--terra); font-size: 7px; letter-spacing: .11em; }
.cash-current-head h2 { margin: 7px 0 0; font: 500 25px var(--serif); }
.cash-current-head > span { padding: 7px 10px; color: #4f6b58; background: #e2eee5; border-radius: 30px; font-size: 7px; }
.cash-equation { display: grid; grid-template-columns: 1fr auto 1fr auto 1.2fr; gap: 18px; align-items: center; margin: 27px 0; padding: 20px; background: #f5f3ee; }
.cash-equation i { color: var(--terra); font: italic 500 24px var(--serif); }
.cash-equation small, .cash-equation strong { display: block; }
.cash-equation small { color: var(--muted); font-size: 7px; text-transform: uppercase; }
.cash-equation strong { margin-top: 5px; font: 500 20px var(--serif); }
.cash-equation .cash-expected { padding-left: 18px; border-left: 1px solid var(--line); }
.cash-equation .cash-expected strong { color: var(--terra); }
.cash-movements h3 { margin: 0 0 12px; font: 500 18px var(--serif); }
.cash-movements > a { display: grid; grid-template-columns: 40px 1fr auto; gap: 12px; align-items: center; padding: 12px 0; color: var(--ink); border-top: 1px solid var(--line); }
.cash-movements > a > span, .cash-movements small { color: var(--muted); font-size: 8px; }
.cash-movements strong, .cash-movements small { display: block; }
.cash-movements small { margin-top: 3px; }
.cash-movements b { font: 500 14px var(--serif); }
.cash-close-card { padding: 28px; color: white; background: var(--ink); }
.cash-close-card > small { color: var(--brass); font-size: 7px; letter-spacing: .11em; }
.cash-close-card h2 { margin: 13px 0 8px; font: 500 28px var(--serif); }
.cash-close-card p { margin: 0 0 23px; color: rgba(255,255,255,.5); font-size: 8px; line-height: 1.7; }
.cash-close-card form { display: grid; gap: 14px; }
.cash-close-card label span { display: block; margin-bottom: 6px; color: rgba(255,255,255,.48); font-size: 7px; text-transform: uppercase; }
.cash-close-card input, .cash-close-card textarea { width: 100%; padding: 11px; color: white; background: rgba(255,255,255,.08); border: 0; outline: 0; resize: vertical; }
.cash-close-card button, .cash-opening button { display: flex; justify-content: space-between; padding: 13px; color: var(--ink); background: var(--brass); border: 0; font-size: 8px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.cash-opening { display: grid; grid-template-columns: 1fr 1.2fr; gap: 50px; align-items: center; margin-bottom: 22px; padding: 40px; color: white; background: var(--ink); }
.cash-opening > div > span { color: var(--brass); font: italic 500 32px var(--serif); }
.cash-opening h2 { margin: 8px 0; font: 500 34px var(--serif); }
.cash-opening p { margin: 0; color: rgba(255,255,255,.5); font-size: 9px; line-height: 1.7; }
.cash-opening form { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
.cash-opening label span { display: block; margin-bottom: 6px; color: rgba(255,255,255,.5); font-size: 7px; text-transform: uppercase; }
.cash-opening input { width: 100%; padding: 12px; color: white; background: rgba(255,255,255,.08); border: 0; outline: 0; }
.cash-opening button { grid-column: 1 / -1; }
.cash-history { margin-top: 22px; }
.report-export-bar { display: grid; grid-template-columns: 1fr 150px 150px 190px; gap: 13px; align-items: end; margin-bottom: 16px; padding: 17px 20px; color: white; background: var(--ink); }
.report-export-bar small, .report-export-bar strong { display: block; }
.report-export-bar small { color: var(--brass); font-size: 7px; letter-spacing: .12em; }
.report-export-bar strong { margin-top: 5px; font: 500 17px var(--serif); }
.report-export-bar label span { display: block; margin-bottom: 5px; color: rgba(255,255,255,.48); font-size: 7px; text-transform: uppercase; }
.report-export-bar input { width: 100%; height: 38px; padding: 0 10px; color: white; background: rgba(255,255,255,.08); border: 0; color-scheme: dark; }
.report-export-bar button { display: flex; justify-content: space-between; align-items: center; height: 38px; padding: 0 13px; color: var(--ink); background: var(--brass); border: 0; font-size: 8px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.cash-pulse--four { grid-template-columns: repeat(4, 1fr); }
.cash-layout--wide { grid-template-columns: minmax(0, 1.55fr) minmax(310px, .65fr); }
.cash-equation--expense { grid-template-columns: 1fr auto 1fr auto 1fr auto 1.2fr; }
.cash-side-stack { display: grid; gap: 14px; }
.cash-expense-card { padding: 28px; background: white; border: 1px solid rgba(20,36,38,.08); }
.cash-expense-card > small { color: var(--terra); font-size: 7px; letter-spacing: .11em; }
.cash-expense-card h2 { margin: 10px 0 6px; font: 500 26px var(--serif); }
.cash-expense-card p { margin: 0 0 18px; color: var(--muted); font-size: 8px; line-height: 1.6; }
.cash-expense-card form { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cash-expense-card label:nth-of-type(3), .cash-expense-card label:nth-of-type(4), .cash-expense-card button { grid-column: 1 / -1; }
.cash-expense-card label span { display: block; margin-bottom: 5px; color: var(--muted); font-size: 7px; text-transform: uppercase; }
.cash-expense-card input, .cash-expense-card select, .cash-expense-card textarea { width: 100%; padding: 10px; color: var(--ink); background: #f5f3ee; border: 0; outline: 0; resize: vertical; font-size: 8px; }
.cash-expense-card button { display: flex; justify-content: space-between; padding: 12px; color: white; background: var(--terra); border: 0; font-size: 8px; font-weight: 700; text-transform: uppercase; }
.cash-expense-list { margin-top: 28px; }
.expense-row { display: grid; grid-template-columns: 40px 1fr auto auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.expense-row > span, .expense-row small { color: var(--muted); font-size: 8px; }
.expense-row strong, .expense-row small { display: block; }
.expense-row small { margin-top: 3px; }
.expense-row > b { color: var(--terra); font: 500 14px var(--serif); }
.movement-voided, .payment-voided { opacity: .52; text-decoration: line-through; }
.void-inline { margin-left: auto; text-decoration: none; }
.void-inline summary { color: var(--terra); cursor: pointer; font-size: 7px; font-weight: 700; list-style: none; text-transform: uppercase; }
.void-inline form { display: grid; gap: 4px; width: 145px; margin-top: 5px; }
.void-inline input, .void-inline textarea { width: 100%; padding: 7px; background: #f5f3ee; border: 1px solid var(--line); font-size: 7px; resize: vertical; }
.void-inline button { padding: 7px; color: white; background: var(--terra); border: 0; font-size: 7px; text-transform: uppercase; }

/* Team and permissions */
.team-create-panel { display: grid; grid-template-columns: .8fr 1.6fr; gap: 50px; margin-bottom: 22px; padding: 34px; color: white; background: var(--ink); }
.team-create-panel > div > span { color: var(--brass); font: italic 500 31px var(--serif); }
.team-create-panel h2 { margin: 8px 0; font: 500 31px var(--serif); }
.team-create-panel p { margin: 0; color: rgba(255,255,255,.5); font-size: 9px; line-height: 1.7; }
.team-create-panel form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.team-create-panel label span, .team-card label span { display: block; margin-bottom: 5px; color: rgba(255,255,255,.48); font-size: 7px; letter-spacing: .08em; text-transform: uppercase; }
.team-create-panel input, .team-create-panel select { width: 100%; padding: 10px; color: white; background: rgba(255,255,255,.08); border: 0; outline: 0; }
.team-create-panel select option { color: var(--ink); }
.team-create-panel button { display: flex; grid-column: 1 / -1; justify-content: space-between; padding: 12px; color: var(--ink); background: var(--brass); border: 0; font-size: 8px; font-weight: 700; text-transform: uppercase; }
.team-heading { display: flex; justify-content: space-between; align-items: baseline; padding: 18px 0; }
.team-heading > div { display: flex; gap: 8px; align-items: baseline; }
.team-heading strong { font: 500 28px var(--serif); }
.team-heading span, .team-heading small { color: var(--muted); font-size: 8px; letter-spacing: .08em; text-transform: uppercase; }
.team-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.team-card { min-width: 0; padding: 23px; background: white; border-top: 3px solid var(--sage); }
.team-card--inactive { opacity: .58; border-top-color: #a5a5a0; }
.team-card > header { display: grid; grid-template-columns: auto 1fr auto; gap: 11px; align-items: center; }
.team-card > header > span { display: grid; place-items: center; width: 40px; height: 40px; color: white; background: var(--ink); border-radius: 50%; font: 500 11px var(--serif); }
.team-card h2 { overflow: hidden; margin: 0 0 3px; font: 500 18px var(--serif); text-overflow: ellipsis; white-space: nowrap; }
.team-card header p { overflow: hidden; margin: 0; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.team-card header small { color: var(--terra); font-size: 6px; letter-spacing: .1em; }
.team-role { margin: 22px 0; padding: 14px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.team-role span, .team-role strong { display: block; }
.team-role span { color: var(--muted); font-size: 7px; letter-spacing: .1em; }
.team-role strong { margin-top: 5px; font: 500 16px var(--serif); }
.team-card summary { display: flex; justify-content: space-between; color: var(--terra); cursor: pointer; font-size: 8px; font-weight: 700; letter-spacing: .08em; list-style: none; text-transform: uppercase; }
.team-card form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 15px; }
.team-card label span { color: var(--muted); }
.team-card input, .team-card select { width: 100%; padding: 8px; background: #f5f3ee; border: 0; font-size: 8px; }
.team-card button { grid-column: 1 / -1; padding: 10px; color: white; background: var(--ink); border: 0; font-size: 7px; text-transform: uppercase; }

@media (max-width: 1100px) {
    .site-nav { display: none; }
    .site-header { grid-template-columns: 1fr 1fr; }
    .availability-bar { grid-template-columns: repeat(3, 1fr); }
    .availability-intro { grid-column: span 2; }
    .availability-bar button { min-height: 72px; }
    .pulse-grid { grid-template-columns: 1fr 1fr; }
    .income-card { grid-column: 1 / -1; }
    .room-grid { grid-template-columns: repeat(2, 1fr); }
    .reservation-row { grid-template-columns: 45px 1.5fr 1fr auto; }
    .balance-block, .reservation-status { display: none; }
    .reservation-detail-grid, .cash-layout { grid-template-columns: 1fr; }
    .guest-profile { grid-template-columns: 1fr 1fr; }
    .cash-pulse--four { grid-template-columns: 1fr 1fr; }
    .team-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 760px) {
    .site-header { height: 76px; padding: 0 22px; }
    .header-cta { font-size: 0; }
    .hero { height: 760px; min-height: 0; }
    .hero-content { left: 24px; right: 24px; top: 43%; }
    .hero h1 { font-size: 52px; }
    .hero-note { display: none; }
    .hero-scroll { left: 24px; }
    .availability-wrap { width: calc(100% - 28px); }
    .availability-bar { grid-template-columns: 1fr 1fr; }
    .availability-intro { grid-column: 1 / -1; min-height: 80px; }
    .availability-bar label { padding: 18px; }
    .availability-bar label:nth-of-type(3) { grid-column: 1 / -1; }
    .availability-bar button { grid-column: 1 / -1; }
    .search-result-heading, .section-heading { display: block; }
    .search-result-heading h2, .section-heading h2, .manifesto h2 { font-size: 43px; }
    .search-result-heading > p, .section-heading > p { width: auto; margin-top: 24px; }
    .result-card { grid-template-columns: 40px 1fr; padding: 24px; }
    .result-price { grid-column: 2; align-items: flex-start; text-align: left; }
    .text-button { margin-top: 20px; }
    .reserve-form { position: fixed; inset: 16px; grid-template-columns: 1fr; padding: 24px; overflow-y: auto; }
    .form-grid { grid-template-columns: 1fr 1fr; }
    .manifesto { grid-template-columns: 1fr; }
    .manifesto-side { padding: 70px 24px 0; border-right: 0; }
    .vertical-word { display: none; }
    .manifesto-copy { padding: 30px 24px 80px; }
    .manifesto-stats { grid-template-columns: 1fr; }
    .rooms-section { padding: 80px 18px; }
    .room-showcase { grid-template-columns: 1fr; }
    .room-tile--featured { transform: none; }
    .closing { display: block; padding: 80px 24px; }
    .closing > a { margin-top: 60px; }
    .site-footer { grid-template-columns: 1fr; gap: 20px; text-align: center; }
    .site-footer > div, .site-footer .brand { justify-self: center; }
    .login-shell { grid-template-columns: 1fr; }
    .login-visual { min-height: 320px; padding: 35px 24px; }
    .login-visual h1 { font-size: 42px; }
    .login-panel { padding: 60px 24px; }
    .sidebar { position: static; width: 100%; height: auto; padding: 20px; }
    .sidebar .brand { margin: 0 0 22px; }
    .sidebar nav { display: flex; overflow-x: auto; }
    .sidebar nav a { flex: none; }
    .sidebar-bottom { display: none; }
    .dashboard-main { margin-left: 0; padding: 30px 15px 60px; }
    .dashboard-header { align-items: flex-start; }
    .dashboard-header h1 { font-size: 30px; }
    .live-chip { display: none; }
    .pulse-grid { grid-template-columns: 1fr; }
    .income-card { grid-column: auto; }
    .floor-row { grid-template-columns: 40px 1fr; }
    .room-grid { grid-template-columns: 1fr 1fr; }
    .room-legend { display: none; }
    .reservation-row { grid-template-columns: 42px 1fr; gap: 10px; }
    .stay-block { display: none; }
    .reservation-actions { grid-column: 2; justify-content: flex-start; }
    .payment-form { position: fixed; inset: 15px; grid-template-columns: 1fr; align-content: center; padding: 25px; }
    .admin-page-header { align-items: flex-start; }
    .admin-page-header h1 { font-size: 38px; }
    .admin-page-header .admin-primary-link { min-width: auto; padding: 14px; font-size: 0; }
    .admin-toolbar { flex-wrap: wrap; }
    .admin-toolbar .toolbar-search { flex-basis: 100%; }
    .admin-toolbar label:not(.toolbar-search) { flex: 1; }
    .admin-toolbar input, .admin-toolbar select { width: 100%; min-width: 0; }
    .form-section { grid-template-columns: 1fr; gap: 25px; padding: 24px; }
    .admin-form-grid { grid-template-columns: 1fr; }
    .admin-form-grid .span-2 { grid-column: auto; }
    .guest-directory { grid-template-columns: 1fr; }
    .inventory-summary { grid-template-columns: 1fr 1fr; }
    .inventory-summary > div:nth-child(2) { border-right: 0; }
    .room-admin-layout { grid-template-columns: 1fr; }
    .managed-room-grid { grid-template-columns: 1fr 1fr; }
    .operations-panel { order: -1; }
    .type-admin-grid { grid-template-columns: 1fr; }
    .calendar-controls { align-items: center; }
    .reservation-detail-hero, .cash-pulse { grid-template-columns: 1fr; }
    .reservation-detail-hero > div, .cash-pulse > div { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.12); }
    .reservation-detail-grid { display: block; }
    .detail-sidebar { margin-top: 15px; }
    .detail-panel { padding: 22px; }
    .guest-profile { grid-template-columns: 1fr; }
    .guest-profile > div { border-right: 0; border-bottom: 1px solid var(--line); }
    .cash-equation { grid-template-columns: 1fr; }
    .cash-equation i { display: none; }
    .cash-equation .cash-expected { padding: 14px 0 0; border-left: 0; border-top: 1px solid var(--line); }
    .cash-opening { grid-template-columns: 1fr; gap: 28px; padding: 28px; }
    .cash-opening form { grid-template-columns: 1fr; }
    .cash-opening button { grid-column: auto; }
    .report-export-bar { grid-template-columns: 1fr 1fr; }
    .report-export-bar > div, .report-export-bar button { grid-column: 1 / -1; }
    .cash-pulse--four { grid-template-columns: 1fr; }
    .cash-equation--expense { grid-template-columns: 1fr; }
    .team-create-panel { grid-template-columns: 1fr; gap: 28px; padding: 28px; }
    .team-create-panel form, .team-grid { grid-template-columns: 1fr; }
    .team-create-panel button { grid-column: auto; }
}

/* ============================================================
   EXTENSIONES HOTEL SOLAZ (sobre el sistema Casa Umbral)
   ============================================================ */

/* Grilla centrada por REGLA: 3 por fila; la última fila queda
   siempre centrada y simétrica (2→centradas, 4→3+1 centrado,
   5→3+2 centrados, etc.). Logrado con flex-wrap + justify-center. */
.centered-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.centered-grid > * { flex: 0 1 calc((100% - 32px) / 3); min-width: 250px; max-width: calc((100% - 32px) / 3); }
@media (max-width: 1100px) { .centered-grid > * { flex-basis: calc((100% - 16px) / 2); max-width: calc((100% - 16px) / 2); } }
@media (max-width: 760px)  { .centered-grid > * { flex-basis: 100%; max-width: 100%; } }

/* Tarjeta de TIPO de habitación (dashboard + inventario) */
.type-tile { position: relative; min-width: 0; display: flex; flex-direction: column; padding: 24px; background: white; border: 1px solid rgba(20,36,38,.08); transition: box-shadow .2s, transform .2s; }
a.type-tile:hover { box-shadow: 0 18px 45px rgba(20,36,38,.10); transform: translateY(-3px); }
.type-photo { height: 150px; margin: -24px -24px 18px; background: #e6eaf2 center/cover no-repeat; position: relative; }
.type-photo--empty { display: grid; place-items: center; color: rgba(20,36,38,.25); font: italic 500 30px var(--serif); }
.type-tile-top { display: flex; justify-content: space-between; align-items: center; }
.type-tile-top > span { font: italic 500 22px var(--serif); color: var(--terra); }
.type-tile-top small { color: var(--muted); font-size: 7px; letter-spacing: .1em; text-transform: uppercase; }
.type-tile h3 { margin: 15px 0 6px; font: 500 26px var(--serif); }
.type-tile > p { margin: 0; min-height: 34px; color: var(--muted); font-size: 9px; line-height: 1.6; }
.type-price { margin-top: 12px; font: 500 21px var(--serif); }
.type-price small { color: var(--muted); font: 400 8px var(--sans); }
.type-stats { display: flex; gap: 16px; margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--line); }
.type-stats > div { text-align: center; }
.type-stats span { display: block; color: var(--muted); font-size: 7px; letter-spacing: .1em; text-transform: uppercase; }
.type-stats b { display: block; margin-bottom: 4px; font: 500 20px var(--serif); }
.type-stats .is-libre { color: #5f8a70; }
.type-stats .is-ocupada { color: var(--terra); }

/* Iconos de acción al pasar el cursor (editar / mantenimiento / eliminar) */
.hoverable { position: relative; }
.tile-actions { position: absolute; z-index: 3; top: 12px; right: 12px; display: flex; gap: 6px; opacity: 0; transform: translateY(-4px); transition: opacity .18s, transform .18s; }
.hoverable:hover .tile-actions { opacity: 1; transform: none; }
.tile-actions a, .tile-actions button { display: grid; place-items: center; width: 30px; height: 30px; padding: 0; color: var(--ink); background: rgba(255,255,255,.92); border: 1px solid var(--line); border-radius: 50%; font-size: 13px; box-shadow: 0 4px 12px rgba(20,36,38,.12); cursor: pointer; }
.tile-actions .act-edit:hover { color: #fff; background: var(--ink); border-color: var(--ink); }
.tile-actions .act-maint:hover { color: #fff; background: var(--brass); border-color: var(--brass); }
.tile-actions .act-delete:hover { color: #fff; background: var(--terra); border-color: var(--terra); }

/* Subida de foto (formularios de tipo / habitación) */
.photo-drop { display: block; position: relative; height: 170px; background: #f5f3ee center/cover no-repeat; border: 1px dashed var(--line); cursor: pointer; overflow: hidden; }
.photo-drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.photo-drop span { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.photo-drop.has-image span { display: none; }

/* Footer del panel */
.panel-footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 60px; padding-top: 22px; border-top: 1px solid var(--line); color: var(--muted); font-size: 9px; letter-spacing: .04em; }
.panel-footer span:nth-child(2) { text-align: center; }
@media (max-width: 760px) { .panel-footer { justify-content: center; text-align: center; } }

/* Estados de estadía en la lista del dashboard */
.reservation-status--activa      { color: #4f6b58; background: #e2eee5; }
.reservation-status--finalizada  { color: var(--muted); background: #eeeae3; }
.reservation-status--cancelada   { color: #854b39; background: #fff2ec; }

/* Aviso "en construcción" */
.wip-note { display: grid; place-items: center; gap: 8px; min-height: 320px; padding: 60px; text-align: center; background: white; border: 1px dashed var(--line); }
.wip-note span { font: italic 500 34px var(--serif); color: var(--terra); }
.wip-note p { max-width: 420px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.7; }

/* Cabecera con varios botones + enlace estirado para tarjetas clicables con acciones */
.header-btns { display: flex; gap: 10px; align-items: center; }
.admin-secondary-link { display: flex; align-items: center; gap: 16px; padding: 16px 18px; color: var(--ink); background: #fff; border: 1px solid var(--line); font-size: 9px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.admin-secondary-link span { font-size: 16px; }
.type-tile .stretch { position: absolute; inset: 0; z-index: 1; }
.type-tile.hoverable:hover { box-shadow: 0 18px 45px rgba(20,36,38,.10); transform: translateY(-3px); }
.managed-room.hoverable:hover { box-shadow: 0 14px 34px rgba(20,36,38,.10); }

/* Habitación gestionada: reservada + foto */
.managed-room--reservada { border-color: var(--brass); }
.managed-room { position: relative; }
.managed-room .room-photo { height: 112px; margin: -18px -18px 14px; background: #e6eaf2 center/cover no-repeat; }
.managed-room .room-photo--empty { display: grid; place-items: center; color: rgba(20,36,38,.22); font: italic 500 22px var(--serif); }
.type-hero { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; margin-bottom: 22px; color: #fff; background: var(--ink); }
.type-hero > div { padding: 22px 24px; border-right: 1px solid rgba(255,255,255,.12); }
.type-hero > div:last-child { border: 0; }
.type-hero small { display: block; color: rgba(255,255,255,.48); font-size: 7px; letter-spacing: .12em; text-transform: uppercase; }
.type-hero strong { display: block; margin: 8px 0 4px; font: 500 24px var(--serif); }
.type-hero span { color: rgba(255,255,255,.6); font-size: 8px; }

/* ============================================================
   LEGIBILIDAD DEL PANEL (2026-07-27, v2 — más grande)
   El diseño original usa etiquetas muy pequeñas (7–9px) en
   mayúsculas con tracking alto: elegante pero difícil de leer a
   diario. Este bloque agranda las fuentes en TODO el panel,
   unifica el tamaño de los botones y fija el footer al pie.
   Afecta SOLO a clases del panel (no toca el sitio público, que
   usa .hero, .room-tile, .site-*, .availability-*, .amenities,
   .result-*, .manifesto, .reserve-form-*, .form-grid).
   ============================================================ */

/* -- Micro-etiquetas (eran 7px) → 12px -- */
.guest-profile small, .season-rates span, .type-tile-top small, .type-stats span,
.type-hero small, .reservation-detail-hero small, .inventory-summary small,
.inventory-summary span, .managed-room-head small, .managed-room-body > span,
.cash-pulse small, .cash-current-head small, .cash-equation small,
.cash-close-card > small, .cash-expense-card > small, .report-export-bar small,
.payment-detail-form label span, .admin-form-grid label > span, .room-edit label span,
.compact-form label span, .calendar-controls label span, .admin-toolbar label > span,
.team-role span, .guest-card-top small, .guest-card footer small, .date-block span,
.floor-label small, .room-card-body > span, .flow-numbers small, .income-value small,
.payment-timeline small, .cash-close-card label span, .cash-opening label span,
.team-create-panel label span, .team-card label span, .report-export-bar label span,
.cash-expense-card label span, .occupancy-card > div:first-child span, .occupancy-dial span,
.reservation-detail-hero small {
    font-size: 12px !important;
    letter-spacing: .05em !important;
}

/* -- Texto pequeño (eran 8px) → 13.5px -- */
.guest-profile span, .guest-profile-identity p, .type-hero span, .type-price small,
.reservation-detail-hero span, .detail-panel-title p, .table-person small,
.guest-card > p, .managed-room-body p, .room-card-body p, .cash-pulse span,
.cash-movements small, .cash-movements > a > span, .expense-row > span, .expense-row small,
.team-heading span, .team-heading small, .team-card header p, .payment-timeline strong,
.data-card-heading span, .data-card-heading small, .form-submit-bar > div span,
.form-step small, .season-rates b, .cash-current-head > span, .user-chip small {
    font-size: 13.5px !important;
    letter-spacing: .02em !important;
}

/* -- Texto de contenido (eran 9px) → 15px -- */
.type-tile > p, .type-admin-grid p, .locked-note, .guest-contact, .card-title > span,
.income-month, .section-count, .live-chip, .dashboard-header > div > p:last-child,
.admin-page-header > div > p:last-child, .wip-note p, .photo-drop span,
.form-section-title p, .cash-opening p, .team-create-panel p, .cash-close-card p,
.stay-block strong, .balance-block strong {
    font-size: 15px !important;
    letter-spacing: .01em !important;
    line-height: 1.5;
}

/* -- Eyebrow ("— PULSO DE HOY" etc.) y encabezados de sección -- */
.dashboard-page .eyebrow { font-size: 12px !important; letter-spacing: .12em !important; }

/* -- Tablas: cabecera y celdas grandes y legibles -- */
.admin-table th { font-size: 12px !important; letter-spacing: .05em !important; padding: 15px 18px !important; }
.admin-table td { font-size: 15px !important; padding: 16px 18px !important; }
.admin-table td > small, .table-person small { font-size: 13px !important; }

/* ============================================================
   BOTONES UNIFICADOS: mismo tamaño y estilo en todo el panel.
   ============================================================ */
.admin-primary-link, .admin-secondary-link {
    display: inline-flex !important; align-items: center; justify-content: center;
    gap: 12px !important; min-height: 50px; min-width: 150px;
    padding: 0 26px !important; border-radius: 3px;
    font-size: 13px !important; font-weight: 600; letter-spacing: .07em !important;
    text-transform: uppercase; line-height: 1;
}
.admin-primary-link { color: #fff; background: var(--terra); border: 1.5px solid var(--terra); }
.admin-secondary-link { color: var(--ink); background: #fff; border: 1.5px solid var(--line); }
.admin-primary-link span, .admin-secondary-link span { font-size: 18px !important; }

/* Botones de descarga Excel / PDF: mismo tamaño y forma (los distingue el icono) */
.export-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    min-width: 150px; height: 52px; padding: 0 24px; border-radius: 3px;
    font-size: 13px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase;
    text-decoration: none; cursor: pointer;
}
.export-btn--excel { color: var(--ink); background: #fff; border: 1.5px solid var(--line); }
.export-btn--excel:hover { border-color: var(--ink); }
.export-btn--pdf { color: #fff; background: var(--terra); border: 1.5px solid var(--terra); }
.export-btn--pdf:hover { filter: brightness(.94); }

/* Otros botones/enlaces de acción → 13px -- */
.back-link, .table-link, .download-link,
.calendar-controls button, .admin-toolbar button, .admin-toolbar > a,
.payment-detail-form button, .report-export-bar button, .cash-close-card button,
.cash-opening button, .cash-expense-card button, .team-create-panel button, .team-card button,
.reservation-actions button, .room-edit button, .compact-form button {
    font-size: 13px !important;
    letter-spacing: .06em !important;
}
/* Botones grandes de acción (formularios/caja): más alto y cómodo */
.payment-detail-form button, .cash-close-card button, .cash-opening button,
.cash-expense-card button, .team-create-panel button {
    padding: 14px 18px !important;
}

/* -- Píldoras de estado -- */
.reservation-status { font-size: 12px !important; padding: 7px 13px !important; }

/* -- Campos de formulario del panel: cómodos para escribir (eran 8–9px) → 15px -- */
.admin-toolbar input, .admin-toolbar select,
.payment-detail-form input, .payment-detail-form select,
.room-edit input, .room-edit select,
.compact-form input, .compact-form select, .compact-form textarea,
.calendar-controls input, .cash-close-card label input, .cash-opening label input,
.cash-expense-card input, .cash-expense-card select, .cash-expense-card textarea,
.team-create-panel input, .team-create-panel select, .team-card input, .team-card select,
.room-status-form select, .admin-form-grid input, .admin-form-grid select, .admin-form-grid textarea {
    font-size: 15px !important;
}

/* -- Navegación lateral más legible -- */
.sidebar nav a, .sidebar-bottom > a, .sidebar-bottom button { font-size: 14px !important; padding: 14px 15px !important; }
.sidebar nav a span, .sidebar-bottom span { font-size: 17px !important; }
.user-chip strong { font-size: 13.5px !important; }

/* -- Etiquetas de tarjetas del dashboard (ocupación / caja) → 12px -- */
.occupancy-card p, .card-title p, .occupancy-legend, .room-legend,
.calendar-legend, .flow-numbers small { font-size: 12px !important; letter-spacing: .06em !important; }
.card-title h2 { font-size: 22px !important; }

/* -- Calendario: eventos y celdas más legibles -- */
.calendar-event { font-size: 12px !important; min-height: 42px !important; }
.occupancy-calendar tbody th span { font-size: 11px !important; }

/* ============================================================
   FOOTER FIJO al pie del panel (barra azul noche).
   ============================================================ */
.dashboard-main { padding-bottom: 96px !important; }
.panel-footer {
    position: fixed; left: 250px; right: 0; bottom: 0; z-index: 9;
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
    margin: 0 !important; padding: 15px clamp(20px, 4vw, 66px) !important;
    background: #16233F; color: rgba(255,255,255,.72); border-top: 0;
    font-size: 12.5px !important; letter-spacing: .03em;
}
.panel-footer span:nth-child(2) { text-align: center; }
@media (max-width: 760px) {
    /* Footer compacto en móvil: solo la marca en UNA línea.
       Antes se partía en 3 líneas y comía 90px de pantalla. */
    .panel-footer {
        left: 0; justify-content: center; flex-wrap: nowrap;
        padding: 10px 15px !important; font-size: 11.5px !important;
        white-space: nowrap; overflow: hidden;
    }
    .panel-footer span:nth-child(2), .panel-footer span:nth-child(3) { display: none; }
    .dashboard-main { padding-bottom: 64px !important; }

    /* Login en móvil: la imagen decorativa dejaba el botón "Abrir el sistema"
       fuera de pantalla. Se reduce para que el formulario se vea al entrar. */
    .login-visual { min-height: 150px !important; padding: 22px 24px !important; }
    .login-visual h1 { font-size: 30px !important; }
    .login-visual > small, .login-visual div > p:last-child { display: none; }
    .login-panel { padding: 28px 24px !important; }
    .login-form-wrap h2 { margin: 8px 0 6px; font-size: 30px !important; }
}
