:root{--ink:#1d3029;--muted:#77827b;--line:#e7e9e2;--paper:#fff;--canvas:#f5f5f0;--accent:#285644;--tile:#edf3ed;--colleague-bg:#dce9de;--shadow:0 18px 60px #17281d20;--scale:1;color-scheme:light}*{box-sizing:border-box}body{min-height:100vh;margin:0;background:var(--canvas);color:var(--ink);font:14px 'DM Sans',Arial,sans-serif;zoom:var(--scale)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px}[hidden]{display:none!important}
.primary-btn,.secondary-btn,.settings-btn,.today-btn,.icon-btn,.close-btn,.delete-btn,.pattern-clear{border-radius:8px;font-size:12px;font-weight:700}.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 15px;border:0;background:var(--accent);color:white;box-shadow:0 2px 6px #0001}.primary-btn:hover{filter:brightness(.92)}.secondary-btn,.settings-btn,.today-btn,.icon-btn{min-height:38px;padding:8px 11px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}.settings-btn{display:flex;align-items:center;gap:7px}.settings-btn svg{width:16px}.heading-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.app{max-width:1600px;margin:auto;padding:30px 34px 40px}.heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.heading-row h1{font:700 33px/1.1 Manrope,Arial,sans-serif;margin:0;letter-spacing:-1px}.summary-row{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}.summary-chip{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--muted);font-size:12px}.summary-chip b{color:var(--ink);font-size:14px}.calendar-card{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:0 4px 18px #23332208}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 17px;border-bottom:1px solid var(--line)}.week-control,.toolbar-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.week-control strong{min-width:165px;font:700 14px Manrope,Arial,sans-serif}.icon-btn{width:36px;height:36px;padding:0;font-size:20px}.today-btn{min-height:34px}.view-toggle{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--canvas)}.view-toggle button{padding:6px 9px;border:0;border-radius:5px;background:transparent;color:var(--ink);font-size:11px;font-weight:700}.view-toggle button[aria-pressed=true]{background:var(--paper);box-shadow:0 1px 3px #0002}.muted{color:var(--muted);font-size:11px}.calendar-scroll{max-height:calc(100vh - 220px);max-height:calc(100dvh - 220px);overflow:auto;overscroll-behavior:contain}.day-heads,.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-width:900px}.day-heads{position:sticky;top:0;z-index:3;background:var(--paper);border-bottom:1px solid var(--line)}.day-head{padding:11px 7px;border:0;border-left:1px solid var(--line);background:var(--paper);color:var(--ink);text-align:center}.day-head:first-child{border-left:0}.day-head.closed{opacity:.6}.day-name{color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase}.day-num{margin-top:4px;font:600 20px Manrope,Arial,sans-serif}.day-head.today .day-num{display:grid;place-items:center;width:30px;height:30px;margin:auto;border-radius:50%;background:var(--accent);color:white;font-size:15px}.day-column{min-height:420px;padding:9px 7px 15px;border-left:1px solid var(--line);background:var(--paper)}.day-column.closed{background:color-mix(in srgb,var(--paper) 90%,var(--canvas))}.day-column.drag-over{background:color-mix(in srgb,var(--accent) 12%,var(--paper))}.closed-note{padding:4px;text-align:center;color:var(--muted);font-size:10px}.booking{position:relative;display:block;width:100%;min-height:82px;margin:0 0 8px;padding:9px 9px 31px;border:1px solid color-mix(in srgb,var(--ink) 9%,transparent);border-left:4px solid var(--accent);border-radius:7px;background:var(--tile);color:var(--ink);text-align:left;cursor:grab;user-select:none;box-shadow:0 1px 3px #0001}.booking.high,.booking.low{border-left-color:var(--accent)}.booking.dragging{opacity:.35}.booking.completed{opacity:.67}.booking.completed .booking-title{text-decoration:line-through}.booking-title{padding-right:55px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800}.booking-reg,.booking-model{margin-top:5px;color:var(--muted);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.booking-priority{position:absolute;top:7px;right:7px;padding:3px 6px;border-radius:10px;background:var(--paper);font-size:9px;text-transform:capitalize}.colleague-initials,.mini-initials{position:absolute;right:7px;bottom:6px;display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:var(--colleague-bg);color:var(--ink);font-size:8px;font-weight:800}.booking-actions{position:absolute;left:6px;bottom:6px;display:flex;gap:4px;opacity:0;pointer-events:none}.booking:hover .booking-actions,.booking:focus-visible .booking-actions{opacity:1;pointer-events:auto}.booking-action{display:grid;place-items:center;width:24px;height:24px;padding:4px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink)}.booking-action svg{width:14px;height:14px}.empty-state{padding:30px 10px;text-align:center;color:var(--muted);font-size:11px}.booking-list{min-width:900px;padding:12px;display:grid;gap:7px}.booking-list[hidden]{display:none}.day-heading{margin:8px 0 1px;font:700 12px Manrope,Arial,sans-serif}.booking.list-card{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;min-height:55px;margin:0;padding:9px 82px 9px 11px}.booking-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:var(--muted)}
.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;inset:0;z-index:1000;display:grid;place-items:center;overflow:auto;padding:18px;background:var(--canvas)}.login-card{width:min(540px,100%);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;padding:26px;border:1px solid var(--line);border-radius:16px;background:var(--paper);box-shadow:var(--shadow)}.login-card h1{margin:0;font:700 25px Manrope,Arial,sans-serif}.login-card>.muted{margin:7px 0 18px;font-size:13px}.login-accounts{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px;max-height:45vh;overflow:auto}.account-bubble{display:grid;justify-items:center;align-content:center;gap:8px;min-height:95px;padding:9px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-weight:700}.account-bubble-initials{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--accent);color:white;font-size:14px}.account-bubble-name{max-width:100%;overflow-wrap:anywhere;font-size:12px}.login-account-selected{display:flex;align-items:center;gap:11px;margin-bottom:14px}.login-account-selected strong{font-size:14px}.login-form{display:grid;gap:13px}.login-field{display:grid;gap:7px;font-size:12px;font-weight:700}.login-field input{width:100%;min-height:48px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-size:16px}.password-entry{display:flex;gap:7px}.password-entry input{flex:1;min-width:0}.full-width{width:100%;min-height:48px}.error{margin:0;color:#a24d42;font-size:12px}.pattern-entry{display:grid;justify-items:center;gap:7px}.pattern-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:min(220px,100%);aspect-ratio:1;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--canvas);touch-action:none;user-select:none;-webkit-user-select:none}.pattern-dot{align-self:center;justify-self:center;width:100%;min-width:38px;min-height:38px;aspect-ratio:1;border:2px solid var(--accent);border-radius:50%;background:var(--paper);touch-action:none;user-select:none;-webkit-user-select:none}.pattern-dot[aria-pressed=true]{background:var(--accent);box-shadow:inset 0 0 0 6px var(--paper)}.pattern-status{min-height:16px;color:var(--muted);font-size:11px}.pattern-clear{min-height:34px;padding:6px 9px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
.dialog{width:calc(100vw - 22px);max-width:690px;width:min(690px,calc(100vw - 22px));max-height:calc(100vh - 22px);max-height:calc(100dvh - 22px);padding:0;overflow:auto;border:0;border-radius:13px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow)}dialog[open]{display:flex;flex-direction:column}dialog::backdrop{background:#15271db0;backdrop-filter:blur(2px)}.modal-head,.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px}.modal-head{border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font:700 19px Manrope,Arial,sans-serif}.close-btn{border:0;background:transparent;color:var(--ink);font-size:23px}.modal-body{flex:1 1 auto;min-height:0;padding:17px 20px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.modal-foot{border-top:1px solid var(--line)}.foot-actions{display:flex;gap:8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:grid;gap:6px;font-size:11px;font-weight:700}.field input,.field select,.field textarea,.account-field input,.account-field select,.credential-type{width:100%;min-height:39px;padding:9px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font-size:12px}.field textarea{min-height:82px;resize:vertical}.full,.section-label{grid-column:1/-1}.section-label{margin:3px 0 -4px;padding-top:8px;border:0;border-top:1px solid var(--line);color:var(--muted);font-size:9px;letter-spacing:.8px;text-transform:uppercase}.phone-toggle{display:flex;align-items:center;justify-content:flex-end;gap:7px;padding-top:18px;font-size:11px}.phone-toggle input,.check-option input{accent-color:var(--accent)}#phoneField[hidden]{display:none!important}.check-row{display:flex;gap:8px}.check-option{flex:1;display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:7px;font-size:11px}.conditional{display:none}.conditional.visible{display:grid}.delete-btn{padding:8px 11px;border:1px solid #eedbd7;border-radius:7px;background:var(--paper);color:#a24d42;font-size:11px;font-weight:700}.settings-dialog{max-width:740px;width:min(740px,calc(100vw - 22px))}.settings-body,.accounts-body{display:grid;gap:14px}.settings-section{padding:12px;border:1px solid var(--line);border-radius:9px}.settings-section h3{margin:0 0 10px;font:700 13px Manrope,Arial,sans-serif}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--line);font-size:12px;font-weight:700}.setting-row:first-of-type{border-top:0}.setting-row select{min-width:140px}.setting-row input[type=color]{width:42px;height:32px;border:0;background:transparent}.scale-control{display:flex;align-items:center;gap:9px;min-width:min(260px,60%)}.scale-control input{width:100%;accent-color:var(--accent)}.scale-control output{min-width:44px}.workday-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(85px,1fr));gap:6px}.workday-option,.check-option{color:var(--ink)}.workday-option{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--line);border-radius:7px;font-size:11px}.workday-option input{accent-color:var(--accent)}.colleague-form{display:flex;gap:7px}.colleague-form input{flex:1;min-width:0;padding:8px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink)}.colleague-list,.account-list{display:grid;gap:7px;margin-top:8px}.colleague-row{display:flex;justify-content:space-between;align-items:center;padding:7px;border:1px solid var(--line);border-radius:7px;font-size:11px}.colleague-name{display:flex;align-items:center;gap:7px}.mini-initials{position:static;width:24px;height:24px}.remove-colleague{border:0;background:transparent;color:#a24d42;font-weight:800}.account-form{display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:9px}.account-field{display:grid;gap:5px;font-size:11px;font-weight:700}.account-field.credential-pattern[hidden],.credential-password[hidden],.credential-pattern[hidden]{display:none!important}.credential-pattern{display:grid;gap:6px}.account-form .credential-pattern{grid-column:1/-1}.account-form .pattern-pad{width:168px;gap:7px;padding:8px}.account-form .pattern-dot{min-width:30px;min-height:30px}.managed-account{display:grid;grid-template-columns:minmax(80px,.5fr) minmax(250px,1.5fr) auto;align-items:start;gap:9px;padding:9px;border:1px solid var(--line);border-radius:8px}.managed-account-info{padding-top:10px;overflow-wrap:anywhere}.account-password-form{display:grid;grid-template-columns:minmax(110px,.7fr) minmax(120px,1fr) auto;gap:6px;align-items:start}.account-password-form input{min-width:0}.account-password-form .credential-pattern{grid-column:1/-1}.account-password-form .pattern-pad{width:170px;gap:7px;padding:8px}.account-password-form .pattern-dot{min-width:30px;min-height:30px}.remove-account{min-height:38px;padding:7px 9px;border:1px solid #eedbd7;border-radius:7px;background:var(--paper);color:#a24d42;font-size:11px;font-weight:700}.all-bookings-dialog{max-width:1120px;width:min(1120px,calc(100vw - 22px))}.booking-filters{display:grid;grid-template-columns:repeat(5,minmax(90px,1fr)) auto;gap:7px;align-items:end}.booking-filters label{display:grid;gap:4px;color:var(--muted);font-size:10px;font-weight:700}.booking-filters input,.booking-filters select{min-width:0;min-height:36px;padding:7px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font-size:11px}.all-bookings-summary{display:flex;justify-content:space-between;margin:11px 0;color:var(--muted);font-size:11px}.all-bookings-table-wrap{max-height:54vh;max-height:54dvh;overflow:auto;border:1px solid var(--line);border-radius:8px}.all-bookings-table{width:100%;border-collapse:collapse;font-size:11px}.all-bookings-table th,.all-bookings-table td{padding:8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.all-bookings-table th{position:sticky;top:0;background:var(--paper);color:var(--muted);font-size:10px}.all-bookings-table input{accent-color:var(--accent)}.booking-row-controls{display:flex;align-items:center;gap:4px}.expand-booking-button{width:24px;height:24px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink)}.booking-detail-row td{white-space:normal;background:color-mix(in srgb,var(--paper) 88%,var(--canvas))}.booking-detail-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;padding:8px}.booking-detail-item{display:grid;gap:3px;overflow-wrap:anywhere}.booking-detail-item span{color:var(--muted);font-size:9px;text-transform:uppercase}.booking-detail-item strong{font-size:11px}.description-detail{grid-column:1/-1}.date-picker{position:fixed;opacity:0;width:1px;height:1px;pointer-events:none;left:-10px;top:-10px}.toast{position:fixed;left:50%;bottom:22px;z-index:1100;transform:translate(-50%,20px);opacity:0;padding:10px 15px;border-radius:8px;background:#273a30;color:white;pointer-events:none;transition:.2s}.toast.show{transform:translate(-50%,0);opacity:1}
body.dark{--ink:#e5e5e5;--muted:#aaa;--line:#414141;--paper:#292929;--canvas:#1d1d1d;--accent:#bdbdbd;--tile:#383838;--colleague-bg:#484848;color-scheme:dark}body.dark .primary-btn,body.dark .day-head.today .day-num,body.dark .account-bubble-initials{color:#222}body.dark .pattern-dot[aria-pressed=true]{box-shadow:inset 0 0 0 6px #292929}body.custom-theme{--ink:var(--custom-ink);--muted:color-mix(in srgb,var(--custom-ink) 58%,var(--custom-paper));--line:color-mix(in srgb,var(--custom-ink) 16%,var(--custom-paper));--paper:var(--custom-paper);--canvas:var(--custom-canvas);--accent:var(--custom-accent);--tile:var(--custom-tile);--colleague-bg:var(--custom-colleague)}body.custom-theme .settings-btn,body.custom-theme .secondary-btn,body.custom-theme .today-btn,body.custom-theme .icon-btn,body.custom-theme .booking{color:var(--ink)}body.custom-theme .pattern-dot[aria-pressed=true]{box-shadow:inset 0 0 0 6px var(--paper)}body.large-text{font-size:16px}body.large-text .day-name,body.large-text .booking-reg,body.large-text .booking-model{font-size:11px}
@media(hover:none){.booking-actions{opacity:1;pointer-events:auto}}@media(max-width:900px){.heading-row{align-items:flex-start;flex-direction:column}.calendar-toolbar{align-items:flex-start;flex-direction:column}.toolbar-tools{width:100%;justify-content:space-between}.booking-filters{grid-template-columns:repeat(2,minmax(100px,1fr))}}@media(max-width:650px){.app{padding:19px 12px 25px}.heading-row h1{font-size:27px}.heading-actions{justify-content:flex-start}.week-control{gap:6px}.week-control strong{min-width:135px;font-size:12px}.calendar-scroll{max-height:calc(100dvh - 230px)}.modal-body{padding:14px}.modal-head,.modal-foot{padding:12px 14px}.form-grid,.account-form{grid-template-columns:1fr}.full,.section-label,.account-form .credential-pattern{grid-column:1}.managed-account{grid-template-columns:1fr}.managed-account-info{padding-top:0}.account-password-form{grid-template-columns:1fr}.account-password-form .credential-pattern{grid-column:1}.booking-filters{grid-template-columns:1fr}.booking-detail-panel{grid-template-columns:repeat(2,minmax(0,1fr))}.all-bookings-table-wrap{max-height:48dvh}.setting-row{align-items:flex-start;flex-direction:column}.scale-control{width:100%;min-width:0}}
.account-form label,.account-password-form label{display:grid;gap:5px;font-size:11px;font-weight:700}.account-form input,.account-password-form input{width:100%;min-width:0;min-height:39px;padding:8px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font-size:12px}.account-form .pattern-entry,.account-password-form .pattern-entry{font-size:11px}.account-password-form .credential-password{display:block}.account-password-form .credential-password input{min-height:38px;font-size:11px}body.dark .booking.high,body.dark .booking.low{border-left-color:var(--accent)}


/* Touch-friendly sign-in keyboard and keypad */
.login-pad-controls{display:flex;flex-wrap:wrap;gap:8px}
.login-pad-controls button{min-height:42px}
.login-input-pad{display:grid;gap:6px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--canvas);touch-action:manipulation}
.login-pad-row{display:flex;justify-content:center;gap:5px}
.login-pad-key{flex:1;min-width:0;min-height:44px;padding:7px 4px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink);font:600 15px Arial,sans-serif;touch-action:manipulation}
.login-pad-key:active{background:var(--accent);color:var(--paper)}
.login-pad-key.wide{flex:1.5;font-size:12px}
.admin-login-hotspot{position:fixed;right:0;bottom:0;z-index:1001;width:18px;height:18px;padding:0;border:0;background:transparent;opacity:0;cursor:pointer}
@media(max-width:420px){.login-pad-row{gap:3px}.login-pad-key{min-height:42px;padding:6px 2px;font-size:13px}.login-pad-key.wide{font-size:11px}}

