:root {
  --bg: #F8FAFC;
  --surface: #fff;
  --ink: #142238;
  --muted: #425573;
  --accent: #3478F6;
  --selected: #EAF2FF;
  --action: #225BCC;
  --border: #ccd8e8;
  --tint: #EEF2F7;
  --error: #9d2525;
  --font: system-ui, -apple-system, "Segoe UI", sans-serif;
  --space: 1rem;
  --gap: 1.5rem;
  --radius: 1.25rem;
  --control-radius: .75rem;
  --shadow: 0 12px 28px rgb(20 34 56 / 8%);
  --fast: 170ms;
  --motion: 300ms;
  --ease: cubic-bezier(.2, .75, .25, 1);
  --glass: rgb(248 250 252 / 88%);
  --confirmed-bg: #E6F4ED;
  --confirmed-ink: #176346;
  --cancelled-bg: #FBECEC;
}
* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--bg); font: 1rem/1.55 var(--font); min-height: 100vh; display: flex; flex-direction: column; }
a { color: var(--action); text-underline-offset: .2em; }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }
#main:focus { outline: none; }
header { background: var(--surface); padding-block: var(--space); }
header { border-bottom: 1px solid var(--border); }
.wrap { width: min(68rem, calc(100% - 2 * var(--space))); margin-inline: auto; }
main { flex: 1; padding-block: var(--gap) calc(2 * var(--gap)); }
.bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space); flex-wrap: wrap; }
h1, h2, h3 { line-height: 1.14; margin: 0 0 .6em; overflow-wrap: anywhere; }
h1 { font-size: clamp(2rem, 6vw, 4rem); letter-spacing: -.045em; }
h2 { font-size: clamp(1.35rem, 3vw, 2rem); letter-spacing: -.025em; }
h3 { font-size: 1.17rem; }
p { margin: 0 0 var(--space); color: var(--muted); }
.orders { display: grid; gap: var(--space); }
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: var(--gap); min-width: 0; overflow-wrap: anywhere; }
.narrow { max-width: 40rem; margin-inline: auto; }
.compact-heading {
  font-size: 1.875rem;
  margin-bottom: .85rem;
  padding: .65rem var(--space);
  background: var(--selected);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  letter-spacing: -.02em;
}
button, .button { display: inline-block; min-height: 44px; font: inherit; font-weight: 700; padding: .65rem 1rem; background: var(--action); color: var(--surface); border: 1px solid var(--action); border-radius: var(--control-radius); cursor: pointer; text-decoration: none; }
button:disabled { opacity: .65; cursor: wait; }
.secondary { background: var(--surface); color: var(--action); }
label { display: block; font-weight: 700; color: var(--ink); }
input:not([type=hidden]), textarea, select { width: 100%; font: inherit; color: var(--ink); background: var(--surface); border: 1px solid var(--muted); border-radius: var(--control-radius); min-height: 44px; padding: .55rem .7rem; margin-top: .35rem; }
textarea { resize: vertical; display: block; }
.field, .message, .pages { margin-top: var(--space); }
.field:last-of-type { margin-bottom: var(--gap); }
small { color: var(--muted); }
.optional-label { font-weight: 400; }
.errorlist { color: var(--error); padding-left: 1.2rem; }
.status { background: var(--tint); color: var(--action); border-radius: 2rem; font-weight: 700; padding: .2rem .75rem; }
.orders { margin-top: var(--gap); }
dl { margin: var(--space) 0; }
dt { font-weight: 700; }
dd { margin: 0 0 .55rem; white-space: pre-wrap; }
.actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.order-actions { margin-top: .65rem; }
.copy-status:not(:empty) { display: block; margin-top: .35rem; }

