:root{color:#17212b;background:#f4f7f8;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f4f7f8}button{font:inherit}.dashboard{width:min(100%,760px);margin:0 auto;padding:1.25rem 1rem 3rem}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(1.75rem,7vw,2.4rem);line-height:1.1}h2{margin-bottom:.5rem;font-size:1.25rem}h3{margin-bottom:.3rem;font-size:1.05rem}.eyebrow,.item-label{margin-bottom:.35rem;color:#4a5b67;font-size:.8rem;font-weight:750;letter-spacing:.05em;text-transform:uppercase}.panel{margin-top:1rem;padding:1.1rem;border:1px solid #c9d2d8;border-radius:.85rem;background:#fff;box-shadow:0 1px 2px #17212b14}.booking-alert{display:grid;grid-template-columns:auto 1fr;gap:.85rem;margin-top:1rem;padding:1rem;border:3px solid #5a1d00;border-radius:.85rem;background:#fff4cc;color:#321000;box-shadow:0 2px 4px #3210002e}.booking-alert-icon{display:grid;width:2.25rem;height:2.25rem;place-items:center;border-radius:50%;background:#5a1d00;color:#fff;font-size:1.4rem;font-weight:800}.booking-alert-content h2{color:#321000}.booking-alert-content p:last-child{margin-bottom:0}.booking-alert-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.85rem}.booking-alert-button{min-height:3rem;padding:.65rem .9rem;border:2px solid #321000;border-radius:.55rem;background:#321000;color:#fff;cursor:pointer;font-weight:750}.booking-alert-button:disabled{cursor:wait;opacity:.65}.booking-alert-button.secondary-alert-action{background:#fff;color:#321000}.booking-alert-error{margin-top:.75rem;padding:.65rem;border:2px solid #8a1f11;border-radius:.5rem;background:#fff;color:#641b1b;font-weight:700}.bathroom-status{border-width:2px}.bathroom-status.available{border-color:#167143}.bathroom-status.occupied{border-color:#8f3d16}.bathroom-status h2{font-size:1.6rem}.next-reservation{margin:1rem 0 0;padding-top:.8rem;border-top:1px solid #d9e0e4;font-weight:650}.section-intro,.empty-state{color:#4a5b67}.member-buttons{display:grid;grid-template-columns:1fr;gap:.75rem}.member-button,.retry-button{min-height:3.25rem;border:2px solid #305b75;border-radius:.65rem;background:#fff;color:#17212b;cursor:pointer;font-weight:750}.member-button{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;text-align:left}.member-button.selected{border-color:#073b5c;background:#073b5c;color:#fff}.member-button span{font-size:.85rem}.retry-button{min-width:9rem;padding:.75rem 1rem;background:#073b5c;color:#fff}.reservation-list,.queue-list,.attention-list{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}.reservation,.queue-item,.attention-item{padding:.85rem;border-left:.35rem solid #305b75;border-radius:.4rem;background:#eef3f5}.current-visit,.active-queue{border-left-color:#8f3d16}.claimed-queue{border-left-color:#6d4c00;background:#fff7d6}.attention-item{border-left-color:#9c2c2c;background:#fff0f0}.reservation p:last-child,.queue-item p:last-child,.attention-item p:last-child{margin-bottom:0}.stale-notice,.refresh-error{margin:0;padding:.7rem;border:1px solid #9c2c2c;border-radius:.5rem;background:#fff0f0;color:#641b1b;font-weight:650}.stale-notice{font-size:.85rem}.stale-actions{display:grid;gap:.5rem}.refresh-button{min-height:2.5rem;border:2px solid #641b1b;border-radius:.5rem;background:#fff;color:#641b1b;cursor:pointer;font-weight:750}.install-button{min-height:2.5rem;padding:.5rem .7rem;border:2px solid #073b5c;border-radius:.5rem;background:#fff;color:#073b5c;cursor:pointer;font-weight:750;white-space:nowrap}.error-panel{border-color:#9c2c2c;background:#fff0f0}.passcode-screen{display:grid;min-height:100vh;min-height:100dvh;place-items:center;padding:1.25rem 1rem}.passcode-form{display:grid;gap:.85rem;width:min(100%,380px)}.passcode-form h1{margin:0 0 .5rem}.passcode-form label{font-size:1.1rem;font-weight:700}.passcode-form input{min-height:3.25rem;padding:.75rem .9rem;border:2px solid #305b75;border-radius:.65rem;font:inherit;font-size:1.1rem}.passcode-error{margin:0;padding:.75rem .9rem;border:1px solid #9c2c2c;border-radius:.65rem;background:#fff0f0;color:#7a1f1f;font-weight:650}.passcode-button{min-height:3.5rem;border:0;border-radius:.65rem;background:#073b5c;color:#fff;cursor:pointer;font-size:1.15rem;font-weight:750}.passcode-button:disabled{cursor:default;opacity:.6}.loading{margin-top:2rem;font-size:1.1rem}.booking-action{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem;padding:1.1rem;border-radius:.85rem;background:#073b5c;color:#fff}.booking-action h2,.booking-action p{margin-bottom:.25rem}.queue-controls{border-width:2px;border-color:#305b75}.queue-status{margin-top:.75rem;padding:.85rem;border-left:.35rem solid #305b75;border-radius:.4rem;background:#eef3f5}.queue-status p:last-of-type{margin-bottom:0}.queue-action-button{min-height:2.8rem;margin-top:.75rem;padding:.6rem .85rem;border:2px solid #073b5c;border-radius:.55rem;background:#073b5c;color:#fff;cursor:pointer;font-weight:750}.queue-action-button:disabled{cursor:wait;opacity:.65}.queue-action-button.secondary-action{border-color:#7a2b18;background:#fff;color:#7a2b18}.queue-join-form{display:grid;gap:.75rem;margin-top:.85rem}.queue-join-form label{display:grid;gap:.35rem;font-weight:700}.queue-join-form select{min-height:2.8rem;width:100%;padding:.45rem;border:1px solid #71818c;border-radius:.45rem;background:#fff;color:#17212b;font:inherit}.book-button,.submit-button,.cancel-button,.close-button{min-height:2.75rem;border:2px solid currentcolor;border-radius:.55rem;cursor:pointer;font-weight:750}.book-button,.submit-button{padding:.65rem .9rem;background:#fff;color:#073b5c;white-space:nowrap}.booking-feedback{margin:1rem 0 0;padding:.8rem;border:1px solid;border-radius:.55rem;font-weight:650}.booking-feedback.success{border-color:#167143;background:#edf9f1;color:#0a4d29}.booking-feedback.error,.form-error{border-color:#9c2c2c;background:#fff0f0;color:#641b1b}.cancel-button{margin-top:.5rem;padding:.45rem .65rem;border-color:#7a2b18;background:#fff;color:#7a2b18}.recovery-button{min-height:2.75rem;margin-top:.5rem;padding:.45rem .65rem;border:2px solid #073b5c;border-radius:.55rem;background:#fff;color:#073b5c;cursor:pointer;font-weight:750}.recovery-button:disabled{cursor:wait;opacity:.65}.recovery-options{display:grid;gap:.45rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #b58d49}.recovery-options p{margin-bottom:0}.booking-overlay{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:grid;align-items:end;background:#17212b8c}.booking-sheet{max-height:92vh;overflow-y:auto;padding:1.25rem 1rem max(1.5rem,env(safe-area-inset-bottom));border-radius:1rem 1rem 0 0;background:#fff}.sheet-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.close-button{padding:.45rem .65rem;background:#fff;color:#17212b}.booking-sheet form,.booking-sheet fieldset{display:grid;gap:.85rem}.booking-sheet label{display:grid;gap:.35rem;color:#24343f;font-weight:700}.booking-sheet select{min-height:2.8rem;width:100%;padding:.45rem;border:1px solid #71818c;border-radius:.45rem;background:#fff;color:#17212b;font:inherit}.booking-sheet .toggle-label{grid-template-columns:auto 1fr;align-items:start;font-weight:600}.toggle-label input{width:1.25rem;height:1.25rem;margin:.05rem 0 0}.alternative-fields{padding:.85rem;border:1px solid #a9b6be;border-radius:.55rem}.alternative-fields legend{padding:0 .25rem;font-weight:750}.form-error{margin:0;padding:.65rem;border:1px solid;border-radius:.45rem;font-weight:650}.submit-button{width:100%;background:#073b5c;color:#fff}@media(min-width:540px){.dashboard{padding:2rem 1.5rem 3rem}.member-buttons{grid-template-columns:repeat(3,1fr)}.member-button{min-height:4.5rem;flex-direction:column;align-items:flex-start}.booking-sheet{width:min(100%,550px);justify-self:center;margin-bottom:2rem;border-radius:1rem;box-shadow:0 1rem 3rem #00000040}}
