/* Styles for the React islands (typed vision quote) — DNL tokens. */
:root{--dnl-violet:#21076a;--dnl-violet-hover:#32147f;--dnl-ink:#1b0a3c;--dnl-muted:#675c7b;--dnl-bg:#e8eaee;--dnl-surface:#f7f7f9;--dnl-lavender:#e6dcf1;--dnl-line:#d7d2e0}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.dnl-fallback{max-width:720px;margin:0 auto;padding:96px 24px;font-family:Arial,Helvetica,sans-serif;color:var(--dnl-violet)}
.dnl-fallback h1{font-size:40px;margin-bottom:16px}.dnl-fallback p{color:var(--dnl-muted);margin-bottom:24px}
.dnl-fallback a,.dnl-fallback button{display:inline-block;background:var(--dnl-violet);color:#fff;padding:12px 18px;border:0;font:500 15px Arial;text-decoration:none;cursor:pointer}

/* Typed vision quote */
.typed-vision{background:var(--dnl-lavender);color:var(--dnl-violet);padding:clamp(24px,5vw,56px);font-family:Arial,Helvetica,sans-serif;max-width:1320px;margin:0 auto;box-sizing:border-box}
.typed-vision-heading{display:flex;align-items:center;gap:16px;margin-bottom:32px}
.typed-vision-character{width:40px;height:47px;object-fit:contain;image-rendering:pixelated;animation:dnl-float 5.8s ease-in-out infinite}
.typed-vision-speaker{font-size:14px;line-height:1.5;font-weight:600;letter-spacing:-.02em}
.typed-vision-speaker span{display:block;color:var(--dnl-muted);font-size:12px;font-weight:400;letter-spacing:0}
.typed-vision-quote{margin:0;max-width:608px;font-size:clamp(28px,4.8vw,48px);font-weight:600;letter-spacing:-.04em;line-height:1.14;overflow-wrap:break-word}
.typed-vision-text{white-space:pre-wrap}
.typed-vision-caret{display:inline-block;width:2px;height:.9em;margin-left:3px;vertical-align:-.05em;background:var(--dnl-violet);animation:dnl-caret 1.1s steps(1,end) infinite}
.typed-vision-caret[data-idle=true]{visibility:hidden}
.typed-vision-answer{display:block;margin-top:28px;font-size:clamp(20px,2.8vw,26px);line-height:1.4;font-weight:400;letter-spacing:-.02em}
.typed-vision-method,.typed-vision-invitation{opacity:0;transform:translateY(8px);transition:opacity 360ms cubic-bezier(.22,.68,.25,1),transform 360ms cubic-bezier(.22,.68,.25,1)}
.typed-vision-method{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:28px;padding-top:20px;border-top:1px solid #c9bce2;color:var(--dnl-muted);font-size:13px;line-height:1.5}
.typed-vision-invitation{margin-top:28px}
.typed-vision-method[data-visible=true],.typed-vision-invitation[data-visible=true]{opacity:1;transform:none}
.typed-vision-invitation p{font:400 18px/1.5 Arial,Helvetica,sans-serif;margin:0 0 14px}
.typed-vision-cta{display:inline-flex;align-items:center;gap:24px;min-height:52px;padding:14px 20px;background:var(--dnl-violet);color:#fff!important;font:500 15px/1.4 Arial,Helvetica,sans-serif;text-decoration:none}
.typed-vision-cta:hover{background:var(--dnl-violet-hover)}
@keyframes dnl-float{0%,100%{transform:translateY(-2px)}50%{transform:translateY(2px)}}
@keyframes dnl-caret{0%,49%{opacity:1}50%,100%{opacity:0}}
.typed-vision-stack{display:grid}.typed-vision-ghost,.typed-vision-live{grid-area:1/1}.typed-vision-ghost{visibility:hidden}
@media(prefers-reduced-motion:reduce){.typed-vision-character,.typed-vision-caret{animation:none}.typed-vision-method,.typed-vision-invitation{transition:none}}


/* Compact inner-page top: breadcrumb row + tighter title block */
main .detail-intro,main.contact-main,main .contact-intro,main .episode-intro,main .technology-intro,main .podcast-page-intro{padding-top:24px!important}
main .detail-intro,main .technology-intro{padding-bottom:32px!important}
main.contact-main>.contact-intro{padding-top:0!important}
.dnl-crumbs{margin:0 0 12px;font-size:13px;line-height:1.4;color:var(--muted,#675c7b)}
.dnl-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.dnl-crumbs li{display:flex;align-items:center;gap:8px;min-width:0}
.dnl-crumbs li+li:before{content:"/";color:#b7a9d1}
.dnl-crumbs a{display:inline-flex;align-items:center;min-height:32px;color:var(--violet,#21076a);text-decoration:none;font-weight:600}
.dnl-crumbs a:hover{text-decoration:underline;text-underline-offset:3px}
.dnl-crumbs li:first-child a:before{content:"←";margin-right:6px;font-weight:400}
.dnl-crumbs [aria-current] span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40ch}
main .detail-intro h1,main .contact-intro h1,main .episode-intro h1,main .technology-intro h1,main .podcast-page-intro h1,main .blog-article h1{font-size:clamp(32px,2.6vw + 14px,48px)!important;line-height:1.1!important;letter-spacing:-.035em!important;margin:0!important;max-width:900px}
main .detail-intro>p,main .contact-intro>p,main .episode-intro>p,main .technology-intro>p,main .podcast-page-intro p{font-size:17px!important;line-height:1.6!important;max-width:65ch!important;margin-top:16px!important}
main .blog-article{padding-top:24px}
@media(max-width:608px){
 main .detail-intro,main.contact-main,main .contact-intro,main .episode-intro,main .technology-intro,main .podcast-page-intro,main .blog-article{padding-top:16px!important}
 .dnl-crumbs li{display:none}
 .dnl-crumbs li.is-parent{display:flex}
 .dnl-crumbs li.is-parent:before{content:none}
 .dnl-crumbs li.is-parent a:before{content:"←";margin-right:6px;font-weight:400}
 main .detail-intro h1,main .contact-intro h1,main .episode-intro h1,main .technology-intro h1,main .podcast-page-intro h1,main .blog-article h1{font-size:clamp(28px,7vw,34px)!important}
 main .detail-intro>p,main .contact-intro>p,main .episode-intro>p,main .technology-intro>p,main .podcast-page-intro p{font-size:16px!important;margin-top:12px!important}
}
main .vt-hero{padding-top:24px!important}
main .vt-hero .dnl-crumbs{margin-bottom:12px}
main .vt-hero h1{font-size:clamp(32px,2.6vw + 14px,48px)!important;line-height:1.1!important;margin-top:4px!important}
@media(max-width:608px){main .vt-hero{padding-top:16px!important}main .vt-hero h1{font-size:clamp(28px,7vw,34px)!important}}
.request-submit:disabled{opacity:.6;cursor:progress}
.request-success{margin-top:24px;padding:28px;border-left:4px solid var(--violet,#21076a);background:var(--surface,#f7f7f9);outline:none}
.request-success p{margin:0;font-size:18px;line-height:1.6;color:var(--violet,#21076a);font-weight:700}
.request-status:not(:empty){margin-top:16px;color:#9b1c31;font-weight:700}

/* UX audit: inline form errors */
.request-form .field-error{margin:6px 0 0;font-size:14px;line-height:1.4;color:#a0153e;font-weight:600}
.request-form [aria-invalid=true]{border-color:#a0153e!important}
/* UX audit: compact floating CTA on phones so it covers less content */
@media(max-width:608px){
  .floating-cta.mascot-cta.mascot-cta{right:12px;left:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));width:auto;max-width:calc(100% - 24px);min-height:52px;padding:10px 14px!important;grid-template-columns:24px auto 16px;gap:10px}
  .floating-cta .cta-mascot{width:24px;height:28px}
  body{padding-bottom:calc(80px + env(safe-area-inset-bottom,0px))}
  .mobile-nav .floating-cta.mascot-cta.mascot-cta,#mobile-nav .floating-cta.mascot-cta.mascot-cta{position:static;width:100%;max-width:none}
}

/* 404 */
.dnl-404 h1{letter-spacing:-.03em}.dnl-404-links{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}
.dnl-404-links a{background:transparent;color:var(--dnl-violet);border:1px solid currentColor}
.dnl-404 .dnl-404-cta{display:inline-flex;align-items:center;gap:10px}.dnl-404-cta img{image-rendering:pixelated;background:#fff}

/* Cookie banner */
.cookie-banner{position:fixed;left:16px;bottom:16px;z-index:1000;max-width:420px;width:calc(100% - 32px);box-sizing:border-box;background:#fff;color:var(--dnl-violet,#1c0a4f);border:1px solid rgba(28,10,79,.15);box-shadow:0 12px 40px rgba(28,10,79,.18);padding:20px;font:14px/1.5 Arial,Helvetica,sans-serif}
.cookie-banner h2{margin:0 0 6px;font-size:18px;letter-spacing:-.02em}.cookie-banner p{margin:0 0 14px;color:var(--dnl-muted,#555)}
.cookie-options{border:0;padding:0;margin:0 0 14px;display:grid;gap:10px}.cookie-options label{display:block}.cookie-options span{display:block;padding-left:22px;color:var(--dnl-muted,#555);font-size:13px}
.cookie-actions{display:flex;flex-wrap:wrap;gap:8px}.cookie-actions button{flex:1 1 auto;min-height:44px;padding:10px 14px;border:1px solid var(--dnl-violet,#1c0a4f);background:#fff;color:inherit;font:500 14px Arial,Helvetica,sans-serif;cursor:pointer}
.cookie-actions .cookie-primary{background:var(--dnl-violet,#1c0a4f);color:#fff}.cookie-actions button:focus-visible{outline:2px solid var(--dnl-violet,#1c0a4f);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.footer-cookie-settings{background:none;border:0;padding:0;margin-left:16px;color:inherit;font:inherit;text-decoration:underline;cursor:pointer}

/* UX audit v2: compact cookie banner on phones, bigger small tap targets */
@media (max-width:600px){
  .cookie-banner{left:8px;right:8px;bottom:8px;width:auto;max-width:none;padding:14px 16px;font-size:13px;line-height:1.4}
  .cookie-banner h2{font-size:15px;margin-bottom:4px}.cookie-banner p{margin-bottom:10px}
  .cookie-actions{gap:6px}.cookie-actions button{flex:1 1 calc(50% - 6px);min-height:44px;padding:8px 10px;font-size:13px}
  .footer-cookie-settings{display:inline-flex;align-items:center;min-height:44px;margin-left:0}
  .footer-brand{display:inline-flex;align-items:center;min-height:44px}
}

.sd-col-cards{display:none}@media(max-width:608px){.sd-table.sd-cards-mobile{display:none}.sd-col-cards{display:grid;gap:16px;margin-top:20px}.sd-col-card{border:1px solid #d7d2e0;background:#fff;padding:20px}.sd-col-card h3{font-size:20px;margin:0 0 12px}.sd-col-card dl{margin:0}.sd-col-card dl>div+div{margin-top:12px;padding-top:12px;border-top:1px solid #ece8f2}.sd-col-card dt{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#675c7b;margin-bottom:4px}.sd-col-card dd{margin:0;font-size:15px;line-height:1.5}}
.footer-bottom{flex-wrap:wrap;gap:.5rem 1.25rem}
.footer-legal{font-size:.8rem;line-height:1.5;opacity:.8;flex:0 1 auto;max-width:60rem}
.footer-legal-links{display:inline-flex;gap:1rem;align-items:center}
.footer-legal-links a{min-height:44px;display:inline-flex;align-items:center}
.form-privacy-note{font-size:.85rem;opacity:.8;margin-top:.75rem}
.cookie-banner p a{text-decoration:underline}
@media (min-width:993px) and (max-width:1240px){
  .header .desktop-nav{flex-shrink:0;gap:16px;overflow:visible}
  .header .desktop-nav a{font-size:13px}
  .header .brand{flex-shrink:1;min-width:0;overflow:hidden}
}
/* Floating CTA: compact pill under 1024px; page keeps room for it at the bottom. */
body.has-floating-cta main{padding-bottom:max(var(--floating-room,0px),0px)}
@media (max-width:1023px){
  body.has-floating-cta{--floating-room:84px}
  .floating-cta.mascot-cta{right:16px;left:auto;bottom:16px;max-height:56px;min-height:48px;padding:6px 14px 6px 8px;border-radius:999px;gap:8px;width:auto}
  .floating-cta.mascot-cta .cta-speech{font-size:0}
  .floating-cta.mascot-cta .cta-speech::after{content:"First step";font-size:14px;font-weight:700}
  .floating-cta.mascot-cta .cta-mascot{transform:scale(.8)}
}
.recommended-label{display:inline-block;align-self:flex-start;margin-bottom:10px;padding:3px 10px;border-radius:999px;background:#21076a;color:#fff;font-size:12px;font-weight:700;letter-spacing:.02em}
.contact-lead{font-weight:700;color:#21076a;margin-top:8px}
.booking-now{margin-bottom:24px}
.booking-consent{padding:16px;border:1px dashed #c9c2d8;margin:12px 0}
.booking-show{min-height:44px;padding:0 18px;border:1px solid #21076a;background:#fff;color:#21076a;font-weight:700;cursor:pointer;margin-top:8px}
.booking-now .provider-fallback{display:inline-flex;min-height:44px;align-items:center}
/* Cookie banner from 768px: slim full-width bar at the bottom, text left, buttons right. */
@media (min-width:768px){
  .cookie-banner{left:0;right:0;bottom:0;width:100%;max-width:none;border-width:1px 0 0;padding:12px max(24px,calc((100vw - 1320px)/2));display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title actions" "text actions" "opts opts";column-gap:24px;align-items:center;font-size:13px;line-height:1.4}
  .cookie-banner h2{grid-area:title;font-size:14px;margin:0}
  .cookie-banner p{grid-area:text;margin:0}
  .cookie-banner .cookie-options{grid-area:opts;margin-top:12px}
  .cookie-banner .cookie-actions{grid-area:actions;display:flex;gap:8px;flex-wrap:nowrap;margin:0}
  .cookie-banner .cookie-actions button{min-height:40px;padding:0 16px;white-space:nowrap}
}
.ap-nav{position:sticky;top:0;z-index:15;background:rgba(255,255,255,.96);backdrop-filter:blur(6px);border-top:1px solid #d7d2e0;border-bottom:1px solid #d7d2e0}
.ap-nav-in{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;padding:8px var(--pad,24px);-webkit-overflow-scrolling:touch}
.ap-nav-in::-webkit-scrollbar{display:none}
.ap-nav a{flex:none;font-size:14px;color:#3d2f5a;text-decoration:none;padding:9px 12px;border-radius:4px;white-space:nowrap}
.ap-nav a:hover{background:#f5f3f9}
.ap-nav a[aria-current]{background:#21076a;color:#fff}
.ap-nav a:focus-visible{outline:2px solid #21076a;outline-offset:2px}
.sd-anchor{scroll-margin-top:72px}
.back-to-top{position:fixed;left:16px;bottom:16px;z-index:40;padding:10px 14px;min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center;background:#fff;border:1px solid #d7d2e0;color:#21076a;font:700 13px/1 Arial,Helvetica,sans-serif;text-decoration:none;opacity:0;pointer-events:none;transition:opacity .2s}
.back-to-top[data-visible="true"]{opacity:1;pointer-events:auto}
.sd-acc{display:none}
@media (max-width:608px){
  .sd-acc-wrap .sd-table{display:none}
  .sd-acc{display:block;border-top:1px solid #d7d2e0}
  .sd-acc details{border-bottom:1px solid #d7d2e0}
  .sd-acc summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;font-weight:700;color:#21076a;cursor:pointer;list-style:none}
  .sd-acc summary::-webkit-details-marker{display:none}
  .sd-acc summary::after{content:"+";font-size:20px;font-weight:400}
  .sd-acc details[open] summary::after{content:"−"}
  .sd-acc dl{margin:0 0 14px}
  .sd-acc dt{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#675c7b;margin-top:10px}
  .sd-acc dd{margin:2px 0 0;font-size:15px;line-height:1.5}
}
.project-more{display:contents}
.project-more-toggle{display:none}
@media (max-width:608px){
  .project-more:not([data-open="true"]){display:none}
  .project-more[data-open="true"]{display:block}
  .project-more-toggle{display:inline-flex;align-items:center;min-height:44px;padding:0;margin:4px 0 8px;border:0;background:none;color:#21076a;font:700 15px/1 Arial,Helvetica,sans-serif;text-decoration:underline;cursor:pointer}
  .project-case dd,.project-case p:not(.project-industry){font-size:15px}
}
/* Services hub: five cards as 3 + 2 on wide screens. */
@media (min-width:1024px){
  .sv .sv-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .sv .sv-grid>li{grid-column:span 2}
  .sv .sv-grid>li:nth-child(4),.sv .sv-grid>li:nth-child(5){grid-column:span 3}
}
/* Homepage podcast: one row of three from 768px; stacked one under another on phones. */
@media (min-width:768px){
  body .podcast-section .video-episodes{grid-template-columns:repeat(3,minmax(0,1fr));max-width:none;gap:20px;margin-inline:0}
  body .podcast-section .video-episode h3{font-size:clamp(16px,1.7vw,22px)}
}
@media (max-width:767px){
  body .podcast-section .video-episodes{display:grid;grid-template-columns:minmax(0,1fr);gap:32px;max-width:none;margin-inline:0;padding:0;overflow:visible}
  body .podcast-section .video-episode{min-width:0;width:100%}
}
.vt-cat>summary{list-style:none;cursor:default}
.vt-cat>summary::-webkit-details-marker{display:none}
@media (max-width:608px){
  .vt-cat{border-bottom:1px solid #d7d2e0}
  .vt-cat>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;min-height:52px}
  .vt-cat>summary::after{content:"+";font-size:22px;color:#21076a}
  .vt-cat[open]>summary::after{content:"−"}
  .vt-cat>summary h3{margin:0}
}
.mid-cta-band{display:flex;justify-content:center;padding:clamp(28px,5vw,48px) var(--pad,24px);margin:clamp(24px,4vw,48px) 0;background:var(--dnl-lavender,#ece8f6)}
/* Full-width "world" visual breaks inside content pages. */
.world-panorama.world-break{margin:clamp(32px,5vw,56px) 0;border-left:0;border-right:0;background:#ece8f6;overflow:hidden}
.world-panorama.world-break img{display:block;width:100%;height:38vh;min-height:220px;max-height:460px;aspect-ratio:auto;object-fit:cover;object-position:center}
@media (max-width:608px){.world-panorama.world-break img{height:28vh;min-height:160px}}
/* Explaining diagrams on service pages. */
.sd-diagram{margin:clamp(24px,4vw,40px) auto;max-width:720px;padding:0 var(--pad,24px);box-sizing:content-box}
.sd-diagram svg{display:block;width:100%;height:auto}
.sd-diagram figcaption{margin-top:10px;font-size:14px;color:#4a4060;text-align:center}
