:root{--text:#2b2b2b;--bg:#fff;--border:#d9d9d9;--accent:#3a6df0;--error:#c0392b;color:var(--text);background:var(--bg);font:16px/1.5 system-ui,Segoe UI,Roboto,sans-serif}body{margin:0}#root{flex-direction:column;min-height:100vh;display:flex}.auth-layout{box-sizing:border-box;background:radial-gradient(circle at 15% 15%,#3a3a3a,#141414 65%);justify-content:center;align-items:center;width:100%;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.auth-layout:before,.auth-layout:after{content:"";pointer-events:none;border-radius:50%;position:absolute}.auth-layout:before{background:radial-gradient(circle,#c9a35a40,#0000 70%);width:480px;height:480px;top:-140px;right:-140px}.auth-layout:after{background:radial-gradient(circle,#c9a35a26,#0000 70%);width:360px;height:360px;bottom:-120px;left:-120px}.auth-card{z-index:1;box-sizing:border-box;background:#fff;border-radius:16px;width:100%;max-width:400px;padding:40px 36px;position:relative;box-shadow:0 24px 60px #00000059}.auth-brand{text-align:center;margin-bottom:28px}.auth-brand-mark{color:#fff;background:linear-gradient(135deg,#c9a35a,#8a6d2f);border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 14px;font-size:24px;display:flex}.auth-brand h1{color:#1a1a1a;margin:0 0 4px;font-family:Georgia,Times New Roman,serif;font-size:26px;font-weight:500}.auth-subtitle{color:#777;margin:0;font-size:14px}.auth-card label{color:#444;font-size:13px;font-weight:500}.auth-card input{border-radius:8px;padding:11px 12px}.auth-card input:focus{border-color:#c9a35a;outline:none;box-shadow:0 0 0 3px #c9a35a33}.auth-card button[type=submit]{letter-spacing:.3px;background:linear-gradient(135deg,#c9a35a,#a9843f);width:100%;margin-top:4px;padding:12px 16px;font-weight:600}.auth-card button[type=submit]:hover:not(:disabled){filter:brightness(1.05)}.auth-card>p{text-align:center;color:#555;margin:0;font-size:14px}.auth-card a{color:#a9843f;font-weight:600;text-decoration:none}.auth-card a:hover{text-decoration:underline}.settings-page,.services-page,.appointments-page{box-sizing:border-box;width:100%;max-width:640px;margin:0 auto;padding:32px 16px}.booking-page{box-sizing:border-box;background:#faf8f5;width:100%;min-height:100vh}.booking-layout{width:100%;max-width:720px;margin:0 auto}.page-hint{color:#666;font-size:14px}form{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}label{flex-direction:column;gap:4px;font-size:14px;display:flex}input{font:inherit;border:1px solid var(--border);border-radius:4px;padding:8px 10px}button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:4px;width:fit-content;padding:10px 16px}button:disabled{opacity:.6;cursor:default}.form-error{color:var(--error);margin:0;font-size:14px}.form-status{margin-left:8px;font-size:14px}.hours-editor{border-collapse:collapse;margin-bottom:12px}.hours-editor td{padding:4px 8px}.hours-editor label{flex-direction:row;align-items:center;gap:6px}section{margin-bottom:32px}.admin-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.admin-nav{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.admin-nav a{color:var(--text);border-bottom:2px solid #0000;padding:4px 0;font-size:14px;text-decoration:none}.admin-nav a.active{border-bottom-color:var(--accent);font-weight:600}.admin-header-brand{align-items:center;gap:12px;display:flex}.admin-logo{object-fit:cover;border-radius:6px;flex-shrink:0;width:40px;height:40px}.admin-logo-placeholder{background:var(--accent);color:#fff;justify-content:center;align-items:center;font-weight:600;display:flex}.admin-header-name{font-weight:600}.admin-logout{color:var(--text);border:1px solid var(--border);background:0 0}.logo-field{align-items:center;gap:16px;display:flex}.logo-preview{border:1px dashed var(--border);background:#fafafa;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:72px;height:72px;display:flex;overflow:hidden}.logo-preview img{object-fit:cover;width:100%;height:100%}.logo-preview-placeholder{text-align:center;color:#888;padding:4px;font-size:11px}.logo-field label{flex:1}.cookie-banner{color:#fff;z-index:100;background:#16171d;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;padding:16px 24px;display:flex;position:fixed;bottom:0;left:0;right:0}.cookie-banner p{max-width:640px;margin:0;font-size:14px}.cookie-banner button{background:var(--accent);flex-shrink:0}.services-table,.appointments-table{border-collapse:collapse;width:100%;margin-top:16px}.services-table th,.services-table td,.appointments-table th,.appointments-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px;font-size:14px}.service-inactive{opacity:.5}.link-button{color:var(--error);background:0 0;width:auto;padding:0;text-decoration:underline}.service-form{flex-flow:wrap;align-items:flex-end}.service-form label{flex:1;min-width:120px}.photo-grid{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.photo-thumb{border:1px solid var(--border);border-radius:8px;width:100px;height:100px;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%}.photo-remove{background:#0009;border-radius:0;width:100%;padding:4px;font-size:11px;position:absolute;bottom:0;left:0;right:0}.photo-add-form{flex-direction:row;align-items:flex-end;margin-bottom:0}.photo-add-form label{flex:1}.gallery-hero{background-color:#d8d3c9;background-position:50%;background-size:cover;align-items:flex-end;height:260px;display:flex;position:relative}.gallery-hero-overlay{box-sizing:border-box;background:linear-gradient(#0000,#0000001a 40%,#0009);align-items:center;gap:14px;width:100%;padding:20px 20px 32px;display:flex}.gallery-hero-overlay h1{color:#fff;text-shadow:0 1px 4px #0000004d;margin:0;font-family:Georgia,Times New Roman,serif;font-size:24px;font-weight:500}.gallery-logo{object-fit:cover;border:2px solid #fff;border-radius:10px;flex-shrink:0;width:60px;height:60px;box-shadow:0 4px 12px #0000004d}.gallery-logo-placeholder{background:linear-gradient(135deg, var(--booking-accent), var(--booking-accent-2));color:#fff;justify-content:center;align-items:center;font-size:22px;font-weight:600;display:flex}.gallery-thumbs{background:#faf8f5;gap:8px;padding:12px 20px;display:flex;overflow-x:auto}.gallery-thumbs img{object-fit:cover;cursor:pointer;border-radius:10px;flex-shrink:0;width:76px;height:76px;transition:transform .15s;box-shadow:0 2px 6px #0000001f}.gallery-thumbs img:hover{transform:translateY(-2px)}.lightbox-overlay{z-index:200;box-sizing:border-box;background:#000000d9;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.lightbox-image{object-fit:contain;border-radius:8px;max-width:100%;max-height:100%;box-shadow:0 20px 60px #00000080}.lightbox-close{color:#fff;background:#ffffff26;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:24px;line-height:1;display:flex;position:fixed;top:20px;right:24px}.lightbox-close:hover{background:#ffffff40}.booking-content{z-index:1;background:#fff;border-radius:24px 24px 0 0;min-height:200px;margin-top:-20px;padding:28px 20px 40px;position:relative;box-shadow:0 -10px 30px #0000000f}.booking-content h2{color:#1a1a1a;margin:0 0 16px;font-family:Georgia,Times New Roman,serif;font-size:20px;font-weight:500}.booking-content input:focus{border-color:var(--booking-accent);outline:none;box-shadow:0 0 0 3px #0000001f}.booking-content input{border-radius:8px}.service-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.service-card button{width:100%;color:var(--text);border:1px solid var(--border);text-align:left;background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;transition:box-shadow .15s,border-color .15s,transform .15s;display:flex;box-shadow:0 1px 3px #0000000a}.service-card button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #00000014}.service-card.selected button{border-color:var(--booking-accent);background:#f7f6f4;border-width:2px}.service-card-name{flex:1;font-weight:600}.service-card-duration{color:#666;font-size:13px}.service-card-price{color:var(--booking-accent);font-weight:600}.booking-confirmation{text-align:center;padding:24px 8px 8px}.booking-confirmation-check{background:linear-gradient(135deg, var(--booking-accent), var(--booking-accent-2));color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 16px;font-size:26px;display:flex}.booking-confirmation h2{margin:0 0 12px;font-family:Georgia,Times New Roman,serif;font-size:22px}.booking-confirmation p{color:#555;margin:4px 0}.google-review-button{background:var(--booking-gold);color:#4a3005;letter-spacing:.3px;border-radius:10px;align-items:center;gap:6px;margin-top:20px;padding:12px 20px;font-weight:600;text-decoration:none;display:inline-flex}.google-review-button:hover{filter:brightness(1.05)}:root{--booking-accent:#1a1a1a;--booking-accent-2:#000;--booking-gold:#e0a94a;--booking-green:#2ecc71;--booking-gray-bg:#f2f2f2}.booking-calendar{padding:0}.text-back-link{color:var(--booking-accent);background:0 0;width:auto;padding:0;font-size:14px;font-weight:600}.booking-calendar-header{text-align:center;margin-bottom:16px}.booking-calendar-header h2{margin:6px 0 0}.icon-button{color:var(--text);border:1px solid var(--border);background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;padding:0;font-size:16px;line-height:1;display:flex;box-shadow:0 1px 3px #0000000f}.icon-button:disabled{opacity:.3;box-shadow:none}.day-strip{align-items:center;gap:8px;margin-bottom:18px;display:flex}.day-strip-days{flex:1;gap:8px;padding:2px;display:flex;overflow-x:auto}.day-card{color:var(--text);border:1px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;flex-shrink:0;align-items:center;gap:6px;min-width:56px;padding:10px 6px;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 1px 3px #0000000a}.day-card:not(.disabled):hover{transform:translateY(-1px);box-shadow:0 4px 10px #00000014}.day-card.selected{background:var(--booking-accent);color:#fff;border-color:var(--booking-accent);box-shadow:0 4px 12px #0000004d}.day-card.disabled{color:#c2c2c2;box-shadow:none;background:#f5f4f1;border-color:#f5f4f1}.day-card-weekday{font-size:12px}.day-card-number{font-size:16px;font-weight:700}.day-card-dot{background:var(--booking-green);border-radius:2px;width:14px;height:3px}.day-card-dot.selected{background:var(--booking-gold)}.period-tabs{background:var(--booking-gray-bg);border-radius:12px;gap:4px;margin-bottom:18px;padding:4px;display:flex}.period-tabs button{color:#999;background:0 0;border-radius:9px;flex:1;width:auto;padding:12px 9px;transition:background-color .15s,box-shadow .15s}.period-tabs button.active{color:var(--text);background:#fff;font-weight:600;box-shadow:0 2px 6px #0000001f}.period-tabs button:disabled{opacity:.5}.slot-carousel{align-items:center;gap:8px;margin-bottom:24px;display:flex}.slot-carousel-track{scroll-behavior:smooth;flex:1;gap:8px;padding:2px;display:flex;overflow-x:auto}.slot-carousel-track button{color:var(--text);border:1px solid var(--border);background:#fff;border-radius:20px;flex-shrink:0;width:auto;padding:12px 18px;transition:transform .15s,box-shadow .15s;box-shadow:0 1px 3px #0000000a}.slot-carousel-track button:hover{transform:translateY(-1px);box-shadow:0 4px 10px #00000014}.slot-carousel-track button.selected{background:var(--booking-accent);color:#fff;border-color:var(--booking-accent);box-shadow:0 4px 12px #0000004d}.service-summary-card{background:linear-gradient(135deg,#f7f6f4,#ececea);border:1px solid #e2e0da;border-radius:14px;margin-bottom:18px;padding:18px}.service-summary-row{justify-content:space-between;margin-bottom:4px;font-weight:700;display:flex}.service-summary-time{color:#666;font-size:14px}.booking-summary-bar{flex-direction:column;gap:14px;display:flex}.booking-summary-total{justify-content:space-between;align-items:baseline;font-size:15px;display:flex}.booking-summary-total strong{color:var(--booking-accent);font-size:22px}.booking-summary-duration{color:#777;font-size:13px}.continue-button{background:linear-gradient(135deg, var(--booking-accent), var(--booking-accent-2));border-radius:12px;width:100%;padding:15px;font-size:16px;font-weight:600;transition:filter .15s,transform .15s;box-shadow:0 6px 16px #00000040}.continue-button:hover{filter:brightness(1.05);transform:translateY(-1px)}@media (width<=899px){.booking-calendar{padding-bottom:84px}.booking-summary-bar{z-index:50;padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));background:#fff;margin:0;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 20px #0000001a}}.blocked-slots-list{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.blocked-slots-list li{border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;font-size:14px;display:flex}.blocked-slot-form{flex-flow:wrap;align-items:flex-end}.blocked-slot-form label{flex:1;min-width:160px}@media (width>=900px){.booking-page{box-sizing:border-box;background:radial-gradient(circle at 20% 20%,#f0ebe0,#faf8f5 60%);justify-content:center;padding:56px 24px;display:flex}.booking-layout{background:#fff;border-radius:28px;grid-template-columns:400px minmax(0,1fr);align-items:stretch;width:100%;max-width:980px;display:grid;overflow:hidden;box-shadow:0 30px 80px #00000029}.gallery{flex-direction:column;min-width:0;height:100%;display:flex}.gallery-hero{flex:1;height:auto;min-height:560px}.gallery-thumbs{background:#f2efe9}.booking-content{box-shadow:none;box-sizing:border-box;border-radius:0;min-width:0;margin-top:0;padding:48px 48px 56px}.booking-confirmation{flex-direction:column;justify-content:center;height:100%;display:flex}}
