/* Contact — ported from design-handoff/claude-design/Contact.dc.html.
   mob = width < 760 (the prototype's breakpoint for this page). */

:root{
  --ex:cubic-bezier(.16,1,.3,1);          /* expo.out */
  --exio:cubic-bezier(.87,0,.13,1);       /* expo.inOut, hairline draws */
  --head-fs:clamp(56px, 9vw, 150px);
  --in-fs:20px;
  --intro-fs:20px;
  --sub-fs:clamp(32px, 4.5vw, 64px);
}
@media (max-width:759px){
  :root{ --small:11px; --in-fs:18px; --intro-fs:18px; --sub-fs:36px; }
}

.contact main{min-height:100svh}
.ct{
  padding:calc(var(--hdr-h) + 10svh) var(--m) 0;
  display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;row-gap:0;align-items:start;
}

/* ---------- left column ---------- */
.ct-left{grid-column:1 / 6;position:sticky;top:calc(var(--hdr-h) + 24px);min-width:0}
.ct-h{margin:24px 0 0;font-size:var(--head-fs);font-weight:400;line-height:.94;letter-spacing:-.055em}
.ct-h__mask{display:block;overflow:hidden;padding-bottom:.06em}
.ct-h__line{display:block;transition:transform 1.1s var(--ex) .05s}
.ct-h__line--2{transition-delay:.15s}
.ct-intro{margin:40px 0 0;max-width:34ch;font-size:var(--intro-fs);line-height:1.5;letter-spacing:-.015em;text-wrap:pretty;
  transition:opacity .9s ease .4s, transform 1s var(--ex) .4s}
.ct-details{margin:56px 0 0;display:flex;flex-direction:column;gap:28px;
  transition:opacity .9s ease .55s, transform 1s var(--ex) .55s}
.ct-details dt{font-size:12px;line-height:16px;letter-spacing:.01em;color:var(--sm)}
.ct-details dd{margin:8px 0 0;font-size:17px;line-height:1.45}
.ct-mail{color:var(--fg);text-decoration:underline;text-decoration-color:var(--rule);text-decoration-thickness:1px;text-underline-offset:5px}
.theme-ready .ct-mail{transition:text-decoration-color var(--theme-t)}
.ct-addr{max-width:30ch;text-wrap:pretty}
.ct-details .ct-map{margin-top:10px;font-size:16px;line-height:normal}
.ct-map a{color:var(--fg);font-size:12px;line-height:16px;letter-spacing:.01em}
.ct-social{display:flex;gap:8px}
.ct-skip{margin:56px 0 0;max-width:36ch;line-height:1.5;text-wrap:pretty;transition:opacity .9s ease .55s}
.ct-kicker{transition:opacity .8s ease .1s}

/* ---------- form column ---------- */
.ct-right{grid-column:7 / 13;min-width:0;padding-top:calc(var(--head-fs) * .55)}
.ct-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}

.ct-formwrap{display:grid;grid-template-rows:1fr;opacity:1;
  transition:grid-template-rows .6s var(--ease), opacity .45s ease}
.ct-form{margin:0;min-height:0;overflow:visible}
.is-done .ct-formwrap{grid-template-rows:0fr;opacity:0}
.is-done .ct-form,.js body:not(.is-in) .ct-form{overflow:hidden}

.ct-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px;row-gap:28px}
.ct-f{position:relative;min-width:0;--d:calc(.55s + var(--i) * .08s)}
.ct-f--full{grid-column:1 / -1}
.ct-f__lm{overflow:hidden}
.ct-f__l{display:block;font-size:12px;line-height:16px;letter-spacing:.01em;color:var(--sm);
  transition:transform .8s var(--ex) calc(var(--d) + .15s), color .3s ease}
.ct-f.is-hot .ct-f__l{color:var(--fg)}
.ct-f__box{position:relative;margin-top:6px}

.ct-in{display:block;width:100%;min-height:48px;margin:0;padding:8px 0 10px;background:transparent;border:0;border-radius:0;
  font-family:var(--font);font-size:var(--in-fs);line-height:1.4;letter-spacing:-.01em;color:var(--fg);outline:none;
  -webkit-appearance:none;appearance:none}
