:root{--paper:#fcfbf7;--ink:#223e60;--muted:#556a7a;--blue:#2f6bb9;--blue-light:#e5f2fd;--line:#cedde6;--sage:#edf5f7;--white:#fffefa;--serif:'Fraunces',Georgia,serif;--sans:'Lato',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.45}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--blue);outline-offset:4px}svg{width:24px;height:24px}p{line-height:1.75}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:400}h2{font-size:50px;line-height:1.07;letter-spacing:-1.5px}em{font-weight:400;color:var(--blue)}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.topline{height:34px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;background:var(--blue);color:#fff;font-size:12px;letter-spacing:2px}.header{height:112px;margin:0 5%;display:flex;align-items:center;justify-content:space-between;gap:35px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;flex-shrink:0}.brand>svg{width:35px;height:58px;color:var(--blue)}.brand>span{font-family:var(--serif);font-size:34px;line-height:1}.brand small{display:block;font-family:var(--sans);font-size:12px;letter-spacing:4px;margin-top:10px;text-align:center}.header nav{display:flex;gap:32px;font-size:15px}.header nav a:hover,.text-link:hover{color:var(--blue)}.header-actions{display:flex;align-items:center;gap:28px}.desk-link{display:flex;align-items:center;gap:8px;font-size:14px}.desk-link svg{width:16px;height:16px}.button{border:1px solid var(--blue);background:var(--blue);color:white;min-height:52px;padding:14px 24px;display:inline-flex;align-items:center;justify-content:center;gap:32px;font-size:15px;letter-spacing:.2px;transition:background .2s,transform .2s}.button:hover{background:#24589d;transform:translateY(-1px)}.button svg{width:22px;height:22px}.button.small{min-height:43px;font-size:14px;padding:12px 18px;gap:24px}.button.secondary{background:transparent;color:var(--blue);border-color:#bdc8cd}.button.secondary:hover{background:var(--blue-light)}.button.danger{background:#8c5145;border-color:#8c5145}.hero{display:grid;grid-template-columns:1.03fr 1fr;gap:5%;padding:64px 5% 70px;max-width:1600px;margin:auto;min-height:650px}.hero-copy{padding:30px 0 5px 2.5%;align-self:center}.eyebrow{font-size:12px;letter-spacing:2.1px;font-weight:500;line-height:1.6;color:var(--blue);margin-bottom:25px;display:flex;align-items:center;gap:14px}.small-line{height:1px;width:27px;background:var(--blue)}h1{font-size:clamp(66px,6.7vw,105px);line-height:.98;letter-spacing:-3.5px;margin-bottom:27px}.intro{font-size:16px;line-height:1.9;color:var(--muted);margin-bottom:30px}.hero-note{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);margin-top:26px}.hero-note svg{width:17px;height:17px;color:var(--blue)}.hero-visual{position:relative;min-height:510px}.hero-visual>img{width:100%;height:100%;position:absolute;object-fit:cover;object-position:52% 50%;filter:saturate(.65) brightness(.9);border-radius:48% 48% 0 0}.hero-visual:after{content:'';position:absolute;inset:0;border-radius:48% 48% 0 0;background:linear-gradient(transparent 65%,#18302680)}.image-caption{position:absolute;bottom:26px;left:30px;z-index:1;color:white;font-size:12px;letter-spacing:2.8px}.seal{position:absolute;bottom:40px;left:-51px;width:112px;height:112px;background:var(--paper);border-radius:50%;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;outline:1px solid #d5dace;outline-offset:-7px;transform:rotate(-11deg)}.seal svg{width:25px;height:44px;color:var(--blue);margin-bottom:5px}.seal span{font-size:12px;letter-spacing:1.5px;text-align:center;line-height:1.6}.ribbon{background:var(--sage);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 7%;display:flex;align-items:center;justify-content:space-between;font-family:var(--serif);font-size:20px}.ribbon-flower{font-size:17px;color:#438bd0}.section{max-width:1440px;padding:94px 7%;margin:auto}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:45px}.section-heading .eyebrow{margin-bottom:16px}.section-heading h2{margin:0}.section-heading>p{font-size:15px;color:var(--muted);margin-bottom:3px}.menu-head{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1.5px;border-bottom:1px solid var(--line);padding:0 0 17px;color:var(--muted)}.treatment-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:65px}.treatment{padding:27px 0 24px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:16px;text-align:left;position:relative}.treatment h3{font-size:28px;letter-spacing:-.4px;margin:0 0 7px}.treatment p{font-size:14px;color:var(--muted);max-width:310px;margin-bottom:13px;line-height:1.7}.treatment .meta{font-size:12px;letter-spacing:1px;display:flex;align-items:center;gap:12px}.meta .dot{width:3px;height:3px;background:var(--blue);border-radius:50%}.treatment button{border:1px solid #c8d2d8;border-radius:50%;width:39px;height:39px;align-self:center;display:grid;place-items:center;background:transparent;transition:background .2s}.treatment button:hover{background:var(--blue);color:white}.treatment button svg{width:20px;height:20px}.tag{font-family:var(--sans);font-size:12px;letter-spacing:1px;background:var(--blue-light);color:var(--blue);padding:5px 7px;vertical-align:middle;margin-left:10px;white-space:nowrap}.menu-invitation{background:var(--sage);margin-top:18px;display:flex;gap:20px;align-items:center;padding:26px}.menu-invitation>svg{width:28px;height:42px;color:var(--blue);flex-shrink:0}.menu-invitation h3{font-size:25px;margin-bottom:7px}.menu-invitation p{font-size:14px;color:var(--muted);margin-bottom:0}.menu-footnote{font-size:13px;margin:25px 0 0;color:var(--muted);display:flex;gap:10px;align-items:center}.menu-footnote svg{width:15px;height:15px;flex-shrink:0}.studio{padding-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:12%;align-items:center}.studio-art{min-height:410px;background:#e8edf0;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;overflow:hidden}.studio-art:before,.studio-art:after{content:'';position:absolute;border:1px solid #c7d3db;border-radius:50%;width:520px;height:520px;left:-290px;top:-280px}.studio-art:after{left:auto;top:auto;right:-330px;bottom:-280px;width:600px;height:600px}.studio-art>svg{height:90px;width:60px;color:var(--blue);margin:20px}.studio-art p{font-family:var(--serif);font-size:48px;line-height:1;text-align:center;letter-spacing:-1px;margin:8px 0 28px}.studio-art>span{font-size:12px;letter-spacing:2px}.studio-copy .eyebrow{margin-bottom:20px}.studio-copy h2{margin-bottom:24px}.studio-copy>p:not(.eyebrow){font-size:15px;color:var(--muted);max-width:360px;line-height:1.9}.text-link{display:inline-flex;gap:30px;font-size:14px;border-bottom:1px solid #a2b2b8;padding-bottom:9px;margin-top:12px}.closing{padding:66px 5% 76px;text-align:center;background:var(--sage)}.closing .eyebrow{justify-content:center;margin-bottom:18px}.closing h2{font-size:44px;margin-bottom:27px}footer{padding:45px 5% 0;display:flex;align-items:center;justify-content:space-between;gap:25px;flex-wrap:wrap}.footer-brand>span{font-size:27px}.footer-brand>svg{height:44px;width:26px}.footer-brand small{font-size:12px;letter-spacing:3px}footer>p{font-size:13px;color:var(--muted);margin:0}footer>a:last-of-type{font-size:13px}.demo-note{width:100%;border-top:1px solid var(--line);padding:18px 0;font-size:12px;letter-spacing:1.3px;color:var(--muted)}
/* Reservation desk */
.desk-page{max-width:1500px;margin:auto;padding:42px 5% 65px}.desk-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.desk-heading h1{font-size:55px;letter-spacing:-1.5px;line-height:1.1;margin:5px 0 9px}.desk-heading .eyebrow{margin-bottom:10px}.desk-heading p:last-child{color:var(--muted);font-size:15px;margin:0}.desk-toolbar{display:flex;align-items:center;gap:12px}.subtle-button{background:transparent;border:0;text-decoration:underline;text-underline-offset:4px;color:var(--muted);font-size:13px;padding:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:var(--white);margin-bottom:30px}.stat{padding:20px 26px;position:relative}.stat+.stat{border-left:1px solid var(--line)}.stat-label{font-size:12px;letter-spacing:1px;color:var(--muted)}.stat-value{font-family:var(--serif);font-size:36px;line-height:1;margin-top:10px}.stat-value small{font-family:var(--sans);font-size:13px;color:var(--muted);margin-left:7px}.desk-layout{display:grid;grid-template-columns:235px 1fr;gap:30px}.desk-sidebar{align-self:start}.mini-calendar{border:1px solid var(--line);background:var(--white);padding:17px}.mini-header{display:flex;align-items:center;justify-content:space-between;font-size:15px;margin-bottom:16px}.icon-button{background:transparent;border:1px solid var(--line);width:30px;height:30px;display:inline-grid;place-items:center;font-size:17px}.mini-weekdays,.mini-days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:3px}.mini-weekdays{font-size:12px;color:var(--muted);margin-bottom:8px}.mini-days button{border:0;background:transparent;padding:8px 0;font-size:13px;border-radius:50%;aspect-ratio:1;display:grid;place-items:center;position:relative}.mini-days button:hover{background:var(--blue-light)}.mini-days button.selected{background:var(--blue);color:white}.mini-days button.has-booking:after{content:'';position:absolute;bottom:3px;width:3px;height:3px;border-radius:50%;background:currentColor}.sidebar-note{padding:24px 0;border-bottom:1px solid var(--line)}.sidebar-note p{font-size:14px;color:var(--muted);margin-bottom:5px}.sidebar-note .eyebrow{font-size:12px;margin-bottom:10px}.legend{display:flex;flex-direction:column;gap:12px;font-size:13px;color:var(--muted);padding-top:25px}.legend span{display:flex;gap:9px;align-items:center}.legend i{width:8px;height:8px;border-radius:50%;background:#6c9cda}.legend i.arrived{background:#b79a66}.legend i.complete{background:#829780}.schedule{min-width:0;border:1px solid var(--line);background:var(--white)}.schedule-toolbar{padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line)}.date-nav{display:flex;gap:8px;align-items:center}.schedule-toolbar h2{font-family:var(--sans);font-size:16px;letter-spacing:0;margin:0 8px}.today-button{border:1px solid var(--line);background:transparent;padding:7px 10px;font-size:13px}.view-toggle{display:flex;padding:3px;background:#eaf2f8}.view-toggle button{border:0;background:transparent;padding:6px 14px;font-size:13px}.view-toggle button.active{background:var(--white);box-shadow:0 1px 4px #00000010}.schedule-subhead{padding:11px 22px;background:#eff6fb;font-size:12px;letter-spacing:1.5px;display:flex;justify-content:space-between;color:var(--muted)}.day-timeline{height:576px;position:relative;margin:18px 22px 24px 68px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 71px,#e7e8e0 71px,#e7e8e0 72px)}.hour-label{position:absolute;left:-52px;font-size:12px;color:var(--muted);transform:translateY(-5px);width:42px;text-align:right}.appointment-block{position:absolute;left:0;right:0;border:0;border-left:3px solid #6c9cda;background:#eaf0f5;text-align:left;padding:6px 12px;display:flex;align-items:center;gap:14px;overflow:hidden;min-height:23px}.appointment-block:hover{filter:brightness(.97);box-shadow:0 2px 7px #253b4012}.appointment-block strong{font-size:14px;font-weight:500}.appointment-block .appointment-info{font-size:13px;color:#3e617e}.appointment-block .badge{margin-left:auto;flex-shrink:0}.appointment-block.checked-in{background:#f3eddf;border-color:#b79a66}.appointment-block.completed{background:#eaf0e6;border-color:#829780}.badge{display:inline-block;font-size:12px;letter-spacing:.2px;padding:5px 9px;border:1px solid #45658030;border-radius:20px;white-space:nowrap}.empty-schedule{position:absolute;top:190px;left:0;right:0;text-align:center;pointer-events:none}.empty-schedule svg{width:30px;height:45px;color:var(--blue)}.empty-schedule h3{font-size:29px;margin:10px 0 4px}.empty-schedule p{font-size:14px;color:var(--muted)}.week-scroll{overflow-x:auto}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(95px,1fr));min-height:500px;min-width:665px}.week-day{border-right:1px solid var(--line);padding:10px 6px}.week-day:last-child{border:0}.week-day-heading{display:flex;flex-direction:column;align-items:center;background:transparent;border:0;width:100%;font-size:12px;letter-spacing:1px;gap:7px;padding-bottom:14px}.week-day-heading b{font-family:var(--serif);font-size:26px;font-weight:500;width:34px;height:34px;display:grid;place-items:center}.week-day-heading.today b{border-radius:50%;background:var(--blue);color:white}.week-appointment{display:block;width:100%;background:var(--blue-light);border:0;border-left:2px solid #8198b0;text-align:left;margin:6px 0;padding:10px 7px;line-height:1.5;overflow-wrap:anywhere}.week-appointment.checked-in{background:#f3eddf;border-color:#b79a66}.week-appointment.completed{background:#eaf0e6;border-color:#829780}.week-appointment small{font-size:12px;color:var(--muted);display:block}.week-appointment strong{font-size:13px;font-weight:500;display:block;margin:5px 0}.week-appointment span{font-size:12px;display:block}.week-empty{font-size:12px;color:#61788b;text-align:center;padding:22px 0}.schedule-bottom{border-top:1px solid var(--line);padding:12px 20px;font-size:12px;color:var(--muted)}
/* Booking and appointment dialogs */
dialog{width:min(640px,calc(100% - 28px));max-height:92dvh;overflow:auto;border:1px solid var(--line);padding:42px;background:var(--paper);color:var(--ink);box-shadow:0 25px 90px #182e3a26}dialog::backdrop{background:#20323c65;backdrop-filter:blur(4px)}dialog .eyebrow{margin-bottom:13px}dialog h2{font-size:43px;margin-bottom:13px}dialog>p:not(.eyebrow){font-size:15px;color:var(--muted)}.close{position:absolute;right:16px;top:12px;background:transparent;border:0;font-size:27px;color:var(--muted);width:32px;height:32px}.steps{display:flex;gap:0;margin:25px 0 28px;border-bottom:1px solid var(--line)}.step{flex:1;font-size:12px;color:var(--muted);padding:12px 0;position:relative}.step.active{color:var(--blue);border-bottom:2px solid var(--blue)}.step b{font-weight:400;display:inline-grid;place-items:center;border:1px solid #bec9cd;border-radius:50%;width:19px;height:19px;margin-right:6px;font-size:12px}.step.active b{background:var(--blue);color:white;border-color:var(--blue)}.service-option{display:flex;width:100%;align-items:center;justify-content:space-between;border:0;border-bottom:1px solid var(--line);background:transparent;padding:15px 9px;text-align:left;gap:15px}.service-option:hover,.service-option.selected{background:var(--blue-light)}.service-option strong{font-family:var(--serif);font-size:24px;font-weight:500;display:block}.service-option small{font-size:13px;color:var(--muted)}.service-option .radio{width:18px;height:18px;border:1px solid #aebfc9;border-radius:50%;flex-shrink:0}.service-option.selected .radio{border:5px solid var(--blue)}.selected-service{background:var(--blue-light);padding:14px 17px;display:flex;align-items:center;justify-content:space-between;margin:20px 0}.selected-service strong{font-family:var(--serif);font-size:24px;font-weight:500}.selected-service span{font-size:13px;color:var(--blue)}label{display:block;font-size:14px;margin:20px 0 9px;font-weight:500}input,select,textarea{width:100%;padding:12px;background:var(--white);border:1px solid #cbd0c8;color:var(--ink);border-radius:0;min-height:45px}textarea{resize:vertical;min-height:76px}.help{font-size:13px;color:var(--muted);margin:6px 0}.times{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-height:195px;overflow:auto;padding:4px}.time-button{padding:11px 3px;border:1px solid var(--line);background:var(--white);font-size:14px}.time-button.selected{background:var(--blue);border-color:var(--blue);color:white}.no-times{grid-column:1/-1;background:var(--sage);padding:17px;font-size:15px}.dialog-actions{display:flex;gap:12px;justify-content:space-between;margin-top:28px;align-items:center}.dialog-actions .button{gap:18px}.dialog-actions .button:only-child{margin-left:auto}.booking-error{color:#9a4336;background:#f8eae4;padding:12px;font-size:15px;margin:15px 0 0}.confirmation{text-align:center;padding-top:10px}.confirmation>.eyebrow{justify-content:center}.confirmation-symbol{margin:0 auto 22px;width:65px;height:65px;border:1px solid #bdcbb9;border-radius:50%;display:grid;place-items:center;background:#ecf0e5}.confirmation-symbol svg{width:30px;height:30px}.confirmation>p{color:var(--muted);font-size:15px}.confirmation-card{text-align:left;background:var(--white);border:1px solid var(--line);padding:24px;margin-top:23px}.confirmation-card .eyebrow{font-size:12px}.confirmation-card h3{font-size:30px;margin-bottom:15px}.detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:18px;font-size:15px;padding:10px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.detail-row span:first-child{color:var(--muted);flex-shrink:0}.detail-row span:last-child{text-align:right}.detail-row:last-child{border-bottom:0}.confirmation .dialog-actions{flex-wrap:wrap;justify-content:center}.confirmation .button{font-size:14px}.appointment-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.appointment-actions .button{font-size:14px;min-height:42px;padding:10px 15px;gap:8px}.appointment-notes{background:var(--sage);padding:15px;font-size:15px;margin-top:20px;white-space:pre-wrap;overflow-wrap:anywhere}.cancel-confirm{margin-top:22px;padding:18px;background:#f5e9e3}.cancel-confirm p{font-size:15px;margin:0}.cancel-confirm .dialog-actions{margin-top:15px}.cancel-confirm .button{font-size:14px;min-height:40px;padding:10px}.toast-visible{opacity:1!important;transform:translate(-50%,0)!important}#toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);opacity:0;transition:.2s;background:var(--ink);color:white;max-width:calc(100% - 32px);padding:15px 25px;font-size:15px;z-index:10;pointer-events:none;text-align:center}#print-area{display:none}
@media(min-width:1600px){.header{max-width:1440px;margin:auto}.hero{padding-left:80px;padding-right:80px}}
@media(max-width:1050px){.header nav{gap:20px}.header-actions{gap:17px}.brand>span{font-size:30px}.header{gap:20px}.hero{gap:7%;padding-top:40px;min-height:590px}.hero-visual{min-height:450px}.hero-copy{padding-left:0}.hero .eyebrow{font-size:12px;gap:9px}.treatment-grid{column-gap:32px}.treatment h3{font-size:25px}.tag{margin-left:3px;font-size:12px}.desk-layout{grid-template-columns:205px 1fr;gap:20px}.appointment-block{gap:10px}.appointment-block .appointment-info{font-size:12px}.appointment-block .badge{font-size:12px;padding:3px 5px}.desk-toolbar .subtle-button{max-width:75px}}
@media(max-width:800px){.topline{font-size:12px;letter-spacing:1.2px}.topline span:last-child{display:none}.topline{justify-content:center}.header{height:94px;gap:10px}.header nav{display:none}.header-actions .button{display:none}.header-actions .desk-link{font-size:14px}.brand>span{font-size:29px}.brand>svg{height:48px;width:29px}.brand small{font-size:12px;letter-spacing:3px}.hero{min-height:0;padding:35px 6% 45px;gap:6%}.hero-copy{padding:15px 0}.hero .eyebrow{font-size:12px;letter-spacing:1.2px;margin-bottom:20px}.hero .small-line{display:none}h1{font-size:60px;letter-spacing:-2.5px}.intro{font-size:15px}.hero-visual{min-height:400px}.hero .button{font-size:13px;padding:13px 17px;gap:16px}.image-caption{font-size:12px;letter-spacing:1.5px;left:18px}.seal{width:85px;height:85px;left:-25px;bottom:50px}.seal svg{height:30px}.seal span{font-size:12px}.ribbon{padding:18px 6%;font-size:17px;gap:20px}.ribbon span:nth-last-child(-n+2){display:none}.section{padding:60px 6%}h2{font-size:42px}.section-heading{gap:20px}.section-heading>p{font-size:13px}.treatment h3{font-size:25px}.treatment .tag{display:none}.menu-invitation{padding:20px 15px}.studio{gap:7%;padding-top:0}.studio-art{min-height:370px}.studio-copy h2{font-size:42px}.studio-copy .eyebrow{font-size:12px}.studio-copy>p:not(.eyebrow){font-size:14px}.closing h2{font-size:38px}.desk-page{padding:30px 5%}.desk-heading h1{font-size:43px}.desk-heading{align-items:flex-start}.desk-toolbar{flex-direction:column-reverse;align-items:flex-end;gap:5px}.desk-toolbar .subtle-button{max-width:none}.desk-toolbar .button{font-size:14px;gap:10px;padding:10px 16px;min-height:44px}.desk-layout{grid-template-columns:1fr}.desk-sidebar{display:none}.stat{padding:17px}.stat-label{font-size:12px}.stat-value{font-size:31px}.stat-value small{font-size:12px}.desk-heading p:last-child{font-size:14px}.appointment-block .badge{font-size:12px}.appointment-block .appointment-info{font-size:13px}}
@media(max-width:540px){.hero{display:flex;flex-direction:column;padding-top:35px;gap:32px}.hero-copy{padding:0 2%}.hero .eyebrow{font-size:12px;letter-spacing:1.6px}.hero h1{font-size:clamp(48px,14.2vw,70px);letter-spacing:-3px;margin-bottom:20px}.intro{font-size:16px;margin-bottom:23px}.hero .button{font-size:15px;min-height:49px;gap:27px}.hero-note{margin-top:18px}.hero-visual{height:330px;min-height:330px;margin:0 2% 0 12%}.hero-visual>img{border-radius:45% 45% 0 0}.hero-visual:after{border-radius:45% 45% 0 0}.seal{width:100px;height:100px;bottom:35px;left:-41px}.seal svg{height:40px}.seal span{font-size:12px}.image-caption{bottom:20px;left:auto;right:16px;font-size:12px}.ribbon{justify-content:center;gap:18px;font-size:17px}.ribbon span:nth-child(n+4){display:none}.section{padding-top:47px;padding-bottom:47px}.section-heading{display:block;margin-bottom:28px}.section-heading h2{font-size:43px}.section-heading>p{font-size:15px;margin-top:15px}.section-heading>p br{display:none}.eyebrow{font-size:12px}.menu-head{gap:20px;font-size:12px;letter-spacing:1px}.treatment-grid{grid-template-columns:1fr}.treatment{padding:23px 0}.treatment h3{font-size:29px}.treatment .tag{display:inline-block;margin-left:7px;font-size:12px}.treatment p{font-size:15px;max-width:275px}.treatment .meta{font-size:12px}.menu-invitation{padding:25px;margin-top:24px}.menu-footnote{align-items:flex-start;line-height:1.7}.menu-footnote svg{margin-top:2px}.studio{grid-template-columns:1fr;gap:32px;padding-top:5px}.studio-art{min-height:330px}.studio-copy{padding:0 5px}.studio-copy h2{font-size:49px}.studio-copy>p:not(.eyebrow){font-size:16px}.closing{padding:48px 7%}.closing h2{font-size:40px;line-height:1.1}.closing .eyebrow{font-size:12px}footer{padding-top:32px;gap:22px}footer>p{width:100%;font-size:13px}footer>a:last-of-type{font-size:14px}.demo-note{font-size:12px;line-height:1.7}.desk-heading h1{font-size:39px}.desk-heading .eyebrow{font-size:12px}.desk-heading p:last-child{max-width:180px}.stats{grid-template-columns:1fr 1fr;margin-bottom:20px}.stat:nth-child(3){border-left:0;border-top:1px solid var(--line)}.stat:nth-child(4){border-top:1px solid var(--line)}.stat{padding:15px 18px}.stat-value{font-size:30px}.stat-value small{font-size:12px}.stat-label{font-size:12px}.schedule-toolbar{padding:13px 10px;flex-wrap:wrap;justify-content:space-between}.schedule-toolbar h2{font-size:14px;margin:0 4px}.date-nav{gap:4px}.icon-button{width:25px;height:28px}.today-button{padding:7px;font-size:12px}.view-toggle button{font-size:12px;padding:6px 10px}.schedule-subhead{font-size:12px;padding:10px 12px;letter-spacing:1px}.day-timeline{margin-right:9px;margin-left:48px}.hour-label{left:-41px;font-size:12px;width:32px}.appointment-block{padding:4px 7px;gap:3px;flex-wrap:wrap;align-content:center}.appointment-block strong{font-size:13px}.appointment-block .appointment-info{font-size:12px;order:2;width:100%}.appointment-block .badge{font-size:12px;padding:2px 5px}.schedule-bottom{font-size:12px;padding:12px}.desk-toolbar .button{font-size:12px;padding:9px 12px;gap:6px;white-space:nowrap}.desk-toolbar .subtle-button{font-size:12px}dialog{padding:32px 22px}dialog h2{font-size:37px}.step{font-size:12px}.step b{width:17px;height:17px;margin-right:3px}.steps{margin:22px 0 17px}.service-option{padding:13px 6px}.service-option strong{font-size:23px}.selected-service{padding:12px;gap:10px}.selected-service strong{font-size:23px}.selected-service span{font-size:12px;white-space:nowrap}.times{gap:6px}.time-button{font-size:13px}.dialog-actions{gap:8px}.dialog-actions .button{font-size:13px;padding:12px 15px;min-height:45px;gap:12px}.detail-row{font-size:14px}.confirmation-card{padding:18px}.appointment-actions .button{font-size:13px}.close{right:8px;top:7px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}
@media print{body>*{display:none!important}#print-area{display:block!important;padding:50px;max-width:650px;margin:auto;background:white;color:black}#print-area h1{font-size:40px;letter-spacing:-1px}#print-area h2{font-size:28px}#print-area p{font-size:16px}#print-area .print-brand{font-family:var(--serif);font-size:35px;margin-bottom:5px}#print-area .detail-row{font-size:16px}#print-area .print-note{margin-top:30px;border-top:1px solid #aaa;padding-top:20px}body{background:white}dialog[open]{display:none!important}}

/* Keep short treatments within their time slot. */
.appointment-block{min-height:17px;padding-top:2px;padding-bottom:2px}
@media(max-width:540px){.appointment-block.compact{padding:2px 7px;flex-wrap:nowrap}.appointment-block.compact .appointment-info{display:none}.appointment-block.compact strong,.appointment-block.compact .badge{line-height:1}}

/* Backlit petals: watercolor, expressive type, and room to read. */
body { font-size:16px; }
h1,h2,h3,.brand>span { font-optical-sizing:auto; font-variation-settings:"SOFT" 30,"WONK" 1; }
h2 { letter-spacing:-1.8px; line-height:1.15; }
em { font-weight:400; }
.topline { height:40px; background:#3278bf; font-size:12px; letter-spacing:1.6px; }
.header { height:120px; position:relative; z-index:2; border-bottom-color:#2f6bb925; }
.header nav { font-size:15px; gap:30px; }
.header-actions { gap:24px; }
.desk-link { font-size:14px; }
.desk-link svg { width:19px; height:19px; }
.brand>span { font-size:32px; letter-spacing:-1.1px; }
.brand small { font-size:12px; letter-spacing:2.8px; }
.brand>svg { width:36px; height:61px; }
.button { font-size:15px; min-height:56px; border-radius:3px; position:relative; overflow:hidden; box-shadow:0 5px 16px #296ab515; transition:background .25s,transform .25s,box-shadow .25s; }
.button:hover { box-shadow:0 9px 25px #296ab52a; transform:translateY(-3px); }
.button svg { transition:transform .3s; flex-shrink:0; }
.button:hover svg { transform:translateX(4px); }
.button.small { font-size:14px; min-height:47px; }
.button.secondary { box-shadow:none; }
.eyebrow { font-size:12px; letter-spacing:1.8px; line-height:1.6; }
.hero { position:relative; isolation:isolate; grid-template-columns:1.18fr 1fr; gap:4%; min-height:690px; padding-top:52px; padding-bottom:80px; }
.hero:before { content:''; position:absolute; z-index:-1; inset:-121px calc((min(100vw,1600px) - 100vw)/2) -1px; background:var(--paper) url('assets/petal-wash.jpg') center center/cover no-repeat; pointer-events:none; opacity:.9; }
.hero-copy { padding-left:1%; padding-top:18px; }
.hero .eyebrow { font-size:12px; letter-spacing:1.65px; margin-bottom:26px; }
.hero h1 { font-size:clamp(56px,5.7vw,88px); line-height:1.12; letter-spacing:-3.8px; margin-bottom:27px; }
.title-line { display:block; overflow:hidden; padding-bottom:.17em; margin-bottom:-.17em; }
.title-line>span { display:block; }
.hero h1 em { position:relative; color:#337cc9; }
.hero h1 em:after { content:''; position:absolute; inset:auto -4px -.055em; height:.105em; border-radius:42% 60% 50% 30%; background:#68b5ef55; transform:rotate(-3deg); z-index:-1; }
.intro { font-size:18px; color:#455e76; line-height:1.8; margin-bottom:30px; }
.hero-note { font-size:14px; color:#48677f; margin-top:26px; }
.hero-note svg { width:21px; height:21px; }
.hero-visual { min-height:535px; margin:0 9px 0 0; }
.hero-visual:after { display:none; }
.photo-frame { position:absolute; inset:0; border-radius:48% 48% 4px 4px; overflow:hidden; box-shadow:0 22px 60px #35577a20; }
.photo-frame>img { width:100%; height:100%; object-fit:cover; object-position:52% 50%; filter:saturate(1.04) brightness(1.04); }
.photo-frame:after { content:''; position:absolute; inset:0; background:linear-gradient(transparent 65%,#183f6185); }
.image-caption { left:auto; right:27px; bottom:24px; font-size:12px; line-height:1.7; letter-spacing:2px; text-align:right; }
.seal { background:#f8fcff; color:#286bb5; width:142px; height:142px; left:-60px; bottom:36px; outline-color:#79afe0; box-shadow:0 8px 26px #24528112; transform:rotate(-9deg); }
.seal svg { width:29px; height:29px; margin-bottom:10px; }
.seal span { font-size:12px; letter-spacing:1.3px; line-height:1.45; }
.garden-note { position:absolute; bottom:-35px; right:4px; font-family:var(--serif); font-style:italic; font-size:18px; color:#42688a; transform:rotate(-3deg); }
.ribbon { background:#eaf4fc; border-color:#cfe2f1; padding:25px 6%; font-size:21px; }
.ribbon-flower { color:#548cce; font-family:var(--sans); }
.section { padding-top:100px; padding-bottom:100px; }
.section-heading { gap:50px; }
.section-heading h2 { font-size:47px; }
.section-heading>p { font-size:16px; line-height:1.7; min-width:260px; }
.menu-head { font-size:12px; letter-spacing:1px; gap:25px; }
.treatment-grid { column-gap:55px; }
.treatment { padding:30px 0; gap:20px; }
.treatment h3 { font-size:27px; line-height:1.25; margin-bottom:12px; }
.treatment p { max-width:390px; font-size:16px; line-height:1.65; }
.treatment .meta { font-size:13px; letter-spacing:.6px; }
.treatment button { width:47px; height:47px; }
.tag { font-size:12px; letter-spacing:.7px; padding:5px 8px; display:inline-block; margin:8px 0 0; }
.treatment h3:has(.tag) { display:flex; flex-wrap:wrap; align-items:center; gap:0 12px; }
.treatment .tag { margin:6px 0; }
.menu-invitation { background:#eaf4fb; padding:26px; border:1px solid #d6e8f4; border-radius:3px; }
.menu-invitation h3 { font-size:25px; line-height:1.25; }
.menu-invitation p { font-size:15px; }
.menu-footnote { font-size:14px; line-height:1.7; }
.menu-footnote svg { width:19px; height:19px; }
.studio { padding-top:20px; gap:9%; }
.studio-art { min-height:440px; background:#ecf5fc url('assets/petal-wash.jpg') 80% center/auto 130%; border-radius:3px; }
.studio-art:before,.studio-art:after { border-color:#7fb0dc66; }
.studio-art>svg { height:100px; width:68px; }
.studio-art p { font-size:45px; line-height:1.2; }
.studio-art>span { font-size:12px; letter-spacing:1.5px; }
.studio-copy>p:not(.eyebrow) { font-size:16px; line-height:1.85; max-width:430px; }
.text-link { font-size:15px; }
.closing { background:#eaf5fc url('assets/petal-wash.jpg') center 64%/cover no-repeat; padding:80px 5%; }
.closing h2 { font-size:46px; }
footer { gap:28px; }
.footer-brand>span { font-size:29px; }
.footer-brand small { font-size:12px; letter-spacing:2px; }
footer>p { font-size:14px; max-width:360px; }
footer>a:last-of-type { font-size:14px; }
.demo-note { font-size:12px; letter-spacing:.7px; line-height:1.8; }

/* Give the functional screens the same readable scale. */
.desk-page { padding-top:48px; }
.desk-heading { gap:25px; }
.desk-heading h1 { font-size:52px; }
.desk-heading p:last-child { font-size:16px; }
.desk-layout { grid-template-columns:270px 1fr; }
.stats { border-radius:4px; background:#ffffffb0; }
.stat-label { font-size:12px; letter-spacing:.8px; }
.stat-value { font-size:38px; }
.stat-value small { font-size:14px; }
.stat { padding:23px; }
.mini-header { font-size:15px; }
.mini-weekdays,.mini-days button { font-size:13px; }
.mini-days button { min-height:30px; }
.sidebar-note p { font-size:15px; }
.sidebar-note .eyebrow { font-size:12px; }
.legend { font-size:14px; }
.schedule-toolbar { flex-wrap:wrap; }
.schedule-toolbar h2 { font-size:16px; line-height:1.4; }
.icon-button { width:34px; height:34px; }
.today-button,.view-toggle button { font-size:14px; min-height:34px; }
.schedule-subhead { font-size:12px; letter-spacing:.7px; gap:18px; line-height:1.5; }
.timeline-scroll { max-height:650px; overflow:auto; overscroll-behavior:contain; }
.day-timeline { height:1440px; margin:28px 20px 28px 74px; background:repeating-linear-gradient(to bottom,transparent 0,transparent 179px,#dde8ef 179px,#dde8ef 180px); }
.hour-label { font-size:13px; left:-59px; width:48px; }
.appointment-block { border-radius:2px; padding:5px 12px; gap:12px; }
.appointment-block strong { font-size:15px; }
.appointment-block .appointment-info { font-size:13px; }
.appointment-block .badge { font-size:12px; padding:4px 8px; }
.badge { font-size:12px; }
.week-grid { min-width:880px; }
.week-day-heading { font-size:12px; }
.week-day-heading b { font-size:25px; }
.week-appointment strong { font-size:15px; }
.week-appointment small,.week-appointment span { font-size:13px; }
.week-empty,.schedule-bottom { font-size:13px; }
.empty-schedule h3 { font-size:30px; }
.empty-schedule p { font-size:15px; }
dialog { width:min(680px,calc(100% - 28px)); border-radius:5px; border-color:#b9d4ea; }
dialog h2 { font-size:38px; }
dialog>p:not(.eyebrow),.confirmation>p { font-size:16px; }
.step { font-size:14px; }
.step b { width:23px; height:23px; font-size:12px; }
.service-option strong { font-size:24px; line-height:1.3; }
.service-option small { font-size:14px; line-height:1.6; }
.selected-service strong { font-size:24px; }
.selected-service span { font-size:14px; }
label { font-size:16px; }
input,textarea,select { font-size:16px; min-height:48px; }
.help { font-size:14px; line-height:1.65; }
.times { max-height:240px; }
.time-button { font-size:15px; min-height:44px; }
.detail-row { font-size:16px; gap:20px; padding:13px 0; }
.dialog-actions .button,.confirmation .button,.appointment-actions .button { font-size:14px; }
.appointment-actions { gap:12px; }
.appointment-actions .button { min-height:46px; }
.subtle-button { font-size:14px; }
.confirmation-card .eyebrow { font-size:12px; }
.appointment-notes,.cancel-confirm p,.booking-error { font-size:15px; }
.cancel-confirm .button { font-size:14px; }

/* Entrance: ink rises, the garden unfolds, and the wash gently blooms. */
@keyframes ink-rise { from { transform:translateY(115%); } to { transform:translateY(0); } }
@keyframes soft-arrival { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:translateY(0); } }
@keyframes garden-unfold { from { clip-path:inset(28% 8% 25% round 48% 48% 3px 3px); opacity:0; transform:translateY(20px) scale(.96); } to { clip-path:inset(0 round 48% 48% 3px 3px); opacity:1; transform:translateY(0) scale(1); } }
@keyframes petal-light { from { opacity:0; } to { opacity:.9; } }
@keyframes seal-arrival { from { opacity:0; transform:translateY(25px) rotate(-24deg) scale(.86); } to { opacity:1; transform:translateY(0) rotate(-9deg) scale(1); } }
@keyframes stem-grows { from { transform:translateY(10px) scale(.75) rotate(-13deg); opacity:0; } to { transform:translateY(0) scale(1) rotate(0); opacity:1; } }
@keyframes dialog-arrival { from { opacity:0; transform:translateY(16px) scale(.98); } to { opacity:1; transform:translateY(0) scale(1); } }
@media(prefers-reduced-motion:no-preference) {
  .hero:before { animation:petal-light 2s ease-out both; }
  .header .brand>svg { animation:stem-grows 1.3s cubic-bezier(.16,1,.3,1) .1s both; transform-origin:bottom; }
  .hero .eyebrow { animation:soft-arrival .85s ease-out .15s both; }
  .title-line>span { animation:ink-rise 1.15s cubic-bezier(.16,1,.3,1) .22s both; }
  .title-line:nth-child(2)>span { animation-delay:.4s; }
  .hero .intro { animation:soft-arrival .9s ease-out .65s both; }
  .hero-copy>.button { animation:soft-arrival .8s ease-out .8s both; }
  .hero-note { animation:soft-arrival .8s ease-out .95s both; }
  .photo-frame { animation:garden-unfold 1.6s cubic-bezier(.16,1,.3,1) .2s both; }
  .seal { animation:seal-arrival 1.2s cubic-bezier(.16,1,.3,1) 1s both; }
  .garden-note { animation:soft-arrival 1s ease-out 1.2s both; }
  .reveal-pending { opacity:0; transform:translateY(27px); transition:opacity .8s ease,transform 1s cubic-bezier(.16,1,.3,1); transition-delay:var(--reveal-delay,0ms); }
  .reveal-pending.is-visible { opacity:1; transform:translateY(0); }
  dialog[open] { animation:dialog-arrival .3s ease-out both; }
  dialog::backdrop { animation:petal-light .3s ease-out; }
}
@media(max-width:1150px) {
  .header nav { gap:20px; font-size:14px; }
  .header-actions { gap:16px; }
  .header-actions .button { padding:12px 15px; gap:14px; }
  .brand>span { font-size:29px; }
  .hero h1 { font-size:clamp(52px,5.7vw,75px); letter-spacing:-2.8px; }
  .hero .eyebrow { font-size:12px; letter-spacing:1px; }
  .section-heading h2 { font-size:40px; }
  .treatment-grid { column-gap:35px; }
  .treatment h3 { font-size:25px; }
  .desk-layout { grid-template-columns:240px 1fr; }
  .stat-value small { display:block; margin:10px 0 0; }
  .desk-toolbar .subtle-button { max-width:none; }
  .appointment-block { flex-wrap:wrap; align-content:center; gap:3px 10px; }
  .appointment-block .appointment-info { order:2; width:100%; }
  .appointment-block.compact .appointment-info { display:none; }
}
@media(max-width:900px) {
  .header nav { display:none; }
  .hero { gap:5%; grid-template-columns:1.2fr 1fr; min-height:590px; }
  .hero h1 { font-size:clamp(43px,5.6vw,62px); letter-spacing:-2.5px; }
  .hero-visual { min-height:440px; }
  .intro { font-size:16px; }
  .hero .eyebrow { letter-spacing:.5px; }
  .hero .small-line { display:none; }
  .seal { width:116px; height:116px; left:-35px; }
  .seal span { font-size:12px; letter-spacing:.6px; }
  .ribbon { gap:20px; }
  .ribbon span:nth-last-child(-n+2) { display:none; }
  .section-heading { display:block; }
  .section-heading>p { margin-top:24px; }
  .section-heading>p br { display:none; }
  .desk-layout { grid-template-columns:1fr; }
  .desk-sidebar { display:none; }
  .studio { gap:6%; }
  .studio-art p { font-size:36px; }
  .studio-copy h2 { font-size:40px; }
  .studio-copy .eyebrow { font-size:12px; letter-spacing:1px; }
  .stat { padding:19px; }
}
@media(max-width:650px) {
  .topline { font-size:12px; letter-spacing:1px; }
  .topline span:last-child { display:none; }
  .header { height:102px; gap:12px; }
  .header .brand>span { font-size:26px; letter-spacing:-1px; }
  .header .brand>svg { width:29px; height:52px; }
  .brand { gap:10px; }
  .brand small { font-size:12px; letter-spacing:1.5px; }
  .header-actions .button { display:none; }
  .header-actions .desk-link { font-size:13px; gap:6px; white-space:nowrap; }
  .hero { display:flex; flex-direction:column; padding:40px 6% 65px; gap:40px; }
  .hero:before { inset:-103px 0 0; background-position:65% center; }
  .hero-copy { padding:0; }
  .hero .eyebrow { font-size:12px; letter-spacing:1px; margin-bottom:25px; }
  .hero h1 { font-size:clamp(39px,11.7vw,67px); letter-spacing:-2.4px; line-height:1.15; margin-bottom:25px; }
  .intro { font-size:17px; line-height:1.7; }
  .hero .button { font-size:15px; min-height:55px; padding:15px 21px; }
  .hero-note { font-size:14px; margin-top:23px; }
  .hero-visual { height:380px; min-height:380px; margin:0 1% 0 11%; }
  .photo-frame { border-radius:47% 47% 3px 3px; }
  .seal { width:122px; height:122px; bottom:30px; left:-40px; }
  .seal svg { width:26px; height:26px; }
  .image-caption { font-size:12px; letter-spacing:1px; right:18px; bottom:20px; }
  .garden-note { font-size:17px; bottom:-34px; }
  .ribbon { gap:17px; font-size:18px; padding:23px 6%; }
  .ribbon span:nth-child(n+4) { display:none; }
  .ribbon span:not(.ribbon-flower) { flex:1; text-align:center; }
  .section { padding:64px 6%; }
  .section-heading { margin-bottom:32px; }
  .section-heading h2 { font-size:37px; letter-spacing:-1.5px; }
  .section-heading>p { font-size:16px; margin-top:18px; min-width:0; }
  .menu-head { flex-direction:column; gap:8px; font-size:12px; letter-spacing:.6px; }
  .treatment-grid { grid-template-columns:1fr; }
  .treatment { padding:26px 0; gap:14px; }
  .treatment h3 { font-size:25px; }
  .treatment .tag { font-size:12px; display:inline-block; }
  .treatment p { font-size:16px; }
  .treatment .meta { font-size:13px; }
  .treatment button { width:44px; height:44px; }
  .menu-invitation { margin-top:26px; padding:22px; }
  .menu-invitation p { font-size:15px; }
  .menu-footnote { font-size:14px; }
  .studio { grid-template-columns:1fr; padding-top:10px; gap:35px; }
  .studio-art { min-height:370px; }
  .studio-art p { font-size:39px; }
  .studio-copy { padding:0; }
  .studio-copy h2 { font-size:43px; }
  .studio-copy>p:not(.eyebrow) { font-size:17px; }
  .closing { padding:65px 7%; }
  .closing h2 { font-size:37px; }
  .closing .eyebrow { font-size:12px; }
  footer { padding-top:40px; }
  footer>p,footer>a:last-of-type { font-size:14px; }
  .demo-note { font-size:12px; letter-spacing:.4px; }
  .desk-heading { flex-wrap:wrap; align-items:center; gap:20px; }
  .desk-heading h1 { font-size:39px; }
  .desk-heading .eyebrow { font-size:12px; letter-spacing:.8px; }
  .desk-heading p:last-child { font-size:16px; max-width:none; }
  .desk-toolbar { flex-direction:row; width:100%; justify-content:space-between; align-items:center; }
  .desk-toolbar .button { font-size:14px; min-height:47px; padding:12px 16px; }
  .desk-toolbar .subtle-button { font-size:14px; }
  .stats { grid-template-columns:1fr 1fr; }
  .stat { padding:18px 16px; }
  .stat-label { font-size:12px; letter-spacing:.4px; }
  .stat-value { font-size:34px; }
  .stat-value small { font-size:14px; }
  .stat:nth-child(3) { border-left:0; border-top:1px solid var(--line); }
  .stat:nth-child(4) { border-top:1px solid var(--line); }
  .schedule-toolbar { padding:14px 12px; gap:16px; }
  .date-nav { flex-wrap:wrap; gap:5px; }
  .schedule-toolbar h2 { font-size:15px; }
  .icon-button { width:30px; height:34px; }
  .today-button,.view-toggle button { font-size:14px; }
  .schedule-subhead { flex-direction:column; gap:5px; font-size:12px; letter-spacing:.5px; padding:13px; }
  .day-timeline { margin-left:55px; margin-right:10px; }
  .hour-label { font-size:12px; left:-46px; width:38px; }
  .appointment-block { padding:6px 8px; gap:6px; }
  .appointment-block strong { font-size:14px; line-height:1.2; }
  .appointment-block .appointment-info { font-size:12px; line-height:1.4; }
  .appointment-block .badge { font-size:12px; padding:3px 5px; letter-spacing:0; }
  .appointment-block.compact { padding:4px 8px; flex-wrap:nowrap; }
  .schedule-bottom { font-size:13px; line-height:1.6; }
  dialog { padding:36px 21px 26px; }
  dialog h2 { font-size:31px; letter-spacing:-1px; }
  .steps { margin:20px 0; }
  .step { font-size:12px; }
  .step b { width:20px; height:20px; font-size:12px; margin-right:4px; }
  .service-option { padding:16px 5px; }
  .service-option strong { font-size:22px; }
  .service-option small { font-size:14px; }
  .selected-service { flex-wrap:wrap; gap:8px; }
  .selected-service strong { font-size:23px; }
  .selected-service span { font-size:14px; }
  .time-button { font-size:14px; }
  .dialog-actions { gap:12px; flex-wrap:wrap; }
  .dialog-actions .button,.confirmation .button,.appointment-actions .button { font-size:14px; min-height:47px; padding:12px 16px; }
  .dialog-actions .help { width:100%; }
  .detail-row { font-size:15px; gap:14px; }
  .confirmation-card { padding:16px; }
  .confirmation-card h3 { font-size:26px; }
  .close { width:36px; height:36px; }
}
@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after { animation:none!important; transition:none!important; scroll-behavior:auto!important; }
  .reveal-pending { opacity:1; transform:none; }
}
@media print { .reveal-pending { opacity:1; transform:none; } }

/* Parent sign-in shares the studio's type and watercolor. */
.admin-login{min-height:100dvh;background:var(--paper) url('/assets/petal-wash.jpg') center/cover;padding:50px 24px;display:flex;flex-direction:column;align-items:center;gap:30px}

/* Ellie’s treatment menu and spa-dollar journal. */
select{font:inherit;font-size:16px;color:var(--ink);background:#fffefa;border:1px solid var(--line);border-radius:5px;padding:13px 14px;width:100%;min-height:49px}
.studio-tabs{display:flex;gap:8px;margin:4px 0 28px;border-bottom:1px solid var(--line);padding-bottom:12px;flex-wrap:wrap}
.studio-tabs button{font:inherit;font-size:16px;border:0;background:transparent;color:#45677d;padding:12px 22px;border-radius:24px;cursor:pointer}
.studio-tabs button.active{background:#d8ecf9;color:#245a80;box-shadow:inset 0 0 0 1px #bbd9eb}
.studio-tabs button:hover{background:#e7f2f8}.studio-tabs button:focus-visible{outline:2px solid #346f98;outline-offset:3px}
.service-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px;align-items:start}
.service-editor,.studio-card{background:#fffefa;border:1px solid #d5e3e9;border-radius:18px;padding:28px;box-shadow:0 8px 30px #356f9810}
.service-card-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.service-card-heading .eyebrow{margin:0}
.service-editor label{display:block;margin-top:14px}.service-editor input,.service-editor textarea{width:100%;font-size:16px}.service-editor textarea{min-height:80px}
.check-label{display:flex!important;align-items:center;gap:9px;font-size:15px!important}.check-label input{width:19px!important;height:19px;accent-color:#387ca9;margin:0;min-height:0}
.variant-row{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:12px}.variant-row .subtle-button{margin-bottom:12px;font-size:14px;padding:0}
.service-editor [data-add-variant]{margin-top:20px;background:none;border:0;font:inherit;color:#346f98;cursor:pointer}.service-editor .dialog-actions{justify-content:space-between}
.form-status{font-size:15px;line-height:1.6;color:#366d83}.menu-edit-note{margin:0 0 24px}
.earnings-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:28px}
.earnings-card{position:relative;overflow:hidden;padding:30px 24px;border:1px solid #cddfeb;border-radius:20px;background:#edf7ff url('/assets/petal-wash.jpg') center/cover;display:flex;flex-direction:column;align-items:flex-start;box-shadow:0 8px 30px #356f9810;animation:earnings-arrive .65s both}
.earnings-card:nth-child(2){background-position:20% 60%;animation-delay:.06s}.earnings-card:nth-child(3){background-position:70% 10%;animation-delay:.12s}.earnings-card:nth-child(4){background-position:100% 80%;animation-delay:.18s}
.earnings-card p{margin:0 0 18px;font-size:17px;color:#355b73}.earnings-card>strong{font-family:'Fraunces',Georgia,serif;font-size:clamp(36px,4vw,58px);line-height:1.1;color:#245a80;letter-spacing:-2px;font-weight:500}.earnings-card>span:not(.earnings-spark){font-size:15px;color:#496c83;margin:8px 0 20px}.earnings-card small{font-size:14px;line-height:1.6;color:#3d5b70}.earnings-spark{position:absolute;right:20px;top:15px;font-size:35px;color:#5795bd;opacity:.7}
.earnings-lower{display:grid;grid-template-columns:1.7fr 1fr;gap:25px;margin-bottom:28px}.studio-card h2{font-size:31px;line-height:1.25;margin:8px 0 20px}.studio-card .eyebrow{margin:0}.earnings-chart{height:230px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;padding-top:22px;margin-bottom:25px}.earnings-day{display:flex;flex-direction:column;align-items:center;gap:10px;font-size:14px;color:#45677d}.earnings-day strong{font-size:15px;font-weight:400}.bar-track{height:150px;width:100%;max-width:44px;display:flex;align-items:end}.earnings-bar{height:var(--bar-height);width:100%;min-height:3px;background:linear-gradient(0deg,#5e9bc5,#a8d9f6);border-radius:12px 12px 3px 3px;animation:bar-grow .8s ease-out;transform-origin:bottom}
.kindness-note{text-align:center;background:#f0f6ed}.kindness-note>span{font-size:52px;color:#7b9a76;display:block;margin:5px 0 18px}.kindness-note p{font-size:17px;line-height:1.75;color:#4f6755}.kindness-note .help{font-size:14px}
.history-heading{display:flex;justify-content:space-between;align-items:end;gap:20px}.history-scroll{overflow:auto}.history-table{border-collapse:collapse;width:100%;text-align:left;font-size:15px;white-space:nowrap}.history-table th{font-size:13px;letter-spacing:.5px;color:#52758b;font-weight:400;padding:15px 12px;border-bottom:1px solid #cddfeb}.history-table td{padding:18px 12px;border-bottom:1px solid #e7ecec}.history-table strong{display:block;font-weight:400}.history-table small{display:block;font-size:13px;color:#6c7e86;margin-top:5px}.history-table button{background:none;border:0;font:inherit;color:#346f98;cursor:pointer}.outcome{display:inline-block;font-size:13px;padding:5px 10px;border-radius:16px}.outcome.given{background:#e3efdf;color:#41643a}.outcome.not-given{background:#f0ece6;color:#7d6d5e}.history-empty{padding:35px 0;color:#617986;font-size:17px}.history-given{padding:18px 0 4px}#history-form>.button{margin-top:18px;width:100%}
@keyframes earnings-arrive{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes bar-grow{from{transform:scaleY(.05)}to{transform:scaleY(1)}}
@media(max-width:1000px){.earnings-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.earnings-lower{grid-template-columns:1fr}.service-editor-grid{grid-template-columns:1fr}}
@media(max-width:540px){.studio-tabs{gap:3px}.studio-tabs button{padding:11px 16px;font-size:15px}.earnings-cards{gap:12px}.earnings-card{padding:25px 17px}.earnings-card p{font-size:15px}.earnings-card small{font-size:13px}.earnings-spark{font-size:28px;right:13px;top:12px}.service-editor,.studio-card{padding:22px 18px}.service-card-heading{align-items:start}.service-card-heading .eyebrow{font-size:11px}.variant-row{gap:8px;grid-template-columns:1fr 1fr auto}.variant-row .subtle-button{font-size:12px}.history-heading{display:block}.earnings-chart{gap:7px}.earnings-day strong{font-size:13px}.studio-card h2{font-size:28px}}
.login-card{background:#fffefaef;border:1px solid var(--line);border-radius:5px;padding:45px;width:min(100%,540px);box-shadow:0 15px 60px #2f6bb915}
.login-card h1{font-size:49px;letter-spacing:-2px;line-height:1.15}.login-card>p{color:var(--muted);font-size:16px}.login-card .button{width:100%;margin:24px 0 12px}.login-card .help{font-size:14px}.login-card input{width:100%}
@media(max-width:540px){.admin-login{padding:30px 18px}.login-card{padding:30px 22px}.login-card h1{font-size:37px}.admin-login .brand>span{font-size:28px}}

/* The whole little team, with room for simultaneous appointments. */
.provider-filter{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 24px}
.provider-filter label{margin:0;font-size:17px}.provider-filter select{width:auto;min-width:220px;max-width:100%;margin:0;font-size:17px}
.provider-choices{border:1px solid #d5e3e9;border-radius:12px;margin:24px 0 8px;padding:12px 18px 18px;display:flex;gap:10px 24px;flex-wrap:wrap}
.provider-choices legend{font-size:16px;padding:0 7px}.provider-choices label{margin:0;overflow-wrap:anywhere}
.provider-editor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}
.provider-editor{min-width:0}.provider-editor input:not([type="checkbox"]){width:100%;font-size:17px}.provider-editor .check-label{margin-top:18px;line-height:1.5}
.provider-editor .dialog-actions{flex-wrap:wrap;justify-content:flex-end}.provider-editor .form-status{width:100%;font-size:15px}
.studio-share-card{display:grid;grid-template-columns:1fr 1fr;gap:50px;margin-top:30px;background:linear-gradient(110deg,#fffefaed,#eef8ffdd),url('/assets/petal-wash.jpg') center/cover}
.studio-share-card h2{font-size:38px}.studio-share-card p{font-size:17px;line-height:1.65}.studio-share-card input{width:130px}.studio-share-card .help{font-size:15px}
.earnings-explanation{margin:-8px 0 24px;max-width:850px}
.earnings-split{width:100%;border-top:1px solid #afcee080;margin-top:20px;padding-top:12px;font-size:15px;line-height:1.5}
.earnings-split>div{display:flex;gap:12px;justify-content:space-between;margin-top:7px}.earnings-split b{white-space:nowrap;font-weight:600}
.history-table th,.history-table td{white-space:nowrap}.history-table td:nth-child(2){white-space:normal;min-width:180px}
.provider-timeline{min-width:calc(var(--provider-count)*220px);margin-top:70px}
.provider-column-heading{position:absolute;top:-49px;text-align:center;font-family:var(--serif);font-size:24px;line-height:1.3;padding:0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.provider-column-line{position:absolute;top:0;bottom:0;border-left:1px solid #dce8ef}
.provider-timeline .appointment-block{flex-wrap:wrap;align-content:center;gap:3px 8px;padding:4px 10px}
.provider-timeline .appointment-block strong{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:15px}
.provider-timeline .appointment-info{width:100%;font-size:13px;line-height:1.35}
.provider-timeline .badge{display:none}.provider-timeline .compact .appointment-info{display:none}
@media(max-width:1100px){.provider-editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.provider-editor-grid{grid-template-columns:1fr}.studio-share-card{grid-template-columns:1fr;gap:15px}.provider-filter{gap:10px}.provider-filter select{width:100%}.earnings-split{font-size:13px}.earnings-split>div{display:block}.earnings-split b{display:block;font-size:16px}.provider-timeline{margin-top:65px;min-width:calc(var(--provider-count)*210px)}}

/* A clear workspace, a special place for the owner, and tactile controls. */
.admin-mode .header{height:auto;min-height:126px;flex-wrap:wrap;gap:18px 26px;padding-top:24px;padding-bottom:24px;background:linear-gradient(115deg,#f2f8fdee,#e4f2fddd),url('/assets/petal-wash.jpg') center/cover;border-bottom:2px solid #aecfe6}
.admin-mode .header nav{display:flex;margin:0}.admin-mode .header-actions{margin-left:auto;gap:22px}
.admin-mode-badge{display:inline-flex;align-items:center;gap:10px;background:#225b95;color:#fff;border:1px solid #174877;border-radius:12px;padding:13px 18px;font-size:18px;font-weight:600;letter-spacing:.2px;box-shadow:inset 0 1px 0 #ffffff35,0 3px 0 #153f68}
.admin-mode-badge svg{width:21px;height:21px}.admin-public-link{font-size:16px;text-decoration:underline;text-underline-offset:5px;display:flex;gap:9px}
.admin-mode .desk-heading .eyebrow{font-size:13px;color:#2b6ba7;font-weight:600;letter-spacing:1.2px}
.family-provider-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.family-provider{position:relative;min-width:0;overflow:hidden;display:flex;flex-direction:column;padding:26px 22px;background:linear-gradient(150deg,#fffefa,#f0f7fc);min-height:255px}
.family-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.family-role{font-size:13px;letter-spacing:.7px;font-weight:600;color:#53748a}
.profile-lock{display:flex;flex-shrink:0;opacity:.7}.profile-lock svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5}
.family-provider h2{font-size:42px;margin:27px 0 10px;letter-spacing:-1.2px}.family-provider>p{font-size:16px;line-height:1.6;margin:0 0 24px;color:#557287}
.family-card-foot{font-size:13px;border-top:1px solid #c7dce8;padding-top:15px;margin-top:auto;color:#53748a}
.owner-provider{background:linear-gradient(135deg,#245e9de8,#173e6ff0),url('/assets/petal-wash.jpg') center/cover;color:#fff;border-color:#1a4779;box-shadow:inset 0 1px 0 #ffffff35,0 5px 0 #12365d,0 16px 35px #23578c25}
.owner-provider .family-role{color:#f7e4b7;background:#ffffff12;border:1px solid #ffffff30;border-radius:20px;padding:6px 10px;letter-spacing:.2px}
.owner-provider h2{color:#fff}.owner-provider>p,.owner-provider .family-card-foot{color:#dfeefa}.owner-provider .family-card-foot{border-color:#ffffff30}
.guest-team-heading{margin:38px 0 20px}.guest-team-heading h2{font-size:30px;margin:0 0 10px}.provider-editor-grid:empty{display:none}
.button{--button-top:#3f85d1;--button-bottom:#2867ad;--button-edge:#1b477b;border-radius:12px;background:linear-gradient(180deg,var(--button-top),var(--button-bottom));border:1px solid #245e9c;border-top-color:#9ac9ef80;box-shadow:inset 0 1px 0 #ffffff30,0 4px 0 var(--button-edge),0 9px 19px #234f7c24;translate:0 0;transform:none;transition:translate .18s ease,box-shadow .18s ease,filter .18s ease}
.button.secondary{--button-top:#ffffff;--button-bottom:#edf5fb;--button-edge:#b5cada;background:linear-gradient(180deg,var(--button-top),var(--button-bottom));border-color:#c3d7e6;color:#295f8b;box-shadow:inset 0 1px 0 #ffffff,0 3px 0 var(--button-edge),0 6px 14px #234f7c12}
.button.danger{--button-top:#ac5b58;--button-bottom:#8a403f;--button-edge:#622d2d;background:linear-gradient(180deg,var(--button-top),var(--button-bottom));border-color:#813a39;color:#fff}
@media(hover:hover) and (pointer:fine){.button:not(:disabled):hover{background:linear-gradient(180deg,var(--button-top),var(--button-bottom));transform:none;translate:0 -3px;filter:brightness(1.045);box-shadow:inset 0 1px 0 #ffffff45,0 7px 0 var(--button-edge),0 13px 25px #234f7c2b}}
.button:not(:disabled):active{transform:none;translate:0 3px;filter:brightness(.98);box-shadow:inset 0 1px 2px #173d6818,0 1px 0 var(--button-edge),0 3px 8px #234f7c22}
.button:focus-visible{outline:3px solid #154d83;outline-offset:6px}.button:disabled{transform:none;translate:0 0;box-shadow:0 2px 0 #a7bdce;filter:none;cursor:default}
@media(max-width:1100px){.family-provider-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-mode .header{gap:18px}.admin-mode .header-actions{gap:14px}}
@media(max-width:650px){.family-provider-grid{grid-template-columns:1fr;gap:22px}.family-provider{min-height:230px;padding:27px}.family-provider h2{font-size:43px}.admin-mode .header .brand{flex-basis:100%}.admin-mode .header nav{order:2}.admin-mode .header-actions{order:3;width:100%;margin:0;justify-content:space-between}.admin-mode-badge{font-size:17px;padding:11px 16px}.admin-public-link{font-size:16px}.admin-mode .header{padding-top:22px;padding-bottom:22px}}
@media(prefers-reduced-motion:reduce){.button,.button:not(:disabled):hover,.button:not(:disabled):active{translate:0 0;transform:none!important}.button:hover svg{transform:none}}

/* Prices are part of the invitation, with the same expressive type as the menu. */
.treatment{align-items:center;gap:24px}.treatment-copy{flex:1;min-width:0}
.treatment button.treatment-reserve{width:116px;height:auto;min-height:144px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:17px 12px 13px;border:1px solid #bbd7ec;border-radius:15px;background:linear-gradient(155deg,#f3faff,#deeffc);color:#245e99;box-shadow:inset 0 1px 0 #ffffff,0 3px 0 #adcce3,0 8px 18px #296ab510;translate:0 0;transition:translate .18s,box-shadow .18s,background .18s}
.treatment-price{display:flex;flex-direction:column;align-items:center;gap:4px}.price-figure{display:flex;align-items:flex-start;justify-content:center;gap:2px;font-family:var(--serif);line-height:1;white-space:nowrap}
.price-figure strong{font-size:47px;font-weight:500;letter-spacing:-2px}.price-currency{font-size:24px;padding-top:4px}.price-unit{font-size:13px;line-height:1.4;letter-spacing:.3px}.price-from{font-size:13px;font-style:italic;color:#507698;line-height:1.2}
.price-book{display:flex;align-items:center;gap:9px;border-top:1px solid #b8d5ea;padding-top:10px;font-size:13px;font-weight:600;width:100%;justify-content:center}.treatment .price-book svg{width:18px;height:18px}
@media(hover:hover) and (pointer:fine){.treatment button.treatment-reserve:hover{background:linear-gradient(155deg,#e8f6ff,#cfe7fb);translate:0 -3px;box-shadow:inset 0 1px 0 #ffffff,0 6px 0 #adcce3,0 12px 22px #296ab51c}.treatment button.treatment-reserve:hover svg{transform:translateX(2px)}}
.treatment button.treatment-reserve:active{translate:0 2px;box-shadow:inset 0 1px 2px #6d99b920,0 1px 0 #adcce3}
.treatment button.treatment-reserve:focus-visible{outline:3px solid #245e99;outline-offset:5px}
@media(max-width:650px){.treatment{gap:18px}.treatment h3{font-size:28px}.treatment button.treatment-reserve{width:105px;min-height:138px;padding:16px 9px 12px}.price-figure strong{font-size:43px}.treatment .tag{display:block;width:fit-content;margin:8px 0 0}.treatment p{font-size:16px}.treatment .meta{font-size:12px}}
@media(prefers-reduced-motion:reduce){.treatment button.treatment-reserve,.treatment button.treatment-reserve:hover,.treatment button.treatment-reserve:active{translate:0 0}.treatment button.treatment-reserve:hover svg{transform:none}}

/* A little time today: a tactile watercolor invitation and an inline calendar. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
#booking-dialog,#history-dialog{border-radius:22px;box-shadow:0 24px 90px #173e6f35}
.booking-preferences{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:24px}
.booking-preferences label{margin-top:0}.booking-preferences select{border-radius:10px}
.date-picker{padding:0;border:0;margin:22px 0 26px;min-width:0}
.date-picker legend{padding:0;margin-bottom:12px;font-size:16px;color:var(--ink)}
.date-shortcuts{display:grid;grid-template-columns:1.2fr 1fr;gap:12px}
.date-shortcuts button{font:inherit;text-align:left;display:flex;align-items:center;gap:12px;border:1px solid #bfd8eb;border-radius:15px;min-height:108px;padding:17px;color:#2b587e;background:#f6faff;box-shadow:inset 0 1px 0 #fff,0 3px 0 #d1e1ec;transition:translate .18s,box-shadow .18s,border-color .18s;min-width:0;position:relative}
.date-shortcuts .date-today{background:linear-gradient(120deg,#edf8ffe0,#d5edffb5),url('/assets/petal-wash.jpg') 70% 45%/cover}
.date-shortcuts .date-today.is-selected{color:#174c7e;border-color:#4486bb;box-shadow:inset 0 0 0 1px #4486bb,0 4px 0 #adcce5,0 8px 22px #326ca016}
.today-stamp{flex-shrink:0;width:49px;min-height:65px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #aecce3;border-radius:8px;background:#ffffffc7;box-shadow:0 2px 5px #3d78a510}
.today-stamp small{font-size:10px;line-height:1.6;letter-spacing:1.5px;font-weight:600}.today-stamp b{font-family:var(--serif);font-size:31px;line-height:1.1;font-weight:500}
.date-card-copy{display:flex;flex-direction:column;gap:6px}.date-shortcuts strong{font-family:var(--serif);font-size:28px;line-height:1.05;font-weight:500;letter-spacing:-.5px;display:block}
.date-shortcuts .date-today strong{font-size:33px}.date-shortcuts span>span:not(.date-card-copy){font-size:13px;line-height:1.4;display:block}
.date-shortcuts .date-check{position:absolute;right:9px;top:7px;font-size:14px!important;color:#276b9c}
.date-shortcuts .date-other{gap:10px;background:#fffefa}.date-other>svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}.date-other>span:not(.date-chevron){display:flex;flex-direction:column;gap:8px}.date-shortcuts .date-other strong{font-size:22px;letter-spacing:-.3px}
.date-other .date-chevron{margin-left:auto;font-size:21px;align-self:flex-start;line-height:1}.date-shortcuts .date-other.is-selected{border-color:#4486bb;box-shadow:inset 0 0 0 1px #4486bb,0 3px 0 #adcce5;background:#edf6fd}
.date-calendar{margin-top:17px;padding:20px 22px 13px;background:linear-gradient(#fffefaed,#ffffffed),url('/assets/petal-wash.jpg') center/cover;border:1px solid #bfd8eb;border-radius:17px;box-shadow:0 8px 24px #326ca00c;animation:calendar-bloom .22s ease-out both}
.date-calendar[hidden],.times[hidden]{display:none!important}
.date-month-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:20px}
.date-month-nav>button{width:42px;height:42px;flex-shrink:0;border-radius:50%;border:1px solid #d0e0eb;background:#f0f7fc;color:#32658e;font-size:26px;line-height:1}
.date-month-fields{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0}
.date-month-fields select,.date-month-fields input{font-family:var(--serif);font-size:23px;letter-spacing:-.5px;background:transparent;min-height:44px;border:0;border-bottom:1px solid #d1dfeb;border-radius:0;margin:0;padding:4px 5px;color:#264f6d;width:auto;max-width:100%;font-variant-numeric:lining-nums}
.date-month-fields select{max-width:160px}.date-month-fields input{width:83px;text-align:center;appearance:textfield}.date-month-fields input::-webkit-inner-spin-button{appearance:none}
.date-weekdays,.date-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}
.date-weekdays{color:#627b91;font-size:12px;margin-bottom:9px}.date-week{margin-top:4px}.date-week>[role="gridcell"]{display:grid;place-items:center}
.date-day{font:inherit;font-size:16px;width:100%;height:44px;max-width:52px;border:1px solid transparent;border-radius:11px;background:transparent;color:#30526e;position:relative;font-variant-numeric:tabular-nums}
.date-day.is-today:after{content:'';position:absolute;bottom:5px;left:calc(50% - 2px);height:4px;width:4px;background:currentColor;border-radius:50%}
.date-day.is-selected{color:white;background:linear-gradient(#4b91d0,#2b6ca9);border-color:#2b6ca9;box-shadow:inset 0 1px 0 #ffffff40,0 2px 0 #174b79}
.date-day:disabled,.date-month-nav>button:disabled{color:#adb9c1;opacity:.65;cursor:default}
.date-calendar-note{margin:16px 0 0;padding-top:12px;border-top:1px solid #e0eaf1;display:flex;align-items:center;gap:7px;font-size:12px;color:#4e718f}.date-calendar-note>span:first-child{height:5px;width:5px;border-radius:50%;background:#2b6ca9}
.date-picker button:focus-visible,.date-month-fields input:focus-visible,.date-month-fields select:focus-visible{outline:3px solid #235e94;outline-offset:3px}
.time-choice-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;font-size:17px}.time-choice-heading>span+span{font-size:13px;color:var(--muted)}
.time-periods{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.time-periods:empty{display:none}.time-periods button{border:1px solid transparent;border-radius:20px;background:transparent;font:inherit;font-size:13px;color:#4e718c;padding:7px 12px;min-height:36px}.time-periods button[aria-pressed="true"]{background:#dceefa;color:#245a85;border-color:#b5d4eb}
.time-choices .times{margin:0;max-height:190px;overflow:auto;padding:3px 3px 6px;gap:9px;overscroll-behavior:contain}.time-choices .no-times{font-size:15px;line-height:1.65;margin:0;padding:18px;border-radius:12px;background:#f1f7fb}
.time-button{border-radius:9px;background:#fffefa;box-shadow:0 2px 0 #e2e9ee;transition:background .15s,translate .15s}.time-button.selected{background:#2e72b2;border-color:#2e72b2;color:white;box-shadow:0 2px 0 #1d4f7e}
.today-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;padding:9px 15px;font-size:15px;font-weight:600;border-radius:10px;background:#e0f0fc url('/assets/petal-wash.jpg') center/cover;border:1px solid #8db4d2;color:#245a85;box-shadow:inset 0 1px 0 #ffffffb0,0 3px 0 #b5cde0}.today-button svg{width:19px;height:19px}.today-button[aria-pressed="true"]{outline:1px solid #3c7cab;outline-offset:-2px}
.mini-calendar{border-radius:16px;background:linear-gradient(#ffffffd9,#ffffffef),url('/assets/petal-wash.jpg') center/cover;box-shadow:0 5px 15px #326ca00a}.mini-days button[aria-current="date"]{outline:1px solid #5b93bf;outline-offset:-2px}
@keyframes calendar-bloom{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
@media(hover:hover) and (pointer:fine){.date-shortcuts button:not(:disabled):hover{translate:0 -2px;border-color:#609ac5}.date-day:not(:disabled):not(.is-selected):hover{background:#e1effa}.date-month-nav>button:not(:disabled):hover{background:#dceefa}.time-button:hover{translate:0 -1px}.time-periods button:hover{background:#e8f3fb}}
@media(max-width:540px){
 #booking-dialog,#history-dialog{padding:31px 20px 26px;border-radius:18px}
 .booking-preferences{gap:10px;margin-bottom:18px}.booking-preferences label{font-size:14px}.booking-preferences select{padding:11px 8px;font-size:16px}
 .date-picker{margin:20px 0 24px}.date-shortcuts{grid-template-columns:1fr;gap:11px}
 .date-shortcuts button{min-height:0;padding:14px 17px}.date-shortcuts .date-today{min-height:98px;gap:17px}.date-shortcuts .date-today strong{font-size:35px}.date-shortcuts .date-today span>span{font-size:14px}
 .date-shortcuts .date-other{padding:14px 17px;gap:12px}.date-other>span:not(.date-chevron){flex:1;flex-direction:row;align-items:center;justify-content:space-between;gap:10px}.date-shortcuts .date-other strong{font-size:19px;white-space:nowrap}.date-other .date-chevron{align-self:center}.date-shortcuts .date-other span>span{font-size:12px;max-width:115px;text-align:right}
 .date-calendar{padding:16px 10px 12px}.date-month-nav{gap:4px;margin-bottom:14px}.date-month-nav>button{width:35px;height:38px}.date-month-fields select,.date-month-fields input{font-size:20px}.date-month-fields input{width:65px}.date-month-fields select{max-width:132px;padding-left:0;padding-right:0}
 .date-weekdays,.date-week{gap:1px}.date-day{height:41px}.date-weekdays{font-size:11px}.time-periods{gap:3px}.time-periods button{padding:7px 10px;font-size:13px}.time-choices .times{gap:7px;max-height:170px}.time-choice-heading{font-size:16px}.time-button{font-size:14px}
 .date-nav{flex-wrap:wrap}.today-button{padding:8px 12px;font-size:14px}.today-button svg{width:17px;height:17px}
}
@media(prefers-reduced-motion:reduce){.date-calendar{animation:none}.date-shortcuts button,.time-button{transition:none!important;translate:none!important}}
