:root{
    --bg:#FAF7F1; --surface:#FFFFFF; --surface-alt:#F1ECE1; --border:#E3DCCB;
    --ink:#1E2A22; --ink-muted:#5E6B60; --ink-faint:#96A093;
    --accent:#0E7C86; --accent-strong:#0A5B63; --accent-soft:#DCEEEE; --accent-ink:#063A40;
    --ok:#2F8F5B; --ok-soft:#E1F3E7; --warn:#B9791A; --warn-soft:#FBEED9;
    --danger:#C1443A; --danger-soft:#FBE3E0; --info:#3568B0; --info-soft:#E4EBF7;
    --shadow:0 1px 2px rgba(30,42,34,.07),0 10px 28px -14px rgba(30,42,34,.28);
    --r-sm:6px; --r-md:10px; --r-lg:16px;
    --font-display:'Fraunces',Georgia,serif; --font-body:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
    --font-mono:'IBM Plex Mono','SFMono-Regular',Menlo,monospace;
    --scroll-track:var(--surface-alt);
    --scroll-thumb:#D4CBB8;
    --scroll-thumb-hover:#B8AE98;
    color-scheme: light;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --bg:#121815; --surface:#1A2320; --surface-alt:#212B26; --border:#303C36;
      --ink:#ECEFE9; --ink-muted:#A8B3AB; --ink-faint:#6F7A72;
      --accent:#45BEC6; --accent-strong:#6ED2D8; --accent-soft:#123638; --accent-ink:#BDEEF0;
      --ok:#55BE87; --ok-soft:#123422; --warn:#DDA24C; --warn-soft:#3A2A10;
      --danger:#E4796F; --danger-soft:#3A1815; --info:#7CA3DD; --info-soft:#16233A;
      --shadow:0 1px 2px rgba(0,0,0,.5),0 10px 28px -14px rgba(0,0,0,.7);
      --scroll-track:var(--surface);
      --scroll-thumb:#3A4840;
      --scroll-thumb-hover:#5A6A60;
      color-scheme: dark;
    }
  }
  :root[data-theme="dark"]{
    --bg:#121815; --surface:#1A2320; --surface-alt:#212B26; --border:#303C36;
    --ink:#ECEFE9; --ink-muted:#A8B3AB; --ink-faint:#6F7A72;
    --accent:#45BEC6; --accent-strong:#6ED2D8; --accent-soft:#123638; --accent-ink:#BDEEF0;
    --ok:#55BE87; --ok-soft:#123422; --warn:#DDA24C; --warn-soft:#3A2A10;
    --danger:#E4796F; --danger-soft:#3A1815; --info:#7CA3DD; --info-soft:#16233A;
    --shadow:0 1px 2px rgba(0,0,0,.5),0 10px 28px -14px rgba(0,0,0,.7);
    --scroll-track:var(--surface);
    --scroll-thumb:#3A4840;
    --scroll-thumb-hover:#5A6A60;
    color-scheme: dark;
  }
  :root[data-theme="light"]{
    color-scheme: light;
  }
  *,*::before,*::after{box-sizing:border-box}
  html,body{height:100%}
  body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}

  /* Soft theme-matched scrollbars */
  *{
    scrollbar-width:thin;
    scrollbar-color:var(--scroll-thumb) transparent;
  }
  *::-webkit-scrollbar{width:8px;height:8px}
  *::-webkit-scrollbar-track{background:transparent;border-radius:999px}
  *::-webkit-scrollbar-thumb{
    background:var(--scroll-thumb);
    border-radius:999px;
    border:2px solid transparent;
    background-clip:padding-box;
  }
  *::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover);border:2px solid transparent;background-clip:padding-box}
  *::-webkit-scrollbar-corner{background:transparent}
  #sidebar::-webkit-scrollbar-track,
  #content::-webkit-scrollbar-track,
  .tablewrap::-webkit-scrollbar-track,
  .modal-card::-webkit-scrollbar-track{background:var(--scroll-track)}

  h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;margin:0;text-wrap:balance;color:var(--ink)}
  a{color:var(--accent-strong)}
  button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
  table{border-collapse:collapse}
  ::selection{background:var(--accent-soft)}
  .tnum{font-variant-numeric:tabular-nums}
  .mono{font-family:var(--font-mono)}

  #app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
  #navscrim{display:none}
  .nav-close,
  .btn.nav-close{display:none}
  .nav-toggle{display:none;align-items:center;justify-content:center;width:36px;height:36px;padding:0;flex-shrink:0}
  .btn.nav-toggle{display:none}
  .nav-toggle-bars,
  .nav-toggle-bars::before,
  .nav-toggle-bars::after{
    display:block;width:16px;height:2px;background:currentColor;border-radius:2px;position:relative;
  }
  .nav-toggle-bars::before,
  .nav-toggle-bars::after{content:"";position:absolute;left:0}
  .nav-toggle-bars::before{top:-5px}
  .nav-toggle-bars::after{top:5px}
  .brand-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
  .topbar-left{display:flex;align-items:center;gap:10px;min-width:0}
  .topbar-title{min-width:0}
  .show-sm{display:none !important}

  #sidebar{background:var(--surface-alt);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:40}
  .brand{padding:20px 20px 14px}
  .brand .mark{font-family:var(--font-display);font-size:20px;font-weight:650;line-height:1.15;color:var(--accent-ink)}
  .brandlogo{display:block;width:100%;max-width:200px;height:auto;background:#fff;border-radius:8px;padding:6px 8px}
  .brand .tag{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);margin-top:4px}
  .propbar{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 14px}
  .chip{border:1px solid var(--border);background:var(--surface);color:var(--ink-muted);padding:4px 10px;border-radius:999px;font-size:12px;cursor:pointer;white-space:nowrap}
  .chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
  .chipdivider{flex-basis:100%;height:1px;background:var(--border);margin:2px 0}
  nav.navlist{padding:6px 10px;display:flex;flex-direction:column;gap:2px;flex:1}
  .navgroup-label{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding:14px 10px 4px}
  .navitem{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer;color:var(--ink-muted);font-size:13.5px;font-weight:500;border:1px solid transparent}
  .navitem:hover{background:var(--surface);color:var(--ink)}
  .navitem[aria-current="true"],
  .navitem[aria-current="page"]{background:var(--surface);color:var(--accent-ink);border-color:var(--border);box-shadow:var(--shadow)}
  .navitem .ic{width:16px;text-align:center;opacity:.85;font-size:14px}
  .sidebar-foot{padding:12px 16px 18px;border-top:1px solid var(--border);font-size:11.5px;color:var(--ink-faint)}

  #main{min-width:0;display:flex;flex-direction:column}
  #topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 26px;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:30}
  #topbar h2{font-size:19px}
  .topbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
  .staffbadge{display:flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface);padding:5px 12px 5px 6px;border-radius:999px;cursor:pointer}
  .staffbadge .dot{width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}
  .todaytag{font-size:12px;color:var(--ink-muted)}
  #content{padding:22px 26px 60px;flex:1;min-width:0}

  @media (max-width:900px){
    #app{grid-template-columns:1fr}
    #navscrim{
      display:block;position:fixed;inset:0;background:rgba(20,28,24,.42);z-index:35;
    }
    #navscrim[hidden]{display:none !important}
    #sidebar{
      position:fixed;top:0;left:0;bottom:0;width:min(300px,88vw);height:100vh;
      transform:translateX(-105%);transition:transform .22s ease;z-index:40;
      box-shadow:none;border-right:1px solid var(--border);
    }
    #app.nav-open #sidebar{transform:translateX(0);box-shadow:var(--shadow)}
    body.nav-open{overflow:hidden}
    .nav-toggle,
    .btn.nav-toggle{display:inline-flex}
    .nav-close,
    .btn.nav-close{display:inline-flex;flex-shrink:0}
    #topbar{padding:12px 14px;gap:10px}
    #topbar h2{font-size:17px}
    #content{padding:16px 14px 48px}
    .topbar-right{gap:6px}
    .hide-sm{display:none !important}
    .show-sm{display:inline !important}
    .staffbadge span:not(.dot){display:none}
    .staffbadge{padding:5px}
    .propbar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:10px}
    .chipdivider{display:none}
    .g-stats,.g-stats-5{grid-template-columns:repeat(2,1fr)}
    .g-2{grid-template-columns:1fr}
    .modal-backdrop{padding:12px;align-items:flex-start}
    .modal-card{width:100%;max-height:calc(100vh - 24px);margin:0;border-radius:12px;padding:16px}
    .calgrid{min-width:780px}
    .calrow{grid-template-columns:112px repeat(var(--ndays),minmax(48px,1fr))}
    .roomlabel{padding:8px 8px;font-size:11.5px;line-height:1.25}
    .roomlabel .t{font-size:10px}
    .bookbar{font-size:10px;padding:3px 5px}
    .calrow.head .calcell{font-size:10px;padding:8px 4px}
    .barrow{grid-template-columns:90px 1fr auto;gap:8px}
  }

  @media (max-width:640px){
    .searchbox{min-width:0;width:100%;max-width:100%}
    .rowflex .filters,.page-toolbar .filters,.page-toolbar .toolbar-filters{width:100%}
    .rowflex,.page-toolbar{align-items:stretch}
  }

  @media (max-width:520px){
    .g-stats,.g-stats-5{grid-template-columns:1fr 1fr}
    .stat .val{font-size:22px}
    .formgrid{grid-template-columns:1fr}
    .tabs{gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:2px}
    .tab{margin-right:12px;flex-shrink:0}
    .btn{white-space:normal}
    .related-actions{max-width:100%}
  }

  .btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--ink);padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
  .btn:hover{border-color:var(--ink-faint)}
  .btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
  .btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}
  .btn-danger{color:var(--danger);border-color:var(--danger-soft)}
  .btn-danger:hover{background:var(--danger-soft)}
  .btn-ghost{border-color:transparent;background:transparent}
  .btn-ghost:hover{background:var(--surface-alt)}
  .btn-sm{padding:5px 10px;font-size:12px}
  .btn:disabled{opacity:.5;cursor:not-allowed}

  .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px}
  .cardhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
  .cardhead h3{font-size:15.5px}
  .grid{display:grid;gap:16px}
  .g-stats{grid-template-columns:repeat(4,1fr)}
  .g-stats-5{grid-template-columns:repeat(5,1fr)}
  .g-2{grid-template-columns:1.3fr 1fr}
  @media (max-width:980px){.g-stats-5{grid-template-columns:repeat(3,1fr)}}
  @media (max-width:760px){.g-stats,.g-stats-5{grid-template-columns:repeat(2,1fr)}}
  @media (max-width:900px){.g-2{grid-template-columns:1fr}}

  .stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 18px}
  .stat .lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}
  .stat .val{font-family:var(--font-display);font-size:28px;font-weight:600;margin-top:6px}
  .stat .sub{font-size:12px;color:var(--ink-faint);margin-top:2px}

  table.tbl{width:100%;font-size:13px}
  .tblwrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md)}
  .tblwrap table{min-width:100%}
  table.tbl th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-muted);background:var(--surface-alt);padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
  table.tbl td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
  table.tbl tr:last-child td{border-bottom:none}
  table.tbl tbody tr:hover{background:var(--surface-alt)}
  table.tbl tfoot td{font-weight:700;background:var(--surface-alt)}

  .pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:600}
  .pill-ok{background:var(--ok-soft);color:var(--ok)}
  .pill-warn{background:var(--warn-soft);color:var(--warn)}
  .pill-danger{background:var(--danger-soft);color:var(--danger)}
  .pill-info{background:var(--info-soft);color:var(--info)}
  .pill-muted{background:var(--surface-alt);color:var(--ink-muted)}

  .tabs{display:flex;align-items:flex-end;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;flex-wrap:wrap}
  .tab{
    appearance:none;-webkit-appearance:none;
    display:inline-flex;align-items:center;
    background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;
    box-shadow:none;outline:none;
    padding:10px 2px 11px;margin:0 16px -1px 0;
    font:inherit;font-size:13.5px;font-weight:600;line-height:1.2;
    color:var(--ink-muted);cursor:pointer;white-space:nowrap;
  }
  .tab:hover{color:var(--ink)}
  .tab[aria-selected="true"]{color:var(--accent-ink);border-bottom-color:var(--accent)}
  .tab:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

  .field{display:flex;flex-direction:column;gap:5px}
  .field label{font-size:12px;font-weight:600;color:var(--ink-muted)}
  .field .hint{font-size:11px;color:var(--ink-faint)}
  .field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 10px;background:var(--surface);color:var(--ink);width:100%}
  .field input:focus,.field select:focus,.field textarea:focus,button:focus-visible,.navitem:focus-visible,.chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .field textarea{resize:vertical;min-height:60px}
  .formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .formgrid .span2{grid-column:1/-1}
  @media (max-width:520px){.formgrid{grid-template-columns:1fr}}

  .empty{border:1.5px dashed var(--border);border-radius:var(--r-lg);padding:36px 20px;text-align:center;color:var(--ink-muted)}
  .empty .big{font-size:26px;margin-bottom:6px}
  .empty p{margin:6px 0 14px;font-size:13px}

  #modalwrap{position:fixed;inset:0;background:rgba(20,26,22,.45);display:none;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:50;overflow-y:auto}
  #modalwrap.open{display:flex}
  .modal{background:var(--surface);border-radius:var(--r-lg);border:1px solid var(--border);box-shadow:var(--shadow);width:100%;max-width:560px;padding:22px 24px 24px}
  .modal.wide{max-width:760px}
  .modalhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
  .modalhead h3{font-size:17px}
  .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}
  .iconbtn{border:none;background:transparent;color:var(--ink-faint);cursor:pointer;font-size:18px;line-height:1;padding:2px 6px;border-radius:6px}
  .iconbtn:hover{background:var(--surface-alt);color:var(--ink)}

  #toasts{position:fixed;bottom:18px;right:18px;display:flex;flex-direction:column;gap:8px;z-index:60}
  .toast{background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:var(--r-sm);font-size:13px;box-shadow:var(--shadow);max-width:320px}

  .calwrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface);-webkit-overflow-scrolling:touch}
  .calgrid{display:grid;min-width:900px}
  .calrow{display:grid;grid-template-columns:150px repeat(var(--ndays),minmax(52px,1fr));border-bottom:1px solid var(--border)}
  .calrow:last-child{border-bottom:none}
  .calrow.head{position:sticky;top:0;background:var(--surface-alt);z-index:6;font-size:11px;color:var(--ink-muted)}
  .calcell{border-right:1px solid var(--border);padding:7px 6px;min-height:44px;position:relative;overflow:visible;z-index:0}
  .calcell:last-child{border-right:none}
  .calrow.head .calcell{padding:8px 6px;font-weight:600;text-align:center;white-space:nowrap;z-index:6}
  .calrow.head .calcell.calcorner,
  .calrow.head .calcell:first-child{
    position:sticky;left:0;z-index:7;background:var(--surface-alt);
    box-shadow:4px 0 8px -4px rgba(0,0,0,.18);
  }
  .roomlabel{
    display:flex;flex-direction:column;justify-content:center;padding:8px 10px;
    font-size:12.5px;font-weight:600;background:var(--surface);
    position:sticky;left:0;z-index:5;border-right:1px solid var(--border);
    box-shadow:4px 0 8px -4px rgba(0,0,0,.18);
  }
  .roomlabel .t{font-weight:400;color:var(--ink-muted);font-size:11px}
  .daycell{cursor:pointer;z-index:0}
  .daycell:hover{background:var(--surface-alt)}
  .daycell.today{background:var(--accent-soft)}
  .bookbar{
    position:absolute;top:5px;bottom:5px;left:2px;border-radius:5px;font-size:11px;padding:3px 6px;
    color:#fff;display:flex;align-items:center;overflow:hidden;white-space:nowrap;cursor:pointer;
    font-weight:600;z-index:1;box-sizing:border-box;min-width:calc(100% - 4px);
    pointer-events:auto;
  }
  .barchart{display:flex;flex-direction:column;gap:10px}
  .barrow{display:grid;grid-template-columns:130px 1fr auto;align-items:center;gap:10px;font-size:12.5px}
  .bartrack{background:var(--surface-alt);border-radius:5px;height:10px;overflow:hidden}
  .barfill{height:100%;background:var(--accent);border-radius:5px}

  #staffgate{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}
  #staffgate .box{max-width:380px;width:100%;text-align:center}
  #staffgate .box h1{font-size:24px;margin-bottom:6px}
  #staffgate .box p{color:var(--ink-muted);font-size:13.5px;margin-bottom:18px}

  #printview{display:none}
  @media print{
    body > *:not(#printview){display:none !important}
    #printview{display:block !important;padding:30px;max-width:760px;margin:0 auto}
    #staffgate,.modal-backdrop,#toasts{display:none !important}
  }
  #printview .pv-head{display:flex;justify-content:space-between;border-bottom:2px solid #222;padding-bottom:14px;margin-bottom:18px}
  #printview table{width:100%;border-collapse:collapse;margin:10px 0}
  #printview td,#printview th{padding:6px 4px;border-bottom:1px solid #ccc;text-align:left;font-size:13px}
  #printview .tot{font-weight:700;font-size:15px}
  #invoicePreview .pv-head{display:flex;justify-content:space-between;border-bottom:2px solid #222;padding-bottom:14px;margin-bottom:18px}
  #invoicePreview table{width:100%;border-collapse:collapse;margin:10px 0}
  #invoicePreview td,#invoicePreview th{padding:6px 4px;border-bottom:1px solid #ccc;text-align:left;font-size:13px}
  #invoicePreview .tot{font-weight:700;font-size:15px}

  .banner{border:1px solid var(--warn-soft);background:var(--warn-soft);color:var(--warn);border-radius:var(--r-md);padding:10px 14px;font-size:12.5px;margin-bottom:16px}
  .banner.info{border-color:var(--info-soft);background:var(--info-soft);color:var(--info)}
  .rowflex{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;justify-content:space-between}
  .rowflex .filters{display:flex;gap:8px;flex-wrap:wrap}
  .searchbox{border:1px solid var(--border);border-radius:999px;padding:7px 14px;background:var(--surface);min-width:200px}
  .muted{color:var(--ink-muted)}
  .faint{color:var(--ink-faint)}
  .small{font-size:12px}
  .linklike{color:var(--accent-strong);cursor:pointer;font-weight:600}
  .linklike:hover{text-decoration:underline}
  .kv{display:flex;justify-content:space-between;padding:5px 0;font-size:13px;border-bottom:1px dashed var(--border)}
  .kv:last-child{border-bottom:none}
  .sectiontitle{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:18px 0 8px}
  .sectiontitle:first-child{margin-top:0}
  a.btn {
    text-decoration: none;
}