:root { font-family:Inter,ui-sans-serif,system-ui,sans-serif; color:#17221e; background:#f5f2ea; --green:#244b3b; --line:#d8d5cc; --paper:#fffefa; }
* { box-sizing:border-box; }
[hidden] { display:none!important; }
body { margin:0; min-height:100vh; overflow-x:hidden; }
button,input,select,textarea,a.button { font:inherit; }
button,a.button { min-height:44px; border:1px solid var(--line); border-radius:.7rem; padding:.65rem .9rem; background:white; color:inherit; text-decoration:none; cursor:pointer; }
button.primary,a.button.primary { background:var(--green); color:white; border-color:var(--green); }
button.warning { border-color:#b77a1b; color:#754c0b; background:#fff5df; }
button:hover { filter:brightness(.98); }
.app-layout { min-height:100vh; }
.mobile-header { position:sticky; top:0; z-index:30; display:flex; gap:.8rem; align-items:center; padding:.75rem 1rem; background:var(--green); color:white; }
.mobile-header strong,.mobile-header small { display:block; }
.menu-button { min-width:44px; padding:.4rem; background:transparent; color:white; border-color:#ffffff55; font-size:1.3rem; }
.sidebar { position:fixed; inset:0 auto 0 0; z-index:40; width:250px; display:flex; flex-direction:column; padding:1.1rem .8rem; background:var(--green); color:white; transform:translateX(-100%); transition:transform .2s ease; box-shadow:8px 0 25px #0002; }
.sidebar.open { transform:translateX(0); }
.brand { padding:.5rem .6rem 1.1rem; border-bottom:1px solid #ffffff2d; margin-bottom:.7rem; }
.brand strong,.brand span,.brand small { display:block; }
.brand strong { font-size:1.25rem; }
.brand span { opacity:.85; }
.brand small { margin-top:.5rem; opacity:.7; overflow:hidden; text-overflow:ellipsis; }
.side-nav { display:grid; gap:.2rem; overflow-y:auto; }
.side-nav button,.signout { width:100%; text-align:left; border:0; background:transparent; color:white; }
.side-nav button.active { background:#ffffff20; font-weight:700; }
.signout { margin-top:auto; border:1px solid #ffffff44; }
.menu-scrim { position:fixed; inset:0; z-index:35; width:100%; height:100%; border:0; border-radius:0; background:#0007; }
.content { width:min(1050px,100%); margin:auto; padding:1rem 1rem 3rem; }
h1,h2,h3,h4,p { margin-top:0; }
section { margin-bottom:1.6rem; }
.hero { padding:1.5rem; border-radius:1rem; background:linear-gradient(135deg,#244b3b,#4f7463); color:white; }
.hero small { display:block; margin-top:.7rem; opacity:.8; }
.metrics,.actions,.split,.section-heading,.steps,.week-nav,.variance-list,.breadcrumb { display:flex; gap:.6rem; align-items:center; }
.metrics,.steps,.week-nav,.variance-list,.breadcrumb { flex-wrap:wrap; }
.metrics span,.steps span,.variance-list span { padding:.35rem .65rem; border-radius:999px; background:#edf0ee; font-size:.82rem; }
.hero .metrics span { background:#ffffff22; }
.section-heading,.split { justify-content:space-between; }
.section-heading { align-items:flex-start; }
.week-nav { justify-content:flex-start; margin:1rem 0; }
.week-nav strong { margin-right:auto; }
.breadcrumb { margin-bottom:.8rem; color:#66716b; font-size:.88rem; }
.breadcrumb>*+*::before { content:"›"; margin-right:.6rem; color:#9aa39f; }
.breadcrumb button { min-height:auto; padding:0; border:0; background:transparent; color:var(--green); }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:.8rem; }
.grid.wide { grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.card { display:flex; justify-content:space-between; gap:.8rem; align-items:center; padding:1rem; margin:.7rem 0; border:1px solid var(--line); border-radius:1rem; background:white; box-shadow:0 4px 16px #1d2d2510; }
.card.column { display:block; }
.card.compact { align-content:start; }
.grid .card { margin:0; }
.card h3 { margin:.35rem 0; }
.card p,.muted { color:#5b6761; margin-bottom:.35rem; }
.task.done,.changeover-step.done { opacity:.66; }
.booking-card button { margin-top:.8rem; }
.tag { display:inline-block; padding:.2rem .5rem; border-radius:999px; background:#e8ece9; font-size:.75rem; text-transform:capitalize; }
.tag.ready,.tag.passed,.tag.complete,.tag.completed { background:#d9f2df; color:#155724; }
.tag.not-ready,.tag.passed-with-exceptions,.tag.high { background:#fff0cf; color:#745000; }
.tag.failed,.tag.urgent,.tag.undone { background:#f9d7d7; color:#842029; }
.steps { margin-top:.8rem; }
.steps span.complete { background:#d9f2df; }
.changeover-list { display:grid; gap:.6rem; }
.changeover-step { display:grid; grid-template-columns:42px 1fr auto; }
.step-number { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; background:#edf0ee; font-weight:700; }
.grow { min-width:0; }
.guest-flow { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:.8rem; align-items:stretch; margin:.9rem 0; }
.guest-flow-large { margin:1.1rem 0; }
.guest-block { display:flex; flex-direction:column; justify-content:center; gap:.2rem; min-height:78px; padding:.8rem; border:1px solid var(--line); border-radius:.8rem; background:#fafbf9; }
.guest-block small { color:#66716b; text-transform:uppercase; letter-spacing:.06em; font-size:.72rem; }
.guest-block strong { font-size:1.05rem; }
.guest-block span { color:#66716b; font-size:.85rem; }
.guest-arrow { align-self:center; font-size:1.4rem; color:#78857f; }
.guest-admin { margin-top:1rem; }
.guest-editors { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:.8rem; margin-top:.8rem; }
.guest-name-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.6rem; align-items:end; padding:.8rem; border:1px solid var(--line); border-radius:.8rem; background:#fafbf9; }
.guest-name-form label { display:grid; gap:.35rem; min-width:0; }
.guest-name-form input { width:100%; min-height:44px; padding:.65rem; border:1px solid var(--line); border-radius:.6rem; background:white; }
.hierarchy-root { display:grid; gap:1.3rem; }
.hierarchy-branch { border-left:3px solid #cad8d0; padding-left:1rem; }
.hierarchy-label { margin:1.3rem 0 .7rem; font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; font-weight:800; color:#607169; }
.hierarchy-card { position:relative; }
.form,.settings-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(155px,1fr)); gap:.8rem; align-items:end; }
.form label,.settings-grid label,.card>label { display:grid; gap:.35rem; width:100%; }
.form input,.form select,.form textarea,.settings-grid input,.settings-grid select,.card>label input,.card>label textarea { width:100%; min-height:44px; padding:.65rem; border:1px solid var(--line); border-radius:.6rem; background:white; }
.form textarea { resize:vertical; }
.form .check,.settings-grid .check,.weekday-grid .check,.assignment-grid .check { display:flex; align-items:center; gap:.5rem; align-self:center; }
.form .check input,.settings-grid .check input,.weekday-grid .check input,.assignment-grid .check input { width:auto; min-height:auto; }
.readonly-form input:disabled,.readonly-form select:disabled,.readonly-form textarea[readonly] { background:#f0f1ee; color:#59635e; opacity:1; }
.span-all { grid-column:1/-1; }
.checklist { border:1px solid var(--line); border-radius:.8rem; padding:.8rem; }
.checklist-row { display:flex!important; grid-template-columns:none!important; gap:.7rem!important; align-items:center; padding:.55rem 0; border-bottom:1px solid #eee; }
.checklist-row:last-child { border-bottom:0; }
.checklist-row input { width:22px!important; height:22px; min-height:auto!important; }
.weekday-grid,.assignment-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:.5rem; }
.checklist-config { margin:1rem 0; padding:1rem; border:1px solid var(--line); border-radius:.9rem; background:#fafbf9; }
.checklist-config fieldset { margin:.8rem 0; padding:.8rem; border:1px solid var(--line); border-radius:.7rem; }
.settings-menu { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:.8rem; }
.settings-tile { min-height:120px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; text-align:left; padding:1rem; }
.settings-tile strong { font-size:1.05rem; margin-bottom:.35rem; }
.settings-tile span { color:#64716b; }
.operational-schedule { display:grid!important; gap:1rem; }
.schedule-laundry { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; }
.schedule-laundry label,.schedule-vertical label { display:grid; gap:.35rem; width:100%; }
.schedule-laundry input,.schedule-laundry select,.schedule-vertical input,.schedule-vertical select { width:100%; min-height:44px; padding:.65rem; border:1px solid var(--line); border-radius:.6rem; background:white; }
.schedule-group { margin:0; padding:1rem; border:1px solid var(--line); border-radius:.9rem; background:#fafbf9; }
.schedule-group h2 { margin-bottom:.8rem; }
.schedule-group fieldset { margin:0 0 .9rem; padding:.8rem; border:1px solid var(--line); border-radius:.7rem; }
.schedule-vertical { display:grid; grid-template-columns:1fr; gap:.8rem; max-width:480px; }
.reconciliation { margin-bottom:1rem; }
.count-table-wrap { overflow-x:auto; margin:.9rem 0 1rem; border:1px solid var(--line); border-radius:.8rem; }
.count-table { width:100%; min-width:430px; border-collapse:collapse; background:white; }
.count-table th,.count-table td { padding:.65rem .75rem; border-bottom:1px solid var(--line); text-align:left; }
.count-table thead th { background:#f2f4f1; color:#53615a; font-size:.82rem; text-transform:uppercase; letter-spacing:.04em; }
.count-table tbody tr:last-child th,.count-table tbody tr:last-child td { border-bottom:0; }
.count-table tbody th { width:50%; font-weight:600; }
.count-table td { width:25%; }
.count-table input { width:100%; min-width:76px; min-height:40px; padding:.45rem; border:1px solid var(--line); border-radius:.45rem; }
.count-table input:disabled { background:#f0f1ee; color:#59635e; opacity:1; }
.warning-note { background:#fff5df!important; }
.linen-table { overflow-x:auto; margin:.7rem 0 1rem; border:1px solid var(--line); border-radius:.7rem; }
.linen-row { display:flex; min-width:560px; gap:.5rem; align-items:center; padding:.5rem; border-bottom:1px solid var(--line); }
.linen-row:last-child { border-bottom:0; }
.linen-row>* { flex:1; min-width:90px; }
.linen-row>*:first-child { flex:1.5; min-width:150px; }
.linen-row input { min-height:40px; width:100%; padding:.45rem; border:1px solid var(--line); border-radius:.45rem; }
.contact-detail { max-width:650px; }
.contact-detail dl { display:grid; grid-template-columns:150px 1fr; gap:.55rem 1rem; margin:1rem 0; }
.contact-detail dt { font-weight:700; color:#5c6962; }
.contact-detail dd { margin:0; }
.notice { padding:.7rem 1rem; border-radius:.7rem; background:#d9f2df; }
.empty { color:#66716b; }
.login { min-height:100vh; display:grid; place-content:center; text-align:center; max-width:420px; margin:auto; padding:1rem; }
.login img { width:100px; margin:0 auto 1rem; }
@media (min-width:800px) {
  .mobile-header { display:none; }
  .sidebar { transform:none; box-shadow:none; }
  .content { margin-left:250px; width:min(1050px,calc(100% - 250px)); padding:1.4rem 1.6rem 3rem; }
  .menu-scrim { display:none; }
}
@media (max-width:620px) {
  .section-heading { display:block; }
  .section-heading>.primary { margin-bottom:.8rem; }
  .changeover-step { grid-template-columns:34px 1fr; }
  .changeover-step>button { grid-column:1/-1; }
  .week-nav strong { flex-basis:100%; order:-1; }
  .guest-flow { grid-template-columns:1fr; }
  .guest-arrow { transform:rotate(90deg); justify-self:center; }
  .guest-name-form { grid-template-columns:1fr; }
  .schedule-laundry { grid-template-columns:1fr; }
  .contact-detail dl { grid-template-columns:1fr; gap:.2rem; }
  .contact-detail dd { margin-bottom:.7rem; }
}