.public-header { position: sticky; top: 0; z-index: 2; padding-block: .65rem; }
@supports (backdrop-filter: blur(12px)) {
  .public-header { background: var(--glass); backdrop-filter: blur(12px); }
}
.public-header .bar { gap: .5rem .75rem; }
.header-actions { position: relative; display: flex; flex-wrap: wrap; gap: .5rem; margin-inline-start: auto; }
#services, #request { scroll-margin-top: 8rem; }
.public-header .button { flex-shrink: 0; }
.header-actions > .button, .header-actions > form > .button, .public-header .master { min-block-size: calc(2.85rem + 2px); }
.site-dialog {
  width: min(28rem, calc(100% - 2rem));
  color: var(--ink);
  background: var(--surface);
}
.site-dialog[data-order-received] h2 { padding-inline-end: 3rem; }
.site-dialog h2:focus { outline: none; }
.receipt-close {
  position: absolute;
  inset-block-start: .75rem;
  inset-inline-end: .75rem;
  display: grid;
  place-items: center;
  min-width: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-size: 1.5rem;
}
.site-dialog .receipt-close:hover { box-shadow: none; }
.site-dialog::backdrop { background: rgb(20 34 56 / 45%); }
@media (min-width: 48rem) {
  .order-card dl { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: .3rem var(--space); }
  .order-card dd { margin: 0; }
}
button, .button {
  transition: transform var(--fast) var(--ease), box-shadow var(--fast) var(--ease), opacity var(--fast) var(--ease);
}
button:not(:disabled):active, .button:active { transform: scale(.98); }
@media (hover: hover) {
  button:not(:disabled):hover, .button:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
  button:not(:disabled):active, .button:active { transform: scale(.98); }
}
input:not([type=hidden]), textarea, select { transition: border-color var(--fast) var(--ease); }
[aria-invalid=true] { border-color: var(--error) !important; }
.site-dialog[open], .errorlist {
  animation: rise var(--motion) var(--ease) both;
}
.status-confirmed { background: var(--confirmed-bg); color: var(--confirmed-ink); }
.status-cancelled { background: var(--cancelled-bg); color: var(--error); }
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}
@keyframes rise {
  from { opacity: .82; transform: translateY(.45rem); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  button:not(:disabled):is(:hover, :active), .button:is(:hover, :active) { transform: none; }
}


.master {
  display: grid;
  min-width: 0;
  align-content: center;
  padding: .2rem .75rem;
  line-height: 1.15;
  border: 2px solid #000;
  border-radius: var(--control-radius);
  background: var(--surface);
  color: var(--action);
  text-decoration: none;
}
.master span, .price-note, .review-schedule { color: var(--muted); font-size: .875rem; }
.service-intro { margin-bottom: var(--gap); }
.service-intro h1 { font-size: clamp(1.8rem, 4vw, 2.75rem); }
.service-intro p { max-width: 64ch; margin-bottom: .45rem; }
.workspace, .choice-grid { display: grid; gap: var(--space); }
main:has(> .service-list) { padding-block: var(--space); }
.service-list .card { display: flex; flex-direction: column; padding: .75rem var(--space); }
.service-list h2 { font-size: clamp(1.2rem, 2vw, 1.5rem); }
.service-list p { margin-bottom: .65rem; }
.service-list .bar { margin-top: auto; }
.workspace { align-items: start; }
.workspace > *, .choice-content { min-width: 0; }
.workspace h2 { font-size: 1.35rem; }
.request-panel {
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: clamp(1rem, 2.5vw, 1.5rem);
}
.request-panel .order-form {
  flex: 1;
  display: flex;
  flex-direction: column;
  border: 0;
  padding: 0;
}
.request-panel .cart-summary:not([hidden]) {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.request-panel .cart-total { margin-top: auto; }
@media (min-width: 34rem) {
  .service-list, .catalog-cards .choice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 56rem) {
  .request-panel { align-self: stretch; }
  .workspace { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: var(--gap); }
}
.cart-choices { min-width: 0; margin: 0; padding: 0; border: 0; }
.cart-choices legend { font-weight: 700; padding: 0; }
.cart-choice {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  gap: .6rem;
  min-height: 44px;
  padding: .85rem;
  font-weight: 500;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--control-radius);
  cursor: pointer;
  transition: background-color var(--fast) var(--ease), border-color var(--fast) var(--ease),
    transform var(--fast) var(--ease);
}
.cart-choice:has(:checked) { background: var(--selected); border-color: var(--accent); }
.cart-choice:has(:focus-visible) { outline: 3px solid var(--accent); outline-offset: 3px; }
.cart-choice:active { transform: scale(.99); }
@media (hover: hover) {
  .cart-choice:hover { border-color: var(--accent); }
}
.cart-choice input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  min-height: 0;
  padding: 0;
  margin: 0;
  clip-path: inset(50%);
}
.choice-content { display: flex; flex-direction: column; gap: .35rem; overflow-wrap: anywhere; height: 100%; }
.choice-content span { font-size: .875rem; color: var(--muted); }
.choice-content b { margin-top: auto; color: var(--action); }
.choice-mark {
  color: var(--action);
  display: grid;
  place-items: center;
  width: 1.2rem;
  height: 1.2rem;
  border: 1px solid var(--muted);
  border-radius: .35rem;
}
.catalog-cards .cart-choice input ~ .choice-mark::after {
  content: "";
  width: .6rem;
  height: .6rem;
  background:
    linear-gradient(currentColor, currentColor) center / 100% 2px no-repeat,
    linear-gradient(currentColor, currentColor) center / 2px 100% no-repeat;
}
.cart-badge:not([hidden]) {
  display: inline-grid;
  place-items: center;
  vertical-align: middle;
  margin-inline-start: .4em;
  min-inline-size: 1.35em;
  block-size: 1.35em;
  padding-inline: .2em;
  border-radius: 999px;
  background: var(--surface);
  color: var(--action);
  font-size: .8em;
  line-height: 1;
}
.cart-choice input:checked ~ .choice-mark { background: var(--action); border-color: var(--action); color: var(--surface); }
.cart-choice input:checked ~ .choice-mark::after { content: "✓"; font-size: .85rem; }
.catalog-cards .cart-choice input:checked ~ .choice-mark::after { content: ""; }
.cart-summary { margin-top: 0; border-bottom: 1px solid var(--border); padding-bottom: .65rem; }
.cart-summary p { margin-bottom: 0; }
.cart-items { margin: 0; padding: 0; list-style: none; }
.cart-items li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: .5rem;
  overflow-wrap: anywhere;
  animation: rise var(--fast) var(--ease);
}
.cart-remove { min-width: 44px; padding: .25rem; font-size: 1.2rem; }
.cart-total { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .35rem .75rem; font-size: .875rem; }
.cart-total strong { color: var(--ink); white-space: nowrap; }
:is(.order-form, .login-form) .compact-heading { text-align: center; }
.checkout-summary {
  margin-block: var(--gap) var(--space);
  padding: var(--space);
  background: var(--selected);
  border: 1px solid var(--border);
  border-radius: var(--control-radius);
}
.checkout-summary .cart-total { align-items: baseline; font-size: inherit; color: var(--ink); }
.checkout-summary .cart-total strong { font: inherit; }
.checkout-summary > p { margin: 0; }

