@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/font-0.ttf)format("truetype")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/font-1.ttf)format("truetype")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/assets/font-2.ttf)format("truetype")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/assets/font-3.ttf)format("truetype")}:root{--canvas:#f4f3ef;--paper:#fffefa;--ink:#293c35;--muted:#5f6861;--line:#d3d7ce;--forest:#365b49;--sage:#e5ebe1;--green:#f0f7ea;--green-ink:#205b35;--rose:#f8eff0;--wine:#70243d}*{box-sizing:border-box}body{background:var(--canvas);color:var(--ink);margin:0;font:18px/1.5 Atkinson Hyperlegible,Arial,sans-serif}h1,h2,h3,p{margin:0}h1,h2,h3,.wordmark{font-family:Bricolage Grotesque,sans-serif}h1{letter-spacing:-1.3px;font-size:40px;line-height:1.15}h2{font-size:25px;line-height:1.3}h3{font-size:20px;line-height:1.4}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.6}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--forest);outline-offset:4px;box-shadow:0 0 0 3px #fff}svg{vertical-align:middle;flex:none}small,.small{font-size:16px}.muted{color:var(--muted)}.wordmark{letter-spacing:-1.7px;white-space:nowrap;align-items:center;gap:9px;font-size:34px;font-weight:700;display:flex}.wordmark svg{color:#66836a;width:29px}.header{border-bottom:1px solid var(--line)}.header-inner{align-items:center;gap:26px;max-width:1440px;min-height:94px;margin:auto;padding:20px 36px;display:flex}.header nav{gap:7px;margin-left:auto;display:flex}.header nav button{background:0 0;border:0;border-radius:9px;align-items:center;gap:8px;min-height:48px;padding:12px 15px;font-size:16px;font-weight:700;display:flex}.header nav .active{background:#e4e9e0}.identity{border-left:1px solid var(--line);padding-left:24px;line-height:1.3}.identity small,.identity strong{display:block}.identity small{color:var(--muted);font-size:14px}.icon-button{background:var(--paper);border:1px solid #bdc6ba;border-radius:10px;place-items:center;width:48px;height:48px;display:inline-grid}.logout{background:0 0;border:0}.page{max-width:1400px;margin:auto;padding:36px 36px 24px}.page-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:30px;display:flex}.association{color:var(--muted);margin-bottom:10px;font-size:16px}.intro{color:var(--muted);margin-top:12px}.help-button{white-space:nowrap;background:0 0;border:0;border-bottom:1px solid #a4b09f;align-items:center;gap:8px;padding:10px 0;font-size:16px;display:flex}.button{background:var(--paper);border:1px solid #8c9b86;border-radius:9px;justify-content:center;align-items:center;gap:9px;min-height:50px;padding:10px 18px;font-weight:700;display:inline-flex}.button:hover:not(:disabled){background:#eaf0e5}.button.primary{background:var(--forest);border-color:var(--forest);color:#fff}.button.primary:hover:not(:disabled){background:#284837}.button.quiet{background:0 0;border-color:#0000}.button.full{width:100%;margin-top:16px}.reservation{background:var(--sage);border:1px solid #cdd8c7;border-radius:12px;align-items:center;gap:18px;margin-bottom:26px;padding:20px 24px;display:flex}.stamp{background:#cfddc9;border-radius:50%;place-items:center;width:48px;height:48px;display:grid}.reservation strong{font-size:21px;display:block}.reservation small,.reservation span{font-size:16px}.reservation-actions{gap:10px;margin-left:auto;display:flex}.room-bar{justify-content:space-between;align-items:center;gap:16px;margin:0 0 20px;display:flex}.room-bar>p{color:var(--muted);font-size:16px}.room-tabs{border:1px solid var(--line);background:#eaede5;border-radius:10px;gap:4px;padding:4px;display:flex}.room-tabs button{background:0 0;border:0;border-radius:7px;min-height:48px;padding:9px 24px;font-weight:700}.room-tabs .active{background:var(--paper);box-shadow:0 1px 5px #293c3518}.calendar-section{background:var(--paper);border:1px solid #dddfd6;border-radius:16px;padding:24px}.calendar-toolbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;display:flex}.calendar-toolbar h2{font-size:23px}.week-actions{align-items:center;gap:8px;display:flex}.legend{flex-wrap:wrap;gap:24px;margin-bottom:24px;font-size:16px;display:flex}.legend>span{align-items:center;gap:8px;display:flex}.legend i{border-radius:6px;place-items:center;width:29px;height:29px;display:grid}.legend svg{width:19px}.calendar{table-layout:fixed;border-collapse:separate;border-spacing:8px;width:100%}.calendar th{text-align:left;vertical-align:bottom;padding:0 4px 12px;font-size:16px}.calendar th:first-child{width:76px}.calendar th>span,.calendar th>strong,.calendar th>small{display:block}.calendar th>span{color:var(--muted);font-size:15px}.calendar th>strong{font-size:21px}.calendar th>small{color:var(--forest);height:20px;font-size:13px}.calendar td{vertical-align:top;padding:0}.calendar tbody th{vertical-align:middle;font-size:19px}.slot{text-align:left;border:1px solid #0000;border-radius:9px;align-items:flex-start;width:100%;min-height:112px;padding:13px 11px;transition:transform .15s,box-shadow .15s;display:flex}.slot:disabled{opacity:1}.slot:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 2px #66836a}.slot-body{flex-direction:column;gap:7px;min-width:0;display:flex}.slot-title{flex-wrap:wrap;align-items:center;gap:6px;font-size:17px;font-weight:700;display:flex}.slot small{overflow-wrap:anywhere;font-size:15px}.open{background:var(--green);color:var(--green-ink);border-color:#b2c99f}.open svg{background:#ccf3b4;border-radius:50%;padding:2px}.taken{background:var(--rose);color:var(--wine);border-color:#e4cfd3}.slot.taken{border-left:4px solid #bd8394}.taken svg{background:#f1cbd3;border-radius:5px;padding:2px}.selected{color:var(--ink);border-color:var(--forest);background:#e8ece3}.slot.selected{outline:2px solid var(--forest);outline-offset:2px}.selected svg{background:var(--forest);color:#fff;border-radius:50%;padding:2px}.own{color:var(--ink);background:#d6e3d2;border-color:#8ca384}.closed,.service{color:#626a61;background:#eeefea;border-color:#d9ddd4}.slot.service{border-top:4px solid #8a9484}.mobile-time,.mobile-days,.mobile-slots,.bottom-nav{display:none}.rules-strip{flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:22px;font-size:16px;display:flex}.rules-strip span{align-items:center;gap:8px;display:flex}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:16px;margin-top:40px;padding-top:20px;font-size:14px;display:flex}.notice,.moving-note{background:#e3eddb;border:1px solid #b9cbaa;border-radius:9px;align-items:center;gap:12px;margin-bottom:22px;padding:14px 18px;display:flex}.notice button{background:0 0;border:0;min-width:44px;margin-left:auto;font-size:25px}.moving-note{background:#eeefe8;justify-content:space-between}.error{color:#70243d;background:#f6e6e8;border-radius:8px;margin:16px 0;padding:14px 18px}.info{background:var(--sage);border-radius:8px;margin-top:16px;padding:14px}.content-panel{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:30px}.booking-row{border-bottom:1px solid var(--line);align-items:center;gap:18px;padding:24px 0;display:flex}.booking-row>div{flex:1}.booking-row p{color:var(--muted);font-size:16px}.section-gap{margin-top:36px}.empty{text-align:center;padding:50px 20px}.empty h3{margin-top:15px}.empty p{margin:8px 0 20px}.history-row{border-bottom:1px solid #e5e7df;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;font-size:16px;display:flex}.history-row small{color:var(--muted);overflow-wrap:anywhere;margin-top:4px;font-size:14px;display:block}.pill{white-space:nowrap;background:#eaede5;border-radius:20px;padding:5px 12px;font-size:14px;display:inline-block}.list-heading{justify-content:space-between;align-items:center;display:flex}.stats{grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:26px;display:grid}.stats article{border:1px solid var(--line);background:var(--paper);border-radius:12px;padding:26px}.stats strong{font-family:Bricolage Grotesque,sans-serif;font-size:48px;line-height:1.4;display:block}.stats p{color:var(--muted);font-size:16px}.account-panel,.rules-panel{max-width:760px}.account-panel h2{margin-top:16px}.account-panel dl{grid-template-columns:1fr 2fr;gap:15px;margin:30px 0;display:grid}.account-panel dd{margin:0}.account-panel dt{color:var(--muted)}.account-panel>.button{margin-top:25px}.field{margin:24px 0;display:block}.field>span{margin-bottom:10px;font-weight:700;display:block}.field input{width:100%;max-width:100%;min-height:50px;color:var(--ink);background:#fff;border:1px solid #a3b19c;border-radius:8px;padding:12px}.rules-panel .field input{width:110px}.rules-panel>.primary{margin-top:24px}dialog{width:calc(100% - 32px);max-width:570px;color:var(--ink);background:var(--paper);border:1px solid #b7c7b0;border-radius:18px;padding:32px;box-shadow:0 24px 100px #293c3540}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#293c3570}dialog h2{margin:8px 0 24px;padding-right:45px}dialog p{margin-top:16px}.modal-close{background:0 0;border:0;position:absolute;top:18px;right:18px}.selected-summary{background:var(--sage);border-radius:10px;gap:14px;padding:18px;display:flex}.selected-summary p{margin:4px 0 0}.help-steps{padding-left:25px}.help-steps li{padding:10px 0}.login-page{grid-template-columns:1fr 1fr;align-items:center;gap:90px;max-width:1300px;min-height:100vh;margin:auto;padding:45px 50px;display:grid}.login-brand{flex-direction:column;justify-content:space-between;align-self:stretch;gap:45px;display:flex}.login-intro h1{margin:20px 0;font-size:62px;line-height:1.1}.login-intro>p{max-width:410px;color:var(--muted);font-size:20px}.tiny-label{color:var(--muted);font-size:16px}.login-card{border:1px solid var(--line);background:var(--paper);border-radius:18px;padding:40px}.login-card h2{margin:20px 0 10px;font-size:30px}.login-card>p{color:var(--muted)}.demo-label{background:var(--sage);border-radius:7px;margin:26px 0 14px;padding:8px 12px;font-size:14px}.account-option{border:1px solid var(--line);background:var(--paper);text-align:left;border-radius:10px;align-items:center;gap:16px;width:100%;min-height:80px;margin:12px 0;padding:18px;display:flex}.account-option:hover{background:var(--sage)}.account-option span{flex:1}.account-option strong,.account-option small{display:block}.account-option small{color:var(--muted)}.login-card>.small{margin-top:24px}.laundry-art{align-items:flex-end;gap:22px;margin:35px 0;display:flex}.machine{background:#dde5d6;border:1px solid #b9c7b0;border-radius:12px;width:165px;height:170px;padding:16px}.machine i{background:#81967a;border-radius:50%;width:13px;height:13px;margin-left:auto;display:block}.machine>span{color:#365b49;background:#a7ba9d;border:7px solid #f6f6ef;border-radius:50%;place-items:center;width:105px;height:105px;margin:12px auto 0;display:grid}.machine svg{stroke-width:1px;width:60px;height:60px}.linen{color:#61745a;max-width:130px;padding-bottom:12px;font-size:17px}@media (min-width:761px) and (max-width:1150px){.header-inner{gap:16px;padding:18px 24px}.header nav button{padding:10px;font-size:15px}.header nav svg{display:none}.wordmark{font-size:29px}.page{padding:28px 24px}.calendar-section{padding:18px 10px}.calendar{border-spacing:6px}.slot{padding:10px 7px}.slot-title{font-size:16px}.calendar th>span{font-size:13px}.calendar th>strong{font-size:18px}.calendar th:first-child{width:67px}.reservation{flex-wrap:wrap}.reservation-actions{margin-left:auto}.identity{padding-left:12px}.calendar-toolbar,.legend{padding:0 10px}.login-page{gap:35px;padding:40px}.login-intro h1{font-size:50px}}@media (max-width:760px){h1{letter-spacing:-.7px;font-size:30px}.header-inner{gap:12px;min-height:82px;padding:18px}.wordmark{gap:5px;font-size:28px}.wordmark svg{width:24px}.header nav{display:none}.identity{margin-left:auto;padding-left:12px}.logout{width:36px;min-width:36px}.page{padding:26px 18px 105px}.page-heading{margin-bottom:24px}.help-button{display:none}.intro{margin-top:10px;font-size:17px}.reservation{flex-wrap:wrap;align-items:flex-start;gap:12px;padding:17px}.reservation strong{font-size:20px}.reservation-actions{gap:8px;width:100%;margin-left:0}.reservation-actions .button{flex:1}.stamp{width:35px;height:35px}.reservation>div:nth-child(2){flex:1}.room-bar{display:block}.room-tabs button{flex:1}.room-bar>p{margin-top:10px;font-size:14px}.calendar-section{border-radius:12px;padding:18px 12px}.calendar-toolbar{align-items:flex-start;gap:6px}.calendar-toolbar h2{max-width:160px;font-size:18px}.week-actions{gap:4px}.week-actions .button{display:none}.week-actions .icon-button{width:44px;height:44px}.legend{gap:10px 14px;margin-bottom:18px;font-size:13px}.legend i{width:25px;height:25px}.legend>span{gap:5px}.calendar{display:none}.mobile-days{grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;margin-bottom:20px;display:grid}.mobile-days button{background:0 0;border:0;border-radius:8px;min-height:62px;padding:5px 0;position:relative}.mobile-days strong,.mobile-days span{display:block}.mobile-days span{font-size:14px}.mobile-days strong{font-size:21px}.mobile-days .active{background:var(--forest);color:#fff}.mobile-days i{background:currentColor;border-radius:50%;width:4px;height:4px;position:absolute;bottom:4px;left:calc(50% - 2px)}.mobile-slots{gap:12px;display:grid}.mobile-slots h3{margin-bottom:4px;font-size:17px}.slot{align-items:center;gap:14px;min-height:90px;padding:16px 12px}.mobile-time{white-space:nowrap;font-size:22px;font-weight:700;display:block}.slot-body{flex:1}.slot-title{flex-wrap:nowrap;font-size:18px}.slot-title svg{order:2;margin-left:auto}.slot small{font-size:15px}.rules-strip{gap:12px;font-size:15px;display:grid}.footer{margin-top:30px;font-size:13px;display:block}.footer span{margin-top:6px;display:block}.bottom-nav{background:var(--paper);border-top:1px solid var(--line);padding:8px 6px max(8px, env(safe-area-inset-bottom));z-index:10;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{background:0 0;border:0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:60px;min-height:54px;padding:6px 8px;font-size:13px;font-weight:700;display:flex}.bottom-nav .active{background:var(--sage)}.content-panel{padding:20px}.booking-row{flex-wrap:wrap;gap:12px}.booking-row>div{min-width:75%}.booking-row h3{font-size:19px}.stats{grid-template-columns:1fr;gap:12px}.stats article{padding:20px}.stats strong{font-size:38px}.history-row{align-items:flex-start;gap:10px;font-size:15px}.history-row time{white-space:nowrap;font-size:13px}.history-row>span:first-child{min-width:0}.list-heading{display:block}.list-heading .pill{margin-top:12px}.account-panel dl{grid-template-columns:1fr;gap:6px}.account-panel dt{margin-top:10px}.notice,.moving-note{align-items:flex-start;padding:12px;font-size:16px}.moving-note{flex-wrap:wrap}dialog{padding:24px 20px}dialog h2{font-size:24px}.selected-summary{gap:10px;padding:16px}.selected-summary h3{font-size:19px}.login-page{padding:24px 20px;display:block}.login-intro h1{font-size:40px}.login-brand{gap:24px}.login-intro{margin:12px 0 24px}.login-intro>p{font-size:18px}.laundry-art,.login-brand>.muted{display:none}.login-card{padding:24px}.login-card h2{font-size:25px}.account-option{padding:15px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.admin-tabs,.admin-row-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.admin-tabs{margin:24px 0}.admin-form{max-width:680px;margin:28px 0 36px}.admin-form .field{margin-bottom:20px}.field textarea,.field select{font:inherit;color:inherit;background:var(--paper,#fffefa);border:1px solid #b8c3b9;border-radius:10px;width:100%;min-height:48px;padding:12px}.field textarea{resize:vertical}.timetable-row{border:1px solid #ccd3c8;border-radius:14px;margin:16px 0;padding:16px}.timetable-row legend{padding:0 8px}.timetable-row .field{min-width:100px;margin:0}.weekday-checks{flex-wrap:wrap;gap:12px;margin-top:16px;display:flex}.weekday-checks label{align-items:center;gap:6px;min-height:44px;display:flex}.weekday-checks input{accent-color:#365b49;width:20px;height:20px}.admin-notice{background:#e5ebe1;border-radius:12px;padding:16px}.invite-code{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;letter-spacing:1px;font-size:24px;font-weight:700}@media (max-width:640px){.admin-panel .history-row{flex-direction:column;align-items:flex-start;gap:12px}.admin-tabs .button{flex:40%;font-size:14px}.admin-panel .list-heading{flex-direction:column;align-items:flex-start;gap:12px}.admin-row-actions{gap:8px}}@media print{body:has(.print-invitation) *{visibility:hidden}body:has(.print-invitation) dialog{visibility:visible}body:has(.print-invitation) .print-invitation{visibility:visible}body:has(.print-invitation) .print-invitation *{visibility:visible}body:has(.print-invitation) dialog{width:100%;max-width:none;box-shadow:none;border:0;position:absolute;top:0;left:0}body:has(.print-invitation) dialog::backdrop{background:#fff}}.simple-page{max-width:960px;margin:0 auto;padding:32px 20px}.simple-page .content-panel{margin:24px 0}.simple-page .field{max-width:320px}.simple-page .history-row{flex-wrap:wrap;gap:16px}
