/* ---------- CONTACT PAGE ---------- */
.ct-hero,.ct-quick,.ct-main,.ct-find,.ct-fab,.ct-toast{--ct-bd:#dcdbe8;--ct-red:#e0362c;--ct-ease:cubic-bezier(.2,.8,.2,1);--ct-spring:cubic-bezier(.2,.9,.3,1.4)}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
#ctForm{scroll-margin-top:110px}
#ctFind{scroll-margin-top:90px}

/* Entrance: hero lines rise on load, everything else rises as it scrolls into view */
.ct-up{animation:ctUp .8s var(--ct-ease) backwards;animation-delay:calc(.1s + var(--i,0)*.12s)}
@keyframes ctUp{from{opacity:0;transform:translateY(28px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
.js .ct-rv{opacity:0;transform:translateY(36px);transition:opacity .8s ease,transform .8s var(--ct-ease);transition-delay:calc(var(--i,0)*.1s)}
.js .ct-rv.is-in{opacity:1;transform:none}
.js .ct-rv.settled{transition-delay:0s}   /* so hover effects aren't delayed by the stagger */

/* ---------- HERO ---------- */
.ct-hero{position:relative;overflow:hidden;color:#fff;padding:32px 0 136px;
  background:radial-gradient(60% 90% at 80% 30%,#3a31c0 0%,transparent 60%),linear-gradient(160deg,var(--navy) 0%,var(--navy-dark) 100%)}
.ct-hero-grid{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:44px 44px;
  -webkit-mask:radial-gradient(70% 80% at 75% 40%,#000,transparent);mask:radial-gradient(70% 80% at 75% 40%,#000,transparent);animation:ctGrid 20s linear infinite}
@keyframes ctGrid{to{background-position:44px 44px}}
.ct-hero-inner{position:relative;max-width:1240px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:40px}
.ct-crumb{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:rgba(255,255,255,.7)}
.ct-crumb a{transition:color .2s}
.ct-crumb a:hover{color:var(--yellow)}
.ct-crumb svg{width:10px;height:10px}
.ct-crumb [aria-current]{color:#fff}
.ct-title{font-size:clamp(32px,4.6vw,54px);line-height:1.08;font-weight:800;margin:16px 0 16px;letter-spacing:-.015em}
.ct-title em{font-style:normal;color:var(--yellow);position:relative;white-space:nowrap}
.ct-title em::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.02em;height:.14em;background:var(--yellow);border-radius:4px;opacity:.35;transform:scaleX(0);transform-origin:left;animation:ctDraw .7s cubic-bezier(.6,0,.2,1) .9s forwards}
@keyframes ctDraw{to{transform:scaleX(1)}}
.ct-sub{max-width:540px;font-size:16.5px;line-height:1.65;color:rgba(255,255,255,.82)}
.ct-hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:26px}
.ct-status{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 9px 13px;border-radius:30px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);font-size:13.5px;font-weight:600;backdrop-filter:blur(6px)}
.ct-status i{position:relative;width:10px;height:10px;border-radius:50%;background:#9a98b8;flex-shrink:0}
.ct-status.open i{background:#2ee07a}
.ct-status.open i::after{content:"";position:absolute;inset:0;border-radius:50%;background:#2ee07a;animation:ctPing 1.8s ease-out infinite}
.ct-status.closed i{background:#ff8a80}
@keyframes ctPing{to{transform:scale(2.8);opacity:0}}
.ct-jump{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--yellow);padding:6px 0;border-bottom:2px solid rgba(255,193,7,.4);transition:border-color .2s,gap .25s}
.ct-jump:hover{border-color:var(--yellow);gap:12px}
.ct-jump svg{width:14px;height:14px;animation:ctNudge 1.6s ease-in-out infinite}
@keyframes ctNudge{50%{transform:translateY(3px)}}

/* hero illustration: rings, detector and chat bubbles on parallax layers */
.ct-art{position:relative;height:340px}
.ct-art-layer{position:absolute;inset:0;transition:transform .5s var(--ct-ease);
  transform:translate(calc(var(--px,0) * var(--d) * 10px),calc(var(--py,0) * var(--d) * 10px))}
.ct-art-layer[data-depth="1"]{--d:.6}
.ct-art-layer[data-depth="2"]{--d:1.4}
.ct-art-layer[data-depth="3"]{--d:2.4}
.ct-ring{position:absolute;left:50%;top:50%;width:380px;height:380px;margin:-190px;border:1.5px solid rgba(255,193,7,.5);border-radius:50%;animation:ctRing 4.5s cubic-bezier(.2,.6,.3,1) infinite}
.ct-ring:nth-child(2){animation-delay:1.5s}
.ct-ring:nth-child(3){animation-delay:3s}
@keyframes ctRing{from{transform:scale(.1);opacity:1}to{transform:scale(1);opacity:0}}
.ct-detector{position:absolute;left:50%;top:50%;width:250px;margin:-72px 0 0 -125px;animation:ctFloat 5s ease-in-out infinite;filter:drop-shadow(0 20px 30px rgba(0,0,0,.25))}
.ct-led{animation:ctLed 1.4s ease-in-out infinite}
@keyframes ctFloat{50%{transform:translateY(-12px)}}
@keyframes ctLed{50%{opacity:.25}}
.ct-bubble{position:absolute;display:flex;align-items:flex-end;gap:8px;max-width:230px;opacity:0;animation:ctPop .6s var(--ct-spring) forwards,ctFloat 6s ease-in-out infinite}
.ct-bubble p{padding:11px 15px;border-radius:16px;font-size:13px;font-weight:600;line-height:1.4;box-shadow:0 12px 30px rgba(10,8,50,.3)}
.ct-bubble.b1{left:0;top:18px;animation-delay:.9s,1.5s}
.ct-bubble.b1 p{background:#fff;color:var(--text);border-bottom-left-radius:4px}
.ct-bubble.b2{right:0;bottom:44px;animation-delay:1.7s,2.3s}
.ct-bubble.b2 p{background:var(--yellow);color:var(--navy-dark);border-bottom-right-radius:4px}
.ct-bubble.b3{right:56px;top:40px;animation-delay:1.3s,0s}
.ct-av{width:30px;height:30px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;background:#ff7a59;color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.25)}
.ct-av.af{background:#fff;color:var(--navy)}
.ct-dots{display:flex;gap:4px;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(6px)}
.ct-dots i{width:7px;height:7px;border-radius:50%;background:#fff;animation:ctDot 1.2s ease-in-out infinite}
.ct-dots i:nth-child(2){animation-delay:.15s}
.ct-dots i:nth-child(3){animation-delay:.3s}
@keyframes ctDot{0%,60%,100%{transform:none;opacity:.4}30%{transform:translateY(-5px);opacity:1}}
@keyframes ctPop{from{opacity:0;transform:translateY(16px) scale(.85)}to{opacity:1;transform:none}}

/* ---------- QUICK CARDS ---------- */
.ct-quick{position:relative;z-index:2;max-width:1240px;margin:-80px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.ct-qc{position:relative;display:flex;align-items:center;gap:14px;min-width:0;padding:20px 18px;background:#fff;border-radius:18px;overflow:hidden;
  box-shadow:0 14px 40px rgba(20,16,90,.12);border:1px solid rgba(34,28,134,.06)}
.ct-qc{transform:perspective(700px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0px));
  transition:transform .35s var(--ct-ease),box-shadow .3s,border-color .3s}   /* the .ct-up entrance animation runs first, then this takes over */
.ct-qc:hover{--ty:-6px;box-shadow:0 24px 50px rgba(20,16,90,.2);border-color:rgba(255,193,7,.7)}
.ct-qc::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;
  background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgba(255,193,7,.16),transparent 70%)}
.ct-qc:hover::before{opacity:1}
.ct-qc-ic{position:relative;width:50px;height:50px;flex-shrink:0;border-radius:14px;display:grid;place-items:center;transition:transform .45s var(--ct-spring)}
.ct-qc-ic svg{width:23px;height:23px}
.ct-qc-ic.call{background:#eceafd;color:var(--navy)}
.ct-qc-ic.wa{background:#e3f7eb;color:var(--green)}
.ct-qc-ic.mail{background:#fff4d6;color:#b07c00}
.ct-qc-ic.visit{background:#ffe9e4;color:#d6331f}
.ct-qc:hover .ct-qc-ic{transform:rotate(-8deg) scale(1.1)}
.ct-qc:hover .ct-qc-ic.call svg{animation:ctRingPhone .5s ease 2}
.ct-qc:hover .ct-qc-ic.visit svg{animation:ctBounce .6s ease 2}
@keyframes ctRingPhone{25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}
.ct-qc-txt{position:relative;min-width:0;line-height:1.3}
.ct-qc-txt small{display:block;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
.ct-qc-txt b{display:block;font-size:15.5px;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-qc-txt a:hover b{text-decoration:underline;text-decoration-color:var(--yellow);text-underline-offset:4px}
.ct-qc-go{position:relative;width:16px;height:16px;margin-left:auto;flex-shrink:0;color:var(--navy);opacity:.3;transition:transform .3s,opacity .3s}
.ct-qc:hover .ct-qc-go{opacity:1;transform:translateX(4px)}

.ct-copy{position:relative;margin-left:auto;flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--soft);color:var(--navy);transition:background .2s,color .2s,transform .2s}
.ct-copy:hover{background:var(--navy);color:#fff}
.ct-copy:active{transform:scale(.9)}
.ct-copy svg{position:absolute;inset:0;margin:auto;width:17px;height:17px;transition:opacity .25s,transform .35s var(--ct-spring)}
.ct-copy .ok{opacity:0;transform:scale(.4)}
.ct-copy.done{background:var(--green);color:#fff}
.ct-copy.done .cp{opacity:0;transform:scale(.4)}
.ct-copy.done .ok{opacity:1;transform:none}

/* ---------- MAIN GRID ---------- */
.ct-main{max-width:1240px;margin:0 auto;padding:72px 24px 40px;display:grid;grid-template-columns:1.15fr .85fr;gap:40px}
.ct-col{min-width:0;display:flex;flex-direction:column}
.ct-col > .ct-card{flex:1}
.ct-h{position:relative;font-size:32px;font-weight:800;color:#2b2b3a;padding-bottom:16px;margin-bottom:28px;border-bottom:1px solid #dddce8}
.ct-h::after{content:"";position:absolute;left:0;bottom:-2px;width:150px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--navy),#4a3fe0);transform:scaleX(0);transform-origin:left;transition:transform .9s cubic-bezier(.6,0,.2,1) .35s}
.ct-h.is-in::after,html:not(.js) .ct-h::after{transform:scaleX(1)}

.ct-card{position:relative;background:#fff;border:1px solid #e6e5f0;border-radius:22px;padding:32px;box-shadow:0 10px 30px rgba(20,16,90,.05);transition:box-shadow .4s}
.ct-card:hover{box-shadow:0 18px 44px rgba(20,16,90,.09)}
/* form fills its card so it lines up with the address card; the message box takes the slack */
.ct-form-card{display:flex;flex-direction:column}
#ctForm,.ct-done{flex:1}
#ctForm{display:flex;flex-direction:column}
#ctForm .ct-f.area{flex:1;display:flex;flex-direction:column}
#ctForm .ct-f.area textarea{flex:1}
.ct-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* progress */
.ct-prog{margin-bottom:24px}
.ct-prog-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--muted)}
.ct-prog-n{color:var(--navy);font-size:13px;font-variant-numeric:tabular-nums}
.ct-prog-track{height:6px;border-radius:6px;background:var(--soft);overflow:hidden}
.ct-prog-bar{display:block;height:100%;width:calc(var(--p,0) * 100%);border-radius:inherit;background:linear-gradient(90deg,var(--navy),#4a3fe0 60%,var(--yellow));background-size:200% 100%;
  transition:width .6s var(--ct-ease);animation:ctShine 2.5s linear infinite}
.ct-prog.full .ct-prog-txt{color:var(--green)}
.ct-prog.full .ct-prog-bar{background:var(--green)}
@keyframes ctShine{to{background-position:-200% 0}}

/* floating-label field */
.ct-g2{display:grid;grid-template-columns:1fr 1fr;gap:18px 18px;align-items:start}
.ct-f{position:relative}
.ct-f input,.ct-f textarea{width:100%;height:56px;padding:22px 18px 8px 48px;border:1.5px solid var(--ct-bd);border-radius:28px;background:#fff;font:inherit;font-size:15px;color:var(--text);outline:none;
  transition:border-color .2s,box-shadow .25s,background .2s}
.ct-f textarea{display:block;height:auto;min-height:128px;padding:26px 18px 30px;border-radius:22px;resize:vertical;line-height:1.55}
.ct-fi{position:absolute;left:18px;top:0;height:56px;display:flex;align-items:center;color:#a3a2b8;pointer-events:none;transition:color .2s,transform .3s var(--ct-spring)}
.ct-fi svg{width:18px;height:18px}
.ct-f:focus-within .ct-fi{color:var(--navy);transform:scale(1.12)}
.ct-f label{position:absolute;left:49px;top:18px;font-size:15px;font-weight:600;color:var(--muted);pointer-events:none;transform-origin:left top;white-space:nowrap;
  transition:transform .22s var(--ct-ease),color .2s}
.ct-f.area label{left:19px}
.ct-f label i{color:var(--ct-red);font-style:normal}
.ct-f input:hover,.ct-f textarea:hover{border-color:#c4c1ea}
.ct-f input:focus,.ct-f textarea:focus{border-color:var(--navy);box-shadow:0 0 0 4px rgba(34,28,134,.09)}
.ct-f input:focus + label,.ct-f input:not(:placeholder-shown) + label,
.ct-f textarea:focus + label,.ct-f textarea:not(:placeholder-shown) + label{transform:translateY(-10px) scale(.76);color:var(--navy)}
.ct-f.pre input{padding-left:62px}
.ct-f.pre label{left:63px}
.ct-px{position:absolute;left:18px;top:0;height:56px;display:flex;align-items:center;padding-right:10px;border-right:1.5px solid var(--line);font-weight:700;font-size:15px;color:var(--navy);pointer-events:none}
.ct-f small{display:block;padding:0 18px;font-size:12.5px;font-weight:600;color:var(--ct-red);overflow:hidden;max-height:0;opacity:0;transition:max-height .25s,opacity .25s,padding .25s}
.ct-f.bad small{max-height:40px;opacity:1;padding-top:6px}
.ct-f.bad input,.ct-f.bad textarea{border-color:var(--ct-red);background:#fffafa;animation:ctShake .4s}
.ct-f.bad label,.ct-f.bad .ct-fi{color:var(--ct-red)}
.ct-f.ok input{border-color:var(--green);padding-right:46px}
.ct-f.ok::after{content:"";position:absolute;right:18px;top:19px;width:18px;height:18px;animation:ctPop .4s var(--ct-spring);
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8' fill='%231fa855'/%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-4.7' stroke='%23fff' stroke-width='1.8' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center/contain}
.ct-f.ok .ct-fi{color:var(--green)}
.ct-cnt{position:absolute;right:20px;bottom:12px;font-size:11.5px;font-weight:600;color:#a3a2b8;transition:color .2s}
.ct-f.area.bad .ct-cnt{bottom:34px}
.ct-cnt.warn{color:#d48a00}
@keyframes ctShake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}

/* topic chips */
.ct-topics{border:0;margin:22px 0 20px}
.ct-topics legend{font-size:14px;font-weight:700;color:#2b2b3a;margin-bottom:12px}
.ct-chips{display:flex;flex-wrap:wrap;gap:10px}
.ct-chip{position:relative;cursor:pointer}
.ct-chip input{position:absolute;opacity:0;pointer-events:none}
.ct-chip span{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:1.5px solid var(--ct-bd);border-radius:24px;font-size:13.5px;font-weight:600;color:var(--muted);background:#fff;
  transition:background .25s,border-color .25s,color .25s,transform .3s var(--ct-spring),box-shadow .25s}
.ct-chip span::before{content:"";width:0;height:12px;margin-right:-6px;opacity:0;transition:width .25s,margin .25s,opacity .25s;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 6.3l2.6 2.6L10 3.5' stroke='%23ffc107' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center/12px}
.ct-chip:hover span{border-color:#c4c1ea;color:var(--navy);transform:translateY(-2px)}
.ct-chip input:checked + span{background:var(--navy);border-color:var(--navy);color:#fff;transform:scale(1.05);box-shadow:0 8px 18px rgba(34,28,134,.25)}
.ct-chip input:checked + span::before{width:12px;margin-right:0;opacity:1}
.ct-chip input:focus-visible + span{outline:2px solid var(--navy);outline-offset:2px}

.ct-err{margin-top:16px;padding:12px 16px;border-radius:12px;background:#fff1f0;color:var(--ct-red);font-size:14px;font-weight:600;animation:ctShake .4s}

/* buttons */
.ct-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 20px;margin-top:24px}
.ct-note{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted)}
.ct-note svg{width:14px;height:14px;flex-shrink:0}
.ct-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-width:190px;height:56px;padding:0 32px;border-radius:30px;overflow:hidden;isolation:isolate;
  background:var(--navy);color:#fff;font-weight:700;font-size:16px;box-shadow:0 10px 24px rgba(34,28,134,.25);
  transition:background .25s,transform .25s var(--ct-ease),box-shadow .25s,color .25s}
.ct-btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);transform:translateX(-100%);transition:transform .7s ease}
.ct-btn:hover{background:var(--navy-dark);box-shadow:0 16px 30px rgba(34,28,134,.32)}
.ct-btn:hover::before{transform:translateX(100%)}
.ct-btn:active{transform:scale(.97)!important}
.ct-btn:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}
.ct-btn .plane{width:18px;height:18px;transition:transform .35s var(--ct-spring)}
.ct-btn:hover .plane{transform:translate(3px,-3px) rotate(8deg)}
.ct-btn .spin{display:none;width:20px;height:20px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:ctSpin .7s linear infinite}
.ct-btn.ready{animation:ctGlow 1.8s ease-in-out infinite}
.ct-btn.loading{pointer-events:none;animation:none}
.ct-btn.loading .spin{display:block}
.ct-btn.loading .lbl{opacity:.75}
.ct-btn.loading .plane{display:none}
.ct-btn.sent .plane{display:block;animation:ctFly .7s cubic-bezier(.5,0,.8,.3) forwards}
.ct-btn.shake{animation:ctShake .4s}
.ct-btn.ghost{background:#fff;color:var(--navy);border:1.5px solid var(--navy);box-shadow:none}
.ct-btn.ghost:hover{background:var(--navy);color:#fff}
.ct-btn.green{background:var(--green);box-shadow:0 10px 24px rgba(31,168,85,.28)}
.ct-btn.green:hover{background:#178a45}
.ct-btn.sm{min-width:0;height:44px;padding:0 20px;font-size:14px}
.ct-ripple{position:absolute;z-index:-1;width:10px;height:10px;margin:-5px;border-radius:50%;background:rgba(255,255,255,.45);pointer-events:none;animation:ctRipple .6s ease-out forwards}
@keyframes ctRipple{to{transform:scale(40);opacity:0}}
@keyframes ctSpin{to{transform:rotate(360deg)}}
@keyframes ctFly{to{transform:translate(160px,-90px) rotate(20deg);opacity:0}}
@keyframes ctGlow{50%{box-shadow:0 10px 24px rgba(34,28,134,.25),0 0 0 8px rgba(34,28,134,.1)}}

/* success state */
.ct-form-card{overflow:clip}   /* keeps the confetti inside the card so the page never scrolls sideways */
.ct-done{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;text-align:center;padding:36px 8px 20px;outline:none;animation:ctUp .6s var(--ct-ease)}
.ct-check{width:96px;height:96px;margin:0 auto 18px;display:block}
.ct-check circle{fill:none;stroke:var(--green);stroke-width:4;stroke-dasharray:252;stroke-dashoffset:252;animation:ctStroke .6s cubic-bezier(.6,0,.2,1) .1s forwards}
.ct-check path{fill:none;stroke:var(--green);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:50;stroke-dashoffset:50;animation:ctStroke .4s ease .6s forwards}
@keyframes ctStroke{to{stroke-dashoffset:0}}
.ct-done h3{font-size:26px;color:var(--navy);margin-bottom:8px}
.ct-done p{color:var(--muted);line-height:1.6;max-width:380px;margin:0 auto}
.ct-done-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:26px}
.ct-done-actions .ct-btn{height:50px;min-width:0;padding:0 24px;font-size:15px}
.ct-confetti{position:absolute;left:50%;top:40%;width:9px;height:14px;border-radius:2px;pointer-events:none;z-index:3;
  animation:ctConf 1.3s cubic-bezier(.2,.6,.4,1) forwards}
@keyframes ctConf{0%{transform:translate(0,0) rotate(0);opacity:1}100%{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}

/* ---------- ADDRESS CARD ---------- */
.ct-info{display:flex;flex-direction:column;gap:6px;padding:20px;container:info/inline-size}
.ct-block{display:flex;gap:16px;padding:14px;border-radius:16px;transition:background .3s}
.ct-block:hover{background:#f8f8fd}
.ct-block-ic{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;background:#eceafd;color:var(--navy);transition:background .3s,color .3s,transform .45s var(--ct-spring)}
.ct-block-ic svg{width:21px;height:21px}
.ct-block:hover .ct-block-ic{background:var(--navy);color:var(--yellow);transform:rotate(-8deg) scale(1.08)}
.ct-block > div{min-width:0;flex:1}
.ct-block h3{font-size:16.5px;font-weight:800;color:#2b2b3a;margin:2px 0 8px}
.ct-block address{font-style:normal;font-size:15px;line-height:1.65;color:#4a4a5c}
.ct-links{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:10px}
.ct-links a,.ct-link-btn{font-size:13.5px;font-weight:700;color:var(--navy);border-bottom:2px solid var(--yellow);padding-bottom:1px;transition:color .2s,border-color .2s}
.ct-links a:hover,.ct-link-btn:hover{color:#d6331f}
.ct-link-btn.done{color:var(--green);border-color:var(--green)}
.ct-lines{list-style:none;display:grid;gap:8px;font-size:15px}
.ct-lines li{display:grid;grid-template-columns:80px 1fr;gap:8px;align-items:baseline}
.ct-lines span{color:var(--muted);font-size:13.5px}
.ct-lines a{justify-self:start;color:var(--navy);font-weight:600;background:linear-gradient(var(--yellow),var(--yellow)) no-repeat left bottom/0 2px;transition:background-size .3s;overflow-wrap:anywhere}
.ct-lines a:hover{background-size:100% 2px}

.ct-hours-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 10px;margin-bottom:6px}
.ct-hours-head h3{margin:2px 0}
.ct-pill{white-space:nowrap;font-size:12px;font-weight:700;padding:4px 10px;border-radius:20px;background:var(--soft);color:var(--muted)}
.ct-pill.open{background:#e3f7eb;color:#178a45}
.ct-pill.closed{background:#fff1f0;color:var(--ct-red)}
.ct-hours-wrap{container:hours/inline-size}
.ct-hours{list-style:none;display:grid;gap:2px;font-size:14.5px;color:#4a4a5c}
.ct-hours li{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:7px 12px;margin:0 -12px;border-radius:10px;overflow:hidden;transition:background .25s,transform .25s}
.ct-hours li:hover{background:var(--soft);transform:translateX(4px)}
.ct-hours li.closed{color:#a3a2b8}
.ct-hours li.today{background:var(--navy);color:#fff;font-weight:700;animation:ctPop .5s var(--ct-spring) .6s backwards}
.ct-hours li.today:hover{transform:none}
.ct-hours li > span:first-child{min-width:0;display:flex;align-items:center;gap:8px}
.ct-hours li > span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}
.ct-hours li.today > span:first-child::after{content:"Today";flex-shrink:0;padding:2px 8px;border-radius:10px;background:var(--yellow);color:var(--navy-dark);font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.ct-hours li.today::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:calc(var(--done,0) * 100%);background:var(--yellow);transition:width 1s var(--ct-ease)}
.ct-oncall{margin-top:12px;font-size:12.5px;font-weight:600;line-height:1.45;color:var(--muted);display:flex;align-items:flex-start;gap:8px}
.ct-oncall::before{content:"";flex-shrink:0;margin-top:5px;width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(31,168,85,.15)}

/* The address card sits in columns of very different widths, so it adapts to its own width */
@container info (max-width:380px){
  .ct-block{gap:12px;padding:12px 8px}
  .ct-block-ic{width:36px;height:36px;border-radius:10px}
  .ct-block-ic svg{width:18px;height:18px}
  .ct-lines li{grid-template-columns:70px 1fr}
}
@container hours (max-width:300px){
  .ct-hours{font-size:13.5px}
  .ct-hours li{gap:8px;padding:7px 10px;margin:0 -10px}
  .ct-hours li.today > span:first-child::after{padding:2px 6px;font-size:9.5px}
}
@container hours (max-width:250px){
  .ct-hours li.today > span:first-child::after{display:none}
  .ct-hours li > span:last-child{font-size:12.5px}
}

/* ---------- MAP ---------- */
.ct-find{max-width:1240px;margin:0 auto;padding:40px 24px 96px}
.ct-map{position:relative;height:440px;border-radius:24px;overflow:hidden;background:#e4e3f1;box-shadow:0 20px 50px rgba(20,16,90,.12)}
.ct-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;filter:saturate(.85);transition:opacity .8s}
.ct-map.loaded iframe{opacity:1}
.ct-map-ph{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--muted);
  background:repeating-linear-gradient(0deg,transparent 0 38px,rgba(34,28,134,.06) 38px 40px),repeating-linear-gradient(90deg,transparent 0 38px,rgba(34,28,134,.06) 38px 40px)}
.ct-pin svg{width:44px;height:44px;fill:var(--ct-red);animation:ctBounce 1.2s ease-in-out infinite;filter:drop-shadow(0 6px 6px rgba(0,0,0,.18))}
@keyframes ctBounce{50%{transform:translateY(-10px)}}
.ct-map-card{position:absolute;left:24px;bottom:24px;max-width:320px;padding:24px;border-radius:20px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);
  box-shadow:0 20px 50px rgba(20,16,90,.2);transform:translateY(20px);opacity:0;transition:transform .7s var(--ct-spring) .3s,opacity .5s .3s}
.ct-map.is-in .ct-map-card,html:not(.js) .ct-map-card{transform:none;opacity:1}
.ct-map-eyebrow{font-size:11.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#d6331f}
.ct-map-card h2{font-size:22px;color:var(--navy);margin:4px 0 6px}
.ct-map-card p:not(.ct-map-eyebrow){font-size:14px;line-height:1.55;color:#4a4a5c}
.ct-map-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}

/* ---------- FLOATING WHATSAPP + TOAST ---------- */
.ct-fab{position:fixed;right:22px;bottom:22px;z-index:900;display:flex;align-items:center;flex-direction:row-reverse;gap:10px;
  opacity:0;transform:translateY(20px) scale(.8);animation:ctPop .6s var(--ct-spring) 1.6s forwards}
.ct-fab-ic{position:relative;width:60px;height:60px;border-radius:50%;background:#25d366;color:#fff;display:grid;place-items:center;box-shadow:0 12px 28px rgba(37,211,102,.45);transition:transform .3s var(--ct-spring)}
.ct-fab-ic::before{content:"";position:absolute;inset:0;border-radius:50%;background:#25d366;z-index:-1;animation:ctFab 2.2s ease-out infinite}
.ct-fab-ic svg{width:30px;height:30px}
.ct-fab-txt{padding:10px 16px;border-radius:24px;background:#fff;color:var(--text);font-size:13.5px;font-weight:700;box-shadow:0 10px 26px rgba(20,16,90,.18);white-space:nowrap;
  opacity:0;transform:translateX(10px);pointer-events:none;transition:opacity .3s,transform .35s var(--ct-spring)}
.ct-fab:hover .ct-fab-ic{transform:scale(1.08) rotate(-8deg)}
.ct-fab:hover .ct-fab-txt,.ct-fab.hint .ct-fab-txt{opacity:1;transform:none}
.ct-fab:focus-visible .ct-fab-ic{outline:3px solid var(--navy);outline-offset:3px}
@keyframes ctFab{from{transform:scale(1);opacity:.6}to{transform:scale(1.7);opacity:0}}

.ct-toast{position:fixed;left:50%;bottom:28px;z-index:2100;display:flex;align-items:center;gap:10px;padding:12px 20px;border-radius:30px;background:var(--navy-dark);color:#fff;font-size:14px;font-weight:600;
  box-shadow:0 16px 40px rgba(10,8,50,.35);transform:translate(-50%,120px);opacity:0;transition:transform .45s var(--ct-spring),opacity .3s;pointer-events:none}
.ct-toast::before{content:"";width:18px;height:18px;flex-shrink:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23ffc107'/%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-4.7' stroke='%23221c86' stroke-width='1.8' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center/contain}
.ct-toast.show{transform:translate(-50%,0);opacity:1}

/* ---------- RESPONSIVE ---------- */
@media (max-width:1180px){
  .ct-quick{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:1024px){
  .ct-hero-inner{grid-template-columns:1fr}
  .ct-art{display:none}
  .ct-hero{padding-bottom:120px}
  .ct-main{grid-template-columns:1fr 1fr;gap:28px}
  .ct-card{padding:26px}
  .ct-g2{grid-template-columns:1fr}
}
@media (max-width:860px){
  .ct-hero{padding:24px 0 104px}
  .ct-hero-inner{padding:0 16px}
  .ct-quick{padding:0 16px;gap:12px;margin-top:-72px}
  .ct-main{grid-template-columns:1fr;padding:56px 16px 24px;gap:48px}
  .ct-g2{grid-template-columns:1fr 1fr}
  .ct-h{font-size:28px}
  .ct-find{padding:32px 16px 88px}
  .ct-map{height:auto;padding-top:300px}
  .ct-map iframe,.ct-map-ph{inset:0 0 auto;height:300px}
  .ct-map-card{position:relative;left:auto;bottom:auto;max-width:none;border-radius:0;background:#fff;box-shadow:none}
}
@media (max-width:600px){
  .ct-quick{grid-template-columns:1fr}
  .ct-g2{grid-template-columns:1fr}
  .ct-card{padding:22px 18px}
  .ct-info{padding:10px}
  .ct-block{padding:12px 8px;gap:12px}
  .ct-actions .ct-btn{width:100%}
  .ct-note{width:100%;justify-content:center}
  .ct-qc{padding:16px}
  .ct-fab{right:16px;bottom:16px}
  .ct-fab-ic{width:54px;height:54px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ct-hero *,.ct-quick *,.ct-main *,.ct-find *,.ct-fab,.ct-fab *,
  .ct-hero *::before,.ct-hero *::after,.ct-main *::before,.ct-main *::after,.ct-fab *::before{animation:none!important;transition:none!important}
  .ct-hero-grid{animation:none}
  .js .ct-rv{opacity:1;transform:none}
  .ct-bubble,.ct-fab{opacity:1;transform:none}
  .ct-map-card{opacity:1;transform:none}
  .ct-h::after,.ct-title em::after{transform:scaleX(1)}
  .ct-check circle,.ct-check path{stroke-dashoffset:0}
}