.ct-in:focus-visible{outline:none}
.ct-in::placeholder{color:var(--sm);opacity:1}
.ct-area{padding:8px 0 12px;line-height:1.45;resize:none;overflow:hidden}
/* keep autofill on-theme */
.ct-in:-webkit-autofill{-webkit-text-fill-color:var(--fg);-webkit-box-shadow:0 0 0 100px var(--bg) inset;caret-color:var(--fg)}

.ct-f__base,.ct-f__hot{position:absolute;left:0;right:0;bottom:0;height:1px;transform-origin:left center}
.ct-f__base{background:var(--rule);transition:transform 1s var(--exio) var(--d)}
.ct-f__hot{background:var(--fg);transform:scaleX(0);transition:transform .6s var(--ease)}
.ct-f.is-hot .ct-f__hot{transform:scaleX(1)}

.ct-f__err{min-height:16px;margin-top:8px;font-size:12px;line-height:16px;letter-spacing:.01em;color:var(--fg);
  opacity:0;transform:translateY(-4px);transition:opacity .3s ease, transform .3s ease}
.ct-f.is-err .ct-f__err{opacity:1;transform:none}

/* custom select */
.ct-sel{display:flex;width:100%;min-height:48px;margin:0;padding:8px 0 10px;background:transparent;border:0;cursor:pointer;
  justify-content:space-between;align-items:center;gap:12px;text-align:left;
  font-family:var(--font);font-size:var(--in-fs);line-height:1.4;letter-spacing:-.01em;color:var(--fg);outline:none}
.ct-sel:focus-visible{outline:none}
.ct-sel__v{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:opacity .18s ease}
.ct-sel__v.is-ph{color:var(--sm)}
.ct-sel__v.is-fade{opacity:0}
.ct-sel__a{flex:none;font-size:12px;color:var(--sm);transition:transform .35s var(--ease)}
.ct-f.is-open .ct-sel__a{transform:rotate(180deg)}
.ct-native{display:none}

.ct-list{position:absolute;left:0;right:0;top:100%;z-index:10;background:var(--bg);display:grid;grid-template-rows:0fr;opacity:0;pointer-events:none;
  transition:grid-template-rows .45s var(--ease), opacity .3s ease}
.ct-f.is-open .ct-list{grid-template-rows:1fr;opacity:1;pointer-events:auto}
.ct-list__in{overflow:hidden;min-height:0}
.ct-opt{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:10px 0;border-bottom:1px solid var(--rule);
  cursor:pointer;font-size:var(--in-fs);line-height:1.35;letter-spacing:-.01em;color:var(--sm);transition:color .25s ease}
.ct-opt.is-hov,.ct-opt[aria-selected="true"]{color:var(--fg)}
.ct-opt__c{font-size:12px;color:var(--sm)}

/* services */
.ct-svc{margin:40px 0 0;padding:0;border:0;min-width:0}
.ct-svc legend{padding:0;font-size:12px;line-height:16px;letter-spacing:.01em;color:var(--sm);transition:opacity .6s ease 1.05s}
.ct-svc__g{margin-top:14px;display:flex;flex-wrap:wrap;column-gap:32px;row-gap:8px}
.ct-sv{position:relative;display:flex;align-items:center;gap:6px;min-height:48px;margin:0;padding:0;
  font-family:var(--font);font-size:var(--in-fs);line-height:1.3;letter-spacing:-.015em;color:var(--sm);
  transition:opacity .6s ease calc(1.1s + var(--i) * .06s), color .3s ease}
.ct-sv[aria-pressed="true"]{color:var(--fg)}
.ct-sv__c{font-size:12px;width:0;overflow:hidden;opacity:0;transition:opacity .35s ease, width .35s var(--ease)}
.ct-sv[aria-pressed="true"] .ct-sv__c{width:12px;opacity:1}
.ct-sv__t{position:relative;padding-bottom:3px}
.ct-sv__t::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--fg);transform:scaleX(0);transform-origin:left center;transition:transform .5s var(--ease)}
.ct-sv[aria-pressed="true"] .ct-sv__t::after{transform:scaleX(1)}

.ct-consent{margin:36px 0 0;max-width:60ch;font-size:var(--small);line-height:1.5;letter-spacing:.01em;color:var(--sm);text-wrap:pretty;transition:opacity .6s ease 1.5s}

