:root {
  --orange:#c86536;
  --orange-dark:#a94f25;
  --orange-soft:#f7e8df;
  --taupe:#8a8178;
  --ink:#292723;
  --muted:#716c66;
  --line:#ded9d3;
  --panel:#ffffff;
  --bg:#f4f2ef;
  --green:#4f8a68;
  --green-soft:#e6f2eb;
  --yellow:#b7852c;
  --yellow-soft:#fbf1d8;
  --red:#b44b4b;
  --red-soft:#f8e5e5;
  --purple:#755b91;
  --shadow:0 12px 28px rgba(54,45,37,.08);
  --radius:16px;
}
*{box-sizing:border-box}
html{font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}
body{margin:0;min-height:100vh;background:linear-gradient(135deg,#f7f5f2 0%,#efebe6 100%)}
button,input,textarea{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
#appShell{min-height:100vh;display:grid;grid-template-columns:244px minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;padding:26px 18px 18px;background:#25231f;color:#fff;display:flex;flex-direction:column;z-index:20}
.brand{display:flex;gap:12px;align-items:center;padding:0 8px 30px}
.brand-mark{width:42px;height:42px;border:1px solid rgba(255,255,255,.45);display:grid;place-items:center;border-radius:50%;font-weight:800;color:#f2a06d}
.brand strong{font-size:13px;letter-spacing:.12em;display:block}
.brand span{display:block;color:#bdb7af;font-size:12px;margin-top:3px}
#navTabs{display:grid;gap:7px}
.nav-item{border:0;background:transparent;color:#c8c2bb;text-align:left;padding:12px 13px;border-radius:10px;display:flex;align-items:center;gap:12px;transition:.2s}
.nav-item span{font-size:10px;color:#817a72;letter-spacing:.12em}
.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
.nav-item.active{background:var(--orange);color:#fff;font-weight:700}
.nav-item.active span{color:#fff}
.sidebar-foot{margin-top:auto;padding:16px 10px 4px;color:#aaa39b;font-size:12px;display:flex;gap:8px;align-items:center}
.status-dot{width:8px;height:8px;border-radius:50%;background:#777;box-shadow:0 0 0 4px rgba(255,255,255,.05)}
.sidebar-foot.ready .status-dot{background:#65b981}
.main{min-width:0;padding:0 30px 48px}
.topbar{min-height:112px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid rgba(138,129,120,.22);margin-bottom:26px}
.eyebrow{margin:0 0 6px;color:var(--orange);font-size:11px;font-weight:800;letter-spacing:.14em}
h1,h2,h3,p{margin-top:0}
h1{font-family:Georgia,serif;font-size:31px;margin-bottom:0;font-weight:500}
h2{font-family:Georgia,serif;font-weight:500;font-size:23px;margin-bottom:4px}
h3{font-size:15px;margin-bottom:4px}
.top-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.date-control{display:grid;gap:5px;font-size:11px;color:var(--muted)}
.date-control input{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 12px;color:var(--ink)}
.date-control small{font-size:9px;color:var(--orange-dark);font-weight:700;max-width:150px;line-height:1.25}
.btn{border:1px solid transparent;border-radius:10px;padding:10px 15px;font-weight:700;font-size:13px;transition:.2s;white-space:nowrap}
.btn:disabled{opacity:.42;cursor:not-allowed}
.btn.primary{background:var(--orange);color:white}.btn.primary:hover:not(:disabled){background:var(--orange-dark)}
.btn.secondary{background:white;border-color:var(--line);color:var(--ink)}.btn.secondary:hover:not(:disabled){border-color:var(--orange);color:var(--orange)}
.btn.ghost{background:transparent;border-color:var(--line);color:var(--muted)}
.text-btn{border:0;background:transparent;color:var(--orange);font-weight:700;padding:6px 0;font-size:13px}
.view{display:none}.view.active{display:block}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(330px,.7fr);gap:22px}
.panel{background:var(--panel);border:1px solid rgba(138,129,120,.18);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}
.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:18px}
.panel-head p:not(.eyebrow){color:var(--muted);font-size:13px;margin-bottom:0}
.badge{background:var(--orange-soft);color:var(--orange-dark);border-radius:999px;padding:7px 10px;font-size:10px;font-weight:800;letter-spacing:.06em}.badge.success{background:var(--green-soft);color:var(--green)}
.drop-zone{border:1.5px dashed #c9c1b8;border-radius:14px;min-height:230px;padding:30px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fbfaf8;transition:.2s}
.drop-zone.drag{border-color:var(--orange);background:var(--orange-soft)}
.drop-zone strong{font-size:17px;margin-bottom:5px}.drop-zone span{font-size:13px;color:var(--muted);margin-bottom:18px}
.upload-icon{width:48px;height:48px;border-radius:50%;background:var(--orange-soft);color:var(--orange);display:grid;place-items:center;font-size:26px;margin-bottom:14px}
.upload-alt{display:flex;justify-content:space-between;gap:14px;margin-top:12px;flex-wrap:wrap}
.paste-box{margin-top:12px;border-top:1px solid var(--line);padding-top:14px}
.paste-box textarea{width:100%;height:160px;resize:vertical;border:1px solid var(--line);border-radius:10px;padding:12px}
.row-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.message{margin-top:14px;padding:12px 14px;border-radius:10px;font-size:13px}.message.error{background:var(--red-soft);color:var(--red)}.message.success{background:var(--green-soft);color:var(--green)}
.rule-list{list-style:none;padding:0;margin:0;display:grid;gap:3px}
.rule-list li{display:grid;grid-template-columns:34px 1fr;padding:11px 0;border-bottom:1px solid #eee9e3;position:relative}
.rule-list li:before{content:counter(list-item,decimal-leading-zero);color:var(--orange);font-size:10px;font-weight:800;padding-top:3px}
.rule-list b{font-size:13px;display:block}.rule-list span{grid-column:2;color:var(--muted);font-size:12px;margin-top:3px}
.stats-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:13px;margin:22px 0}
.stat{background:white;border:1px solid rgba(138,129,120,.16);border-radius:13px;padding:16px;box-shadow:0 8px 18px rgba(54,45,37,.05)}
.stat span{font-size:11px;color:var(--muted);display:block}.stat strong{font-family:Georgia,serif;font-size:27px;display:block;margin:7px 0 3px}.stat small{font-size:10px;color:#98918a}
.validation-panel{margin-top:0}.empty-state{min-height:100px;display:grid;place-items:center;text-align:center;color:#8c857e;font-size:13px;padding:24px}
.section-intro{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:18px}.section-intro p:not(.eyebrow){margin-bottom:0;color:var(--muted);font-size:13px}
.inline-summary{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:11px;color:var(--muted)}.inline-summary strong{font-size:16px;color:var(--ink);margin-right:8px}
.toolbar{display:flex;gap:9px;justify-content:flex-end;margin-bottom:16px;flex-wrap:wrap}
.maids-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:11px}
.maid-row{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;grid-template-columns:auto 1fr 95px;gap:10px;align-items:center;background:#fcfbfa}
.maid-row.active{border-color:#d59b76;background:#fff8f4}
.switch{width:40px;height:23px;border-radius:999px;background:#ccc;position:relative;border:0;padding:0}.switch:after{content:"";width:17px;height:17px;border-radius:50%;background:#fff;position:absolute;left:3px;top:3px;transition:.18s}.switch.on{background:var(--orange)}.switch.on:after{left:20px}
.maid-name{border:0;border-bottom:1px solid transparent;background:transparent;width:100%;font-weight:700;padding:5px}.maid-name:focus{outline:none;border-bottom-color:var(--orange)}
.minutes-input{width:88px;border:1px solid var(--line);border-radius:8px;padding:8px;text-align:right}
.repartition-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:14px;align-items:start}
.maid-column{background:white;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 8px 20px rgba(54,45,37,.05)}
.maid-column.drag-over{outline:2px solid var(--orange);outline-offset:2px}
.maid-column-head{padding:15px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:8px;background:#fbfaf8}
.maid-column-head h3{font-family:Georgia,serif;font-size:18px;font-weight:500}.maid-column-head small{color:var(--muted)}
.load-meter{grid-column:1/-1;height:6px;background:#e8e4df;border-radius:999px;overflow:hidden}.load-meter span{height:100%;display:block;background:var(--green)}.load-meter.warning span{background:var(--yellow)}.load-meter.danger span{background:var(--red)}
.room-list{padding:10px;display:grid;gap:8px;min-height:60px}
.room-card{border:1px solid #e0dbd5;border-radius:10px;padding:10px;background:#fff;cursor:grab;display:grid;grid-template-columns:56px 1fr auto;gap:9px;align-items:center}
.room-card:active{cursor:grabbing}.room-card.priority-max{border-left:5px solid var(--red)}.room-card.priority-high{border-left:5px solid var(--orange)}.room-card.priority-medium{border-left:5px solid var(--yellow)}.room-card.priority-low{border-left:5px solid #aaa}
.room-no{font-family:Georgia,serif;font-size:20px}.room-meta{font-size:11px;color:var(--muted);line-height:1.45}.room-meta b{font-size:12px;color:var(--ink)}.room-min{font-weight:800;font-size:12px;color:var(--orange)}
.room-tags{grid-column:1/-1;display:flex;gap:5px;flex-wrap:wrap}.tag{font-size:9px;border-radius:999px;padding:4px 6px;background:#f0ede9;color:#625d57}.tag.alert{background:var(--red-soft);color:var(--red)}.tag.info{background:var(--orange-soft);color:var(--orange-dark)}
.table-panel{padding:0;overflow:hidden}.data-table-wrap{overflow:auto;max-width:100%}
table{border-collapse:collapse;width:100%;font-size:12px;background:white}th{position:sticky;top:0;background:#f3f0ec;color:#5d5751;text-align:left;font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:11px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:10px 11px;border-bottom:1px solid #eeeae6;vertical-align:top}tbody tr:hover{background:#fff9f5}
.severity{font-weight:800;font-size:10px;border-radius:999px;padding:4px 7px;display:inline-block}.severity.maxima{background:var(--red-soft);color:var(--red)}.severity.alta{background:var(--orange-soft);color:var(--orange-dark)}.severity.media{background:var(--yellow-soft);color:var(--yellow)}.severity.revisar{background:#eee8f4;color:var(--purple)}
.validation-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.validation-item{border-radius:11px;padding:13px;background:#f8f6f3}.validation-item strong{display:block;font-size:20px;margin-top:5px}.validation-item.error{background:var(--red-soft)}.validation-item.warning{background:var(--yellow-soft)}.validation-list{margin-top:15px;display:grid;gap:7px}.validation-line{display:flex;gap:8px;align-items:flex-start;font-size:12px;padding:9px 11px;border:1px solid var(--line);border-radius:9px}.validation-line b{color:var(--red)}
.config-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:18px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{font-size:11px;color:var(--muted);display:grid;gap:6px}.form-grid input,.config-input{border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff}
.toast{position:fixed;right:24px;bottom:24px;background:#25231f;color:white;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;transform:translateY(80px);opacity:0;pointer-events:none;transition:.25s;z-index:100}.toast.show{transform:translateY(0);opacity:1}
.print-area{display:none}
@media(max-width:1200px){.stats-grid{grid-template-columns:repeat(3,1fr)}.hero-grid{grid-template-columns:1fr}.config-grid{grid-template-columns:1fr}}
@media(max-width:820px){#appShell{display:block}.sidebar{position:relative;height:auto;padding:14px}.brand{padding-bottom:14px}.sidebar nav{display:flex;overflow:auto}.nav-item{min-width:max-content}.sidebar-foot{display:none}.main{padding:0 14px 36px}.topbar{align-items:flex-start;padding:18px 0;min-height:auto;flex-direction:column}.top-actions{width:100%;justify-content:flex-start}.stats-grid{grid-template-columns:repeat(2,1fr)}.section-intro{align-items:flex-start;flex-direction:column}.maids-table{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.validation-grid{grid-template-columns:repeat(2,1fr)}}
@media print{
  body{background:white}.sidebar,.main,.toast{display:none!important}.print-area{display:block!important}.print-part{page-break-after:always;padding:12mm;font-family:Arial,sans-serif}.print-part:last-child{page-break-after:auto}.print-head{display:flex;justify-content:space-between;border-bottom:2px solid #333;padding-bottom:7mm;margin-bottom:5mm}.print-head h1{font-size:20px}.print-kpis{display:flex;gap:8mm;font-size:12px}.print-linen-summary{margin:-1mm 0 4mm;padding:3mm 4mm;background:#f5efe7;border-left:4px solid #b86f42;font-size:10px}.print-part table{font-size:9px}.print-part th,.print-part td{padding:4px}.print-linen-cell b{display:block;color:#9a3f1c}.print-linen-cell small{display:block;margin-top:2px;line-height:1.25;color:#333}.print-sheet-change td{background:#fff7ed}.print-note{margin-top:8mm;border-top:1px solid #999;padding-top:3mm;font-size:10px;color:#555}@page{size:A4 landscape;margin:8mm}
}
.rule-list{counter-reset:rule}
.rule-list li{counter-increment:rule}
.rule-list li:before{content:counter(rule,decimal-leading-zero)}
.quick-count{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:5px 10px;font-size:11px;color:var(--muted)}
.quick-count input{width:58px;border:0;border-left:1px solid var(--line);padding:5px 4px 5px 10px;font-weight:700;color:var(--ink);outline:none}


/* Vista rack */
.rack-intro{align-items:center}.rack-tools{display:flex;gap:10px;flex-wrap:wrap}.rack-tools label{font-size:11px;color:var(--muted);display:grid;gap:5px}.rack-tools select,.rack-tools input{border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff;min-width:140px}.rack-legend{display:flex;gap:14px;flex-wrap:wrap;padding:13px 16px;margin-bottom:16px}.rack-legend span{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}.rack-dot{width:11px;height:11px;border-radius:3px;display:inline-block;border:1px solid rgba(0,0,0,.12)}.rack-dot.clean{background:#5da978}.rack-dot.dirty{background:#c94d4d}.rack-dot.eos{background:#e68b38}.rack-dot.reviewed{background:#2f7f63}.rack-dot.review{background:#d5ad3e}.rack-dot.occupied{background:#5d83b7}.rack-dot.vacant{background:#9675b3}.rack-dot.nodata{background:#b7b2ac}.rack-board{display:grid;gap:18px}.rack-floor{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);overflow:hidden}.rack-floor-head{display:flex;justify-content:space-between;align-items:center;padding:14px 17px;background:#f3f0ec;border-bottom:1px solid var(--line)}.rack-floor-head h3{margin:0;font-size:20px}.rack-floor-head span{font-size:11px;color:var(--muted)}.rack-wings{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:0}.rack-wing{padding:15px;border-right:1px solid #eeeae6}.rack-wing:last-child{border-right:0}.rack-wing h4{margin:0 0 10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.rack-room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}.rack-room{min-height:70px;border:0;border-radius:10px;color:#fff;padding:8px 6px;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;box-shadow:inset 0 -2px 0 rgba(0,0,0,.12);transition:transform .12s,filter .12s}.rack-room:hover{transform:translateY(-2px);filter:brightness(1.05)}.rack-room strong{font-family:Georgia,serif;font-size:19px}.rack-room span{font-size:8px;line-height:1.2;margin-top:4px;opacity:.94}.rack-room em{position:absolute;top:4px;right:5px;font-style:normal;font-size:7px;font-weight:900;background:rgba(255,255,255,.9);color:#333;padding:2px 4px;border-radius:999px}.rack-clean{background:#5da978}.rack-dirty{background:#c94d4d}.rack-eos{background:#e68b38}.rack-reviewed{background:#2f7f63}.rack-review{background:#d5ad3e;color:#332b18}.rack-occupied{background:#5d83b7}.rack-vacant{background:#9675b3}.rack-nodata{background:#b7b2ac}.modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:18px}.modal-backdrop{position:absolute;inset:0;background:rgba(25,23,20,.62);backdrop-filter:blur(3px)}.modal-card{position:relative;width:min(560px,100%);background:#fff;border-radius:17px;padding:25px;box-shadow:0 24px 70px rgba(0,0,0,.25)}.modal-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:29px;color:var(--muted)}.room-modal-meta{display:flex;gap:7px;flex-wrap:wrap;margin:-5px 0 18px}.room-modal-meta span{font-size:10px;background:#f1eee9;border-radius:999px;padding:6px 8px;color:#625d57}.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:13px}.modal-form label{display:grid;gap:6px;font-size:11px;color:var(--muted)}.modal-form select,.modal-form textarea{border:1px solid var(--line);border-radius:9px;padding:10px;background:#fff}.modal-wide{grid-column:1/-1}.modal-actions{justify-content:flex-end}.modal-open{overflow:hidden}
@media(max-width:820px){.rack-tools{width:100%}.rack-tools label{flex:1}.rack-tools select,.rack-tools input{width:100%;min-width:0}.rack-wings{grid-template-columns:1fr}.rack-wing{border-right:0;border-bottom:1px solid #eeeae6}.rack-room-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr))}.modal-form{grid-template-columns:1fr}.modal-wide{grid-column:auto}}

/* Rediseño v1.2 · interfaz operativa Puerto Antilla */
:root{
  --orange:#b85f34;--orange-dark:#914521;--orange-soft:#f4e6dd;
  --ink:#25231f;--muted:#736d66;--line:#ddd7cf;--panel:#fffdf9;
  --bg:#eeeae4;--shadow:0 14px 34px rgba(52,43,34,.07);--radius:12px;
}
body{background:#eeeae4;background-image:linear-gradient(rgba(255,255,255,.34),rgba(255,255,255,0) 260px)}
#appShell{grid-template-columns:226px minmax(0,1fr)}
.sidebar{padding:24px 14px 18px;background:#292724;border-right:1px solid rgba(255,255,255,.06)}
.brand{padding:0 8px 28px;gap:11px}.brand-mark{border-radius:8px;width:38px;height:38px;background:#b85f34;border:0;color:#fff;font-family:Georgia,serif;font-size:14px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.brand strong{font-family:Georgia,serif;font-weight:500;letter-spacing:.08em}.brand span{font-size:10px;text-transform:uppercase;letter-spacing:.12em}
#navTabs{gap:2px}.nav-item{border-radius:7px;padding:11px 10px;color:#bbb5ad;font-size:13px;border-left:2px solid transparent}.nav-item span{display:none}.nav-item:hover{background:rgba(255,255,255,.045)}.nav-item.active{background:rgba(255,255,255,.075);border-left-color:#d98555;color:#fff}.nav-item.active:after{content:'›';margin-left:auto;color:#d98555;font-size:20px;line-height:10px}
.main{padding:0 34px 50px;max-width:1800px;width:100%;margin:0 auto}.topbar{min-height:98px;margin-bottom:24px}.topbar h1{font-size:29px}.eyebrow{font-size:9px;letter-spacing:.18em}
.panel{border-radius:12px;border:1px solid rgba(104,91,77,.16);box-shadow:0 8px 22px rgba(52,43,34,.045);background:#fffdf9}.panel:hover{box-shadow:0 10px 26px rgba(52,43,34,.065)}
.btn{border-radius:7px;padding:10px 14px;font-size:12px;letter-spacing:.01em}.btn.primary{box-shadow:0 3px 0 rgba(91,42,18,.18)}.btn.primary:active{transform:translateY(1px);box-shadow:none}
.date-control input,.rack-tools select,.rack-tools input,.minutes-input,.form-grid input,.config-input{border-radius:7px;background:#fffdf9}
.hero-grid{gap:18px}.drop-zone{border-radius:9px;background:#faf7f2;min-height:218px}.upload-icon{border-radius:9px;background:#efe2d8;font-family:Georgia,serif}.badge{border-radius:5px;text-transform:uppercase;letter-spacing:.08em}
.stats-grid{gap:10px}.stat{border-radius:9px;box-shadow:none;border-top:3px solid #d7d0c8;padding:14px 15px}.stat:nth-child(2){border-top-color:#b85f34}.stat:nth-child(4){border-top-color:#b44b4b}.stat:nth-child(5){border-top-color:#b7852c}.stat:nth-child(6){border-top-color:#755b91}.stat strong{font-size:25px}
.maids-table{gap:9px}.maid-row{border-radius:8px;background:#faf8f4}.maid-row.active{background:#fffaf6;border-color:#cc8b66}.switch{height:20px;width:36px}.switch:after{width:14px;height:14px}.switch.on:after{left:19px}
.repartition-board{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.maid-column{border-radius:9px;box-shadow:none}.maid-column-head{background:#f3efe9;padding:13px 14px}.room-card{border-radius:7px;box-shadow:0 2px 8px rgba(40,34,28,.035);transition:.14s}.room-card:hover{transform:translateY(-1px);border-color:#c9b7a8}.tag{border-radius:4px}
table{font-size:12px}th{background:#302e2a;color:#e9e4dc;letter-spacing:.08em}td{background:#fffdf9}.severity{border-radius:4px}

/* Rack: apariencia de tablero operativo, no de mosaico genérico */
.rack-legend{border-radius:9px;background:#f7f3ed;box-shadow:none}.rack-dot{border-radius:50%;width:9px;height:9px;border:0}.rack-board{gap:14px}.rack-floor{border-radius:10px;box-shadow:0 8px 22px rgba(52,43,34,.045)}.rack-floor-head{background:#302e2a;color:#fff;padding:12px 16px}.rack-floor-head h3{font-family:Georgia,serif;font-weight:500;font-size:18px}.rack-floor-head span{color:#c9c3ba}.rack-wing{background:#fffdf9;padding:14px}.rack-wing h4{padding-bottom:8px;border-bottom:1px solid #e5dfd7;color:#8a8178}.rack-room-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:7px}.rack-room{min-height:64px;border-radius:6px;box-shadow:none;border:1px solid rgba(0,0,0,.1);overflow:hidden;transition:transform .12s,box-shadow .12s,filter .12s}.rack-room:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:rgba(255,255,255,.55)}.rack-room:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(42,36,30,.18);filter:none}.rack-room strong{font-family:Inter,Segoe UI,Arial,sans-serif;font-size:18px;letter-spacing:.02em}.rack-room span{text-transform:uppercase;letter-spacing:.06em;font-size:7px}.rack-room em{border-radius:3px;top:3px;right:4px}.rack-clean{background:#e5f1e9;color:#24583b}.rack-dirty{background:#f4dddd;color:#8e2929}.rack-eos{background:#f3d8c0;color:#8b431b}.rack-reviewed{background:#2f6e57;color:#fff}.rack-review{background:#f3e5b9;color:#654d0d}.rack-occupied{background:#dce6f2;color:#345477}.rack-vacant{background:#e8e0ee;color:#5f4774}.rack-nodata{background:#ece9e5;color:#77716a}.rack-room:before{background:currentColor;opacity:.55}
.modal-card{border-radius:10px;border-top:4px solid #b85f34}.modal-close{font-weight:300}.room-modal-meta span{border-radius:4px}
.toast{border-radius:7px;border-left:4px solid #d98555}
@media(max-width:820px){#appShell{display:block}.sidebar{border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar nav{gap:4px}.nav-item.active{border-left:0;border-bottom:2px solid #d98555}.nav-item.active:after{display:none}.main{padding:0 14px 34px}.rack-room-grid{grid-template-columns:repeat(auto-fill,minmax(62px,1fr))}.rack-room{min-height:58px}}

/* v1.3 · persistencia, usuarios e historial */
.sidebar-user{display:grid;grid-template-columns:34px 1fr 28px;align-items:center;gap:9px;margin-top:auto;margin-bottom:12px;padding:11px 8px;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08)}
.user-avatar{width:32px;height:32px;border-radius:8px;background:#b85f34;color:#fff;display:grid;place-items:center;font-family:Georgia,serif;font-size:14px}
.user-copy{min-width:0;display:grid;gap:2px}.user-copy strong{font-size:12px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-copy span{font-size:9px;color:#aaa39a;text-transform:uppercase;letter-spacing:.08em}.icon-btn{border:0;background:transparent;color:#bdb6ae;font-size:18px;cursor:pointer;border-radius:6px;height:28px}.icon-btn:hover{background:rgba(255,255,255,.08);color:#fff}
.save-state{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px;white-space:nowrap}.save-dot{width:7px;height:7px;border-radius:50%;background:#9b958d}.save-state.saved .save-dot{background:#4f8a68}.save-state.saving .save-dot{background:#c88943;animation:pulse-save .85s infinite alternate}.save-state.error .save-dot{background:#bd4747}@keyframes pulse-save{to{opacity:.35}}
.progress-panel{margin-bottom:18px;padding:18px 20px}.progress-percent{font-family:Georgia,serif;font-size:28px;font-weight:500}.progress-track{height:9px;background:#e5e0d9;border-radius:999px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,#b85f34,#5b8b70);transition:width .35s}.progress-summary{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px;font-size:11px;color:var(--muted)}.progress-summary b{color:var(--ink);margin-left:4px}.floor-progress{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin-top:14px}.floor-progress-item{border:1px solid var(--line);background:#faf7f2;padding:9px 10px;border-radius:7px;display:grid;gap:6px}.floor-progress-item header{display:flex;justify-content:space-between;align-items:center;font-size:11px}.floor-progress-item header strong{font-family:Georgia,serif;font-size:16px}.mini-track{height:5px;background:#e4dfd8;border-radius:999px;overflow:hidden}.mini-track span{display:block;height:100%;background:#5b8b70}.floor-progress-item small{font-size:9px;color:var(--muted)}
.history-tools{display:flex;align-items:end;gap:9px;flex-wrap:wrap}.history-tools label{display:grid;gap:5px;font-size:10px;color:var(--muted)}.history-tools input,.history-tools select{border:1px solid var(--line);border-radius:7px;padding:9px 10px;background:#fffdf9;min-width:130px}.history-detail{max-width:420px;white-space:normal;line-height:1.35}.history-action{display:inline-flex;padding:3px 6px;border-radius:4px;background:#eee9e2;font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:#5d5650}.history-room{font-weight:800;color:#914521}.history-empty{padding:40px;text-align:center;color:var(--muted)}
.user-management{grid-column:1/-1}.user-form{display:grid;grid-template-columns:1.4fr 1fr .8fr 1.1fr auto;gap:10px;align-items:end;margin-bottom:18px}.user-form label{display:grid;gap:6px;font-size:10px;color:var(--muted)}.user-form input,.user-form select{border:1px solid var(--line);border-radius:7px;padding:10px;background:#fffdf9}.user-role{font-size:9px;text-transform:uppercase;letter-spacing:.06em}.user-linked{font-size:10px;color:var(--muted)}.danger-link{border:0;background:transparent;color:#a23e3e;text-decoration:underline;cursor:pointer;font-size:10px}.danger-link:disabled{opacity:.35;cursor:not-allowed}
.login-modal{z-index:500}.login-card{width:min(430px,100%);border-top:0;padding:30px}.login-brand{display:flex;align-items:center;gap:11px;margin-bottom:26px}.login-brand strong{display:block;font-family:Georgia,serif;letter-spacing:.08em}.login-brand span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.login-note{font-size:12px;color:var(--muted);line-height:1.5;margin:0 0 18px}.login-form{display:grid;gap:12px}.login-form label{display:grid;gap:6px;font-size:10px;color:var(--muted)}.login-form select,.login-form input{border:1px solid var(--line);border-radius:7px;padding:12px;background:#fffdf9;font-size:14px}.login-submit{width:100%;margin-top:16px}.login-help{display:block;margin-top:15px;color:#8a837b;line-height:1.45}.login-modal.hidden{display:none}.permission-note{background:#f2ede7;border-left:3px solid #b85f34;padding:9px 11px;font-size:10px;color:#6f665d;margin:8px 0 14px}.rack-room.locked{cursor:default;opacity:.78}.rack-room.locked:hover{transform:none;box-shadow:none}.read-only-field{opacity:.7;pointer-events:none}
@media(max-width:1050px){.user-form{grid-template-columns:1fr 1fr}.user-form .btn{width:max-content}.history-tools{width:100%}.save-state{display:none}}
@media(max-width:820px){.sidebar-user{display:none}.top-actions{gap:7px}.top-actions .btn{padding:9px 10px}.progress-panel{padding:15px}.floor-progress{grid-template-columns:1fr 1fr}.user-form{grid-template-columns:1fr}.history-tools{align-items:stretch}.history-tools label,.history-tools .btn{flex:1}.history-tools input,.history-tools select{width:100%;min-width:0}}
@media(max-width:520px){.floor-progress{grid-template-columns:1fr}.top-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.date-control{grid-column:1/-1}.top-actions .save-state{display:none}.history-tools{display:grid;grid-template-columns:1fr}.history-tools .btn{width:100%}}

/* v1.4 · base de datos central y sincronización */
.sidebar-foot{display:grid;gap:8px;align-items:stretch}.sidebar-status-line{display:flex;gap:8px;align-items:center}.cloud-state{display:flex;align-items:center;gap:7px;padding-top:8px;border-top:1px solid rgba(255,255,255,.08);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.cloud-state-dot{width:7px;height:7px;border-radius:50%;background:#8d8780;box-shadow:0 0 0 3px rgba(255,255,255,.04)}.cloud-state.online .cloud-state-dot{background:#65b981;box-shadow:0 0 0 3px rgba(101,185,129,.12)}.cloud-state.offline .cloud-state-dot{background:#d89042;box-shadow:0 0 0 3px rgba(216,144,66,.12)}.cloud-state.local .cloud-state-dot{background:#8d8780}
.badge.cloud-active{background:#e2f0e7;color:#2e6b48;border-color:#bcd7c7}.cloud-settings-panel{border-top:3px solid #5b8b70}.cloud-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.cloud-status-card{border:1px solid var(--line);background:#faf7f2;border-radius:8px;padding:14px;display:grid;gap:5px}.cloud-status-card span{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.cloud-status-card strong{font-family:Georgia,serif;font-size:19px;font-weight:500;color:var(--ink)}.cloud-status-card small{font-size:10px;line-height:1.4;color:var(--muted)}.user-form{grid-template-columns:1fr 1.35fr 1fr .8fr 1.1fr auto}.cloud-settings-panel .permission-note{margin-bottom:0}
@media(max-width:1050px){.cloud-settings-grid{grid-template-columns:1fr 1fr}.cloud-status-card:last-child{grid-column:1/-1}.user-form{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.cloud-settings-grid{grid-template-columns:1fr}.cloud-status-card:last-child{grid-column:auto}}

/* v1.5 · Administración maestra */
.master-badge{background:#2e2925;color:#fff;border-color:#2e2925}.security-note{background:#f6efe6;border-left-color:#c76532;margin-top:-2px;margin-bottom:18px}.master-user-row{background:#faf4eb}.master-shield{display:inline-block;margin-top:5px;padding:3px 7px;border-radius:999px;background:#2e2925;color:#fff;font-size:8px;text-transform:uppercase;letter-spacing:.08em}.master-role{font-weight:700;color:#8e4828}.user-admin-select{min-width:135px;border:1px solid var(--line);border-radius:6px;background:#fffdf9;padding:7px;font-size:10px}.user-active-toggle{white-space:nowrap;font-size:10px;color:var(--ink)}.user-active-toggle input{vertical-align:middle;margin-right:4px}
/* v1.5.3: evita que tablas y paneles ensanchen toda la pagina en movil. */
.panel,.config-grid>*{min-width:0}
.data-table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:820px){
  .user-form{grid-template-columns:minmax(0,1fr)}
  .user-form label,.user-form input,.user-form select{min-width:0;max-width:100%;width:100%}
}

/* v1.6.1 · medición real, salidas destacadas y lencería revisada */
.btn.danger{background:var(--red);color:#fff;border-color:var(--red)}
.personal-intro{align-items:center}.personal-maid-select,.timing-tools label{display:grid;gap:6px;font-size:10px;color:var(--muted)}
.personal-maid-select select,.timing-tools select{min-width:210px;border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff}
.personal-kpis,.timing-kpis{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:13px;margin-bottom:18px}
.personal-layout{display:grid;grid-template-columns:minmax(290px,.72fr) minmax(0,1.28fr);gap:18px;align-items:start}
.active-cleaning-panel{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;border-left:5px solid #2c7f83;background:linear-gradient(100deg,#f3fbfb,#fff)}
.active-cleaning-panel h2{margin-bottom:4px}.active-cleaning-panel p:last-child{margin-bottom:0;color:var(--muted);font-size:12px}
.active-cleaning-clock{text-align:right;display:grid;gap:2px}.active-cleaning-clock strong{font-family:Georgia,serif;font-size:34px;color:#276d72}.active-cleaning-clock span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.linen-summary{display:grid;gap:10px}.linen-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.linen-item{border:1px solid var(--line);border-radius:9px;padding:11px;background:#fbfaf8;display:grid;gap:3px}.linen-item span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.linen-item strong{font-family:Georgia,serif;font-size:22px}.linen-item small{font-size:10px;color:var(--muted)}.linen-pillows{border-top:1px solid var(--line);padding-top:12px;display:flex;justify-content:space-between;align-items:center}.linen-pillows strong{font-size:22px}.linen-note{font-size:10px;line-height:1.45;color:var(--muted);margin:0}
.personal-room-list{display:grid;gap:10px}.personal-room-card{border:1px solid var(--line);border-left:5px solid #aaa;border-radius:11px;background:#fff;padding:13px;display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:12px;align-items:center;transition:.15s}.personal-room-card:hover{box-shadow:0 7px 17px rgba(54,45,37,.08)}.personal-room-card.active{border-left-color:#2c7f83;background:#f3fbfb}.personal-room-card.completed{border-left-color:var(--green);background:#f4faf6}.personal-room-card.priority{border-left-color:var(--orange)}.personal-room-card .room-number{font-family:Georgia,serif;font-size:25px}.personal-room-card .room-copy{min-width:0}.personal-room-card .room-copy b{font-size:13px}.personal-room-card .room-copy p{font-size:10px;color:var(--muted);margin:4px 0 0;line-height:1.45}.personal-room-card .linen-line{color:#765b2d!important}.timer-button{min-width:142px;border:1px solid var(--orange);background:var(--orange);color:#fff;border-radius:9px;padding:10px 11px;font-weight:800;font-size:11px}.timer-button.finish{background:#2c7f83;border-color:#2c7f83}.timer-button.completed{background:var(--green-soft);border-color:#bcd7c7;color:#2e6b48;cursor:default}.timer-button.blocked{background:#eee9e3;border-color:#ddd5cd;color:#827b73;cursor:not-allowed}.timer-button small{display:block;font-weight:500;margin-top:3px;opacity:.85}
.timing-intro{align-items:center}.timing-tools{display:flex;align-items:end;gap:9px}.timing-table-status{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.timing-table-status.active{background:#dff1f2;color:#276d72}.timing-table-status.completed{background:var(--green-soft);color:var(--green)}.timing-table-status.cancelled{background:var(--red-soft);color:var(--red)}.timing-positive{color:var(--red);font-weight:700}.timing-negative{color:var(--green);font-weight:700}
.rack-cleaning{background:#d8eff0;color:#205f64;animation:rack-pulse 1.4s infinite alternate}@keyframes rack-pulse{to{box-shadow:inset 0 0 0 2px rgba(44,127,131,.38)}}
.room-operational-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}.room-info-card{border:1px solid var(--line);border-radius:8px;background:#faf8f5;padding:12px;font-size:11px;line-height:1.5;color:var(--muted)}.room-info-card b{color:var(--ink)}.room-info-card h4{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--orange);margin:0 0 7px}
.maid-row:before{content:'Nombre';font-size:8px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);position:absolute;transform:translate(52px,-25px);display:none}.maid-row{position:relative}.maid-name{background:#fff;border:1px solid var(--line);border-radius:7px;padding:8px}.maid-name:focus{border-color:var(--orange);outline:none}
@media(max-width:1050px){.personal-layout{grid-template-columns:1fr}.personal-kpis,.timing-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.personal-room-card{grid-template-columns:55px 1fr}.personal-room-card .timer-button{grid-column:1/-1;width:100%}.active-cleaning-panel{align-items:flex-start}.active-cleaning-clock strong{font-size:29px}.room-operational-grid{grid-template-columns:1fr}.timing-tools{width:100%;align-items:stretch}.timing-tools label{flex:1}.timing-tools select,.timing-tools .btn{width:100%;min-width:0}}
@media(max-width:520px){.personal-kpis,.timing-kpis{grid-template-columns:1fr 1fr}.personal-maid-select{width:100%}.personal-maid-select select{width:100%}.active-cleaning-panel{display:grid}.active-cleaning-clock{text-align:left}}

/* v1.6.1 · ajustes de Mi parte y lencería */
.personal-exit-stat{border-top-color:#b44b4b!important;background:#fff9f7}.personal-exit-stat strong{color:#9b3e36}
.linen-pillows>div{display:grid;text-align:right;gap:1px}.linen-pillows small{font-size:10px;color:var(--muted)}
.linen-alert{margin:0;border-left:3px solid #b7852c;background:#fff8e9;color:#77561d;padding:8px 10px;font-size:10px;line-height:1.4;border-radius:0 7px 7px 0}
.personal-room-card.exit{border-left-color:#b44b4b;background:#fffafa}.personal-room-card.exit .room-number{color:#963d37}
.personal-room-card.exit.active{border-left-color:#2c7f83;background:#f3fbfb}.personal-room-card.exit.completed{border-left-color:var(--green);background:#f4faf6}
.personal-room-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.personal-exit-badge{display:inline-flex;align-items:center;border-radius:999px;background:#f5dedb;color:#923c35;border:1px solid #e8beb8;padding:3px 7px;font-size:8px;line-height:1;font-weight:900;letter-spacing:.08em}.personal-exit-badge.eos{background:#f9e5cf;color:#965619;border-color:#efc99d}
.linen-room-warning{color:#9a5b1d!important;font-weight:700}

/* v1.6.4 · reparto forzado de trabajo obligatorio */

/* v1.6.6 · acceso individual de camareras (base heredada) */
.personal-account-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px;border-left:4px solid #c76532;background:linear-gradient(100deg,#fff8f3,#fff)}
.personal-account-panel h2{margin:2px 0 5px}.personal-account-panel p{margin:0 0 4px;color:var(--muted);font-size:12px}.personal-account-panel small{color:var(--muted)}
.password-card{width:min(460px,100%)}.password-actions{margin-top:18px}.password-modal[data-forced="true"] .modal-backdrop{cursor:not-allowed}.password-modal[data-forced="true"] .password-card{border-top:5px solid #c76532}
.maid-user-row{background:#fffaf5}.maid-user-row small{color:var(--muted)}.initial-password-badge{display:inline-block;margin-top:5px;padding:3px 7px;border-radius:999px;background:#fff0dc;color:#915222;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
body.maid-portal .top-actions{display:none}body.maid-portal .topbar{min-height:74px}body.maid-portal .sidebar nav{margin-top:12px}body.maid-portal .sidebar-foot{display:none}
body.maid-portal .personal-account-panel{display:flex}body:not(.maid-portal) .personal-account-panel{display:none}
@media(max-width:720px){.personal-account-panel{align-items:stretch;display:grid}.personal-account-panel .btn{width:100%}body.maid-portal .topbar{display:block;padding-top:20px}}

/* v1.6.7 · credenciales persistentes, subgobernantas y configuración avanzada */
.user-admin-input{width:100%;min-width:125px;border:1px solid var(--line);border-radius:8px;padding:8px 9px;background:#fff;font:inherit;color:var(--ink)}
.supervisor-user-row td{background:#f7faf8}.supervisor-role{background:#e3f2ea;color:#276448}.text-btn.compact{font-size:10px;margin-top:3px}.user-summary-note{margin-bottom:10px}
.advanced-config-grid{align-items:start}.config-check{display:flex!important;align-items:center;gap:10px;grid-column:span 2;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.config-check input{width:18px;height:18px}.config-check span{font-weight:700}
.timer-warning{border-color:#d9812c!important;box-shadow:0 0 0 3px rgba(217,129,44,.12)}.timer-warning .active-cleaning-clock{color:#a64f10}.timing-warning-row td{background:#fff4e8!important}.personal-room-observations{margin-top:6px;padding:6px 8px;border-left:3px solid var(--orange);background:#fff8f0;border-radius:4px;font-size:11px}
@media(max-width:760px){.config-check{grid-column:span 1}.user-admin-input{min-width:105px}}

/* v1.6.8 · Seguimiento, pausas, avisos y revisión */
.followup-intro{align-items:center}.followup-refresh{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:10px}.followup-kpis{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;margin-bottom:18px}.follow-pending-stat{border-top-color:#b44b4b!important}.follow-active-stat{border-top-color:#2c7f83!important}.follow-paused-stat{border-top-color:#d9812c!important}.follow-review-stat{border-top-color:#9a7a29!important}.follow-alert-stat{border-top-color:#8d568d!important}.followup-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.followup-bottom-grid{align-items:start}.follow-floor-grid,.follow-active-list,.follow-alert-list,.follow-review-list{display:grid;gap:9px}.follow-floor-card{border:1px solid var(--line);border-radius:9px;background:#faf7f2;padding:12px}.follow-floor-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.follow-floor-card header span{font-weight:800;font-size:11px}.follow-floor-card header strong{font-family:Georgia,serif;font-size:20px}.follow-floor-card p{margin:7px 0 0;color:var(--muted);font-size:10px}.follow-active-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #bee0e2;border-left:4px solid #2c7f83;background:#f3fbfb;border-radius:9px;padding:11px 12px}.follow-active-item.paused{border-color:#edc99e;border-left-color:#d9812c;background:#fff7ed}.follow-active-item>div{display:grid;gap:2px}.follow-active-item b{font-size:13px}.follow-active-item span,.follow-active-item small{font-size:9px;color:var(--muted)}.follow-active-item strong{font-family:Georgia,serif;font-size:19px;color:#276d72;text-align:right}.follow-active-item.paused strong{color:#a65a18}.follow-status{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.follow-status.active{background:#dff1f2;color:#276d72}.follow-status.paused{background:#fff0dc;color:#a65a18}.follow-status.done{background:var(--green-soft);color:var(--green)}.follow-status.available{background:#ece9e5;color:#6f675f}.follow-exits-pending{color:#9b3e36;font-weight:900}.follow-alert-item,.follow-review-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:9px;padding:11px;background:#fff}.follow-alert-item>div,.follow-review-item>div:first-child{display:grid;gap:3px}.follow-alert-item b,.follow-review-item b{font-size:13px}.follow-alert-item small,.follow-review-item span{font-size:9px;color:var(--muted)}.alert-type{display:inline-flex;width:max-content;padding:3px 6px;border-radius:999px;background:#eee9f1;color:#6b4770;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.alert-type.guest_inside{background:#f7e9d8;color:#8b551f}.alert-type.linen_shortage{background:#e4edf6;color:#355d82}.alert-type.lost_object{background:#f3e5ba;color:#715810}.alert-type.special_cleaning{background:#f1e2e2;color:#8b3e3e}.compact-btn{padding:7px 10px!important;font-size:9px!important}.btn.success{background:var(--green);border-color:var(--green);color:#fff}.review-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.active-cleaning-state{display:inline-flex;margin-top:7px;padding:4px 8px;border-radius:999px;background:#dff1f2;color:#276d72;font-size:8px;font-weight:900;letter-spacing:.08em}.active-cleaning-state.paused{background:#fff0dc;color:#a65a18}.active-cleaning-panel.timer-paused{border-left-color:#d9812c;background:linear-gradient(100deg,#fff7ed,#fff)}.active-cleaning-panel.timer-paused .active-cleaning-clock strong{color:#a65a18}
.personal-room-card{grid-template-rows:auto auto}.personal-secondary-row{grid-column:1/-1;border-top:1px dashed var(--line);padding-top:8px;display:grid;gap:8px}.more-options-btn{width:max-content;border:0;background:transparent;color:#776e65;font-size:9px;font-weight:800;padding:3px 0;cursor:pointer}.more-options-btn:after{content:' ▾'}.more-options-btn[aria-expanded="true"]:after{content:' ▴'}.room-options{display:flex;gap:7px;flex-wrap:wrap}.option-action{border:1px solid var(--line);background:#faf7f2;color:#554d45;border-radius:7px;padding:7px 9px;font-size:9px;font-weight:800;cursor:pointer}.option-action:hover{border-color:#c76532;background:#fff7f1}.option-action.pause-action{border-color:#d7aa73;background:#fff5e8;color:#92551c}.personal-room-card.reopened{border-left-color:#9a3e3e;background:#fff7f7}.personal-reopen-badge{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f5dcdc;color:#8e2929;border:1px solid #e8b8b8;font-size:8px;font-weight:900;letter-spacing:.04em}.personal-room-observations.correction{border-left-color:#9a3e3e;background:#fff0f0}.timing-table-status.paused{background:#fff0dc;color:#a65a18}.rack-paused{background:#f6dfbd;color:#8c551c;animation:rack-pause-pulse 1.5s infinite alternate}@keyframes rack-pause-pulse{to{box-shadow:inset 0 0 0 2px rgba(217,129,44,.42)}}
.review-modal-card{width:min(560px,100%)}.review-reason-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.review-reason-grid button{border:1px solid var(--line);border-radius:8px;background:#faf7f2;padding:11px;font-size:11px;font-weight:800;cursor:pointer}.review-reason-grid button.selected{background:#9a3e3e;color:#fff;border-color:#9a3e3e}.review-note-label{display:grid;gap:6px;color:var(--muted);font-size:10px}.review-note-label textarea{border:1px solid var(--line);border-radius:8px;padding:10px;background:#fffdf9;resize:vertical}
@media(max-width:1200px){.followup-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.followup-grid{grid-template-columns:1fr}.followup-intro{align-items:stretch}.followup-refresh{justify-content:space-between}.followup-kpis{grid-template-columns:repeat(2,1fr)}.follow-alert-item,.follow-review-item{align-items:flex-start}.review-reason-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.followup-kpis{grid-template-columns:1fr 1fr}.room-options{display:grid;grid-template-columns:1fr 1fr}.option-action{width:100%}.review-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.follow-review-item{display:grid}.follow-review-item .review-actions .btn{width:100%}}


/* v1.6.9 · reparto manual, cliente dentro y toallas */
.repartition-summary{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;justify-content:flex-end}.assignment-mode-badge{padding:8px 12px;border-radius:999px;background:#f4efe8;color:#765a3d;font-weight:800;font-size:.76rem;letter-spacing:.06em}.manual-pending-panel{margin-top:18px}.manual-pending-list{display:grid;gap:10px}.manual-pending-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}.manual-pending-row>div:first-child{display:grid;gap:3px}.manual-pending-row span,.manual-pending-row small{color:var(--muted)}.manual-pending-actions,.support-assign{display:flex;gap:8px;align-items:center}.manual-pending-actions select,.support-assign select,.manual-room-actions select{min-width:180px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:#fff}.manual-room-actions{grid-column:1/-1;display:flex;gap:7px;align-items:center;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.manual-room-actions select{min-width:0;flex:1}.compact-icon-btn{border:0;border-radius:9px;padding:8px 10px;background:#f0e7dc;color:#6e5034;font-weight:800;cursor:pointer}.guest-inside{border-color:#e1a340!important;background:#fff8e9!important}.personal-guest-badge{display:inline-flex;padding:4px 8px;border-radius:999px;background:#f6b94a;color:#513506;font-size:.68rem;font-weight:900;margin-left:6px}.follow-unassigned-stat{border-color:#dba84c}.towel-item{background:#eef7fa!important}.support-assign{min-width:290px}
@media(max-width:760px){.manual-pending-row{align-items:stretch;flex-direction:column}.manual-pending-actions{width:100%}.manual-pending-actions select{min-width:0;flex:1}.repartition-summary{justify-content:flex-start}.support-assign{min-width:220px;flex-direction:column;align-items:stretch}.manual-room-actions{flex-wrap:wrap}.manual-room-actions select{width:100%}}

.room-card.completed{opacity:.78;background:#f4faf6;border-color:#bcd7c7}.room-card.completed .room-no{color:var(--green)}.room-card .tag.done{background:var(--green-soft);color:var(--green);border-color:#bcd7c7}


/* v1.6.11 · fechas, juegos completos, reinicio y Mi parte simplificada */
.btn.danger-soft{background:#fff1ec;border-color:#d98a69;color:#9b3f25}.btn.danger-soft:hover{background:#b94f2b;border-color:#b94f2b;color:#fff}
.bed-game-item{background:#fff8ef!important;border-color:#eed8c4!important}.personal-room-card{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:14px;padding:16px;border-radius:16px;border-left-width:6px}.personal-room-main{display:grid;grid-template-columns:74px minmax(0,1fr);gap:14px;align-items:start}.personal-room-card .room-number{font-size:2rem;line-height:1;background:#f4eee6;border-radius:12px;padding:15px 8px;text-align:center;min-width:0}.personal-room-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.personal-room-title>b{font-size:1rem}.personal-room-meta{font-size:.82rem!important;margin-top:5px!important}.personal-task-badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:.66rem;font-weight:900;letter-spacing:.06em}.personal-task-badge.eos{background:#a9342c;color:#fff}.personal-task-badge.exit{background:#f1d1cb;color:#842e28}.personal-task-badge.entry{background:#dcebf4;color:#245f7d}.personal-task-badge.client{background:#e4efe7;color:#2f6946}.personal-room-card.entry{border-left-color:#3e7895}.timer-button{min-height:92px;border-radius:14px;font-size:1.08rem;letter-spacing:.04em}.timer-button small{font-size:.72rem;letter-spacing:0}.timer-button.finish{box-shadow:0 8px 22px rgba(176,69,35,.18)}.linen-line{margin-top:8px!important;padding:8px 10px;background:#faf7f2;border-radius:8px;font-size:.78rem!important}.personal-secondary-row{grid-column:1/-1}.more-options-btn{font-size:.74rem;color:#655b51}.personal-kpis .stat{border-radius:14px}.active-cleaning-panel{border-radius:16px}.personal-route-panel>.panel-head{position:sticky;top:0;z-index:2;background:var(--paper);padding-bottom:10px}
@media(max-width:760px){.top-actions{gap:7px}.top-actions .btn{padding:9px 11px}.personal-room-card{grid-template-columns:1fr;padding:13px;gap:11px}.personal-room-main{grid-template-columns:64px minmax(0,1fr);gap:10px}.personal-room-card .room-number{font-size:1.65rem;padding:13px 5px}.timer-button{width:100%;min-height:72px;font-size:1.15rem}.personal-room-title>b{font-size:.9rem}.personal-room-meta,.linen-line{font-size:.74rem!important}.personal-layout{display:block}.linen-panel{margin-bottom:14px}.personal-kpis{grid-template-columns:1fr 1fr}.personal-intro{gap:10px}.personal-intro h2{font-size:1.65rem}}

.team-toolbar{justify-content:space-between;align-items:center;padding:12px;border-radius:14px;background:#f7f2eb;border:1px solid var(--line)}.toolbar-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.distribution-actions{margin-left:auto}.btn.action-blue{background:#3f7187;border-color:#3f7187;color:#fff}.btn.action-blue:hover{background:#315d70}.maids-table{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.maid-row{grid-template-columns:auto 58px minmax(130px,1fr) 88px;padding:11px 12px}.maid-part-no{font-size:.7rem;font-weight:900;color:#765b48;text-transform:uppercase;line-height:1.1}.maid-minutes-wrap{display:grid;grid-template-columns:auto 1fr;gap:5px;align-items:center}.maid-minutes-wrap>span{font-size:.62rem;color:var(--muted);font-weight:800}.maid-minutes-wrap .minutes-input{width:100%;min-width:0}.personal-task-badge.pending{background:#eee9e2;color:#685e54}@media(max-width:760px){.team-toolbar{align-items:stretch}.toolbar-group,.distribution-actions{width:100%;margin-left:0}.distribution-actions .btn{flex:1;min-width:145px}.maid-row{grid-template-columns:auto 54px minmax(0,1fr) 82px}.maids-table{grid-template-columns:1fr}}

.personal-linen-badge{display:inline-flex;padding:4px 7px;border-radius:999px;background:#fff0d8;color:#855216;border:1px solid #e8c58e;font-size:.62rem;font-weight:900;letter-spacing:.035em}
/* Ajustes de legibilidad v1.6.11 */
.maids-table{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}
.maid-row{grid-template-columns:auto 54px minmax(118px,1fr) 74px;gap:8px;overflow:hidden}
.maid-name{min-width:0;width:100%}
.maid-minutes-wrap{min-width:0}
.personal-route-panel>.panel-head{position:static;top:auto}
@media(max-width:760px){.maids-table{grid-template-columns:1fr}.maid-row{grid-template-columns:auto 52px minmax(0,1fr) 72px}.personal-route-panel>.panel-head{position:static}}
.maid-row{grid-template-columns:auto 64px minmax(120px,1fr) 84px}
.maid-part-no{white-space:nowrap}
.minutes-input{-moz-appearance:textfield;appearance:textfield}
.minutes-input::-webkit-outer-spin-button,.minutes-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
@media(max-width:760px){.maid-row{grid-template-columns:auto 60px minmax(0,1fr) 80px}}


/* v1.6.12 · tabla maestra de trabajo por habitación */
.room-work-intro{align-items:flex-end}.room-work-tools{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;justify-content:flex-end}.room-work-tools label{display:grid;gap:5px;font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.room-work-tools input,.room-work-tools select{min-width:170px;background:#fff}.room-work-summary{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:10px;margin-bottom:12px}.room-work-summary article{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px}.room-work-summary span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}.room-work-summary strong{font-size:24px;color:#2f2a25}.room-work-panel{border-top:3px solid #c76532}.room-work-table{min-width:1240px}.room-work-table th:nth-child(1){left:0;z-index:3}.room-work-table td:nth-child(1){position:sticky;left:0;z-index:2;background:#fffdf9;box-shadow:5px 0 8px rgba(50,40,30,.04)}.room-work-table tr.work-overridden td{background:#fff7ed}.room-work-table tr.work-overridden td:nth-child(1){background:#fff2e3}.room-work-number{font-size:15px}.room-work-select{min-width:165px;padding:8px 30px 8px 9px;border:1px solid #d9d0c7;border-radius:7px;background:#fff;font-weight:750}.work-auto-label{display:inline-flex;padding:5px 8px;border-radius:7px;background:#eee9e2;color:#514a43;font-weight:800}.manual-work-badge{display:inline-flex;margin-left:6px;padding:3px 6px;border-radius:999px;background:#f1c7aa;color:#8c3e15;font-size:8px;font-weight:900;text-transform:uppercase}.room-bed-copy{max-width:300px;line-height:1.45;color:#524a43}.work-active-note{color:#28717a;font-weight:800}.work-done-note{color:#39734a;font-weight:800}
@media(max-width:820px){.room-work-tools{width:100%;justify-content:stretch}.room-work-tools label{flex:1;min-width:145px}.room-work-tools input,.room-work-tools select{width:100%;min-width:0}.room-work-tools .btn{width:100%}.room-work-summary{grid-template-columns:1fr}.room-work-summary article{padding:10px 12px}.room-work-table{min-width:1120px}}

/* v1.6.14 · ocupación y montaje visibles en Mi parte */
.personal-occupancy-panel{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:9px;padding:8px 9px;border:1px solid #eadfd3;border-radius:10px;background:#fffdf9}
.personal-occupancy-title{font-size:.65rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:#8b5b3e;margin-right:1px}
.personal-occupancy-chip{display:inline-flex;align-items:baseline;gap:4px;border:1px solid #ded7cf;border-radius:999px;background:#fff;padding:5px 8px;font-size:.72rem;font-weight:700;color:#554d45;white-space:nowrap}
.personal-occupancy-chip b{font-size:.84rem!important;color:#2f2924}
.personal-occupancy-chip.baby{background:#f7f1fb;border-color:#e3d5ee;color:#684879}
.personal-occupancy-chip.setup{background:#eef7f3;border-color:#cfe5dc;color:#356653}
.personal-occupancy-divider{width:1px;height:22px;background:#ded5cc;margin:0 2px}
@media(max-width:760px){.personal-occupancy-panel{gap:5px;padding:8px}.personal-occupancy-title{width:100%;margin-top:2px}.personal-occupancy-title:first-child{margin-top:0}.personal-occupancy-divider{display:none}.personal-occupancy-chip{font-size:.7rem;padding:5px 7px}}


/* v1.6.15 · recorrido, fechas, rack de lencería y parte imprimible renovado */
.personal-dates-panel{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.personal-dates-panel>span{display:grid;gap:2px;min-width:112px;padding:7px 10px;border:1px solid #e5ddd3;border-radius:8px;background:#fffdf9}
.personal-dates-panel small{font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:#8c8278}
.personal-dates-panel b{font-size:.82rem;color:#332e29}
.rack-room{padding-bottom:7px}
.rack-linen-flag{display:block;margin-top:5px;padding:2px 5px;border-radius:4px;font-size:6.5px!important;line-height:1.15!important;font-weight:900;letter-spacing:.05em;opacity:1!important}
.rack-linen-flag.yes{background:#fff1c9;color:#7a4d00;border:1px solid rgba(122,77,0,.18)}
.rack-linen-flag.no{background:rgba(255,255,255,.55);color:currentColor;border:1px solid rgba(0,0,0,.08)}
@media(max-width:760px){.personal-dates-panel>span{flex:1;min-width:100px}.rack-linen-flag{font-size:6px!important}}

@media print{
  body{background:#fff!important;color:#25211e!important}
  .sidebar,.main,.toast,.modal{display:none!important}
  .print-area{display:block!important}
  .print-part{page-break-after:always;padding:6mm 7mm 5mm;font-family:Arial,Helvetica,sans-serif;color:#292521;background:#fff}
  .print-part:last-child{page-break-after:auto}
  .print-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8mm;align-items:end;border-bottom:2px solid #b85f34;padding-bottom:4mm;margin-bottom:3mm}
  .print-brand p{margin:0 0 1.2mm;color:#b85f34;font-size:7.5px;font-weight:800;letter-spacing:.16em}
  .print-brand h1{margin:0;font-family:Georgia,serif;font-size:20px;font-weight:500;color:#26221f}
  .print-identity{display:flex;gap:3mm;flex-wrap:wrap;align-items:center;margin-top:2mm;font-size:8.5px;color:#655e57}
  .print-identity b{font-size:11px;color:#26221f}
  .print-identity span{padding-left:3mm;border-left:1px solid #d8d0c7}
  .print-kpis{display:grid;grid-template-columns:repeat(2,minmax(24mm,1fr));gap:1.5mm 3mm;font-size:7.5px;text-transform:uppercase;letter-spacing:.04em;color:#756d65}
  .print-kpis span{display:flex;align-items:baseline;gap:1mm;white-space:nowrap}
  .print-kpis b{font-family:Georgia,serif;font-size:14px;color:#2e2925}
  .print-route{display:flex;align-items:center;gap:2mm;margin:0 0 2.5mm;padding:2.2mm 3mm;background:#f2eee8;border-left:3px solid #302e2a;font-size:8px;color:#514b45}
  .print-route b{color:#26221f}.print-route span{margin-left:auto;color:#7c746c;font-style:italic}
  .print-linen-summary{display:grid;grid-template-columns:auto 1fr;gap:3mm;align-items:start;margin:0 0 3mm;padding:2.4mm 3mm;background:#fff7ed;border:1px solid #ead8c4;border-radius:2mm;font-size:7.8px;line-height:1.35}
  .print-linen-summary b{color:#8c461f;white-space:nowrap}.print-linen-summary span{color:#433d37}
  .print-work-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:7.4px;border:1px solid #cfc7be;border-radius:2mm;overflow:hidden}
  .print-work-table th{padding:2.1mm 1.5mm;background:#302e2a;color:#fff;border-right:1px solid #5a5550;font-size:6.8px;text-transform:uppercase;letter-spacing:.05em;text-align:left}
  .print-work-table th:last-child{border-right:0}
  .print-work-table td{padding:1.8mm 1.5mm;vertical-align:top;border-top:1px solid #ded7cf;border-right:1px solid #e7e1da;line-height:1.25;word-break:break-word}
  .print-work-table td:last-child{border-right:0}
  .print-work-table tbody tr:nth-child(even) td{background:#faf8f5}
  .print-work-table tr.print-sheet-change td{background:#fff8ec}
  .print-work-table tr.print-task-eos td:first-child,.print-work-table tr.print-task-exit td:first-child{border-left:3px solid #a9342c}
  .print-work-table tr.print-task-entry td:first-child{border-left:3px solid #3e7895}
  .print-work-table tr.print-task-client td:first-child{border-left:3px solid #4f7f5f}
  .print-check-col{width:7mm;text-align:center!important}.print-order-col{width:7mm;text-align:center!important}
  .print-check-cell,.print-order-cell{text-align:center!important;vertical-align:middle!important}
  .print-check-cell span{display:inline-block;width:4mm;height:4mm;border:1px solid #8f877f;border-radius:1mm;background:#fff}
  .print-room-cell{width:16mm}.print-room-cell b{display:block;font-family:Georgia,serif;font-size:13px;line-height:1;color:#2e2925}.print-room-cell small{display:block;margin-top:1mm;color:#756d65;font-size:6.3px}
  .print-task-badge{display:inline-block;padding:1.1mm 1.5mm;border-radius:1mm;font-size:6.3px;font-weight:900;text-transform:uppercase;letter-spacing:.035em}
  .print-task-badge.eos{background:#a9342c;color:#fff}.print-task-badge.exit{background:#f0d4d0;color:#7b2924}.print-task-badge.entry{background:#dcebf4;color:#245f7d}.print-task-badge.client{background:#e2eee5;color:#2f6946}.print-task-badge.other{background:#ece7e1;color:#5d554d}
  .print-linen-cell b,.print-linen-cell small{display:block}.print-linen-cell small{margin-top:.8mm;color:#514b45}.print-change{font-size:6.5px;text-transform:uppercase;letter-spacing:.04em}.print-change.yes{color:#974317}.print-change.no{color:#777067}
  .print-observation-cell{font-size:7px;color:#4f4943}
  .print-footer{display:grid;grid-template-columns:1fr auto;gap:5mm;align-items:end;margin-top:3mm;font-size:7px;color:#6f675f}
  .print-footer>div{display:grid;grid-template-columns:auto 1fr 1fr;gap:2mm;align-items:end}.print-footer>div span{display:block;border-bottom:1px solid #b8b0a8;height:4mm}
  .print-footer small{text-align:right;max-width:60mm}
  .print-work-table th:nth-child(3){width:17mm}.print-work-table th:nth-child(4){width:22mm}.print-work-table th:nth-child(5){width:22mm}.print-work-table th:nth-child(6){width:20mm}.print-work-table th:nth-child(7),.print-work-table th:nth-child(8){width:16mm}.print-work-table th:nth-child(9){width:38mm}
  @page{size:A4 landscape;margin:6mm}
}


/* v1.6.16 · rack semáforo, sábana destacada y alas corregidas */
.rack-dot.clean{background:#39a95b}
.rack-dot.reviewed{background:#176b3a}
.rack-dot.dirty{background:#d83b3b}
.rack-dot.reserved{background:#f1c94a}
.rack-dot.eos{background:#7b4bb3}
.rack-legend-linen{margin-left:auto;padding:5px 9px;border-radius:999px;background:#fff0bf;color:#6c4b00!important;border:1px solid #e1bd54;font-weight:900!important;letter-spacing:.035em}
.rack-clean{background:#ccefd6;color:#155d31;border-color:#73c38a}
.rack-reviewed{background:#176b3a;color:#fff;border-color:#0f512b}
.rack-dirty{background:#efb4b4;color:#7e1717;border-color:#d85f5f}
.rack-reserved{background:#f7df83;color:#594300;border-color:#d5ad2e}
.rack-eos{background:#8b5bc2;color:#fff;border-color:#684096}
.rack-review{background:#f4d68b;color:#5d4200;border-color:#d2a84d}
.rack-cleaning{background:#bce3e6;color:#155d63;border-color:#5daeb5}
.rack-paused{background:#f3d2a4;color:#744210;border-color:#d59a4e}
.rack-nodata{background:#e4e1dd;color:#6d6760;border-color:#c9c4bd}
.rack-room:before{opacity:.72}
.rack-linen-flag.yes{display:inline-flex;align-items:center;justify-content:center;margin-top:6px;padding:3px 6px;border-radius:999px;background:#ffcf3f;color:#4e3600;border:1px solid #b88400;box-shadow:0 1px 0 rgba(255,255,255,.45) inset;font-size:7px!important;line-height:1!important;font-weight:950;letter-spacing:.055em}
.rack-room.rack-eos .rack-linen-flag.yes,.rack-room.rack-reviewed .rack-linen-flag.yes{background:#ffe06c;color:#3f2c00;border-color:#d0a318}
@media(max-width:820px){.rack-legend-linen{margin-left:0}.rack-linen-flag.yes{font-size:6.5px!important}}
