:root{--ink:#462f3c;--muted:#876e78;--rose:#e87897;--deep:#c95d7c;--pale:#fff4f6;--line:#f0dce3;--cream:#fffdf9;--shadow:0 18px 48px rgba(105,54,73,.11)}*{box-sizing:border-box}body{margin:0;background:linear-gradient(125deg,#fffdf9 0%,#fff6f7 68%,#f8f0ff 100%);color:var(--ink);font:14px "DM Sans","Noto Sans HK",sans-serif;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}.booking-shell{width:min(720px,calc(100% - 36px));margin:auto;padding:42px 0 50px}.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.brand>span{display:grid;place-items:center;width:39px;height:39px;border-radius:15px 15px 15px 4px;color:#fff;background:linear-gradient(145deg,#efacc1,#dc6688);box-shadow:0 8px 16px #e9afbf99}.brand strong,.brand small{display:block}.brand strong{font:700 20px "Playfair Display","Noto Sans HK",serif}.brand small{font-size:9px;letter-spacing:1.4px;color:#b28a98;margin-top:2px}.hero{padding:60px 8px 35px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.4px;color:#b38594;margin:0 0 8px}.hero h1,.admin-title h1,.login-card h1{font:600 clamp(34px,8vw,51px)/1.14 "Playfair Display","Noto Sans HK",serif;margin:0}.hero em{color:#d26482}.hero>p:last-child{color:var(--muted);line-height:1.7;margin:17px 0 0}.booking-card,.success-card,.login-card,.admin-card{background:#fffdfd;border:1px solid #f2e3e8;border-radius:23px;box-shadow:var(--shadow);padding:28px}.step-heading{display:flex;align-items:flex-start;gap:11px;margin:28px 0 14px}.step-heading:first-child{margin-top:0}.step-heading>span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:#fbe8ee;color:#ca5d7e;font-weight:700}.step-heading h2,.success-card h2,.admin-card h2{font:600 21px "Playfair Display","Noto Sans HK",serif;margin:0}.step-heading p,.admin-card>p,.login-card>p{color:var(--muted);font-size:12px;margin:3px 0 0}.service-options{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.service-option,.slot{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;text-align:left;color:var(--ink);transition:.18s}.service-option:hover,.service-option.selected,.slot:hover,.slot.selected{border-color:#df8da6;background:#fff0f4;box-shadow:0 4px 12px #d96b8622}.service-option strong,.service-option span,.service-option small{display:block}.service-option span{font-size:12px;color:var(--muted);margin-top:4px}.service-option small{font-size:11px;color:#c16682;margin-top:8px;font-weight:700}.date-row{display:flex;gap:10px;align-items:end}.date-row label{flex:1}.date-row button,.book-button{background:var(--rose);color:#fff;border:0;border-radius:11px;padding:11px 17px;font-weight:700;box-shadow:0 8px 17px #e878973b}.date-row button:hover,.book-button:hover{background:var(--deep)}label{display:grid;gap:6px;color:#80646e;font-size:12px;font-weight:700;margin:15px 0}input,textarea{background:#fff;border:1px solid #ead8de;border-radius:9px;color:var(--ink);padding:10px;outline:none}input:focus,textarea:focus{border-color:#df91a7;box-shadow:0 0 0 3px #fce7ed}.slot-options{display:flex;flex-wrap:wrap;gap:8px}.slot{min-width:76px;padding:9px 11px;text-align:center;font-weight:700}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.details-grid label{margin:0}.book-button{width:100%;margin-top:8px}.book-button:disabled{opacity:.6;cursor:not-allowed}.book-button span{font-size:18px;margin-left:4px}.hint,.loading{color:var(--muted);font-size:12px;margin:4px 0}.form-message{min-height:18px;color:#bf526e;margin:12px 0 0;font-size:12px}.form-message.success{color:#4a8e71}.success-card{text-align:center;margin-top:20px}.success-mark{display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:#fce8ef;color:#d26785;font-size:29px;margin:0 auto 17px}.success-card h2{font-size:27px}.success-card>p:not(.eyebrow){color:var(--muted);margin:10px auto 20px}.interac-box{text-align:left;background:#f8f3ff;border:1px solid #e5ddf6;border-radius:14px;padding:17px}.interac-box strong{color:#654a99}.interac-box p{color:#786883;line-height:1.65;margin:7px 0 0}.fine-print{font-size:11px!important;line-height:1.6}.secondary-button{background:#fff;border:1px solid #e9cad5;border-radius:10px;color:#bd647e;padding:9px 14px;font-weight:700}footer{text-align:center;color:#a98a95;font-size:11px;padding:26px 0}.admin-body{background:#fffafc}.admin-shell{width:min(1200px,calc(100% - 42px));margin:auto;padding:32px 0 60px}.admin-header{display:flex;justify-content:space-between;align-items:center}.login-card{width:min(450px,100%);margin:80px auto}.login-card h1{font-size:32px}.login-card form{margin-top:26px}.admin-title{display:flex;justify-content:space-between;align-items:end;margin:45px 0 23px}.admin-title h1{font-size:37px}.admin-title>p{color:var(--muted)}.admin-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(400px,1.3fr);gap:20px}.admin-card{padding:24px}.admin-card h2{margin-bottom:3px}.blocked-list{border-top:1px solid #f4e7eb;margin-top:19px}.blocked-row,.admin-appointment{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #f4e7eb;padding:14px 0}.blocked-row strong,.blocked-row small{display:block}.blocked-row small,.admin-appointment small{color:var(--muted);font-size:11px;margin-top:3px}.blocked-row button{border:0;background:#fff0f3;color:#bd5f7d;border-radius:8px;padding:6px 8px;font-size:11px;font-weight:700}.admin-appointment{display:grid;grid-template-columns:120px 1fr 114px}.admin-appointment time{color:#b35473;font-weight:700}.admin-appointment time small{display:block}.admin-appointment strong,.admin-appointment small{display:block}.status-select{background:#fffafc;border:1px solid #e9d8df;border-radius:8px;padding:7px;color:var(--ink)}@media(max-width:650px){.booking-shell,.admin-shell{width:min(100% - 28px,720px);padding-top:25px}.hero{padding:43px 3px 28px}.booking-card,.success-card,.admin-card,.login-card{padding:20px}.service-options,.details-grid,.admin-grid{grid-template-columns:1fr}.date-row{align-items:stretch;flex-direction:column}.admin-title{display:block;margin-top:34px}.admin-title>p{font-size:12px}.admin-appointment{grid-template-columns:94px 1fr}.status-select{grid-column:2}.admin-card{overflow:hidden}}
