*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.auth-form{border:1px solid var(--color-border);background:var(--color-surface);border-radius:12px;flex-direction:column;gap:16px;width:100%;max-width:360px;padding:24px;display:flex}.auth-form__title{margin:0;font-size:22px}.auth-form__field{flex-direction:column;gap:6px;display:flex}.auth-form__label{color:var(--color-text-muted);font-size:13px}.auth-form__input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:8px;padding:10px 12px}.auth-form__submit{background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border:none;border-radius:8px;padding:10px 12px;font-weight:600}.auth-form__message{color:var(--color-primary);margin:0}.auth-form__error{color:var(--color-danger);margin:0}.dashboard{flex-direction:column;gap:14px;width:100%;display:flex}.dashboard__toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.dashboard__nav{align-items:center;gap:8px;display:flex}.dashboard__nav-btn{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:14px}.dashboard__nav-btn:hover{border-color:var(--color-primary)}.dashboard__range{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:8px;padding:7px 10px}.dashboard__modes{border:1px solid var(--color-border);border-radius:8px;display:inline-flex;overflow:hidden}.dashboard__mode{background:var(--color-bg);color:var(--color-text);cursor:pointer;border:none;padding:7px 14px;font-size:13px;font-weight:600}.dashboard__mode--active{background:var(--color-primary);color:var(--color-primary-contrast)}.dashboard__actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.dashboard__btn{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:8px;padding:8px 14px;font-weight:600}.dashboard__btn--primary{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.dashboard__btn:disabled{opacity:.5;cursor:not-allowed}.dashboard__logout{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:8px;padding:8px 14px}.dashboard__error{color:var(--color-danger);margin:0}.dashboard__empty,.dashboard__loading{color:var(--color-text-muted)}.dashboard__manage{border:1px solid var(--color-border);background:var(--color-surface);border-radius:12px;padding:14px}.dashboard__subtitle{margin:0 0 10px;font-size:15px}.dashboard__form{flex-wrap:wrap;gap:8px;display:flex}.dashboard__input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:8px;padding:8px 10px}.chess{border:1px solid var(--color-border);background:var(--color-bg);border-radius:12px;max-height:70vh;overflow:auto}.chess__table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:max-content}.chess__col-object{width:210px}.chess__col-day{width:48px}.chess__head th{z-index:2;background:var(--color-header-bg);position:sticky;top:0}.chess__corner{z-index:3;background:var(--color-header-bg);border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);text-align:left;padding:6px 10px;font-size:12px;position:sticky;top:0;left:0}.chess__day-head{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);color:var(--color-text-muted);padding:4px 0;font-size:11px}.chess__day-head--weekend{background:var(--color-weekend-bg)}.chess__day-head--today{color:var(--color-today-accent);font-weight:700}.chess__day-weekday{text-transform:lowercase;display:block}.chess__day-number{color:var(--color-text);font-size:13px;display:block}.chess__group-title{z-index:1;background:var(--color-surface);text-align:left;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);text-transform:uppercase;padding:6px 10px;font-size:12px;font-weight:700;position:sticky;left:0}.chess__object{z-index:1;background:var(--color-bg);border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);text-align:left;white-space:nowrap;text-overflow:ellipsis;padding:6px 10px;font-size:13px;font-weight:500;position:sticky;left:0;overflow:hidden}.chess__object-title{display:block}.chess__object-price{color:var(--color-text-muted);margin-top:2px;font-size:11px;display:block}.chess__cell{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);text-align:center;vertical-align:middle;cursor:cell;-webkit-user-select:none;user-select:none;height:38px}.chess__cell--weekend{background:var(--color-weekend-bg)}.chess__cell--today{box-shadow:inset 2px 0 0 0 var(--color-today-accent)}.chess__cell--selected{background:var(--color-selected-bg)}.chess__cell-price{color:var(--color-text-muted);font-size:10px}.chess__cell-price--custom{color:var(--color-text);font-weight:700}.chess__booking-cell{border-bottom:1px solid var(--color-border);padding:2px}.chess__bar{width:100%;height:30px;color:var(--color-booking-text);cursor:pointer;text-align:left;border:none;border-radius:6px;padding:0 8px;font-size:12px;font-weight:600;display:block;overflow:hidden}.chess__bar-text{white-space:nowrap;text-overflow:ellipsis;line-height:30px;display:block;overflow:hidden}.chess__bar--new{background:var(--color-booking-new)}.chess__bar--confirmed{background:var(--color-booking-confirmed)}.chess__bar--checked-in{background:var(--color-booking-checked-in)}.chess__bar--checked-out{background:var(--color-booking-checked-out)}.booking-panel{z-index:20;position:fixed;inset:0}.booking-panel__overlay{background:var(--color-overlay);position:absolute;inset:0}.booking-panel__sheet{background:var(--color-surface);border-left:1px solid var(--color-border);flex-direction:column;gap:14px;width:380px;max-width:92vw;padding:18px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto}.booking-panel__header{justify-content:space-between;align-items:center;display:flex}.booking-panel__title{margin:0;font-size:18px}.booking-panel__close{color:var(--color-text);cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1}.booking-panel__status{color:var(--color-booking-text);border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:12px;font-weight:700}.booking-panel__status--new{background:var(--color-booking-new)}.booking-panel__status--confirmed{background:var(--color-booking-confirmed)}.booking-panel__status--checked-in{background:var(--color-booking-checked-in)}.booking-panel__status--checked-out{background:var(--color-booking-checked-out)}.booking-panel__status--cancelled{background:var(--color-booking-cancelled)}.booking-panel__status--no-show{background:var(--color-booking-no-show)}.booking-panel__form{flex-direction:column;gap:12px;display:flex}.booking-panel__row{gap:10px;display:flex}.booking-panel__field{flex-direction:column;flex:1;gap:4px;display:flex}.booking-panel__label{color:var(--color-text-muted);font-size:12px}.booking-panel__input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:8px;width:100%;padding:8px 10px}.booking-panel__error{color:var(--color-danger);margin:0;font-size:13px}.booking-panel__save{background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border:none;border-radius:8px;padding:10px;font-weight:700}.booking-panel__actions{border-top:1px solid var(--color-border);flex-direction:column;gap:8px;padding-top:12px;display:flex}.booking-panel__actions-title{color:var(--color-text-muted);font-size:12px}.booking-panel__actions-row{flex-wrap:wrap;gap:8px;display:flex}.booking-panel__action{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:600}.booking-panel__action--confirmed{border-color:var(--color-booking-confirmed)}.booking-panel__action--checked-in{border-color:var(--color-booking-checked-in)}.booking-panel__action--checked-out{border-color:var(--color-booking-checked-out)}.booking-panel__action--cancelled{border-color:var(--color-booking-cancelled);color:var(--color-danger)}.booking-panel__action--no-show{border-color:var(--color-booking-no-show)}.booking-panel__action:disabled{opacity:.5;cursor:not-allowed}.guests{flex-direction:column;gap:14px;width:100%;display:flex}.guests__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.guests__title{margin:0;font-size:20px}.guests__search{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:8px;min-width:240px;padding:8px 12px}.guests__error{color:var(--color-danger);margin:0}.guests__muted{color:var(--color-text-muted)}.guests__table{border-collapse:collapse;background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;width:100%;overflow:hidden}.guests__th,.guests__td{text-align:left;border-bottom:1px solid var(--color-border);padding:10px 14px;font-size:14px}.guests__th{background:var(--color-header-bg);color:var(--color-text-muted);text-transform:uppercase;font-size:12px}.guests__th--num,.guests__td--num{text-align:right}.guests__row:hover{background:var(--color-surface)}.team{flex-direction:column;gap:14px;width:100%;display:flex}.team__title{margin:0;font-size:20px}.team__error{color:var(--color-danger);margin:0}.team__muted{color:var(--color-text-muted)}.team__table{border-collapse:collapse;background:var(--color-bg);border:1px solid var(--color-border);border-radius:12px;width:100%;overflow:hidden}.team__th,.team__td{text-align:left;border-bottom:1px solid var(--color-border);padding:10px 14px;font-size:14px}.team__th{background:var(--color-header-bg);color:var(--color-text-muted);text-transform:uppercase;font-size:12px}.team__td--actions{text-align:right}.team__status{color:var(--color-booking-text);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.team__status--pending{background:var(--color-booking-new)}.team__status--active{background:var(--color-booking-confirmed)}.team__status--blocked{background:var(--color-booking-no-show)}.team__btn{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.team__btn--approve{border-color:var(--color-booking-confirmed);color:var(--color-booking-confirmed)}.team__btn--block{border-color:var(--color-danger);color:var(--color-danger)}.app{flex-direction:column;min-height:100vh;display:flex}.app__header{border-bottom:1px solid var(--color-border);background:var(--color-surface);align-items:center;gap:16px;padding:12px 20px;display:flex}.app__brand{color:var(--color-primary);font-weight:700}.app__nav{gap:12px;display:flex}.app__link{color:var(--color-text);padding:4px 2px;text-decoration:none}.app__link--active{color:var(--color-primary);box-shadow:inset 0 -2px 0 0 var(--color-primary);font-weight:700}.app__controls{gap:8px;margin-left:auto;display:flex}.app__toggle{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;border-radius:6px;padding:6px 12px}.app__main{flex:1;justify-content:center;padding:32px 16px;display:flex}:root,[data-theme=light]{--color-bg:#fff;--color-surface:#f5f5f7;--color-text:#1a1a1a;--color-text-muted:#6b7280;--color-primary:#2563eb;--color-primary-contrast:#fff;--color-border:#e0e0e0;--color-danger:#dc2626;--color-weekend-bg:#f1f3f8;--color-today-accent:#2563eb;--color-selected-bg:#bfdbfe;--color-header-bg:#eef1f6;--color-booking-new:#f59e0b;--color-booking-confirmed:#22c55e;--color-booking-checked-in:#0ea5e9;--color-booking-checked-out:#94a3b8;--color-booking-cancelled:#ef4444;--color-booking-no-show:#6b7280;--color-booking-text:#fff;--color-overlay:#0006}[data-theme=dark]{--color-bg:#121212;--color-surface:#1e1e1e;--color-text:#f0f0f0;--color-text-muted:#9ca3af;--color-primary:#60a5fa;--color-primary-contrast:#0b1220;--color-border:#333;--color-danger:#f87171;--color-weekend-bg:#181a20;--color-today-accent:#60a5fa;--color-selected-bg:#1e3a5f;--color-header-bg:#242424;--color-booking-new:#d97706;--color-booking-confirmed:#16a34a;--color-booking-checked-in:#0284c7;--color-booking-checked-out:#64748b;--color-booking-cancelled:#dc2626;--color-booking-no-show:#4b5563;--color-booking-text:#fff;--color-overlay:#0009}
