@font-face{
    font-family:"Archivo";
    src:url("assets/fonts/archivo-normal.woff2") format("woff2");
    font-weight:100 900;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:"Fraunces";
    src:url("assets/fonts/fraunces-normal.woff2") format("woff2");
    font-weight:100 900;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:"Fraunces";
    src:url("assets/fonts/fraunces-italic.woff2") format("woff2");
    font-weight:100 900;
    font-style:italic;
    font-display:swap;
  }
  :root{
    --ink:#1c1c1c;
    --ink-soft:#4d4d4d;
    --paper:#ececec;
    --paper-dim:#e2e2e2;
    --line:#c7c7c7;
    --line-on-ink:#3f3f3f;
    --accent:#9c004d;
    --accent-soft:#e2a9c4;
    --type-scale-1:clamp(1.87rem, 5.04vw, 3.89rem);
    --type-scale-2:clamp(1.9rem, 4.2vw, 3.1rem);
    --type-scale-3:clamp(1.2rem, 2vw, 1.5rem);
    --gutter:clamp(20px, 5vw, 64px);
    --maxw:1400px;
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:"Archivo", "Helvetica Neue", Arial, sans-serif;
    font-size:16px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  img{max-width:100%;}
  [hidden]{display:none!important;}
  a{color:inherit;}
  ::selection{background:var(--accent);color:var(--paper);}

  em.accent{
    font-family:"Fraunces", Georgia, "Times New Roman", serif;
    font-style:italic;
    font-optical-sizing:auto;
    font-weight:500;
    color:var(--accent);
  }
  em.accent-light{
    font-family:"Fraunces", Georgia, "Times New Roman", serif;
    font-style:italic;
    font-weight:500;
    color:inherit;
    opacity:.82;
  }

  .wrap{
    max-width:var(--maxw);
    margin:0 auto;
    padding-inline:var(--gutter);
  }

  .eyebrow{
    display:inline-flex;
    align-items:center;
    gap:.55em;
    font-size:.72rem;
    font-weight:700;
    letter-spacing:.22em;
    text-transform:uppercase;
  }
  .regmark{flex:none;display:block;}

  h1,h2,h3{
    margin:0;
    text-wrap:balance;
    font-weight:800;
    letter-spacing:-.01em;
  }

  .btn{
    --pad-y:.95em;
    --pad-x:1.9em;
    position:relative;
    display:inline-flex;
    align-items:center;
    gap:.6em;
    font-family:inherit;
    font-weight:700;
    font-size:.95rem;
    letter-spacing:.01em;
    padding:var(--pad-y) var(--pad-x);
    border-radius:999px;
    border:1px solid currentColor;
    background:transparent;
    color:var(--ink);
    text-decoration:none;
    cursor:pointer;
    transition:background .3s ease, color .3s ease, transform .2s ease;
  }
  .btn.solid{
    background:var(--ink);
    color:var(--paper);
    border-color:var(--ink);
  }
  .btn.solid:hover{background:var(--accent);border-color:var(--accent);color:#fff;}
  .btn.ghost:hover{background:var(--ink);color:var(--paper);}
  .btn .arrow{transition:transform .3s ease;}
  .btn:hover .arrow{transform:translateX(4px);}

  /* ---------- custom cursor ---------- */
  .cursor-ring{
    position:fixed;
    top:0;left:0;
    width:34px;height:34px;
    margin:-17px 0 0 -17px;
    border:1px solid var(--ink);
    border-radius:50%;
    pointer-events:none;
    z-index:9999;
    transition:transform .16s ease, opacity .2s ease, border-color .2s ease, background-color .2s ease;
    transform:translate(-100px,-100px);
    opacity:0;
  }
  .cursor-ring.is-active{opacity:1;}
  .cursor-ring.is-hover{
    transform-origin:center;
    background:var(--accent);
    border-color:var(--accent);
    mix-blend-mode:normal;
  }
  @media (hover:none), (pointer:coarse){
    .cursor-ring{display:none;}
  }

  /* ---------- preloader ---------- */
  .preloader{
    position:fixed;inset:0;
    background:var(--ink);
    color:var(--paper);
    z-index:10000;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:18px;
    transition:opacity .7s ease, visibility .7s ease;
  }
  .preloader.is-done{opacity:0;visibility:hidden;}
  .preloader-mark{
    font-family:"Fraunces", Georgia, "Times New Roman", serif;
    font-style:italic;
    font-size:1.4rem;
  }
  .preloader-bar{
    width:min(220px, 60vw);
    height:1px;
    background:var(--line-on-ink);
    position:relative;
    overflow:hidden;
  }
  .preloader-bar::after{
    content:"";
    position:absolute;
    inset:0;
    background:var(--paper);
    transform:scaleX(0);
    transform-origin:left;
    animation:loadbar 1.1s ease forwards .15s;
  }
  @keyframes loadbar{to{transform:scaleX(1);}}

  /* ---------- header ---------- */
  .site-header{
    position:fixed;
    top:0;left:0;right:0;
    z-index:500;
    padding:22px var(--gutter);
    display:flex;
    align-items:center;
    justify-content:space-between;
    transition:background-color .35s ease, padding .35s ease, border-color .35s ease;
    border-bottom:1px solid transparent;
  }
  .site-header{color:var(--paper);}
  .site-header.is-scrolled{
    background:rgba(236,236,236,.86);
    backdrop-filter:blur(10px);
    padding-block:14px;
    border-color:var(--line);
    color:var(--ink);
  }
  .site-header .menu-toggle span{background:var(--paper);}
  .site-header.is-scrolled .menu-toggle span{background:var(--ink);}
  .logotype{
    font-weight:800;
    font-size:.95rem;
    letter-spacing:.03em;
    text-decoration:none;
    display:flex;
    align-items:baseline;
    gap:.4em;
  }
  .logotype span{color:var(--accent);font-family:"Fraunces", Georgia, "Times New Roman", serif;font-style:italic;font-weight:500;}
  .logo-img{height:34px;width:auto;display:block;}
  .site-header .logo-img{height:38px;}
  footer .logo-img, .mobile-nav-top .logo-img{height:32px;}
  .preloader-mark .logo-img{height:44px;}

  nav.primary-nav{display:flex;align-items:center;gap:38px;}
  nav.primary-nav a{
    font-size:1.05rem;
    font-weight:600;
    letter-spacing:.01em;
    text-decoration:none;
    position:relative;
    padding-bottom:3px;
  }
  nav.primary-nav a::after{
    content:"";
    position:absolute;left:0;right:100%;bottom:0;
    height:1px;background:currentColor;
    transition:right .3s ease;
  }
  nav.primary-nav a:hover::after{right:0;}
  .nav-cta{display:none;font-size:1rem;}
  @media (min-width:960px){ .nav-cta{display:inline-flex;} }

  .menu-toggle{
    display:flex;
    flex-direction:column;
    gap:5px;
    background:none;border:0;cursor:pointer;
    padding:8px;
  }
  .menu-toggle span{width:22px;height:2px;background:var(--ink);display:block;transition:transform .3s ease, opacity .3s ease;}
  @media (min-width:960px){ .menu-toggle{display:none;} }
  @media (max-width:959px){ nav.primary-nav{display:none;} }

  .mobile-nav{
    position:fixed;inset:0;
    background:var(--ink);
    color:var(--paper);
    z-index:600;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    padding:22px var(--gutter) 40px;
    transform:translateY(-100%);
    transition:transform .5s cubic-bezier(.65,0,.35,1);
  }
  .mobile-nav.is-open{transform:translateY(0);}
  .mobile-nav-top{display:flex;justify-content:space-between;align-items:center;}
  .mobile-nav-top .menu-toggle span{background:var(--paper);}
  .mobile-nav-links{display:flex;flex-direction:column;gap:6px;margin-top:40px;}
  .mobile-nav-links a{
    font-family:"Fraunces", Georgia, "Times New Roman", serif;
    font-size:clamp(2.2rem,10vw,3.4rem);
    font-weight:500;
    text-decoration:none;
    color:var(--paper);
    padding:10px 0;
    border-bottom:1px solid var(--line-on-ink);
  }
  .mobile-nav-foot{font-size:.85rem;opacity:.75;display:flex;flex-direction:column;gap:4px;}
  .mobile-nav-foot a{text-decoration:none;}

  /* ---------- hero ---------- */
  .hero{
    position:relative;
    padding:176px var(--gutter) 146px;
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
    overflow:hidden;
    color:var(--paper);
    background:
      linear-gradient(100deg, rgba(10,10,10,.72) 0%, rgba(10,10,10,.55) 42%, rgba(10,10,10,.34) 100%),
      url("assets/hero.jpg") center/cover no-repeat;
    background-color:var(--ink);
  }
  .hero-grain{
    position:absolute;inset:0;
    opacity:.08;
    pointer-events:none;
    mix-blend-mode:overlay;
  }
  .hero-crop{
    position:absolute;
    width:22px;height:22px;
    pointer-events:none;
    opacity:.6;
    color:var(--paper);
  }
  .hero-crop.tl{top:36px;left:26px;}
  .hero-crop.tr{top:36px;right:26px;transform:scaleX(-1);}
  .hero-crop.bl{bottom:76px;left:26px;transform:scaleY(-1);}
  .hero-crop.br{bottom:76px;right:26px;transform:scale(-1,-1);}
  @media (max-width:700px){
    .hero-crop.tl, .hero-crop.tr{top:104px;}
    .hero-crop.bl, .hero-crop.br{bottom:61px;}
  }
  .hero-inner{position:relative;max-width:var(--maxw);margin:0 auto;width:100%;}
  .hero .eyebrow{margin-bottom:26px;color:rgba(255,255,255,.82);}
  .hero h1{
    font-size:var(--type-scale-1);
    line-height:1.03;
    max-width:14ch;
    color:var(--paper);
  }
  .hero h1 .word{
    display:inline-block;
    overflow:hidden;
    vertical-align:top;
    line-height:1.28;
    padding-bottom:.08em;
    margin-bottom:-.08em;
  }
  .hero h1 .word span{
    display:inline-block;
    transform:translateY(110%);
    transition:transform .9s cubic-bezier(.19,1,.22,1);
    transition-delay:calc(var(--i) * .06s);
  }
  .hero.is-loaded h1 .word span{transform:translateY(0);}
  .hero-sub{
    margin-top:34px;
    max-width:46ch;
    font-size:var(--type-scale-3);
    color:rgba(255,255,255,.78);
    font-weight:500;
  }
  .hero-actions{
    margin-top:48px;
    display:flex;
    flex-wrap:wrap;
    gap:16px;
    align-items:center;
  }
  .hero .btn.ghost{color:var(--paper);border-color:rgba(255,255,255,.6);}
  .hero .btn.ghost:hover{background:var(--paper);color:var(--ink);border-color:var(--paper);}
  .hero-cmyk{
    position:absolute;
    right:0;
    bottom:-6px;
    display:flex;
    gap:8px;
  }
  .hero-cmyk i{
    width:11px;height:11px;border-radius:50%;display:block;
    box-shadow:0 0 0 1px rgba(255,255,255,.5);
    animation:cmyk-wave 1.6s ease-in-out infinite;
  }
  .hero-cmyk i:nth-child(1){background:#2aa9c9;animation-delay:0s;}
  .hero-cmyk i:nth-child(2){background:#c94a8a;animation-delay:.15s;}
  .hero-cmyk i:nth-child(3){background:#e0b62c;animation-delay:.3s;}
  .hero-cmyk i:nth-child(4){background:#1c1c1c;animation-delay:.45s;}
  @keyframes cmyk-wave{
    0%, 60%, 100%{transform:translateY(0);}
    30%{transform:translateY(-9px);}
  }
  @media (max-width:700px){ .hero-cmyk{position:static;margin-top:30px;} }

  .scroll-cue{
    position:absolute;
    left:var(--gutter);
    bottom:78px;
    display:flex;
    align-items:center;
    gap:10px;
    font-size:.72rem;
    letter-spacing:.18em;
    text-transform:uppercase;
    color:rgba(255,255,255,.78);
  }
  .scroll-cue .line{width:34px;height:1px;background:rgba(255,255,255,.4);position:relative;overflow:hidden;}
  .scroll-cue .line::after{
    content:"";position:absolute;inset:0;
    background:var(--accent);
    animation:cue 1.8s ease-in-out infinite;
  }
  @keyframes cue{0%{transform:translateX(-100%);}50%{transform:translateX(0);}100%{transform:translateX(100%);}}
  @media (max-width:700px){ .scroll-cue{display:none;} }

  /* ---------- marquee ---------- */
  .marquee-section{
    position:absolute;
    left:0;right:0;bottom:0;
    z-index:2;
    background:rgba(20,20,20,.32);
    -webkit-backdrop-filter:blur(14px) saturate(1.1);
    backdrop-filter:blur(14px) saturate(1.1);
    color:var(--paper);
    padding-block:16px;
    overflow:hidden;
    border-top:1px solid rgba(255,255,255,.16);
  }
  .marquee-track{
    display:flex;
    align-items:center;
    width:max-content;
    gap:0;
    animation:marquee 34s linear infinite;
  }
  .marquee-section:hover .marquee-track{animation-play-state:paused;}
  .marquee-track span{
    display:inline-flex;
    align-items:center;
    font-family:"Archivo", "Helvetica Neue", Arial, sans-serif;
    font-style:normal;
    font-weight:600;
    letter-spacing:.01em;
    font-size:1.15rem;
    padding-inline:2em;
    white-space:nowrap;
    opacity:.95;
    line-height:1;
  }
  .marquee-track span::after{content:"—";margin-left:4em;line-height:1;color:var(--accent);opacity:1;font-style:normal;}
  @keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}

  /* ---------- reveal ---------- */
  .reveal{
    opacity:0;
    transform:translateY(26px);
    transition:opacity .8s ease, transform .8s cubic-bezier(.19,1,.22,1);
  }
  .reveal.in-view{opacity:1;transform:translateY(0);}
  .reveal-children > *{
    opacity:0;
    transform:translateY(20px);
    transition:opacity .7s ease, transform .7s cubic-bezier(.19,1,.22,1);
  }
  .reveal-children.in-view > *{opacity:1;transform:translateY(0);}
  .reveal-children.in-view > *:nth-child(1){transition-delay:.03s;}
  .reveal-children.in-view > *:nth-child(2){transition-delay:.10s;}
  .reveal-children.in-view > *:nth-child(3){transition-delay:.17s;}
  .reveal-children.in-view > *:nth-child(4){transition-delay:.24s;}
  .reveal-children.in-view > *:nth-child(5){transition-delay:.31s;}
  .reveal-children.in-view > *:nth-child(6){transition-delay:.38s;}
  .reveal-children.in-view > *:nth-child(7){transition-delay:.45s;}
  .reveal-children.in-view > *:nth-child(8){transition-delay:.52s;}
  .reveal-children.in-view > *:nth-child(9){transition-delay:.59s;}

  section{padding-block:clamp(80px,12vw,150px);}

  /* ---------- philosophy ---------- */
  .philosophy{
    position:relative;
    overflow:hidden;
  }
  .philo-bg{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    display:block;
  }
  .philosophy .wrap{
    position:relative;
    z-index:1;
    display:grid;
    grid-template-columns:1fr;
    gap:48px;
  }
  @media (min-width:860px){
    .philosophy .wrap{grid-template-columns:.8fr 1.6fr;align-items:start;}
  }
  .philo-glass{
    position:relative;
    overflow:hidden;
    padding:28px 24px;
    border-radius:28px;
    background:linear-gradient(155deg, rgba(255,255,255,.11) 0%, rgba(255,255,255,.02) 42%, rgba(255,255,255,.08) 78%, rgba(255,255,255,.13) 100%);
    backdrop-filter:blur(6px) saturate(140%);
    -webkit-backdrop-filter:blur(6px) saturate(140%);
    box-shadow:0 1px 1px rgba(255,255,255,.25) inset, 0 20px 60px rgba(28,28,28,.04);
  }
  .philo-glass::before{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(120deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,0) 28%, rgba(255,255,255,0) 68%, rgba(255,255,255,.2) 100%);
    mix-blend-mode:overlay;
    pointer-events:none;
  }
  @media (min-width:860px){
    .philo-glass{padding:48px;}
    .usp-list{margin-top:48px;}
  }
  @supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .philo-glass{background:rgba(255,255,255,.85);}
    .philo-glass::before{display:none;}
  }
  .philosophy .eyebrow{color:var(--accent);margin-bottom:0;}
  .philosophy-statement{
    position:relative;
    font-size:var(--type-scale-2);
    font-weight:700;
    line-height:1.2;
    letter-spacing:-.01em;
  }
  .usp-list{
    position:relative;
    margin-top:28px;
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:10px;
  }
  @media (min-width:700px){ .usp-list{grid-template-columns:repeat(4,1fr);} }
  .usp-list div{
    background:linear-gradient(135deg, #dedede, #c2c2c2);
    border-radius:14px;
    padding:26px 22px;
    font-size:.95rem;
    font-weight:600;
    line-height:1.35;
  }
  .usp-list div small{
    display:block;
    font-size:.68rem;
    font-weight:700;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:var(--accent);
    margin-bottom:10px;
  }

  /* ---------- services ---------- */
  .services{background:#2b2b2f;color:var(--paper);}
  .services .eyebrow{color:var(--accent);margin-bottom:18px;}
  .services h2{font-size:var(--type-scale-2);max-width:18ch;margin-bottom:18px;}
  .services-intro{max-width:56ch;color:#c4c4c4;font-size:1.05rem;margin-bottom:60px;}
  .service-list{border-top:1px solid var(--line-on-ink);}
  .service-row{
    border-bottom:1px solid var(--line-on-ink);
    padding-block:26px;
    cursor:pointer;
  }
  .service-row summary{
    list-style:none;
    display:flex;
    align-items:baseline;
    gap:clamp(16px,3vw,40px);
    outline-offset:6px;
  }
  .service-row summary::-webkit-details-marker{display:none;}
  .service-index{
    font-family:"Fraunces", Georgia, "Times New Roman", serif;
    font-style:italic;
    font-size:1.05rem;
    color:var(--accent);
    width:2.4em;
    flex:none;
  }
  .service-name{
    font-size:clamp(1.35rem,3.4vw,2.1rem);
    font-weight:700;
    flex:1;
    transition:transform .3s ease;
  }
  .service-row:hover .service-name, .service-row[open] .service-name{transform:translateX(10px);color:var(--accent);}
  .service-plus{
    flex:none;
    width:26px;height:26px;
    border-radius:50%;
    border:1px solid var(--line-on-ink);
    display:flex;align-items:center;justify-content:center;
    position:relative;
  }
  .service-plus::before, .service-plus::after{
    content:"";position:absolute;background:var(--paper);
  }
  .service-plus::before{width:10px;height:1px;}
  .service-plus::after{width:1px;height:10px;transition:transform .3s ease;}
  .service-row[open] .service-plus::after{transform:rotate(90deg);opacity:0;}
  .service-desc{
    max-width:64ch;
    margin:16px 0 0 calc(2.4em + clamp(16px,3vw,40px));
    color:#c4c4c4;
    font-size:1rem;
  }
  @media (max-width:640px){ .service-desc{margin-left:0;} }

  /* ---------- process ---------- */
  .process .wrap{
    display:grid;
    grid-template-columns:1fr;
    gap:0;
  }
  @media (min-width:800px){ .process .wrap{grid-template-columns:repeat(3,1fr);} }
  .process-step{
    padding:34px 6px;
    border-top:1px dashed var(--line);
    position:relative;
  }
  @media (min-width:800px){
    .process-step{border-top:none;border-left:1px dashed var(--line);padding-inline:34px;}
    .process-step:first-child{border-left:none;padding-left:0;}
  }
  .process-step .service-index{color:var(--accent);}
  .process-step h3{font-size:1.4rem;margin-block:14px 10px;}
  .process-step p{margin:0;color:var(--ink-soft);max-width:34ch;}
  .process-icon{margin-bottom:22px;}
  .process-icon svg{display:block;width:36px;height:36px;}

  /* ---------- contact ---------- */
  .contact{
    background:var(--paper-dim);
    position:relative;
  }
  .contact .eyebrow{color:var(--accent);margin-bottom:26px;}
  .contact h2{
    font-size:clamp(2rem,6vw,4rem);
    max-width:16ch;
    margin-bottom:50px;
  }
  .contact-mail{
    font-family:"Archivo", "Helvetica Neue", Arial, sans-serif;
    font-style:normal;
    font-weight:700;
    font-size:clamp(1.3rem,3.4vw,2rem);
    color:var(--accent);
    text-decoration:none;
    display:inline-flex;
    align-items:center;
    gap:.3em;
    border-bottom:1px solid currentColor;
    padding-bottom:.08em;
  }
  .contact-mail .arrow{transition:transform .35s cubic-bezier(.19,1,.22,1);}
  .contact-mail:hover .arrow{transform:translate(6px,-6px);}
  .contact-grid{
    margin-top:64px;
    display:grid;
    grid-template-columns:1fr;
    gap:30px;
    padding-top:34px;
    border-top:1px solid var(--line);
  }
  @media (min-width:760px){ .contact-grid{grid-template-columns:repeat(2,1fr);} }
  .contact-grid dt{
    font-size:.68rem;
    font-weight:700;
    letter-spacing:.16em;
    text-transform:uppercase;
    color:var(--ink-soft);
    margin-bottom:10px;
  }
  .contact-grid dd{margin:0;font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums;}
  .contact-grid a{text-decoration:none;}
  .contact-grid a:hover{color:var(--accent);}

  /* ---------- contact form ---------- */
  .contact-form{
    position:relative;
    margin-top:56px;
    padding-top:40px;
    border-top:1px solid var(--line);
    max-width:640px;
  }
  .contact-form-title{
    font-size:1.15rem;
    font-weight:700;
    margin:0 0 26px;
  }
  .form-row{
    display:grid;
    grid-template-columns:1fr;
    gap:20px;
    margin-bottom:20px;
  }
  @media (min-width:600px){ .form-row{grid-template-columns:1fr 1fr;} }
  .form-field{display:flex;flex-direction:column;gap:8px;margin-bottom:20px;}
  .form-row .form-field{margin-bottom:0;}
  .form-field label{
    font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);
  }
  .form-field input,
  .form-field textarea{
    font-family:inherit;
    font-size:1rem;
    color:var(--ink);
    background:#fff;
    border:1px solid var(--line);
    border-radius:10px;
    padding:13px 16px;
    resize:vertical;
    box-shadow:0 1px 2px rgba(0,0,0,.04);
    transition:border-color .25s ease, box-shadow .25s ease;
  }
  .form-field input:focus,
  .form-field textarea:focus{
    outline:none;
    border-color:var(--accent);
    box-shadow:0 0 0 3px rgba(156,0,77,.14);
  }
  .form-field input::placeholder,
  .form-field textarea::placeholder{color:#a3a3a3;}
  .form-honeypot{
    position:absolute;
    width:1px;height:1px;
    overflow:hidden;
    opacity:0;
    pointer-events:none;
  }
  .form-consent{
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin:8px 0 28px;
    cursor:pointer;
  }
  .form-consent input{
    flex:none;
    width:19px;height:19px;
    margin-top:2px;
    accent-color:var(--accent);
  }
  .form-consent span{font-size:.85rem;line-height:1.5;color:var(--ink-soft);}
  .form-consent a{color:var(--ink);text-decoration:underline;}
  .form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px;}
  .form-status{margin:0;font-size:.88rem;font-weight:600;}
  .form-status[data-state="ok"]{color:#2a7a3b;}
  .form-status[data-state="error"]{color:#b3261e;}
  .form-status[data-state="pending"]{color:var(--ink-soft);}
  #cfSubmit:disabled{opacity:.6;cursor:not-allowed;}

  /* ---------- footer ---------- */
  footer{
    background:var(--ink);
    color:var(--paper);
    padding-block:60px 34px;
  }
  .footer-top{
    display:flex;
    flex-wrap:wrap;
    justify-content:space-between;
    gap:40px;
    padding-bottom:40px;
    border-bottom:1px solid var(--line-on-ink);
  }
  .footer-brand .logotype{color:var(--paper);}
  .footer-brand p{max-width:32ch;color:#a8a8a8;margin-top:14px;font-size:.92rem;}
  .footer-cols{display:flex;gap:60px;flex-wrap:wrap;}
  .footer-col h4{
    font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
    color:#8c8c8c;margin:0 0 16px;
  }
  .footer-col a, .footer-col span{
    display:block;
    text-decoration:none;
    font-size:.92rem;
    color:var(--paper);
    padding-block:4px;
    opacity:.9;
  }
  .footer-col a:hover{color:var(--accent-soft);opacity:1;}
  .footer-bottom{
    display:flex;
    flex-wrap:wrap;
    justify-content:space-between;
    gap:14px;
    padding-top:26px;
    font-size:.78rem;
    color:#8c8c8c;
  }
  .to-top{
    background:none;border:1px solid var(--line-on-ink);color:var(--paper);
    border-radius:999px;padding:10px 18px;font-size:.78rem;font-weight:600;
    cursor:pointer;display:inline-flex;align-items:center;gap:8px;
  }
  .to-top:hover{border-color:var(--accent-soft);color:var(--accent-soft);}

  /* ---------- legal page (Datenschutz) ---------- */
  body.legal-view .site-header{
    background:rgba(236,236,236,.86);
    backdrop-filter:blur(10px);
    padding-block:14px;
    border-color:var(--line);
    color:var(--ink);
  }
  body.legal-view .site-header .menu-toggle span{background:var(--ink);}
  .legal-page{padding:150px 0 120px;background:var(--paper);}
  .legal-wrap{max-width:760px;}
  .legal-back{
    display:inline-flex;align-items:center;gap:8px;
    font-size:.85rem;font-weight:700;letter-spacing:.02em;
    text-decoration:none;color:var(--ink-soft);margin-bottom:34px;
  }
  .legal-back:hover{color:var(--accent);}
  .legal-page .eyebrow{color:var(--accent);margin-bottom:18px;}
  .legal-page h1{font-size:var(--type-scale-2);margin-bottom:44px;}
  .legal-page h2{
    font-size:1.15rem;font-weight:800;margin:44px 0 14px;
  }
  .legal-page h2:first-of-type{margin-top:0;}
  .legal-page p{margin:0 0 16px;color:var(--ink-soft);line-height:1.7;}
  .legal-page ul{margin:0 0 16px;padding-left:22px;color:var(--ink-soft);line-height:1.7;}
  .legal-page li{margin-bottom:6px;}
  .legal-page a{color:var(--ink);text-decoration:underline;}
  .legal-page strong{color:var(--ink);}
  .legal-meta{
    font-size:.78rem;color:#8c8c8c;margin-top:56px;
    padding-top:22px;border-top:1px solid var(--line);
  }

  /* ---------- cookie consent ---------- */
  .cookie-banner{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:2000;
    background:var(--ink);
    color:var(--paper);
    border-top:1px solid var(--line-on-ink);
    padding:22px var(--gutter) calc(22px + env(safe-area-inset-bottom, 0px));
    transform:translateY(110%);
    pointer-events:none;
    transition:transform .5s cubic-bezier(.19,1,.22,1);
  }
  .cookie-banner.is-visible{transform:translateY(0);pointer-events:auto;}
  .cookie-banner-inner{max-width:var(--maxw);margin:0 auto;}
  .cookie-text strong{display:block;font-size:1rem;margin-bottom:6px;}
  .cookie-text p{margin:0;max-width:70ch;font-size:.92rem;line-height:1.5;color:#c4c4c4;}
  .cookie-text a{color:var(--accent-soft);text-decoration:underline;}
  .cookie-settings{
    margin-top:18px;
    display:grid;
    gap:1px;
    background:var(--line-on-ink);
    border:1px solid var(--line-on-ink);
  }
  .cookie-settings[hidden]{display:none;}
  .cookie-row{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:20px;
    background:var(--ink);
    padding:14px 16px;
    cursor:pointer;
  }
  .cookie-row span{display:flex;flex-direction:column;gap:2px;}
  .cookie-row strong{font-size:.9rem;font-weight:700;}
  .cookie-row small{font-size:.8rem;color:#a8a8a8;}
  .cookie-row input{flex:none;width:20px;height:20px;accent-color:var(--accent);margin-top:2px;}
  .cookie-row input:disabled{opacity:.5;}
  .cookie-actions{
    margin-top:20px;
    display:flex;
    flex-wrap:wrap;
    gap:12px;
    align-items:center;
  }
  .cookie-actions .btn{font-size:.88rem;padding:.8em 1.6em;}
  .cookie-actions .btn.ghost{color:var(--paper);border-color:rgba(255,255,255,.5);}
  .cookie-actions .btn.ghost:hover{background:var(--paper);color:var(--ink);}
  .cookie-actions .btn.text{
    border:0;background:none;padding:.8em .2em;color:var(--paper);text-decoration:underline;
    text-underline-offset:3px;font-weight:600;font-size:.88rem;cursor:pointer;
  }
  .cookie-actions .btn.text:hover{color:var(--accent-soft);}
  @media (max-width:640px){ .cookie-actions{flex-direction:column;align-items:stretch;} .cookie-actions .btn{width:100%;justify-content:center;} }

  @media (prefers-reduced-motion: reduce){
    .cookie-banner{transition:none;}
    html{scroll-behavior:auto;}
    .reveal, .reveal-children > *{opacity:1!important;transform:none!important;transition:none!important;}
    .hero h1 .word span{transform:none!important;transition:none!important;}
    .marquee-track{animation:none!important;}
    .scroll-cue .line::after{animation:none!important;}
    .hero-cmyk i{animation:none!important;}
    .preloader{transition:none;}
    .cursor-ring{display:none;}
  }