/* submit — letter roll */
.ct-sub{position:relative;margin-top:28px;padding-top:20px}
.ct-sub__line{position:absolute;top:0;left:0;right:0;height:1px;background:var(--rule);transform-origin:left center;transition:transform 1s var(--exio) 1.5s}
.ct-sub__mask{overflow:hidden;padding-bottom:.08em}
.ct-submit{display:flex;align-items:baseline;gap:.28em;margin:0;padding:0;background:none;border:0;cursor:pointer;
  font-family:var(--font);font-size:var(--sub-fs);line-height:1.08;letter-spacing:-.045em;color:var(--fg);
  transition:transform 1s var(--ex) 1.7s}
.ct-submit:disabled{cursor:progress}
.ct-submit__t{display:flex}
.ct-submit .l{position:relative;display:block;overflow:hidden;white-space:pre}
.ct-submit .l > span{display:block;transition:transform .55s cubic-bezier(.45,0,.55,1) calc(var(--j) * 18ms)}
.ct-submit .l > span > span{position:absolute;left:0;top:100%}
.ct-submit__a{display:inline-block;transition:transform .45s var(--ease)}
.ct-submit.is-hover:not(:disabled) .l > span{transform:translateY(-100%)}
.ct-submit.is-hover:not(:disabled) .ct-submit__a{transform:translateX(10px)}
.ct-submit:disabled .ct-submit__a{display:none}

/* done states */
.ct-done{opacity:0;transition:opacity .6s ease .35s}
.ct-done:focus,.ct-done:focus-visible{outline:none}
.ct-done.is-in{opacity:1}
.ct-done__h{margin:0;font-size:var(--sub-fs);font-weight:400;line-height:1.05;letter-spacing:-.045em}
.ct-done__p{margin:20px 0 0;max-width:40ch;font-size:var(--intro-fs);line-height:1.5;letter-spacing:-.015em;text-wrap:pretty}
.ct-done__p--first{margin-top:0}
.ct-again{display:block;margin:28px 0 0;font-size:12px;line-height:16px;letter-spacing:.01em;color:var(--fg)}

/* footer: no hairline on this page */
.contact .foot{margin-top:18svh;border-top:0}

/* ---------- arrival (JS adds body.is-in after first paint) ---------- */
.js body:not(.is-in) .ct-h__line{transform:translateY(108%)}
.js body:not(.is-in) .ct-kicker,
.js body:not(.is-in) .ct-skip,
.js body:not(.is-in) .ct-svc legend,
.js body:not(.is-in) .ct-sv,
.js body:not(.is-in) .ct-consent{opacity:0}
.js body:not(.is-in) .ct-intro,
.js body:not(.is-in) .ct-details{opacity:0;transform:translateY(14px)}
.js body:not(.is-in) .ct-f__l{transform:translateY(110%)}
.js body:not(.is-in) .ct-f__base,
.js body:not(.is-in) .ct-sub__line{transform:scaleX(0)}
.js body:not(.is-in) .ct-submit{transform:translateY(110%)}

/* ---------- mobile ---------- */
@media (max-width:759px){
  .ct{padding-top:calc(var(--hdr-h) + 6svh);grid-template-columns:minmax(0,1fr);row-gap:72px}
  .ct-left{grid-column:1 / -1;position:relative;top:auto}
  .ct-right{grid-column:1 / -1;padding-top:0}
  .ct-h{margin-top:18px}
  .ct-intro{margin-top:28px}
  .ct-details,.ct-skip{margin-top:40px}
  .ct-fields{grid-template-columns:minmax(0,1fr);row-gap:20px}
  .ct-f{grid-column:1 / -1}
  .ct-svc{margin-top:28px}
  .ct-svc__g{column-gap:22px}
  .ct-consent{margin-top:28px}
  .contact .foot{margin-top:14svh}
  /* native picker on mobile, invisible over the styled field */
  .ct-native{display:block;position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;-webkit-appearance:none;appearance:none}
  .ct-list{display:none}
}

/* no JS: plain native selects, no custom buttons */
html:not(.js) .ct-sel{display:none}
html:not(.js) .ct-native{display:block;position:static;width:100%;min-height:48px;opacity:1;background:transparent;border:0;color:var(--fg);
  font-family:var(--font);font-size:var(--in-fs)}
html:not(.js) .ct-list{display:none}

@media (prefers-reduced-motion:reduce){
  .ct-formwrap,.ct-done{transition:none}
}
