:root{--bg:#f7f7f7;--surface:#ffffff;--surface-2:#f2f2f2;--ink:#222222;--muted:#6a6a6a;--line:#e4e4e4;--accent:#0e6a5b;--accent-ink:#ffffff;--accent-soft:#e3f1ee;--gold:#8a5d10;--gold-soft:#fbf3e2;--pos:#177a3c;--neg:#c13515;--neg-soft:#fdece8;--warn:#9a5700;--warn-soft:#fdf1dc;--ch-airbnb:#d24a60;--ch-booking:#2c5ea8;--ch-agoda:#7a4fb0;--ch-direct:#0e6a5b;--shadow:0 1px 2px rgba(0,0,0,.04),0 4px 16px rgba(0,0,0,.06);--f-display:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--f-body:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--r:16px;color-scheme:light}:root[data-theme=dark]{--bg:#0e1513;--surface:#151f1c;--surface-2:#1c2925;--ink:#e5ece9;--muted:#95a6a0;--line:#283632;--accent:#3db39a;--accent-ink:#06201a;--accent-soft:#173a33;--gold:#e2b35c;--gold-soft:#3a2f19;--pos:#5cc27e;--neg:#f07068;--neg-soft:#3d1c1a;--warn:#e8a445;--warn-soft:#3a2a12;--ch-airbnb:#ec7488;--ch-booking:#6e9ce0;--ch-agoda:#a887d6;--ch-direct:#3db39a;--shadow:0 1px 2px rgba(0,0,0,.3);color-scheme:dark}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--f-body);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}.num,td.n,th.n{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:-.02em;font-weight:600}h1{font-size:1.75rem;line-height:1.2}h2{font-size:1.2rem}h3{font-size:1rem}a{color:var(--accent)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.app{min-height:100%;display:flex;flex-direction:column}.topnav{background:var(--surface);border-bottom:1px solid var(--line)}.topnav-in{max-width:1120px;margin-inline:auto;padding:12px 24px 8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px}.brand{display:flex;align-items:baseline;gap:8px;text-decoration:none;color:var(--ink);flex:none}.brand b{font-family:var(--f-display);font-size:1.35rem;letter-spacing:.06em;color:var(--accent)}.brand span{color:var(--muted);font-size:.8rem}.tabs{display:flex;flex-wrap:wrap;gap:2px;order:3;flex-basis:100%;min-width:0;margin-left:-12px}.nav-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;text-decoration:none;color:var(--muted);font-weight:500;white-space:nowrap}.nav-btn:hover{background:var(--surface-2);color:var(--ink)}.nav-btn[aria-current=page]{background:var(--ink);color:var(--surface)}.who{display:flex;align-items:center;gap:12px;flex:none;margin-left:auto}.who .name{display:grid;line-height:1.25;text-align:right}.who .name b{font-weight:600;font-size:.9rem}.lbl{font-size:.88rem;color:var(--muted);font-weight:500}.main{width:100%;max-width:1120px;margin-inline:auto;min-width:0;padding:0 24px 64px}.topbar{padding-block:32px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}.topbar h1{margin-right:auto}.topbar .sub{width:100%;margin:-4px 0 0;color:var(--muted)}.month-step{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:4px}.month-step .btn{border:0;border-radius:999px;width:32px;height:32px;padding:0;justify-content:center;font-size:1.1rem;text-decoration:none;color:var(--ink)}.month-step .btn:hover{background:var(--surface-2)}.month-step span{padding:0 8px;font-weight:600;min-width:120px;text-align:center}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid var(--line);background:var(--surface);padding:6px 14px;border-radius:999px;cursor:pointer;font-size:.9rem;color:var(--ink);text-decoration:none}.chip:hover{border-color:var(--ink)}.chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--surface)}.banner{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:12px;background:var(--gold-soft);color:var(--ink);font-size:.92rem;margin-bottom:16px}.banner.info{background:var(--accent-soft)}.banner.bad{background:var(--neg-soft)}.panel .banner:last-child{margin-bottom:0}.grid{display:grid;grid-gap:24px;gap:24px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.cards{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;display:grid;grid-gap:4px;gap:4px;align-content:start}.stat .v{font-family:var(--f-display);font-size:1.5rem;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .s{font-size:.86rem;color:var(--muted)}.stat.fc{background:var(--gold-soft);border-color:transparent}.stat.fc .lbl{color:var(--gold)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:24px;min-width:0}.panel>header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}.panel>header p{margin:4px 0 0;color:var(--muted);font-size:.9rem}.stack{display:grid;grid-gap:16px;gap:16px}.row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.spacer{flex:1 1}.muted{color:var(--muted)}.small{font-size:.88rem}.pos{color:var(--pos)}.neg{color:var(--neg)}.gold{color:var(--gold)}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:32px;gap:32px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:32px;margin-bottom:24px;box-shadow:var(--shadow)}.hero .big{font-family:var(--f-display);font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-block:8px;overflow-wrap:anywhere}.hero .cap{font-weight:600}.hero .note{color:var(--muted);font-size:.92rem;margin:0}.calc{display:grid;grid-gap:0;gap:0;margin:0}.calc>div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.calc dt{color:var(--muted)}.calc dd{margin:0;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.calc>div.sum{border-bottom:0;border-top:2px solid var(--ink);margin-top:-1px}.calc>div.sum dt{color:var(--ink);font-weight:600}.calc>div.sum dd{font-size:1.1rem}.prop-list{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.prop{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;display:grid;grid-gap:12px;gap:12px}.prop h3{font-size:1.05rem}.prop .amt{font-family:var(--f-display);font-size:1.4rem;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.nights{display:flex;height:10px;border-radius:999px;overflow:hidden;background:var(--surface-2)}.nights i{display:block;height:100%}.nights .booked,.nights .sold{background:var(--accent)}.nights .booked{opacity:.45}.legend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.88rem;color:var(--muted)}.legend b{color:var(--ink);font-weight:600}.legend .dot.booked,.legend .dot.sold{background:var(--accent)}.legend .dot.booked{opacity:.45}.legend .dot.free{background:var(--line)}.kv{display:flex;justify-content:space-between;gap:12px;font-size:.92rem}.kv span{color:var(--muted)}.kv b{font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.section-title{margin:32px 0 16px}.stack-lg{display:grid;grid-gap:24px;gap:24px;margin-top:24px}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:8px 32px;gap:8px 32px;padding-bottom:16px;border-bottom:1px solid var(--line)}.sub-title{margin:20px 0 8px;font-size:.9rem;color:var(--muted);font-weight:500}.room-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.room-list>li+li{border-top:1px solid var(--line)}.room-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:12px 16px}summary.room-row{cursor:pointer;list-style:none}summary.room-row::-webkit-details-marker{display:none}summary.room-row:hover{background:var(--surface-2)}.chev{color:var(--muted);font-size:1.2rem;line-height:1;transition:transform .15s}details[open]>summary .chev{transform:rotate(90deg)}.room-actions{display:grid;grid-gap:12px;gap:12px;padding:16px;background:var(--bg);border-top:1px solid var(--line)}.room-actions .row>input,.room-actions .row>select{width:auto;flex:1 1 200px}.room-actions .row>.field{flex:0 1 200px}.room-actions .row>.full{width:auto}.room-actions .hint{margin:0}.fold>summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;cursor:pointer}.fold[open]>summary{margin-bottom:16px}.fold.sub{padding:12px 16px;align-self:start}.fold.sub,.listing-list{border:1px solid var(--line);border-radius:12px}.listing-list{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto;background:var(--surface)}.listing-list>li+li{border-top:1px solid var(--line)}.listing{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer}.listing:hover{background:var(--surface-2)}.listing[aria-checked=true]{background:var(--accent-soft)}.listing input{width:20px;height:20px;flex:none;accent-color:var(--accent)}.listing.off{cursor:default;opacity:.6}.listing-name{display:grid;grid-gap:4px;gap:4px;min-width:0;overflow-wrap:anywhere}.danger-zone{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.danger-zone:not(.safe) .btn.primary{background:var(--surface);color:var(--neg);border-color:var(--neg)}.tbl-wrap{overflow-x:auto;margin-inline:-4px}table{border-collapse:collapse;width:100%;font-size:.94rem}th{text-align:left;font-weight:500;font-size:.82rem;color:var(--muted);padding:12px 8px;white-space:nowrap}td,th{border-bottom:1px solid var(--line)}td{padding:14px 8px;vertical-align:top}tbody tr:last-child td{border-bottom:0}td.n,th.n{text-align:right;white-space:nowrap}tr.total td{font-weight:600;border-top:2px solid var(--ink);border-bottom:0}tr.click{cursor:pointer}tr.click:hover td{background:var(--surface-2)}.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ink);background:var(--surface);padding:10px 20px;border-radius:10px;cursor:pointer;font-weight:600;white-space:nowrap;text-decoration:none;color:var(--ink)}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(.94)}.btn.danger{color:var(--neg);border-color:var(--neg)}.btn.sm{padding:6px 12px;font-size:.86rem;border-color:var(--line);font-weight:500}.btn:disabled{opacity:.5;cursor:not-allowed}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--surface)}.seg button{border:0;background:none;padding:8px 16px;cursor:pointer;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--ink);color:var(--surface);font-weight:600}.field{display:grid;grid-gap:4px;gap:4px;min-width:0}.field>span{font-size:.86rem;color:var(--muted);font-weight:500}input[type=date],input[type=datetime-local],input[type=month],input[type=number],input[type=password],input[type=search],input[type=text],select,textarea{width:100%;padding:12px;border:1px solid #b0b0b0;border-radius:10px;background:var(--surface);min-width:0}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--ink);outline-offset:0;border-color:var(--ink)}textarea{min-height:72px;resize:vertical}.form-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .full{grid-column:1/-1}.hint{font-size:.84rem;color:var(--muted)}.err{color:var(--neg);font-size:.88rem}.pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--surface-2);color:var(--muted);white-space:nowrap}.pill.ok{background:var(--accent-soft);color:var(--accent)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--neg-soft);color:var(--neg)}.pill.fc{background:var(--gold-soft);color:var(--gold)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}.cal-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.cal{display:grid;font-size:.75rem;min-width:max-content}.cal .hd{position:-webkit-sticky;position:sticky;top:0;background:var(--surface-2);text-align:center;padding:4px 0;color:var(--muted);border-bottom:1px solid var(--line)}.cal .hd.today{color:var(--accent);font-weight:700}.cal .room{background:var(--surface);border-right:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}.cal .prop,.cal .room{position:-webkit-sticky;position:sticky;left:0;padding:6px 10px}.cal .prop{grid-column:1/-1;background:var(--bg);font-weight:600;border:0;border-radius:0;display:block}.cal .cell,.cal .prop{border-bottom:1px solid var(--line)}.cal .cell{border-right:1px dashed var(--line);min-height:30px}.cal .bar{margin:4px 1px;border-radius:5px;color:#fff;padding:3px 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border:0;text-align:left;font-size:.72rem}.cal .bar.cx{opacity:.45;text-decoration:line-through}.kanban{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));grid-gap:12px;gap:12px;overflow-x:auto}.col{background:var(--surface-2);border-radius:var(--r);padding:12px;display:grid;align-content:start;grid-gap:8px;gap:8px}.col h3{font-size:.85rem;display:flex;justify-content:space-between}.task{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;grid-gap:8px;gap:8px;cursor:pointer;text-align:left;width:100%}.task.overdue{border-left:3px solid var(--neg)}.task .t{font-weight:600}.chart svg{width:100%;height:auto;display:block}.chart text{fill:var(--muted);font-size:10px;font-family:var(--f-body)}.hbar{display:grid;grid-template-columns:130px minmax(0,1fr) 60px;grid-gap:10px;gap:10px;align-items:center;font-size:.86rem}.hbar .track{position:relative;height:12px;background:var(--surface-2);border-radius:6px}.hbar .fill{position:absolute;inset:0 auto 0 0;border-radius:6px;background:var(--accent)}.hbar .fill.fut{background:var(--gold);opacity:.55}.hbar .kpi{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}.progress{height:10px;background:var(--surface-2);border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--accent);border-radius:999px}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:50;overflow-y:auto}.modal{background:var(--surface);border-radius:20px;width:min(640px,100%);box-shadow:var(--shadow);display:grid}.modal>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line)}.modal>.body{padding:16px 20px;display:grid;grid-gap:16px;gap:16px}.modal>footer{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--line)}.x{border:0;background:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--muted)}.check-item{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;cursor:pointer}.check-item input{width:20px;height:20px;flex:none;accent-color:var(--accent)}.check-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.check-item:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.role-list{max-height:none}.change-list{margin-bottom:16px}.change-time{min-width:3.2em}.change-detail{display:flex;flex-wrap:wrap;gap:4px 16px;padding:0 16px 12px calc(16px + 3.2em + 12px)}.change-detail s{text-decoration-thickness:1px}@media (max-width:860px){.change-detail{padding-left:16px}}.thumbs{display:flex;flex-wrap:wrap;gap:8px}.thumbs img{width:84px;height:84px;object-fit:cover;border-radius:12px;border:1px solid var(--line)}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:12px 16px;border-radius:12px;z-index:60;font-size:.9rem;max-width:calc(100% - 32px)}.empty{text-align:center;padding:32px 16px;color:var(--muted);grid-gap:12px;justify-items:center}.clock-btns,.empty{display:grid;gap:12px}.clock-btns{grid-template-columns:1fr 1fr;grid-gap:12px}.clock-btns .btn{justify-content:center;padding:18px;font-size:1.05rem}.bottom-nav{display:none}@media (max-width:860px){.topnav-in{padding:12px 16px;gap:12px}.brand span,.tabs{display:none}.who{margin-left:auto}.main{padding:0 16px calc(96px + env(safe-area-inset-bottom, 0px))}.topbar{padding-block:24px 16px}h1{font-size:1.5rem}.form-grid,.g2,.g3,.hero{grid-template-columns:minmax(0,1fr)}.hero{gap:20px;padding:24px 20px;border-radius:20px}.panel{padding:20px 16px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:16px}.stat .v{font-size:1.2rem;overflow-wrap:anywhere}.hbar{grid-template-columns:96px minmax(0,1fr) 52px}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--surface);border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom, 0px));gap:4px;overflow-x:auto;scrollbar-width:none}.bottom-nav .nav-btn{flex:1 0 auto;justify-content:center;font-size:.82rem;padding:10px 12px}.topbar h1{width:100%}}@media (prefers-reduced-motion:no-preference){.toast{animation:rise .2s ease-out}@keyframes rise{0%{transform:translate(-50%,8px);opacity:0}}}.login{max-width:400px;margin:12vh auto;padding:32px;display:grid;grid-gap:16px;gap:16px;border-radius:24px;box-shadow:var(--shadow)}.login .btn{justify-content:center;padding-block:14px}form.inline{display:inline}