/* Buttons, cards, form fields and steps come from the daisyUI kit in ui.css.
   This file holds the We Haul Tech colours, the page layout and a few pieces the kit doesn't have.
   To change a colour everywhere, change it once in the block below. */
@font-face { font-family: Figtree; font-weight: 400; font-display: swap; src: url(fonts/figtree-400.woff2) format("woff2"); }
@font-face { font-family: Figtree; font-weight: 500; font-display: swap; src: url(fonts/figtree-500.woff2) format("woff2"); }
@font-face { font-family: Figtree; font-weight: 600; font-display: swap; src: url(fonts/figtree-600.woff2) format("woff2"); }
@font-face { font-family: Figtree; font-weight: 700; font-display: swap; src: url(fonts/figtree-700.woff2) format("woff2"); }

:root, [data-theme="wehaultech"] {
  color-scheme: light;
  --color-base-100: #ffffff;
  --color-base-200: #f4f6f1;       /* logo paper */
  --color-base-300: #e6ebe2;       /* logo sage */
  --color-base-content: #14302a;
  --color-primary: #0e3b2e;        /* logo dark green */
  --color-primary-content: #ffffff;
  --color-secondary: #3e8e2a;      /* logo mid green */
  --color-secondary-content: #ffffff;
  --color-accent: #7bd14b;         /* logo bright green */
  --color-accent-content: #0e3b2e;
  --color-neutral: #0e3b2e;
  --color-neutral-content: #ffffff;
  --color-info: #3e8e2a;
  --color-info-content: #ffffff;
  --color-success: #3e8e2a;
  --color-success-content: #ffffff;
  --color-warning: #ffd25e;
  --color-warning-content: #2b2100;
  --color-error: #c0392b;
  --color-error-content: #ffffff;
  --radius-selector: .45rem;
  --radius-field: .6rem;
  --radius-box: 1.1rem;
  --size-selector: .25rem;
  --size-field: .25rem;
  --border: 1px;
  --depth: 0;
  --noise: 0;
}

:root {
  --wrap: 1120px;
  --soft-text: color-mix(in oklab, var(--color-base-content) 80%, var(--color-base-100));
  --error-text: color-mix(in oklab, var(--color-error) 62%, black);
  --strong-primary: color-mix(in oklab, var(--color-primary) 50%, var(--color-base-content));  /* readable on white in every theme */
}

html { font-size: 18px; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--color-base-200);
  color: var(--color-base-content);
  font-family: Figtree, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 1.06rem;
  line-height: 1.55;
}
img, svg { max-width: 100%; }
[hidden] { display: none !important; }

h1, h2, h3, p, ul, ol { margin: 0; }
h1, h2, h3 { line-height: 1.15; font-weight: 700; letter-spacing: -.012em; text-wrap: balance; }
h1 { font-size: clamp(2.1rem, 5vw, 3.1rem); }
h2 { font-size: 1.55rem; }
h3 { font-size: 1.15rem; font-weight: 600; letter-spacing: 0; }
h1:focus { outline: none; }
h1 em { font-style: normal; color: var(--color-secondary); }
a { color: inherit; }
main a:not(.btn) { color: var(--strong-primary); text-decoration: underline; text-underline-offset: 3px; }

.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin: 0 auto;
  padding-left: max(16px, env(safe-area-inset-left, 0px));
  padding-right: max(16px, env(safe-area-inset-right, 0px));
}
.skip { position: absolute; left: -9999px; }
.skip:focus { left: 8px; top: 8px; background: var(--color-base-100); padding: .5rem 1rem; z-index: 50; }
.muted { color: var(--soft-text); }
.lead { font-size: 1.2rem; }
.sr-only { position: absolute; width: 1px; height: 1px; opacity: 0; }

/* Preview strip, gone once your real details are in config.js */
.preview-banner {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .3rem 1rem;
  background: var(--color-warning); color: var(--color-warning-content);
  padding: .35rem 16px; font-size: .85rem; font-weight: 600;
}
.preview-banner label { display: inline-flex; align-items: center; gap: .5rem; }
.preview-banner select { width: auto; color: var(--color-base-content); }

/* Header */
.site-head { background: var(--color-base-100); box-shadow: 0 1px 3px color-mix(in oklab, var(--color-base-content) 12%, transparent); position: relative; }
.head-row { display: flex; flex-wrap: wrap; align-items: center; gap: .1rem 1rem; padding-top: .5rem; padding-bottom: .5rem; }
.brand { display: block; margin-right: auto; }
.brand img { display: block; height: 2.75rem; width: auto; }
.nav { display: flex; gap: .15rem; }
.head-phone svg, .btn svg { width: 1.35em; height: 1.35em; }
.head-help { color: var(--soft-text); font-size: .95rem; }
.call-word { display: none; }