.review-schedule { margin-block: var(--space); }
:is(.order-form, .login-form) button[type="submit"] { width: 100%; }
.login-form button[type="submit"] { margin-block-start: .75rem; }
.order-form:not([data-submitting]) [data-cart-submit]:disabled {
  background: #e2e8f0;
  border-color: var(--border);
  color: var(--muted);
  opacity: 1;
  cursor: not-allowed;
}
.order-card { padding: var(--space); }
.order-card h2 { font-size: 1.25rem; margin: 0; }
.order-services { list-style: none; margin: 0; padding: 0; white-space: normal; }
.status-completed { background: var(--confirmed-bg); color: var(--confirmed-ink); }
@media (prefers-reduced-motion: reduce) {
  .cart-choice:active { transform: none; }
}

input[data-ua-phone] { color: #000; }

.checkout-services-heading { margin-bottom: .65rem; }
.checkout-services-heading h2 { margin: 0; font-size: 1.125rem; }
.phone-field { position: relative; margin-top: .35rem; }
.phone-field input { margin: 0; }
.phone-example {
  display: none;
  position: absolute;
  inset-inline-start: calc(.7rem + 1px);
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
  white-space: pre;
}
.phone-field input[data-prefix-only]:not(:focus) { color: transparent; }
.phone-field input[data-prefix-only]:not(:focus) + .phone-example { display: block; }

.contact-disclosure > summary { list-style: none; min-block-size: calc(2.85rem + 2px); }
.contact-disclosure > summary::-webkit-details-marker { display: none; }
.contact-close[hidden] { display: none; }
.contact-panel { position: absolute; inset-inline: 0; top: calc(100% + .5rem); padding: var(--space); box-shadow: var(--shadow); }
.contact-note { display: block; }
.contact-close { min-width: 44px; padding: .25rem; font-size: 1.2rem; }

.contact-panel a { color: #000; }

.cart-quantity { display: flex; gap: .25rem; }
@media (max-width: 24rem) {
  .cart-items li:has(.cart-quantity) { grid-template-columns: minmax(0, 1fr) auto; }
  .cart-quantity { grid-column: 2; justify-self: end; }
}

.checkout-quantities { min-width: 0; margin: 0; padding: 0; border: 0; }
.checkout-quantity { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .5rem; }
.checkout-quantity input { width: 4.5rem; flex-shrink: 0; margin: 0; }
.checkout-quantities button { margin-top: .35rem; }

.password-reset-form input:focus::placeholder { color: transparent; }

.password-reset-message { padding-inline-start: calc(var(--space) + 1px); }

.password-field { position: relative; margin-top: .35rem; }
.password-field input { margin: 0; }
.password-field:has(.password-toggle:not([hidden])) input { padding-inline-end: 3rem; }
.password-toggle:not([hidden]) {
  display: grid;
  place-items: center;
  position: absolute;
  inset-block: 0;
  inset-inline-end: 0;
  min-width: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  transform: none;
}
.password-eye {
  display: grid;
  place-items: center;
  width: .9rem;
  height: .9rem;
  border: 1.5px solid currentColor;
  border-radius: 70% 0;
  transform: rotate(45deg);
}
.password-eye::before {
  content: "";
  width: .35rem;
  height: .35rem;
  border-radius: 50%;
  background: currentColor;
}
.password-toggle[aria-pressed="true"] .password-eye::after {
  content: "";
  position: absolute;
  width: 1px;
  height: 1.2rem;
  background: currentColor;
}