@supports not (color: color-mix(in srgb, black, white)) {
  body.custom-theme { --muted: #68736d; --line: #cbd1c9; }
  .day-column.closed { background: var(--canvas); }
  .day-column.drag-over { background: var(--tile); }
  .booking { border: 1px solid var(--line); border-left: 4px solid var(--accent); }
  .booking-detail-row td { background: var(--canvas); }
  button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline-color: var(--accent); }
}

@media (hover:none) { .booking-actions { opacity:1; pointer-events:auto; } .booking { cursor:pointer; } }

button:focus,input:focus,select:focus,textarea:focus{outline:3px solid var(--accent);outline-offset:2px}
dialog::backdrop{backdrop-filter:none}


.sync-status{align-self:center;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--muted);font-size:10px}.offline-login-toggle{margin-top:10px}.data-sync-actions{display:flex;flex-wrap:wrap;gap:8px}.data-sync-actions button{min-height:40px}

.app-footer{display:flex;justify-content:flex-end;margin:10px 2px 0;color:var(--muted);font-size:10px}

.booking-photo-panel{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:8px}.booking-photo-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.booking-photo-panel img{display:block;width:auto;max-width:100%;max-height:340px;object-fit:contain;border-radius:6px}.booking-photo-panel img[hidden]{display:none!important}@media (hover:none){.booking-actions{opacity:1;pointer-events:auto}}

.delete-btn.restore-bookings{border-color:var(--accent);color:var(--accent)}

.brand-lockup{display:flex;align-items:center;gap:14px;min-width:0}.brand-lockup img{display:block;width:auto;max-width:min(180px,28vw);height:58px;object-fit:contain}.brand-lockup img[hidden],#companyLogoPreview[hidden]{display:none!important}.logo-setting{padding:4px 0 10px;border-bottom:1px solid var(--line)}.logo-setting .setting-row{border:0;padding:6px 0}.logo-setting-actions{display:flex;align-items:center;gap:7px}.logo-setting input[type=file]{display:none}.logo-setting>img{display:block;width:auto;max-width:min(300px,100%);max-height:120px;margin:4px 0 8px;object-fit:contain;border:1px solid var(--line);border-radius:7px;padding:5px;background:var(--paper)}.logo-setting>p{margin:4px 0}.logo-setting #companyLogoRemove[hidden]{display:none!important}@media(max-width:650px){.brand-lockup{gap:9px}.brand-lockup img{height:42px;max-width:100px}.brand-lockup h1{font-size:24px!important}}