/* Home */
.hero { padding-block: 3rem 3.2rem; background: var(--color-base-100); }
.hero-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 1.4rem 3.2rem;
  grid-template-areas: "top card" "more card"; grid-template-rows: 1fr 1fr;
}
.hero-top { grid-area: top; align-self: end; display: grid; gap: 1rem; justify-items: start; }
.hero-more { grid-area: more; display: grid; gap: 1.2rem; align-content: start; justify-items: start; }
.start-card { grid-area: card; background: var(--color-base-200); border-radius: var(--radius-box); padding: 1.4rem; display: grid; gap: 1rem; }
.start-card > .q { gap: 0; }
.start-note { text-align: center; color: var(--soft-text); font-size: .95rem; }

.check-list { list-style: none; padding: 0; display: grid; gap: .5rem; }
.check-list li { display: grid; grid-template-columns: 1.5rem minmax(0, 1fr); gap: .6rem; align-items: start; }
.check-list svg { width: 1.5rem; height: 1.5rem; margin-top: .1rem; color: var(--strong-primary); }
.check-list.no svg { color: var(--error-text); }

.next-steps { padding-block: 2.8rem; }
.next-steps h2 { margin-bottom: 1.2rem; }
.next-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; list-style: none; padding: 0; }
.next-grid .card-body { gap: .35rem; }
.next-grid .badge { margin-bottom: .3rem; }

/* Item tiles: real checkboxes on picture cards */
.tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; }
.tile { position: relative; display: block; cursor: pointer; }
.tile .checkbox { position: absolute; top: .5rem; right: .5rem; z-index: 1; background-color: var(--color-base-100); }
.tile .checkbox:checked { background-color: var(--color-primary); }
.tile-face {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem;
  height: 100%; min-height: 8rem; padding: .9rem .5rem .7rem; text-align: center;
  background: var(--color-base-100); border: 2px solid var(--color-base-300); border-radius: var(--radius-box);
  font-size: .98rem; font-weight: 600; line-height: 1.2;
}
.tile-face svg { width: 2.7rem; height: 2.7rem; color: var(--strong-primary); }
.tile:hover .tile-face { border-color: var(--color-primary); }
.tile input:checked + .tile-face { border-color: var(--color-primary); background: color-mix(in oklab, var(--color-accent) 20%, var(--color-base-100)); }

/* Inner pages */
.page { padding-block: 2.4rem 3rem; }
.narrow { max-width: 800px; }
.page-head { display: grid; gap: .6rem; margin-bottom: 1.6rem; }
.two-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.stack { display: grid; gap: 1rem; }
.cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; margin-top: 1.6rem; }
.prose { display: grid; gap: .9rem; }
.prose h2 { margin-top: .7rem; font-size: 1.25rem; }
.card-body { font-size: inherit; }

/* Prices */
.fee-amount { font-size: 3.6rem; font-weight: 700; line-height: 1.05; color: var(--strong-primary); }
.factors { list-style: none; padding: 0; display: grid; gap: .8rem; }
.factors li { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr); gap: .8rem; align-items: center; }
.factors svg { width: 2.4rem; height: 2.4rem; color: var(--strong-primary); }

/* Questions */
.faq-group { display: grid; gap: .55rem; margin-bottom: 2rem; }
.faq-group > h2 { margin-bottom: .3rem; }
.faq-item { background: var(--color-base-100); border: 1px solid var(--color-base-300); }
.faq-item .collapse-title { font-weight: 600; font-size: 1.06rem; }
.faq-item .collapse-content { font-size: 1.04rem; }

/* Thanks */
.done-icon { width: 4.4rem; height: 4.4rem; color: var(--strong-primary); }
.done-icon svg { width: 100%; height: 100%; }
.numbered { padding-left: 1.3em; display: grid; gap: .3rem; }

