:root{--bg:#f3f6fb;--panel:#fff;--ink:#172033;--muted:#6f7890;--line:#e4e9f2;--primary:#3157d5;--primary2:#6c4df6;--green:#14966f;--red:#d94a56;--orange:#d67a19;--yellow:#a67b00;--purple:#7a4bd6;--shadow:0 12px 35px rgba(27,39,78,.08);--radius:16px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.muted{color:var(--muted)}.small{font-size:.86rem}.nowrap{white-space:nowrap}.text-right{text-align:right}.hidden{display:none!important}
.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{background:#111a2e;color:#dbe4ff;padding:22px 16px;position:sticky;top:0;height:100vh;overflow:auto}.brand{display:flex;gap:12px;align-items:center;padding:2px 8px 22px}.brand-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--primary2));display:grid;place-items:center;color:#fff;font-weight:800;box-shadow:0 8px 24px rgba(86,76,230,.35)}.brand strong{display:block;color:#fff}.brand small{color:#8fa0c7}.nav-section{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:#7586ad;margin:18px 12px 8px}.nav-link{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:11px;color:#afbad5;margin:3px 0;font-size:.94rem}.nav-link:hover,.nav-link.active{background:#202d4d;color:#fff}.nav-icon{width:22px;text-align:center}.sidebar-bottom{margin-top:24px;border-top:1px solid #2b3857;padding-top:14px}.user-chip{display:flex;gap:10px;align-items:center;padding:10px}.avatar{width:38px;height:38px;border-radius:50%;background:#30405f;display:grid;place-items:center;color:#fff;font-weight:700}.main{min-width:0}.topbar{height:72px;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:15}.topbar h1{font-size:1.2rem;margin:0}.topbar-actions{display:flex;align-items:center;gap:10px}.content{padding:26px 28px 60px;max-width:1700px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head h2{margin:0 0 6px;font-size:1.65rem}.page-head p{margin:0;color:var(--muted)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:20px}.card-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.card-head h3{margin:0;font-size:1rem}.card-body{padding:20px}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-bottom:20px}.stat-card{padding:18px;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:var(--shadow);position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;right:-18px;bottom:-24px;width:90px;height:90px;border-radius:50%;background:linear-gradient(135deg,rgba(49,87,213,.12),rgba(108,77,246,.05))}.stat-label{color:var(--muted);font-size:.84rem}.stat-value{font-size:1.8rem;font-weight:800;margin-top:7px}.stat-note{font-size:.78rem;color:var(--muted);margin-top:5px}.stat-icon{position:absolute;right:16px;top:16px;font-size:1.2rem}
.btn{border:0;border-radius:10px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-weight:650;transition:.15s ease;background:#edf1f7;color:#33405b}.btn:hover{transform:translateY(-1px);filter:brightness(.98)}.btn.primary{background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;box-shadow:0 8px 20px rgba(49,87,213,.22)}.btn.success{background:#dff5ed;color:#08795a}.btn.danger{background:#fee8ea;color:#b72d3a}.btn.warning{background:#fff1d8;color:#9a5c09}.btn.outline{background:#fff;border:1px solid var(--line)}.btn.sm{padding:7px 10px;font-size:.82rem}.btn.wide{width:100%}.btn.icon{width:40px;height:40px;padding:0}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}label{display:flex;flex-direction:column;gap:7px;font-size:.86rem;font-weight:650;color:#3b4660}input,select,textarea{width:100%;border:1px solid #d9dfeb;border-radius:10px;padding:10px 12px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#6e86e7;box-shadow:0 0 0 3px rgba(49,87,213,.11)}textarea{min-height:90px;resize:vertical}label small{font-weight:400;color:var(--muted)}.input-row{display:flex;gap:9px}.input-row>*{flex:1}.form-actions{display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--line);padding-top:18px;margin-top:6px}.checkbox{display:flex;flex-direction:row;align-items:center;gap:8px}.checkbox input{width:auto}.searchbar{display:flex;gap:10px;align-items:end}.searchbar label{min-width:190px}.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:end}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th{font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:#788198;text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);background:#f9fbfe}.table td{padding:13px 14px;border-bottom:1px solid #eef1f6;vertical-align:middle;font-size:.9rem}.table tr:hover td{background:#fbfcff}.table tr:last-child td{border-bottom:0}.actions{display:flex;gap:6px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:.75rem;font-weight:750;text-transform:capitalize}.badge.green{background:#dff6ed;color:#087a59}.badge.red{background:#fee5e7;color:#b82f3a}.badge.blue{background:#e4ebff;color:#3157d5}.badge.gray{background:#eef0f4;color:#626a7e}.badge.orange{background:#fff0dc;color:#a9610b}.badge.yellow{background:#fff7d6;color:#887000}.badge.purple{background:#efe7ff;color:#6c42ba}
.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.room-card{border:1px solid var(--line);border-radius:14px;background:#fff;padding:15px;position:relative;transition:.15s ease}.room-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.room-card.available{border-left:5px solid var(--green)}.room-card.occupied{border-left:5px solid var(--red)}.room-card.cleaning{border-left:5px solid var(--orange)}.room-card.maintenance,.room-card.out_of_service{border-left:5px solid #747b8c}.room-card.closed{border-left:5px solid #6c42ba;background:#fbf9ff}.room-card.interactive{cursor:pointer}.room-card.interactive:focus-visible{outline:3px solid rgba(49,87,213,.25);outline-offset:2px}.room-click-hint{font-size:.7rem;color:var(--primary);font-weight:750;margin-top:9px}.room-guest-list{display:flex;flex-direction:column;gap:3px;margin-top:10px;padding:9px 10px;border-radius:10px;background:#f7f9fc;font-size:.82rem;font-weight:750;line-height:1.3}.room-guest-list span:before{content:"•";margin-right:6px;color:var(--primary)}.room-booking-meta{margin:7px 0 0}.closure-preview{margin:10px 0 0}.closure-detail{padding:14px;border:1px solid var(--line);border-radius:12px;background:#f9fbfe;margin:14px 0;line-height:1.65}.closure-form{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.checkbox-line{display:flex!important;align-items:center;gap:9px}.checkbox-line input{width:auto}.required-star{color:var(--red)}.room-card h4{margin:0 0 5px;font-size:1rem}.room-meta{font-size:.78rem;color:var(--muted);display:flex;justify-content:space-between;margin-top:10px}.room-card input[type=checkbox]{position:absolute;right:13px;top:13px;width:18px;height:18px}.accommodation-group{margin-bottom:22px}.accommodation-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 10px}.accommodation-title h3{font-size:1rem;margin:0}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}.legend span:before{content:"";width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:5px;background:var(--green)}.legend .l-red:before{background:var(--red)}.legend .l-orange:before{background:var(--orange)}.legend .l-gray:before{background:#747b8c}.legend .l-purple:before{background:#6c42ba}
.timeline-list{display:flex;flex-direction:column;gap:10px}.timeline-item{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px}.timeline-date{min-width:66px;padding:6px;border-radius:9px;background:#f1f4fa;text-align:center;font-size:.75rem;font-weight:700}.timeline-content{flex:1}.timeline-content strong{display:block;margin-bottom:3px}.occupancy-bar{height:10px;background:#edf0f5;border-radius:99px;overflow:hidden}.occupancy-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary2));border-radius:99px}.progress-label{display:flex;justify-content:space-between;font-size:.8rem;margin-bottom:6px}
.alert{padding:12px 14px;border-radius:11px;margin-bottom:15px}.alert.success{background:#e3f7ef;color:#087859}.alert.danger{background:#fee8ea;color:#a92834}.alert.warning{background:#fff3de;color:#965b09}.alert.info{background:#e8efff;color:#2e55c2}.empty{padding:45px 20px;text-align:center;color:var(--muted)}
.modal{position:fixed;inset:0;background:rgba(13,20,38,.55);display:none;align-items:center;justify-content:center;padding:20px;z-index:50}.modal.open{display:flex}.modal-card{background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.25);max-width:720px;width:100%;max-height:90vh;overflow:auto}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-head h3{margin:0}.modal-body{padding:20px}
.login-body,.install-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 10%,#dbe5ff 0,transparent 30%),radial-gradient(circle at 90% 85%,#e9ddff 0,transparent 28%),#f4f7fc}.login-card,.install-card{width:min(480px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 25px 70px rgba(32,47,88,.15);padding:30px}.install-card{width:min(760px,100%)}.login-card .brand-mark,.install-card>.brand-mark{margin-bottom:18px}.login-card h1,.install-card h1{margin:0 0 8px}.login-card form{margin-top:22px;display:grid;gap:16px}
.invoice-paper{max-width:950px;margin:20px auto;background:#fff;padding:45px;box-shadow:var(--shadow)}.invoice-head{display:flex;justify-content:space-between;gap:30px}.invoice-logo{max-width:180px;max-height:80px;object-fit:contain}.invoice-totals{margin-left:auto;width:360px}.invoice-totals td{padding:7px}.invoice-totals tr:last-child{font-size:1.15rem;font-weight:800;border-top:2px solid var(--ink)}
.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:18px}.tab{padding:10px 14px;border-bottom:3px solid transparent;color:var(--muted);font-weight:650}.tab.active{border-color:var(--primary);color:var(--primary)}.metric-table td:last-child{text-align:right;font-weight:700}.calendar-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day-tile{border:1px solid var(--line);padding:11px;border-radius:11px;text-align:center}.day-tile strong{display:block}.day-tile.today{border-color:var(--primary);background:#edf2ff}
.mobile-menu{display:none}.print-only{display:none}
@media(max-width:1200px){.stats{grid-template-columns:repeat(3,1fr)}.grid-4,.grid-5{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;z-index:30;width:260px;transition:.2s}.sidebar.open{left:0}.mobile-menu{display:inline-flex}.topbar{padding:0 16px}.content{padding:20px 15px 50px}.stats{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3,.form-grid,.form-grid-3{grid-template-columns:1fr}.span-2,.span-3{grid-column:span 1}.page-head{align-items:flex-start;flex-direction:column}.topbar-actions .hide-mobile{display:none}}
@media(max-width:560px){.stats{grid-template-columns:1fr}.grid-4,.grid-5{grid-template-columns:1fr}.room-grid{grid-template-columns:1fr}.searchbar{flex-direction:column;align-items:stretch}.searchbar label{min-width:0}.login-card,.install-card{padding:22px}.invoice-paper{padding:20px}}
@media print{body{background:#fff}.no-print,.sidebar,.topbar{display:none!important}.app-shell{display:block}.content{padding:0}.card,.invoice-paper{box-shadow:none;border:0}.print-only{display:block}.invoice-paper{margin:0;max-width:none}.table th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}


/* Daily operational printouts */
.report-group{margin-bottom:18px}.report-print-header{display:none}.report-signatures{display:none}.report-stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.sign-cell{min-width:120px;height:36px}.nowrap{white-space:nowrap}
@media print{
  @page{size:A4;margin:11mm}
  body{font-size:10pt;color:#111}
  .report-print-header{display:flex!important;align-items:flex-start;justify-content:space-between;border-bottom:2px solid #222;padding-bottom:10px;margin-bottom:14px}
  .report-print-header h1{font-size:17pt;margin:0 0 4px}.report-print-header h2{font-size:13pt;margin:0 0 3px}.report-print-header p{margin:0}.report-print-header img{max-width:150px;max-height:62px;object-fit:contain}
  .report-stats{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:6px;margin-bottom:12px}.report-stats .stat-card{padding:8px;border:1px solid #bbb;box-shadow:none;border-radius:5px}.report-stats .stat-card:after{display:none}.report-stats .stat-label{font-size:7.5pt}.report-stats .stat-value{font-size:14pt;margin-top:2px}
  .report-group{margin-bottom:12px;border:1px solid #aaa!important;border-radius:0!important;break-inside:auto}.report-group .card-head{padding:7px 9px;background:#ececec!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-group .card-head h3{font-size:10pt}
  .report-group .table{font-size:8pt}.report-group .table th{font-size:6.8pt;padding:5px 6px}.report-group .table td{font-size:8pt;padding:5px 6px;vertical-align:top}.report-group .badge{font-size:6.5pt;padding:2px 5px}
  .daily-report-table td:nth-child(4){max-width:190px}.housekeeping-print-table td:nth-child(6){max-width:150px}
  .report-signatures{display:flex!important;justify-content:space-between;gap:20px;margin-top:22px;padding-top:12px;border-top:1px solid #777;font-size:9pt;break-inside:avoid}
  .keep-together{break-inside:avoid}.table tr{break-inside:avoid}.table-wrap{overflow:visible}
}
