/* Rostify — contact page v4 (29.09.2026): "Radar contact." — a quieter radar scope, the form card (v1 style) on the left
   rising into the dark band, other ways on the right, the legal notice as a flight progress strip.
   Tokens come from .v4 (rostify.css). The scope is generated by build/contact.py (partials/ct-scope.html.twig). */
.ct{--ct-sweep:6s;--ct-rise:clamp(120px,13vw,190px)}
.ct-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ct .v4-ch{margin-bottom:clamp(14px,1.8vw,22px)}
.ct-label{margin:0;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--teal)}

/* ---- hero: text left, scope right; the bottom of the band is reserved for the rising form card */
.ct-hero{position:relative;overflow:hidden;padding-top:clamp(56px,6.5vw,100px);padding-bottom:calc(var(--ct-rise) + clamp(28px,3vw,44px));
  background:radial-gradient(760px 520px at 80% 40%,#245A5E 0%,rgba(36,90,94,0) 70%),#1F4F53}
.ct-hero-in{position:relative;z-index:2}
.ct-h1{margin:0;font-stretch:78%;font-weight:700;font-size:clamp(48px,6.4vw,96px);line-height:.9;letter-spacing:-.025em;color:#F2F8F7}
.ct-sub{margin:clamp(14px,1.6vw,20px) 0 0;font-stretch:80%;font-weight:600;font-size:clamp(21px,1.9vw,28px);line-height:1.18;letter-spacing:-.01em;color:#DCE8E8;max-width:26ch}
.ct-intro{margin:14px 0 0;max-width:48ch;font-size:clamp(15.5px,1.15vw,17.5px);line-height:1.6;color:#B9CFCF}

/* radar scope — quiet: thin rings, soft sweep, five targets */
.ct-scope{position:absolute;z-index:1;top:50%;right:max(-40px,calc((100vw - 1320px) / 2 - 120px));width:min(46vw,640px);aspect-ratio:1;transform:translateY(-53%);pointer-events:none}
.ct-scope-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ct-disc{fill:rgba(7,30,33,.34)}
.ct-ring{fill:none;stroke:rgba(242,248,247,.09);stroke-width:1.4}
.ct-ring--outer{stroke:rgba(242,248,247,.22)}
.ct-cross{stroke:rgba(242,248,247,.06);stroke-width:1.4}
.ct-tick{stroke:rgba(242,248,247,.22);stroke-width:1.6}
.ct-brg{font-family:var(--mono);font-size:17px;letter-spacing:.06em;fill:rgba(242,248,247,.3);text-anchor:middle;dominant-baseline:middle}
.ct-tgt{fill:#9FD3D2;opacity:.14;animation:ct-flare var(--ct-sweep) linear infinite}
.ct-tgt--own{fill:#F2F8F7;animation-name:ct-flare-own}
.ct-leader{stroke:rgba(242,248,247,.5);stroke-width:1.4;fill:none}
.ct-dblock text{font-family:var(--mono);font-size:19px;letter-spacing:.04em;fill:#C9DBDB}
.ct-dblock .ct-dblock-1{fill:#F2F8F7;font-weight:600}
.ct-sweep{position:absolute;inset:2%;border-radius:50%;
  background:conic-gradient(from 0deg,rgba(159,211,210,0) 0deg,rgba(159,211,210,0) 290deg,rgba(159,211,210,.06) 322deg,rgba(159,211,210,.16) 353deg,rgba(226,246,244,.4) 360deg);
  animation:ct-rot var(--ct-sweep) linear infinite;will-change:transform}
@keyframes ct-rot{to{transform:rotate(360deg)}}
@keyframes ct-flare{0%{opacity:.95}10%{opacity:.7}100%{opacity:.12}}
@keyframes ct-flare-own{0%{opacity:1}100%{opacity:.6}}
@media (prefers-reduced-motion:reduce){.ct-sweep{animation:none;transform:rotate(62deg)}.ct-tgt{animation:none;opacity:.45}.ct-tgt--own{opacity:1}}

/* ---- form card (left) rises into the dark band; other ways on the right */
.ct-body{padding-top:0}
.ct-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:clamp(28px,4.5vw,80px);align-items:start}
.ct-card{position:relative;z-index:3;margin-top:calc(-1 * var(--ct-rise));padding:clamp(24px,3.2vw,46px);border-radius:18px;border:1px solid var(--rule);background:var(--paper);
  box-shadow:0 60px 120px -60px light-dark(rgba(14,32,35,.55),rgba(0,0,0,.95)),0 2px 6px -2px light-dark(rgba(14,32,35,.08),rgba(0,0,0,.4))}
.ct-card::before{content:"";position:absolute;left:clamp(24px,3.2vw,46px);right:clamp(24px,3.2vw,46px);top:0;height:2px;background:var(--teal);border-radius:0 0 2px 2px}
.ct-card-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px clamp(20px,3vw,40px);align-items:end;margin-bottom:clamp(22px,2.6vw,32px)}
.ct-card-head h2{margin:10px 0 0;font-stretch:78%;font-weight:700;font-size:clamp(32px,3.2vw,48px);line-height:.95;letter-spacing:-.02em;color:var(--ink)}
.ct-card-lede{margin:0;font-size:15px;line-height:1.55;color:var(--ink2)}
.ct-topics{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 22px;padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.ct-topics-l{margin-right:8px;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--ink)}
.ct-chip{height:34px;padding:0 14px;border-radius:999px;border:1px solid var(--rule2);background:transparent;color:var(--ink);font:inherit;font-size:14px;font-weight:500;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.ct-chip:hover{border-color:var(--teal);color:var(--teal)}
.ct-chip.on{background:var(--teal);border-color:var(--teal);color:light-dark(#FFFFFF,#062021)}
.ct-chip:focus-visible{outline:2px solid var(--teal);outline-offset:2px}

.ct .form-wrapper{margin:0}
.ct form{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px}
.ct form .form-field{margin:0;padding:0;min-width:0}
.ct form .form-field:has(textarea),.ct form .form-field:has([name*="subject"]),.ct form .buttons{grid-column:1 / -1}
.ct form .form-field:has(.cap-invisible){display:none}
.ct form .form-label{display:block;margin:0 0 8px;padding:0}
.ct form .form-label label{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--ink)}
.ct form .required{color:var(--teal);margin-left:2px}
.ct form input[type=text],.ct form input[type=email],.ct form textarea{
  display:block;width:100%;margin:0;padding:14px 16px;border:1px solid var(--rule2);border-radius:10px;background:var(--paper);color:var(--ink);
  font:inherit;font-size:16px;line-height:1.45;outline:none;box-shadow:none;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none;appearance:none}
.ct form textarea{min-height:190px;resize:vertical}
.ct form input:hover,.ct form textarea:hover{border-color:light-dark(rgba(14,32,35,.45),rgba(230,239,238,.4))}
.ct form input:focus,.ct form textarea:focus{border-color:var(--teal);box-shadow:0 0 0 4px light-dark(rgba(47,106,112,.14),rgba(134,195,196,.18))}
.ct form .has-errors input,.ct form .has-errors textarea{border-color:light-dark(#B3261E,#FF8A80)}
.ct form .form-errors,.ct form .form-errors p{margin:6px 0 0;font-size:13.5px;color:light-dark(#B3261E,#FF8A80)}
.ct form .buttons{display:flex;align-items:center;gap:16px;margin-top:6px}
.ct form button[type=submit]{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:52px;padding:0 30px;border:0;border-radius:999px;cursor:pointer;
  background:var(--btn);color:var(--btn-ink);font:inherit;font-size:15.5px;font-weight:600;transition:background .2s}
.ct form button[type=submit]::after{content:'→';font-weight:500;transition:transform .2s}
.ct form button[type=submit]:hover{background:light-dark(#2F6A70,#8CC6C8)}
.ct form button[type=submit]:hover::after{transform:translateX(3px)}
.ct form button[type=submit]:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
.ct form button[type=submit][disabled]{opacity:.6;cursor:progress}
.ct-formfoot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 24px;margin-top:22px;padding-top:16px;border-top:1px solid var(--rule)}
.ct-formfoot p{margin:0;font-size:13px;line-height:1.5;color:var(--mute)}
.ct-formfoot a{color:var(--teal);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}

.ct .notices{margin:0 0 22px;padding:14px 16px;border-radius:10px;font-size:15px;line-height:1.45;border:1px solid var(--rule2);color:var(--ink)}
.ct .notices.green,.ct .notices.success{border-color:light-dark(#2E7D32,#81C995);background:light-dark(#EAF5EC,#12281A);color:light-dark(#1E5B23,#BFE7C4)}
.ct .notices.red,.ct .notices.error{border-color:light-dark(#B3261E,#FF8A80);background:light-dark(#FCEBEA,#3A1614);color:light-dark(#8C1D18,#FFD2CD)}
.ct .notices p{margin:0}

/* other ways */
.ct-aside{padding-top:clamp(36px,4vw,56px)}
.ct-channels{list-style:none;margin:12px 0 0;padding:0;border-top:1px solid var(--rule2)}
.ct-channels li{display:flex;flex-direction:column;gap:4px;padding:16px 0;border-bottom:1px solid var(--rule)}
.ct-ch-k{font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--mute)}
.ct-channels a,.ct-ch-v{font-stretch:80%;font-weight:700;font-size:clamp(22px,1.9vw,27px);letter-spacing:-.012em;line-height:1.15;color:var(--ink);text-decoration:none}
.ct-channels a span{display:inline-block;color:var(--teal);transition:transform .2s}
.ct-channels a:hover{color:var(--teal)}
.ct-channels a:hover span{transform:translateX(3px)}
.ct-ch-note{font-size:13.5px;line-height:1.45;color:var(--ink2)}
.ct-label--gap{margin-top:clamp(28px,3vw,40px)}
.ct-hints{list-style:none;margin:12px 0 0;padding:0;border-top:1px solid var(--rule2)}
.ct-hints li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;padding:13px 0;border-bottom:1px solid var(--rule)}
.ct-hints li > span{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--teal);padding-top:2px}
.ct-hints b{display:block;font-size:15px;font-weight:600;color:var(--ink)}
.ct-hints p{margin:2px 0 0;font-size:14px;line-height:1.5;color:var(--ink2)}
.ct-trial{margin:18px 0 0;padding-left:14px;border-left:2px solid var(--teal);font-size:14px;line-height:1.55;color:var(--ink2)}

/* ---- legal notice: a flight progress strip in its holder */
.ct-strip{display:grid;grid-template-columns:118px minmax(0,2.2fr) minmax(0,1.2fr) minmax(0,1.5fr) minmax(0,1.2fr) minmax(0,1.6fr);margin:0;
  border-radius:6px;background:var(--paper);box-shadow:0 0 0 1px light-dark(rgba(14,32,35,.18),rgba(230,239,238,.16)),0 18px 40px -30px light-dark(rgba(14,32,35,.5),rgba(0,0,0,.9));
  border-left:10px solid #3E767C;overflow:hidden}
.ct-strip > div{min-width:0;padding:12px 16px 14px;border-left:1px solid light-dark(rgba(14,32,35,.14),rgba(230,239,238,.12))}
.ct-strip > div:first-child{border-left:0}
.ct-strip dt{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}
.ct-strip dd{margin:6px 0 0;font-family:var(--mono);font-size:13.5px;line-height:1.55;color:var(--ink)}
.ct-strip dd b{font-family:Archivo,sans-serif;font-size:15px;font-weight:600}
.ct-strip dd a{color:var(--ink);text-decoration:none}
.ct-strip dd a:hover{color:var(--teal)}
.ct-strip-cs{display:flex;align-items:center;background:light-dark(#F4F7F7,#141F22)}
.ct-strip-cs dd{margin:0;display:flex;flex-direction:column;gap:4px}
.ct-strip-cs dd b{font-family:var(--mono);font-size:22px;font-weight:600;letter-spacing:.04em;line-height:1;color:var(--ink)}
.ct-strip-cs dd span{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--mute)}
.ct-small{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px clamp(20px,4vw,64px);margin-top:clamp(20px,2.4vw,30px)}
.ct-small p{margin:0;font-size:12.5px;line-height:1.6;color:var(--mute)}

@media (max-width:1180px){
  .ct-strip{grid-template-columns:110px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}
  .ct-strip > div:nth-child(n+5){border-top:1px solid light-dark(rgba(14,32,35,.14),rgba(230,239,238,.12))}
  .ct-strip > div:nth-child(5){border-left:0;grid-column:2}
  .ct-strip-cs{grid-row:span 2}
  .ct-strip > div:nth-child(6){grid-column:span 2}
}
@media (max-width:980px){
  .ct-scope{width:min(70vw,560px);right:-14vw;opacity:.7}
  .ct-grid{grid-template-columns:minmax(0,1fr)}
  .ct-aside{padding-top:clamp(28px,5vw,40px)}
  .ct-card-head{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .ct{--ct-rise:72px}
  .ct-scope{width:118vw;right:-58vw;top:40%;opacity:.45}
  .ct-dblock,.ct-leader{display:none}
  .ct form{grid-template-columns:minmax(0,1fr)}
  .ct form .buttons{flex-direction:column;align-items:stretch}
  .ct-strip{grid-template-columns:minmax(0,1fr) minmax(0,1fr);border-left-width:8px}
  .ct-strip > div{border-left:0;border-top:1px solid light-dark(rgba(14,32,35,.14),rgba(230,239,238,.12))}
  .ct-strip > div:nth-child(5),.ct-strip > div:nth-child(6){grid-column:auto}
  .ct-strip-cs,.ct-strip-wide{grid-column:1 / -1;grid-row:auto}
  .ct-strip-cs{border-top:0}
  .ct-small{grid-template-columns:minmax(0,1fr)}
}
