:root{color-scheme:dark;font:15px/1.6 Arial,sans-serif;color:#edf3f7;background:#0d171d;--teal:#14a99d;--line:#30434f;--muted:#b5c9d7}*{box-sizing:border-box}body{margin:0}a{color:#74e0d4}header,nav,main,footer{max-width:1220px;margin:auto}header{display:flex;justify-content:space-between;align-items:center;padding:24px 30px;gap:20px}header img{width:330px;max-width:100%;display:block}nav{display:flex;gap:12px;flex-wrap:wrap;padding:12px 30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}nav button{background:transparent;border:0;color:var(--muted)}main{padding:30px}h1{font-size:38px;line-height:1.18;margin:12px 0 20px;letter-spacing:-1px}h2{font-size:23px;margin:0 0 16px}h3{font-size:17px;margin:14px 0 8px}p{color:var(--muted)}button,.button{display:inline-block;font:700 13px Arial,sans-serif;border:1px solid #54717e;border-radius:7px;background:#20343e;color:#edf3f7;padding:12px 17px;cursor:pointer;text-decoration:none}button:hover{filter:brightness(1.15)}button:focus-visible,a:focus-visible{outline:2px solid #78e9dc;outline-offset:3px}button:disabled{opacity:.4;cursor:default}.primary{background:var(--teal);color:#062126;border:0}.danger{background:#522e37;border-color:#b76573}.testbar{background:#473717;color:#ffe8b7;text-align:center;padding:8px;font-size:12px}.hero{display:grid;grid-template-columns:1.5fr 1fr;gap:35px;margin:30px 0}.banner{width:100%;aspect-ratio:2400/530;object-fit:cover;object-position:92% center;border-radius:7px}.panel{background:#17232c;border:1px solid var(--line);border-radius:12px;padding:24px;margin-bottom:22px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.triple{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.wide{grid-column:1/-1}.actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.muted,small{color:var(--muted);font-size:12px}.eyebrow{color:#70ded0;text-transform:uppercase;letter-spacing:2px;font-size:12px}.price{font-size:30px;color:#78e0d4;font-weight:700}label{display:block;font-size:13px;margin:12px 0}input,select,textarea{display:block;width:100%;font:16px Arial,sans-serif;background:#0d171d;color:#edf3f7;padding:11px;border:1px solid #4b6574;border-radius:6px;margin-top:6px}textarea{min-height:85px;resize:vertical}input[type=checkbox]{width:auto;display:inline;margin-right:10px;accent-color:var(--teal)}.check{display:flex;gap:8px;align-items:flex-start}.check input{margin-top:5px}.line{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:10px 0}.status{display:inline-block;padding:4px 11px;border-radius:20px;background:#24443e;color:#a5eee0;font-size:12px}.note{background:#10282c;border-left:3px solid var(--teal);padding:13px;font-size:13px;margin:14px 0}.warning{border-left-color:#e3ae43;background:#342c20}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}td,th{padding:12px;text-align:left;border-bottom:1px solid var(--line)}th{color:var(--muted)}td button{white-space:nowrap}#notice{position:sticky;bottom:12px;max-width:800px;margin:0 auto;padding:18px;background:#28454c;border:1px solid #7bcabd;border-radius:8px;color:#fff;z-index:5}footer{border-top:1px solid var(--line);padding:30px;color:var(--muted);font-size:12px}details{margin:12px 0}summary{cursor:pointer;color:#7dded1}.paper{white-space:pre-wrap;background:#f1f5f6;color:#23313a;padding:24px;border-radius:6px}.paper p{color:#23313a}canvas{display:block;width:100%;height:160px;background:#f1f5f6;border-radius:6px;touch-action:none}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day{background:#14232b;min-height:70px;padding:7px;font-size:11px;border:1px solid var(--line);border-radius:4px}.day.open{background:#16433f}.day.booked{background:#304c62}.day time{display:block;font-weight:700}.calendar span{text-align:center;font-size:11px}[hidden]{display:none!important}@media(max-width:760px){header{padding:20px}header img{width:250px}nav,main{padding:20px}.hero,.grid,.triple{grid-template-columns:1fr}h1{font-size:32px}.banner{height:160px;aspect-ratio:auto}.panel{padding:18px}.calendar{gap:3px}.day{padding:3px;min-height:65px}button{min-height:42px}}

#calendar-weeks{width:auto;margin:0}.day{text-align:left;white-space:normal;padding:7px;font-size:11px;font-weight:400}.calendar-note{display:block;overflow-wrap:anywhere;font-size:10px;line-height:1.3;margin-top:5px}.product-photo{display:block;width:100%;height:180px;object-fit:contain;background:#0d171d;border-radius:8px;margin-bottom:12px}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.product-gallery{display:flex;gap:8px;overflow-x:auto}.product-gallery a{flex:0 0 100%}.product-description{white-space:pre-wrap;overflow-wrap:anywhere}.size-row{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:center}@media(max-width:600px){.photo-grid{grid-template-columns:1fr 1fr}.size-row{gap:6px}.size-row button{padding:8px}}

/* Keep page-level actions clear of the cards and editors below them. */
#app > button, #app > .button { margin-block: 4px 24px; }
#app > .actions { margin-block: 20px 24px; }

/* Separate page-level status badges from the detail cards below. */
#app > .status { margin-bottom: 24px; }
.cart-row{display:grid;grid-template-columns:minmax(0,1fr) 90px auto;gap:16px;align-items:center;border-bottom:1px solid var(--line);padding:16px 0}.cart-photo{width:80px;height:60px;object-fit:contain}.cart-row h3{overflow-wrap:anywhere}@media(max-width:600px){.cart-row{grid-template-columns:1fr 75px;gap:10px}.cart-row button{grid-column:2}}
/* Shared desktop/mobile refinements from the approved project notes. */
.header-logo{min-width:0;flex:0 1 330px}.header-logo img{filter:drop-shadow(0 0 10px rgba(255,255,255,.15)) drop-shadow(0 0 26px rgba(20,169,157,.17))}.portal-link{white-space:nowrap;flex-shrink:0}.homepage button{box-shadow:0 0 10px rgba(255,255,255,.08),0 0 24px rgba(20,169,157,.18)}
#home-banner{width:100%;border-block:3px solid #aeb6bd;background:#071014;margin-top:20px}#home-banner .banner{display:block;width:100%;height:auto;aspect-ratio:2400/530;border-radius:0;object-fit:cover;object-position:85% center}
.cart-icon{width:22px;height:22px;flex-shrink:0}[data-page=cart]{display:inline-flex;align-items:center;gap:8px}button,.button{min-height:44px}input,select{min-height:44px}.grid>*,.triple>*,.hero>*{min-width:0}.panel{overflow-wrap:anywhere}fieldset{border:1px solid var(--line);border-radius:8px;margin:18px 0;min-width:0;padding:14px}legend{padding:0 8px}#coupon-feedback{font-size:13px}.coupon-entry{margin-block:18px}table select{max-width:100%}.tablewrap{max-width:100%}#notice{overflow-wrap:anywhere}.actions{align-items:center}nav button{white-space:normal}nav{row-gap:4px}
@media(max-width:760px){header{gap:16px}.header-logo{flex:0 1 230px}header .header-logo img{width:100%}nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding-block:12px}nav button{text-align:center;padding:10px 6px;font-size:12px}[data-page=cart]{justify-content:center}#home-banner{margin-top:12px}#home-banner .banner{height:170px;aspect-ratio:auto;object-position:85% center}.hero{gap:20px;margin-top:8px}.panel:has(>.calendar){overflow-x:auto}.calendar{min-width:350px}.calendar .day{overflow-wrap:anywhere;min-height:76px}.actions button{flex:1 1 auto}.size-row{grid-template-columns:minmax(0,1fr) 80px auto}.size-row input{min-width:0}main{padding:22px 16px}header,footer{padding-inline:16px}h1{overflow-wrap:anywhere}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.responsive-table,.responsive-table tbody{display:block}.responsive-table .column-headings{display:none}.responsive-table tr{display:block;border:1px solid var(--line);border-radius:8px;margin-bottom:14px;padding:10px}.responsive-table td{display:grid;grid-template-columns:100px minmax(0,1fr);gap:10px;border:0;padding:8px;overflow-wrap:anywhere}.responsive-table td::before{content:attr(data-label);font-weight:700;color:var(--muted)}.responsive-table td:last-child{display:flex;flex-wrap:wrap}.responsive-table td:last-child::before{display:none}.responsive-table td button{width:100%}.responsive-table th{display:none}.header-logo{flex-basis:190px}.portal-link{padding:11px;font-size:12px}.size-row{grid-template-columns:minmax(0,1fr) 75px}.size-row button{grid-column:1/-1}.calendar{font-size:11px}.product-photo{height:160px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.cell-value{min-width:0;display:block}.responsive-table td:last-child .cell-value{width:100%}
/* Keep monetary amounts intact even when checkout cards are narrow. */
.line{align-items:baseline;gap:12px}.line>:first-child{min-width:0}.line>:last-child{flex:0 0 auto;white-space:nowrap;overflow-wrap:normal;text-align:right;font-variant-numeric:tabular-nums}.line.price{flex-wrap:wrap;font-size:24px;gap:6px 16px}.line.price>:first-child{font-size:18px}.line.price>:last-child{margin-left:auto}

/* Separate shopping/account actions from the service navigation. */
.header-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
.portal-link{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;line-height:1.2;padding:12px 16px}
.portal-caption{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;opacity:.8}
.cart-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap;background:#192f39;border:1px solid #55808b;color:#e4f9f6;min-height:54px}
.cart-button:hover,.cart-button[aria-pressed=true]{background:#244b50;border-color:#69dbcf}
nav.public-nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding-block:10px;background:linear-gradient(180deg,#14232c,#101e26)}
.public-nav button{padding:12px 7px;min-width:0;white-space:nowrap;border:1px solid transparent;border-radius:7px;color:#c6d6de;transition:background .15s,color .15s}
.public-nav button:hover{background:#1b333e;color:#fff;filter:none}
.public-nav button[aria-current=page]{background:#183c3c;border-color:#39766f;color:#95eee0;box-shadow:inset 0 -2px #21b9a8}
@media(max-width:1000px){header{gap:18px}.header-logo{flex-basis:270px}.header-actions{gap:8px}.portal-link{font-size:12px;padding:11px 12px}.cart-button{padding:11px 12px}}
@media(max-width:700px){header{flex-wrap:wrap;padding-block:20px;gap:18px}.header-logo{flex:0 1 260px}.header-actions{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:10px}.portal-link{align-items:center;text-align:center;font-size:12px;white-space:normal}.cart-button{min-height:54px}nav.public-nav{grid-template-columns:repeat(3,minmax(0,1fr));padding:10px 12px;gap:6px}.public-nav button{font-size:12px;padding:12px 4px}}
@media(prefers-reduced-motion:reduce){.public-nav button{transition:none}}

/* Compact header actions with the portal name as the primary label. */
.header-actions{gap:8px}
.header-actions .cart-button{min-height:44px;padding:9px 11px;font-size:12px;gap:7px}
.header-actions .cart-icon{width:18px;height:18px}
.header-actions .portal-link{min-height:44px;padding:7px 12px;font-size:13px;gap:3px;align-items:center}
.header-actions .portal-caption{font-size:10px;font-weight:400;letter-spacing:0;text-transform:none;opacity:1}
@media(max-width:700px){.header-actions{display:flex;width:100%;justify-content:flex-start}.header-actions .portal-link{white-space:nowrap}}
/* Subtle portal emphasis in the shared IMW palette. */
.header-actions .portal-link{background:#173536;color:#fff;border:1px solid #3f716d;box-shadow:0 0 12px rgba(20,169,157,.22)}
.header-actions .portal-link:hover{background:#204544;border-color:#6bb7ae;box-shadow:0 0 14px rgba(20,169,157,.3);filter:none}
/* Center the mobile header without changing the desktop arrangement. */
@media(max-width:700px){header{justify-content:center}.header-actions{justify-content:center}.header-actions .portal-link{text-align:center}}
/* Give the mobile logo more presence while retaining side breathing room. */
@media(max-width:700px){header .header-logo{flex:0 1 310px;max-width:100%}header .header-logo img{width:100%}}

.order-alert{color:#ffd18a;font-weight:700;margin:8px 0 0;font-size:12px}

.agreement-paper{white-space:normal;display:flow-root}.agreement-wording{white-space:pre-wrap}.agreement-mark{width:220px;max-width:100%;margin:0 0 18px auto}.agreement-mark canvas{height:100px;border:1px solid #69808a;background:#fff}.agreement-mark button{margin-top:8px;font-size:12px}.panel>svg{display:block;width:100%;max-width:400px;border:1px solid var(--line);margin:12px 0}

/* The reading instruction lives only in the agreement; keep its paper area unmarked. */
.agreement-mark canvas{border:0;border-radius:0;background:transparent;cursor:default}

.onboarding-field{position:relative;margin:16px 0}.field-heading{display:flex;align-items:center;gap:6px}.field-heading label{margin:0}.info-button{display:inline-flex;align-items:center;justify-content:center;width:28px;min-height:28px;padding:0;border-radius:50%;font:700 13px Georgia,serif;color:#9de8df;background:#19383d;border:1px solid #477b7b}.field-help{position:absolute;top:36px;left:0;z-index:10;width:360px;max-width:100%;padding:16px;border:1px solid #569a94;border-radius:10px;background:#20353f;box-shadow:0 8px 24px #0008;font-size:13px}.field-help p{margin:8px 0 12px}.field-help button{padding:7px 12px}.onboarding-field input,.onboarding-field textarea{margin-top:6px}

.agreement-masthead{position:relative;display:flex;align-items:center;justify-content:center;min-height:120px;margin-bottom:18px}.agreement-logo{display:block;width:44%;max-width:310px;height:auto}.agreement-masthead .agreement-mark{position:absolute;top:0;right:0;width:26%;margin:0}.agreement-masthead .agreement-mark canvas{width:100%;height:100px}.agreement-masthead .agreement-mark button{font-size:10px;min-height:28px;padding:5px;margin:0}
/* Override text-input sizing for checkboxes and align consent with its first line. */
input[type=checkbox]{min-height:0;height:16px;width:16px;flex-shrink:0;padding:0}
label.check{display:flex;align-items:flex-start;gap:10px;line-height:1.5;margin:16px 0}
label.check input[type=checkbox]{flex:0 0 16px;margin:2px 0 0}
label.check>span{flex:1;min-width:0}

.calendar-booking-hint{display:block;font-size:.7rem;color:#79e0d5;margin-top:5px}
.calendar-booking-card{box-sizing:border-box;width:min(420px,calc(100vw - 32px));max-height:80vh;overflow:auto;padding:20px;background:#17242d;color:#f4f7fa;border:1px solid #45616d;border-radius:14px;box-shadow:0 16px 60px #0008}
.calendar-booking-card::backdrop{background:#0007}
.booking-card-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.booking-card-heading h2{margin:0;font-size:1.15rem}
.booking-card-heading button{padding:5px 10px;font-size:1.2rem}
.booking-card-entry{overflow-wrap:anywhere;font-size:.9rem;line-height:1.5}
.booking-card-entry + .booking-card-entry{border-top:1px solid #45616d;margin-top:16px;padding-top:8px}
.booking-card-entry p{margin:12px 0}

.reschedule-card{width:min(480px,calc(100vw - 32px))}.reschedule-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin:16px 0;text-align:center}.reschedule-calendar button{padding:8px 0;min-width:0}.reschedule-calendar button:disabled{opacity:.25}.reschedule-calendar button:not(:disabled){border-color:#13b8a6;background:#174b49}.reschedule-card [data-times]{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}

.calendar .day.no-show{background:#591f29;border:2px solid #ef596c;color:#fff}.no-show-warning{display:block;background:#591f29;color:#fff;border:1px solid #ef596c;border-radius:8px;padding:10px;margin:10px 0}

#dyno-date-picker{max-width:480px}.customer-date-calendar button[aria-pressed="true"]{background:#10a99d;color:#071a20;outline:2px solid #8ef7e9;outline-offset:1px}
/* Keep action labels intact; allow wrapping only at word boundaries. */
button,.button{overflow-wrap:normal;word-break:normal;hyphens:none;white-space:normal}
.completed-marker{background:#285244;color:#dcfff0;border:1px solid #70b99a;margin-left:8px}
.email-preview{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}
@media(max-width:600px){.cart-row{grid-template-columns:minmax(0,1fr) minmax(90px,max-content)}.cart-row button{padding-inline:12px;white-space:nowrap}}
@media(max-width:380px){.cart-row{grid-template-columns:minmax(0,1fr)}.cart-row label,.cart-row button{grid-column:1}.cart-row label{max-width:110px}.cart-row button{justify-self:start}}
.order-action-group+.order-action-group{border-top:1px solid var(--line);margin-top:24px;padding-top:16px}.order-action-group h3{margin-top:0}.order-action-group .actions{margin-bottom:12px}.email-tabs{margin-bottom:24px}.email-tabs button{min-width:110px}