/* Footer */
.site-foot { background: var(--color-primary); color: #fff; padding-block: 1.8rem; font-size: .98rem; }
.foot-logo { display: block; width: 100%; max-width: 27rem; height: auto; margin: 0 0 .9rem; }
.foot-grid { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem 3rem; }
.foot-links { list-style: none; padding: 0; }

/* Request form */
.flow { max-width: 720px; margin: 0 auto; padding: 1.3rem max(16px, env(safe-area-inset-right, 0px)) 2.6rem max(16px, env(safe-area-inset-left, 0px)); }
.steps { width: 100%; margin-bottom: 1.1rem; overflow: visible; }
.steps .step { font-size: .92rem; min-width: 0; line-height: 1.2; }
.steps .step[aria-current] { font-weight: 700; }
.flow-body { padding: 1.7rem; }
.screen { display: grid; gap: 1.5rem; }
.js .screen:not(.active) { display: none; }
.screen-head { display: grid; gap: .4rem; }
.screen-head h1 { font-size: clamp(1.65rem, 5vw, 2.1rem); }
.detail-title { display: flex; align-items: center; gap: .7rem; }
.detail-title svg { width: 2.6rem; height: 2.6rem; flex: none; color: var(--strong-primary); }

.q { display: grid; gap: .4rem; min-width: 0; }
.q.fieldset { padding: 0; font-size: inherit; }
.q .fieldset-legend { font-size: 1.08rem; font-weight: 600; color: var(--color-base-content); padding: 0 0 .4rem; }
.field-label { font-size: 1.08rem; font-weight: 600; }
.optional { font-weight: 400; color: var(--soft-text); }
.hint { display: block; font-weight: 400; font-size: .95rem; color: var(--soft-text); }
.q .input, .q .select, .q .textarea { width: 100%; font-size: 1.06rem; }
.q .textarea { min-height: 7rem; }
.q .input, .q .textarea, .q .select, .checkbox { border-color: color-mix(in oklab, var(--color-base-content) 62%, var(--color-base-100)); }
#postal { max-width: 11rem; text-transform: uppercase; }

.pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.pills .btn { flex: 1 1 auto; min-width: 3.2rem; }

.ticks { display: grid; }
.tick { display: flex; align-items: flex-start; gap: .75rem; padding: .45rem 0; cursor: pointer; }
.tick .checkbox { flex: none; }

.photo-preview { display: flex; align-items: center; gap: .9rem; }
.photo-preview img { width: 6rem; height: 6rem; object-fit: cover; border-radius: var(--radius-field); }
.photo input:focus-visible + .photo-btn { outline: 2px solid var(--color-primary); outline-offset: 2px; }

.error { color: var(--error-text); font-weight: 600; }
.q.has-error .input { border-color: var(--color-error); }
.q.has-error .tile-face, .q.has-error .pills .btn { border-color: var(--color-error); }
.flow-nav { display: grid; gap: .3rem; }
.bot-field { position: absolute; left: -9999px; }

/* Check your request */
.review-block { display: grid; gap: .4rem; }
.review-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.review-head h2 { font-size: 1.25rem; }
.review-row { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr) auto; gap: .8rem; align-items: start; padding: .7rem 0; border-top: 1px solid var(--color-base-300); }
.review-row > svg { width: 2.2rem; height: 2.2rem; color: var(--strong-primary); }
.review-row strong { display: block; font-weight: 600; }
.review-row img { grid-column: 2; width: 5rem; height: 5rem; object-fit: cover; border-radius: var(--radius-field); }
.review-row .btn { grid-column: 3; grid-row: 1; }
.review-lines { border-top: 1px solid var(--color-base-300); padding-top: .6rem; display: grid; gap: .1rem; }

/* Phone bar on the information pages */
.mobile-bar { display: none; }

@media (max-width: 960px) {
  .hero { padding-block: 1.8rem 2rem; }
  .hero-grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "top" "card" "more"; grid-template-rows: none; }
  .nav { order: 3; flex-basis: 100%; margin-left: -.8rem; }
}
@media (max-width: 680px) {
  .two-col, .next-grid { grid-template-columns: minmax(0, 1fr); }
  .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .start-card { padding: 1rem; margin-inline: -4px; }
  .tile:last-child { grid-column: 1 / -1; }
  .tile:last-child .tile-face { min-height: 5.5rem; }
  .head-help { display: none; }
  .brand img { height: 2.35rem; }
  .head-phone .num { display: none; }
  .call-word { display: inline; }
  .flow { padding-left: 0; padding-right: 0; padding-top: .9rem; }
  .steps { padding: 0 8px; }
  .steps .step { font-size: .84rem; }
  .flow-card { border-radius: 0; }
  .flow-body { padding: 1.3rem max(16px, env(safe-area-inset-left, 0px)); }
  .has-bar { padding-bottom: 84px; }
  .has-bar .mobile-bar {
    display: grid; grid-template-columns: 1fr 1.4fr; gap: 8px;
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
    padding: 8px max(8px, env(safe-area-inset-right, 0px)) calc(8px + env(safe-area-inset-bottom, 0px)) max(8px, env(safe-area-inset-left, 0px));
    background: var(--color-base-100); border-top: 1px solid var(--color-base-300);
  }
}

/* Two small helpers the kit normally gets from Tailwind */
.bg-base-100 { background: var(--color-base-100); }
.shadow-sm { box-shadow: 0 1px 2px color-mix(in oklab, var(--color-base-content) 10%, transparent), 0 2px 8px color-mix(in oklab, var(--color-base-content) 6%, transparent); }

/* Stronger text than the kit's defaults, for older eyes */
.btn-outline.btn-primary:not(:hover):not(:checked) { color: var(--strong-primary); border-color: var(--strong-primary); }
.alert-soft { color: var(--color-base-content); }
.badge-soft { color: var(--color-primary); background: color-mix(in oklab, var(--color-accent) 28%, var(--color-base-100)); border-color: transparent; }

/* Show ticks instantly, so a tap always looks like it worked */
.checkbox, .checkbox::before { transition: none; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}
