@charset "UTF-8";
/* Tipografía propia, servida desde el mismo dominio: la política de seguridad
   del sitio no permite cargar fuentes de terceros. Archivo para la operación y
   los números; Bodoni Moda para los titulares, que acompaña al logotipo. */
@font-face{font-family:"Archivo";src:url(/fonts/archivo-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Archivo";src:url(/fonts/archivo-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Bodoni Moda";src:url(/fonts/bodoni-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Bodoni Moda";src:url(/fonts/bodoni-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{--ink:#002d5c;--paper:#f3f7fc;--muted:#5d7189;--line:#dbe5f0;--gold:#337cbe;--white:#ffffff;--red:#ac443e;--green:#366b49;--amber:#956b28;--brass:#b08d3f;--brass-soft:#fbeed2;--sans:"Archivo","Segoe UI",system-ui,sans-serif;--display:"Bodoni Moda",Georgia,serif;font-family:var(--sans);font-optical-sizing:auto;color:var(--ink);background:var(--paper);font-size:15px}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button,a,input,select,textarea{outline-offset:4px}button:focus-visible,a:focus-visible{outline:3px solid var(--gold)}input,select,textarea{width:100%;padding:12px 13px;background:var(--white);border:1px solid #b9cce0;border-radius:8px;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid var(--gold)}label{display:grid;gap:7px;font-size:.88rem;font-weight:600}h1,h2,h3,p{margin-top:0}h1,h2,.serif{font-family:var(--display);font-weight:400}h1{font-size:2.7rem;letter-spacing:-1.2px;margin-bottom:9px}h2{font-size:1.9rem}small{color:var(--muted)}.muted{color:var(--muted)}.eyebrow{font-size:.7rem;text-transform:uppercase;letter-spacing:2px;font-weight:700;color:var(--muted)}.wordmark{font-family:var(--display);font-size:3.4rem;letter-spacing:-3px;line-height:1}.wordmark span{display:block;font-family:var(--sans);letter-spacing:5px;font-size:.6rem;text-align:center;margin-top:11px}.loading{padding:15vh 10vw}.loading p{margin-top:32px}.btn{border:1px solid var(--ink);border-radius:8px;padding:12px 18px;background:var(--ink);color:white;font-weight:600;min-height:44px}.btn.secondary{background:transparent;color:var(--ink);border-color:#b9cde1}.btn.danger{background:var(--red);border-color:var(--red)}.btn.small{padding:8px 12px;min-height:38px;font-size:.85rem}.link{background:none;border:0;color:var(--ink);text-decoration:underline;padding:9px 0}.stack{display:grid;gap:18px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.error{color:var(--red);font-size:.9rem;margin:0}.hint{font-size:.85rem;line-height:1.6;color:var(--muted)}.tag{border-radius:20px;padding:5px 10px;font-size:.72rem;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.tag::before{content:"";width:6px;height:6px;background:currentColor;border-radius:50%}.tag.available{background:#edf3e7;color:var(--green)}.tag.occupied{background:#f4eadb;color:var(--amber)}.tag.dirty{background:#e9edef;color:#536873}.tag.overdue{background:#fae8e3;color:var(--red)}.demo-banner{padding:8px 18px;text-align:center;background:#f3e3be;color:#77551f;font-size:.8rem}.shell{display:grid;grid-template-columns:224px 1fr;min-height:100vh}.sidebar{padding:35px 22px;background:var(--ink);color:var(--paper);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar .wordmark{font-size:3.1rem;text-align:center;margin:0 0 45px}.sidebar nav{display:grid;gap:8px}.nav-button{border:0;border-radius:7px;background:none;color:#d9e9f9;text-align:left;padding:14px 16px;font-size:.92rem;display:flex;gap:12px;align-items:center;min-height:46px}.nav-button:hover,.nav-button.active{background:#174b7f;color:#fff}.nav-icon{font-size:1.1rem;width:19px;text-align:center}.sidebar-foot{margin-top:auto;border-top:1px solid #34608a;padding-top:20px;display:grid;gap:12px}.avatar{height:35px;width:35px;border-radius:50%;background:#246094;display:grid;place-content:center;color:#ffffff}.sidebar .eyebrow,.sidebar small{color:#c1d7ed}.sidebar .link{color:#dcebf9;text-align:left;font-size:.85rem}.main-wrap{min-width:0}.topbar{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 40px;gap:15px;background:#ffffff}.topbar-title{font-size:.8rem;letter-spacing:.6px}.time{font-variant-numeric:tabular-nums;font-size:.88rem}.connection{font-size:.75rem;display:flex;gap:7px;align-items:center;color:var(--muted)}.connection::before{content:"";height:7px;width:7px;border-radius:50%;background:#6f925e}.connection.failed{color:var(--red)}.connection.failed::before{background:var(--red)}.content{padding:35px 40px 50px;max-width:1540px;margin:auto}.intro{margin-bottom:26px;display:flex;align-items:end;justify-content:space-between;gap:20px}.intro p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.6}.date-badge{font-size:.8rem;border-left:2px solid var(--gold);padding-left:14px;line-height:1.6;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:28px}.stat{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:20px}.stat-number{font-family:var(--display);font-size:2.5rem;margin:8px 0 5px;line-height:1.1}.stat-caption{font-size:.72rem;color:var(--muted)}.stat-label{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:7px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--green)}.dot.amber{background:var(--gold)}.dot.blue{background:#738b98}.filters{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 20px}.pills{display:flex;gap:5px;flex-wrap:wrap}.pill{padding:9px 13px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:.83rem;min-height:40px}.pill.active{background:var(--ink);color:white}.search{max-width:240px;font-size:.85rem;padding:10px 13px}.rooms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.room{min-height:192px;border:1px solid var(--line);border-radius:11px;background:var(--white);padding:18px;text-align:left;color:var(--ink);position:relative;display:flex;flex-direction:column;transition:transform .15s,border-color .15s,box-shadow .15s;animation:rise .35s ease both}.room:hover{transform:translateY(-3px);border-color:#80add6;box-shadow:0 8px 22px #002d5c0b}.room.occupied{border-top:3px solid #c8a366;padding-top:16px}.room.dirty{border-top:3px solid #93a6ad;padding-top:16px}.room.overdue{border-top:3px solid var(--red);padding-top:16px}.room-number{font-size:.68rem;color:var(--muted);letter-spacing:1.6px}.room h3{font-family:var(--display);font-weight:400;font-size:1.4rem;margin:17px 0 5px;letter-spacing:-.4px}.room-type{font-size:.75rem;color:var(--muted)}.room-footer{border-top:1px solid #e6edf5;margin-top:18px;padding-top:12px;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:.75rem;color:var(--muted)}.room-timer{font-variant-numeric:tabular-nums;font-size:.95rem;color:var(--ink)}.room.overdue .room-timer{color:var(--red)}.room-action{color:var(--green);font-weight:600}.page-note{font-size:.76rem;color:var(--muted);margin:22px 0;line-height:1.6}.empty{padding:35px;text-align:center;color:var(--muted);grid-column:1/-1}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-art{background:var(--ink);color:var(--paper);display:flex;flex-direction:column;justify-content:space-between;padding:65px;position:relative;overflow:hidden}.login-art::after{content:"";width:440px;height:440px;border:1px solid #ffffff33;border-radius:50%;position:absolute;right:-220px;top:20%;box-shadow:0 0 0 90px #ffffff0d,0 0 0 180px #ffffff08}.login-art .wordmark{font-size:5.5rem;width:160px}.login-art h1{font-size:3.8rem;line-height:1.08;max-width:460px;z-index:1}.login-art p{color:#c0d8ef;line-height:1.7;max-width:360px}.login-art .eyebrow{color:#c6e0fa}.login-panel{display:grid;place-content:center;padding:45px}.login-form{width:min(380px,80vw)}.login-form h2{font-size:2.4rem;margin:10px 0 12px}.login-form .hint{margin-bottom:28px}dialog{border:1px solid var(--line);border-radius:14px;padding:0;width:min(540px,calc(100% - 28px));max-height:90vh;color:var(--ink);background:var(--white);box-shadow:0 20px 90px #0d2a3030}dialog::backdrop{background:#001d4188;backdrop-filter:blur(3px)}.modal-head{padding:24px 26px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:start}.modal-head h2{margin:7px 0 0}.close{border:0;background:none;color:var(--muted);font-size:1.7rem;min-width:36px;min-height:36px}.modal-body{padding:22px 26px 26px}.duration{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.duration label{cursor:pointer}.duration input{position:absolute;opacity:0;width:1px;height:1px}.duration span{border:1px solid var(--line);border-radius:8px;padding:15px 8px;text-align:center;line-height:1.7;font-size:.88rem;display:block}.duration input:checked+span{border-color:var(--ink);background:#eaf3fc;box-shadow:inset 0 0 0 1px var(--ink)}.duration input:focus-visible+span{outline:3px solid var(--gold)}.duration strong{font-size:1.05rem}.total-strip{padding:16px;background:#eaf3fc;border-radius:8px;display:flex;justify-content:space-between;align-items:center}.total-strip strong{font-family:var(--display);font-size:1.7rem;font-weight:400}.payments{border:0;padding:0;margin:0;display:grid;gap:12px}.payments legend{font-weight:600;font-size:.88rem;margin-bottom:12px}.payment-row{display:grid;grid-template-columns:85px 1fr;gap:10px;align-items:center}.payment-row label{font-size:.82rem}.payment-row input{padding:10px}.payment-reference{grid-column:2;font-size:.8rem}.balance{font-size:.8rem;color:var(--muted);margin:8px 0 0}.balance.good{color:var(--green)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-grid small{display:block;margin-bottom:6px;font-size:.73rem}.notice{background:#f6edda;border:1px solid #e7d8b5;border-radius:8px;padding:14px;font-size:.85rem;line-height:1.6}.notice.success{background:#edf3e7;border-color:#cad9c2}.notice.danger{background:#fae8e3;border-color:#e7bdb5}.modal-actions{display:grid;gap:10px;margin-top:8px}#toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,15px);padding:14px 22px;background:var(--ink);color:white;border-radius:9px;opacity:0;pointer-events:none;transition:all .2s;max-width:90vw;z-index:20;font-size:.9rem}#toast.visible{opacity:1;transform:translate(-50%,0)}.panel{background:var(--white);border:1px solid var(--line);border-radius:11px;padding:24px;margin-bottom:20px}.panel h2{font-size:1.45rem;margin-bottom:20px}.dashboard-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:20px}.chart{display:flex;gap:5px;align-items:end;height:170px;border-bottom:1px solid var(--line);padding-top:12px;overflow-x:auto}.chart-column{min-width:10px;flex:1;height:100%;display:flex;flex-direction:column;justify-content:end;align-items:stretch;gap:6px}.bar{background:#4389c5;border-radius:3px 3px 0 0;min-height:2px;border:0;width:100%}.bar:hover{background:var(--ink)}.chart-label{font-size:.6rem;color:var(--muted);text-align:center}.split-line{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:.87rem}.split-line:last-child{border:0}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem;text-align:left}th{font-size:.68rem;text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-weight:600;padding:13px 12px;background:#f0f5fb}td{padding:14px 12px;border-bottom:1px solid var(--line)}td .muted{display:block;font-size:.72rem;margin-top:4px}.report-controls{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:25px}.report-controls label{max-width:180px;font-size:.75rem}.report-controls .pills{margin-right:auto}.audit{padding:12px 0;border-bottom:1px solid var(--line);font-size:.82rem;line-height:1.6}.audit strong{display:block}.user-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.user-item{border:1px solid var(--line);padding:16px;border-radius:8px;display:flex;justify-content:space-between;gap:10px;align-items:center}.user-item small{display:block;margin-top:5px}.inline-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.no-margin{margin:0}.footer-brand{font-size:.66rem;color:var(--muted);letter-spacing:1.3px;text-transform:uppercase;margin-top:30px}.mobile-brand{display:none}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){.rooms{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(max-width:1200px){.rooms{grid-template-columns:repeat(3,minmax(0,1fr))}.content{padding:28px}.topbar{padding:0 28px}.shell{grid-template-columns:195px 1fr}.sidebar{padding:32px 15px}.stat{padding:16px}.stat-number{font-size:2.1rem}}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:12px 20px;flex-direction:row;gap:20px;align-items:center;overflow-x:auto}.sidebar .wordmark{font-size:2rem;margin:0 15px 0 0}.sidebar .wordmark span{font-size:.45rem;letter-spacing:3px;margin-top:5px}.sidebar nav{display:flex;gap:5px}.nav-button{padding:11px 13px;white-space:nowrap}.sidebar-foot{margin:0 0 0 auto;border:0;padding:0;display:flex;align-items:center;gap:10px}.sidebar-foot .avatar,.sidebar-foot small,.sidebar-foot .eyebrow{display:none}.sidebar-foot .link{white-space:nowrap}.sidebar-foot strong{font-size:.8rem}.topbar{height:60px}.intro h1{font-size:2.3rem}.dashboard-grid{grid-template-columns:1fr}.login-art{padding:40px}.login-art h1{font-size:3rem}.user-list{grid-template-columns:1fr}}@media(max-width:620px){.content{padding:25px 17px}.topbar{padding:0 17px}.topbar-title{display:none}.rooms{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.room{padding:14px;min-height:181px}.room.occupied,.room.dirty,.room.overdue{padding-top:12px}.room h3{font-size:1.22rem;margin-top:15px}.room .tag{padding:4px 7px;font-size:.65rem}.room-footer{font-size:.65rem;gap:3px}.room-timer{font-size:.8rem}.stats{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px}.stat{padding:15px}.stat-number{font-size:2.1rem}.intro{align-items:start}.date-badge{display:none}.search{max-width:none}.filters{gap:12px}.filters .pills{width:100%}.pill{padding:9px 10px;font-size:.77rem}.login-shell{grid-template-columns:1fr}.login-art{padding:30px 25px;min-height:210px}.login-art .wordmark{font-size:3.3rem;width:100px}.login-art h1{font-size:2.1rem;margin:25px 0 0;max-width:none}.login-art p,.login-art>.eyebrow{display:none}.login-panel{padding:32px 24px;display:block}.login-form{width:100%}.login-form h2{font-size:2rem}.nav-icon{display:none}.nav-button{font-size:.8rem;padding:10px}.sidebar{padding:12px;gap:6px}.sidebar .wordmark{margin-right:5px}.sidebar-foot strong{display:none}.sidebar-foot .link{font-size:.76rem}.sidebar nav{gap:0}.panel{padding:18px}.report-controls label{flex:1;max-width:100%}.report-controls .pills{width:100%}.modal-head{padding:20px}.modal-body{padding:20px}.duration span{font-size:.8rem}.duration strong{font-size:.95rem}.inline-fields{grid-template-columns:1fr}.payment-row{grid-template-columns:70px 1fr}.detail-grid{gap:14px}.intro p{font-size:.83rem}.connection{font-size:.67rem}.time{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}.payment-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.payment-options label{cursor:pointer}.payment-options input{position:absolute;opacity:0;width:1px;height:1px}.payment-options span{display:block;border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-size:.9rem}.payment-options small{display:block;font-size:.72rem;font-weight:400;margin-top:5px}.payment-options input:checked+span{border-color:var(--ink);background:#eaf3fc;box-shadow:inset 0 0 0 1px var(--ink)}.payment-options input:focus-visible+span{outline:3px solid var(--gold)}

.brand-logo{display:block;width:148px;height:126px;object-fit:contain;margin:auto}.login-art .brand-logo{width:195px;height:166px;margin:0}.loading .brand-logo{margin:0}.sidebar .wordmark{margin-bottom:28px}.payment-options input:checked+span{background:#eaf3fc}@media(max-width:900px){.sidebar .wordmark{margin:0 10px 0 0}.sidebar .brand-logo{width:70px;height:60px}}@media(max-width:620px){.login-art .brand-logo{width:115px;height:98px}.sidebar .brand-logo{width:60px;height:51px}}
.tag.disabled{background:#e9edf2;color:#637185}.room.disabled{background:#eef1f5;border-style:dashed;color:#637185}.room.disabled:disabled{cursor:not-allowed;opacity:1}.room-setting{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.room-setting small{display:block;margin-top:5px;color:var(--muted)}.room-setting .btn{min-width:135px}.room-setting .btn:disabled{cursor:not-allowed}
.room-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);margin-bottom:20px;padding-bottom:14px}.room-tabs{display:flex;gap:6px;flex-wrap:wrap}.room-tab{display:flex;align-items:center;gap:9px;min-height:46px;padding:11px 15px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-weight:600}.room-tab[aria-selected=true]{color:var(--ink);background:#e5effb;border-color:#c6daf1}.tab-count{font-size:.77rem;min-width:25px;padding:3px 7px;border-radius:20px;background:#fff;color:var(--ink)}.room-tab-help{margin-bottom:20px}.room-config-dialog{width:min(660px,calc(100% - 28px))}.room-config-dialog .modal-head{position:sticky;top:0;z-index:2;background:white}.room-config-group{margin:25px 0}.room-config-group h3{font-family:inherit;font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:var(--muted);padding-bottom:12px;border-bottom:1px solid var(--line)}.room-config-group h3 span{margin-left:8px;color:var(--ink)}.room-select-wrap{width:170px;flex-shrink:0}.room-select-wrap select{min-height:44px;padding:10px;font-size:.85rem}.room-select-wrap select:disabled{opacity:.65;background:#f0f3f7;cursor:not-allowed}.room-save-status{display:block;min-height:16px;font-size:.7rem;color:var(--green);padding:3px 2px 0}.room-setting{padding:13px 0;align-items:center}.room-setting strong{font-size:.93rem}.room-setting small{font-size:.76rem}.config-empty{padding:12px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.empty strong{display:block;font-size:1.05rem;color:var(--ink);margin-bottom:9px}.empty p{font-size:.88rem}.room-footer{gap:8px}.room-timer{white-space:nowrap}
@media(max-width:900px){.sidebar{flex-wrap:wrap;overflow:visible;gap:8px 16px}.sidebar .wordmark{order:0}.sidebar-foot{order:1}.sidebar nav{order:2;width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.sidebar nav:has(.nav-button:only-child){grid-template-columns:1fr}.nav-button{justify-content:center;padding:11px 6px;font-size:.79rem}.nav-icon{display:none}}
@media(max-width:620px){.room-toolbar{align-items:stretch;flex-direction:column;gap:12px}.room-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.room-tab{padding:11px 10px;justify-content:center;font-size:.86rem}.room-toolbar>.btn{align-self:flex-start}.room-select-wrap{width:142px}.room-setting{gap:9px}.room-setting strong{font-size:.84rem}.room-footer{flex-direction:column;align-items:flex-start;gap:5px}.intro h1{font-size:2rem}.sidebar .wordmark{margin-right:0}.sidebar-foot strong{display:block}.sidebar-foot .link{min-height:44px}.room-config-dialog .modal-body{padding:16px}.room-config-dialog .modal-head{padding:16px}}
@media(max-width:620px){.stats[aria-label="Estado de las habitaciones"]{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:20px}.stats[aria-label="Estado de las habitaciones"] .stat{padding:12px 9px}.stats[aria-label="Estado de las habitaciones"] .stat:first-child{display:none}.stats[aria-label="Estado de las habitaciones"] .stat-label{font-size:.72rem;gap:4px}.stats[aria-label="Estado de las habitaciones"] .stat-number{font-size:1.9rem;margin-bottom:0}.stats[aria-label="Estado de las habitaciones"] .stat-caption{display:none}.intro{margin-bottom:20px}.room-toolbar{gap:10px}.topbar{height:50px}}
.room-photo-frame{width:100%;aspect-ratio:16/10;margin-top:14px;border-radius:7px;overflow:hidden;background:#e7eef7;display:grid;place-items:center;flex-shrink:0}.room-photo{display:block;width:100%;height:100%;min-height:0;object-fit:cover}.room-photo.photo-contain{object-fit:contain}.room-photo-missing{color:#61758d;font-size:.76rem;text-align:center;border:1px dashed #c7d5e5;padding:10px}.room.disabled .room-photo{opacity:.8}.room h3{margin-top:14px}
/* Keep every room card aligned regardless of its status label or title length. */
.room{border-top-width:3px;padding-top:16px;min-width:0}
.room>.row.between{flex-direction:column;align-items:flex-start;justify-content:flex-start;flex-wrap:nowrap;gap:8px;height:58px;flex-shrink:0}
.room-photo-frame{aspect-ratio:1;margin-top:10px}
.room h3{line-height:1.2;min-height:2.4em}
.room-type{margin-bottom:18px}
.room-footer{margin-top:auto;min-height:52px;width:100%}
@media(max-width:620px){.room{padding-top:12px}.room-footer{min-height:62px}}
#room-alerts{margin:0 0 22px}.alert-heading{display:flex;justify-content:space-between;gap:12px;font-size:.85rem;margin-bottom:10px}.alert-heading span,.alerts-clear{color:var(--muted);font-size:.8rem}.alert-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:9px}.room-alert{border:1px solid #c7d9ee;border-left:4px solid #337cbe;border-radius:8px;background:#fff;padding:12px;text-align:left;color:var(--ink);min-height:65px}.room-alert strong,.room-alert span{display:block}.room-alert span{font-size:.77rem;margin-top:6px}.room-alert.overdue{border-left-color:var(--red);background:#fff5f2}.room-alert.grace{border-left-color:#b9802a;background:#fffaf0}.closure-author{display:block;margin-top:5px}.alerts-clear{margin:0}.sidebar-foot .link{padding:5px 0}@media(max-width:900px){.sidebar nav{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.sidebar-foot{flex-wrap:wrap}.sidebar-foot .link{min-height:32px}}@media(max-width:620px){.alert-list{grid-template-columns:1fr}.sidebar-foot{gap:8px}.sidebar-foot .link{font-size:.72rem}}
.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{min-width:0}.stats .stat-number{font-size:clamp(1.3rem,2.8vw,2.5rem);overflow-wrap:anywhere}@media(max-width:620px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats .stat-number{font-size:1.6rem}}

/* ---- Tablero compacto: más habitaciones a la vista y el reloj como
   protagonista. El encabezado y el resumen pasaron debajo de las tarjetas. ---- */
.rooms{grid-template-columns:repeat(auto-fill,minmax(188px,1fr));gap:12px}
.room{min-height:0;padding:13px}
.room>.row.between{height:auto;flex-direction:row;align-items:center;justify-content:space-between;gap:6px}
.room-photo-frame{aspect-ratio:16/9;margin-top:9px}
.room h3{margin:10px 0 2px;min-height:0;font-size:1.18rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.room-type{margin-bottom:9px}
.room-footer{margin-top:auto;min-height:0;border-top:0;padding-top:0;font-size:.72rem}

/* Reloj de la estancia con barra que se vacía. */
.room-clock{margin-top:10px;border-top:1px solid #e6edf5;padding-top:9px}
.room-timer{display:block;font-size:1.55rem;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.room-progress{height:6px;border-radius:99px;background:#e6edf5;overflow:hidden;margin-top:8px}
.room-progress span{display:block;height:100%;border-radius:99px;background:var(--gold);transition:width 1s linear,background-color .3s}

/* Una habitación con alguien adentro se pinta entera de dorado: se distingue de
   un vistazo entre las libres, sin tener que leer la etiqueta, y hace juego con
   el azul de la marca. */
.room.occupied,.room.overdue{background:var(--brass);border-color:var(--brass);color:var(--white)}
.room.occupied:hover,.room.overdue:hover{border-color:#c8a366;box-shadow:0 8px 22px #6b531f40}
.room.occupied h3,.room.overdue h3{color:var(--white)}
.room.occupied .room-number,.room.overdue .room-number,
.room.occupied .room-type,.room.overdue .room-type,
.room.occupied .room-footer,.room.overdue .room-footer{color:#fdf4e2}
.room.occupied .room-photo-frame,.room.overdue .room-photo-frame{background:#9c7c35}
.room.occupied .room-clock,.room.overdue .room-clock{border-top-color:#ffffff38}
.room.occupied .room-progress,.room.overdue .room-progress{background:#ffffff2e}

/* Sobre el dorado, el tiempo que corre va en blanco y la alerta en coral claro,
   que es lo que se lee a distancia en un fondo oscuro. */
.room-clock.ok .room-timer{color:var(--white)}
.room-clock.ok .room-progress span{background:var(--brass-soft)}
.room-clock.soon .room-timer,.room-clock.grace .room-timer,.room-clock.overdue .room-timer{color:#ffd9ce}
.room-clock.soon .room-progress span,.room-clock.grace .room-progress span,.room-clock.overdue .room-progress span{background:#ff9d86}
.room-clock.grace .room-timer,.room-clock.overdue .room-timer{font-size:1.3rem}

.room-number{white-space:nowrap}
/* Los avisos van en una sola fila deslizable: antes empujaban las habitaciones
   fuera de la pantalla justo cuando más urgía verlas. */
#room-alerts{margin-bottom:16px}
#room-alerts .alert-list{display:flex;grid-template-columns:none;overflow-x:auto;gap:8px;padding-bottom:4px;scroll-snap-type:x proximity}
#room-alerts .room-alert{flex:0 0 auto;min-width:168px;min-height:0;padding:10px 13px;scroll-snap-align:start}
#room-alerts .room-alert strong{font-size:.86rem}
#room-alerts .room-alert span{margin-top:3px;font-size:.72rem}
.alert-heading{margin-bottom:8px}
.filters{align-items:center}
.filter-actions{display:flex;gap:9px;align-items:center;margin-left:auto}
.filter-actions .search{max-width:220px}
#close-shift{white-space:nowrap}
.room-toolbar{margin:26px 0 0;border-top:1px solid var(--line);border-bottom:0;padding:16px 0 0}
.room-tab-help{margin:12px 0 22px}
.intro{margin:26px 0 0;padding-top:22px;border-top:1px solid var(--line)}
.intro h1{font-size:2rem}
@media(max-width:620px){
 /* El menú ocupaba un tercio de la pantalla antes de la primera habitación. */
 .sidebar{padding:9px 12px;gap:6px 10px}
 .sidebar .brand-logo{width:46px;height:40px}
 .nav-button{padding:9px 5px;font-size:.74rem;min-height:38px}
 .sidebar-foot strong{font-size:.76rem}
 .topbar{height:42px}
 .content{padding:16px 14px 40px}
 .rooms{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
 .room{padding:10px}
 .room h3{font-size:1rem;margin-top:8px}
 .room-type{font-size:.7rem;margin-bottom:7px}
 .room-timer{font-size:1.3rem}
 .room-clock{margin-top:8px;padding-top:7px}
 .filter-actions{width:100%}
 .filter-actions .search{max-width:none;flex:1}
 .intro h1{font-size:1.7rem}
 .intro p:last-child{display:none}
}
