:root{--green-900:#143d29;--green-700:#1f5f3f;--green-600:#2a7a52;--green-100:#e6f2ea;--green-50:#f3f9f5;--ink:#18201b;--ink-soft:#4b5750;--line:#d9e2dc;--bg:#f6f8f6;--card:#fff;--danger:#b42318;--danger-bg:#fdecea;--warn-bg:#fff6e0;--radius:12px;--tap:48px;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}h1,h2,h3{margin:0 0 .5em;line-height:1.2}button,input,select,textarea{font:inherit}.btn{min-height:var(--tap);border:1px solid var(--green-700);background:var(--green-700);color:#fff;cursor:pointer;border-radius:10px;padding:0 1.25rem;font-weight:600}.btn:hover{background:var(--green-900)}.btn:disabled{opacity:.6;cursor:default}.btn.secondary{color:var(--green-700);background:0 0}.btn.secondary:hover{background:var(--green-50)}.field{gap:.35rem;margin-bottom:1rem;display:grid}.field label{font-size:.95rem;font-weight:600}.field input{min-height:var(--tap);border:1px solid var(--line);background:#fff;border-radius:10px;padding:0 .85rem}.field input:focus{outline:3px solid var(--green-100);border-color:var(--green-600)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem}.error{background:var(--danger-bg);color:var(--danger);border-radius:10px;margin-bottom:1rem;padding:.75rem 1rem}.muted{color:var(--ink-soft)}.center-page{place-items:center;min-height:100vh;padding:1rem;display:grid}.center-page .card{width:min(420px,100%)}.brand{color:var(--green-900);align-items:center;gap:.6rem;font-weight:700;display:flex}.brand small{color:var(--ink-soft);font-size:.8rem;font-weight:500;display:block}.shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--green-900);color:#fff;flex-direction:column;gap:.25rem;padding:1rem .75rem;display:flex}.sidebar .brand{color:#fff;padding:.25rem .5rem 1rem}.sidebar .brand small{color:#b9d3c3}.nav-link{min-height:var(--tap);color:#e3efe7;border-radius:10px;justify-content:space-between;align-items:center;padding:0 .75rem;text-decoration:none;display:flex}.nav-link:hover{background:#ffffff14}.nav-link.active{color:#fff;background:#ffffff29;font-weight:600}.nav-link .tag{background:#ffffff24;border-radius:999px;padding:.1rem .5rem;font-size:.7rem}.sidebar .spacer{flex:1}.user-box{border-top:1px solid #ffffff26;padding:.75rem .5rem 0;font-size:.9rem}.user-box .btn{background:0 0;border-color:#fff6;width:100%;margin-top:.5rem}.main{width:100%;min-width:0;max-width:1200px;padding:1.5rem}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;display:grid}.pill{background:var(--green-100);color:var(--green-900);border-radius:999px;padding:.15rem .6rem;font-size:.8rem;font-weight:600;display:inline-block}@media (width<=860px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:10;flex-direction:row;align-items:center;padding:.5rem;position:sticky;top:0;overflow-x:auto}.sidebar .brand{white-space:nowrap;padding:0 .5rem}.sidebar .brand small,.sidebar .spacer,.nav-link .tag{display:none}.nav-link{white-space:nowrap}.user-box{white-space:nowrap;border-top:none;align-items:center;gap:.5rem;padding:0;display:flex}.user-box .btn{width:auto;margin:0}.main{padding:1rem}}.field select,.field textarea{min-height:var(--tap);border:1px solid var(--line);background:#fff;border-radius:10px;padding:.5rem .85rem}.field textarea{resize:vertical}.field-label{font-size:.95rem;font-weight:600}.field-error{color:var(--danger)}.small{font-size:.85rem}.readout{min-height:var(--tap);align-items:center;padding:0 .25rem;display:flex}.row-2,.row-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem;display:grid}.row-3{grid-template-columns:repeat(3,minmax(0,1fr))}.segmented{flex-wrap:wrap;gap:.4rem;display:flex}.segmented button{min-height:var(--tap);border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:10px;padding:0 1rem}.segmented button.on{background:var(--green-700);border-color:var(--green-700);color:#fff;font-weight:600}.btn.danger,.btn.secondary.danger{border-color:var(--danger)}.btn.danger{background:var(--danger)}.btn.secondary.danger{color:var(--danger);background:0 0}.btn.secondary.danger:hover{background:var(--danger-bg)}a.btn{align-items:center;text-decoration:none;display:inline-flex}.link{color:var(--green-700);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.icon-btn{width:var(--tap);height:var(--tap);cursor:pointer;background:0 0;border:0;border-radius:10px;font-size:1.2rem}.icon-btn:hover{background:var(--green-50)}.icon-btn.right{float:right}.actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.actions.inline{justify-content:flex-start;margin-top:.5rem}.actions.quick{margin-top:1.5rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.page-head h1{margin:0}.section-title{margin:1.5rem 0 .75rem;font-size:1.15rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.toolbar .field,.page-head .field{margin:0}.search{min-height:var(--tap);border:1px solid var(--line);border-radius:10px;flex:1;min-width:240px;max-width:360px;padding:0 .85rem}.period-title{text-align:center;min-width:12rem}.sheet-backdrop{z-index:50;background:#141e1959;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);flex-direction:column;width:min(560px,100%);height:100%;display:flex;box-shadow:-8px 0 24px #00000026}.sheet.wide{width:min(900px,100%)}.sheet-head{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;padding:.75rem 1rem .75rem 1.25rem;display:flex}.sheet-head h2{margin:0;font-size:1.2rem}.sheet-body{flex:1;padding:1.25rem;overflow-y:auto}.sheet-body section{margin-bottom:1rem}.sheet-body h3{margin-top:.75rem}.card.soft{background:var(--green-50)}.card+.card,.cards .card{margin-top:.75rem}.card.overdue{border-color:#e0a100}.note{border-radius:10px;margin:.75rem 0;padding:.75rem 1rem}.note.warn{background:var(--warn-bg)}.note.ok{background:var(--green-50)}.check{align-items:flex-start;gap:.6rem;margin:.75rem 0;display:flex}.check input{width:22px;height:22px;margin-top:.1rem}.empty{padding:.5rem 0}table.mini{border-collapse:collapse;width:100%}table.mini td{border-bottom:1px solid var(--line);padding:.3rem 0}table.mini td:last-child{text-align:right;white-space:nowrap;padding-left:1rem}table.mini tr.total td{border-bottom:0;font-weight:700}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow-x:auto}table.list{border-collapse:collapse;width:100%}table.list th,table.list td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:.7rem .8rem}table.list th{color:var(--ink-soft);background:var(--green-50);font-size:.85rem;font-weight:600}table.list tr:last-child td{border-bottom:0}table.list tr.clickable{cursor:pointer}table.list tr.clickable:hover{background:var(--green-50)}.num{font-variant-numeric:tabular-nums;text-align:right!important}.type-dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;display:inline-block}.pill.gray{color:var(--ink-soft);background:#ecebe8}.stay-head{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.stay-head h3{margin:0}dl.facts{grid-template-columns:max-content 1fr;gap:.35rem 1.25rem;margin:.75rem 0;display:grid}dl.facts dt{color:var(--ink-soft)}dl.facts dd{margin:0}.bed-picker{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.75rem;display:grid}.bp-room{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin:0;padding:.5rem .75rem .75rem}.bp-room legend{padding:0 .25rem;font-weight:700}.bp-beds{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}.bp-bed{border:2px solid var(--line);text-align:left;cursor:pointer;min-height:64px;color:var(--ink);background:#fafaf8;border-radius:10px;flex-direction:column;align-items:flex-start;padding:.35rem .6rem;font-size:.85rem;display:flex}.bp-bed strong{font-size:1rem}.bp-bed small{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bp-bed.free{border-color:var(--green-600);background:#fff}.bp-bed.taken{cursor:not-allowed;opacity:.75;background:#ecebe8}.bp-bed.selected{border-color:var(--green-900);background:var(--green-100);box-shadow:0 0 0 2px var(--green-700) inset}.legend{color:var(--ink-soft);flex-wrap:wrap;gap:.5rem 1rem;margin:.25rem 0 .75rem;font-size:.9rem;display:flex}.legend i{vertical-align:middle;color:#fff;border-radius:4px;place-items:center;width:18px;height:18px;font-size:.7rem;font-style:normal;font-weight:700;display:inline-grid}.legend i.vacant{border:1px solid var(--line)}.cal-wrap{border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-height:70vh;overflow:auto}table.cal{border-collapse:separate;border-spacing:0;font-size:.75rem}table.cal thead th{z-index:4;position:sticky;top:0}table.cal th{min-width:28px;color:var(--ink-soft);border-bottom:1px solid var(--line);background:#fff;padding:.25rem 0;font-weight:600}table.cal thead th span{font-weight:400;display:block}table.cal th.today{color:var(--green-900);background:var(--green-100)}table.cal th.sun{color:#9b1c1c}table.cal .cal-bed{z-index:3;text-align:left;white-space:nowrap;border-right:1px solid var(--line);min-width:96px;color:var(--ink);background:#fff;padding:0 .6rem;position:sticky;left:0}table.cal tr.cal-room th{background:var(--green-50);font-weight:700}table.cal tr.cal-room td{background:var(--green-50);height:26px}td.cal-cell{cursor:pointer;color:#fff;border-bottom:2px solid #fff;border-right:2px solid #fff;min-width:28px;height:32px;font-weight:600;position:relative}td.cal-cell.today{box-shadow:inset 0 0 0 2px var(--green-900)}td.cal-cell.sel{outline-offset:-3px;outline:3px solid #0b0b0b}.cal-label{white-space:nowrap;z-index:1;pointer-events:none;text-shadow:0 0 2px #0009;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.cal-letter{text-align:center;opacity:.85;display:block}td.cal-cell.reserved .cal-label,td.cal-cell.reserved .cal-letter{color:#3a2a00;text-shadow:none}.card.detail,.trend{margin-top:1rem}.chart-card{padding:1rem .5rem .5rem}details.card summary{cursor:pointer;min-height:32px;font-weight:600}details.card[open] summary{margin-bottom:.75rem}table.heat{border-collapse:separate;border-spacing:2px;width:100%;font-size:.8rem}table.heat th{color:var(--ink-soft);white-space:nowrap;padding:.35rem;font-weight:600}table.heat td{text-align:center;font-variant-numeric:tabular-nums;border-radius:4px;padding:.45rem .25rem}.filters .field{margin-bottom:.5rem}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border:1px solid var(--green-600);background:#fff;border-radius:999px;padding:.4rem .9rem}.summary .headline{margin-top:0;font-size:1.15rem}.grid.two{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));margin-top:1rem}ul.events{margin:0;padding:0;list-style:none}ul.events li{border-bottom:1px solid var(--line);padding:.45rem 0}ul.events li:last-child{border-bottom:0}ul.events .when{min-width:4.5rem;color:var(--ink-soft);display:inline-block}.meter{background:#ecebe8;border-radius:999px;height:10px;margin:.5rem 0 .35rem;overflow:hidden}.meter span{background:var(--green-600);border-radius:999px;height:100%;display:block}@media (width<=860px){.row-3{grid-template-columns:1fr 1fr}}@media (width<=560px){.row-2,.row-3{grid-template-columns:1fr}.search{min-width:0;max-width:none}}table.cal thead th.cal-bed{z-index:5}ul.vacant-rooms{margin:.5rem 0 .75rem;padding-left:1.1rem;font-size:1rem}ul.vacant-rooms li{margin:.15rem 0}
