/* Noircraft Lab 2026 - layout: page grid, header, footer, front-page sections.
   Mobile first. Control widths 1360 and 390 (mockup v41, frames f01-f04). Breakpoints: 768 (tablet), 1024 (desktop). */

/* ---- Page ---- */
body.nc-root {
  background-color: var(--bg);
  background-image: radial-gradient(circle, var(--grid-dot) 1px, transparent 1.3px); /* dot grid, 22 px step, from the theme (WPCode 250 is off) */
  background-size: 22px 22px;
  overflow-x: clip;
}
.nc-page { display: block; }
.nc-sec { padding: var(--space-56) var(--space-20) 40px; }
.nc-sec__in { max-width: 1360px; margin: 0 auto; }
.nc-sec__body { margin-top: 28px; }
@media (min-width: 1024px) {
  .nc-sec { padding: var(--space-96) var(--space-80) 48px; }
  .nc-sec__body { margin-top: var(--space-40); }
}
.nc-grid-3 { display: grid; grid-template-columns: 1fr; gap: 20px; }
.nc-grid-2 { display: grid; grid-template-columns: 1fr; gap: 20px; }
@media (min-width: 768px) {
  .nc-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-28); }
  .nc-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-28); }
}

/* ---- Header (f01: 72 px, f03: 64 px) ---- */
.nc-header { position: sticky; top: 0; z-index: 50; background: rgba(13,13,13,0.92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-bottom: 1px solid rgba(240,237,232,0.08); }
.nc-header__in { display: flex; align-items: center; gap: 12px; height: 64px; padding: 0 var(--space-20); max-width: 1360px; margin: 0 auto; }
.nc-logo { display: inline-flex; align-items: center; padding: 9px 0; margin: -9px 0; text-decoration: none; flex: 0 0 auto; }
.nc-logo__svg--full { height: 27px; width: auto; }
.nc-nav { display: none; }
.nc-nav__list { display: flex; gap: 32px; margin: 0; padding: 0; list-style: none; font-size: 15px; }
.nc-nav__list a, .nc-mobile__list a, .nc-fcol__list a { color: var(--ink); text-decoration: none; transition: color .18s ease; }
.nc-nav__list a:hover, .nc-mobile__list a:hover, .nc-fcol__list a:hover, .nc-footer__mail:hover { color: var(--gold); }
/* E-2 (Roman 14.10): the current item of the header menu, as "For agencies" in frame f29 (colour only, same weight) */
.nc-nav__list .nc-current > a, .nc-mobile__list .nc-current > a { color: var(--gold); }
.nc-nav__list a:focus-visible, .nc-mobile__list a:focus-visible, .nc-fcol__list a:focus-visible, .nc-langs a:focus-visible, .nc-langs-m a:focus-visible, .nc-logo:focus-visible, .nc-footer__mail:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; border-radius: 2px; }
.nc-header__right { margin-left: auto; display: flex; align-items: center; gap: 12px; }
.nc-header__brief { display: none; }
.nc-langs { display: none; }
.nc-langs__list { display: flex; align-items: center; gap: 10px; margin: 0; padding: 0; list-style: none; font-size: 14px; color: var(--muted); }
.nc-langs__list .sep { color: var(--muted); }
.nc-langs__list a { color: var(--muted); text-decoration: none; transition: color .18s ease; }
.nc-langs__list a:hover { color: var(--gold); }
.nc-langs__list a[aria-current="true"] { color: var(--ink); text-decoration: underline; text-underline-offset: 5px; }
.nc-langbtn { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 14px; border-radius: 22px; border: 1px solid rgba(240,237,232,0.20); background: transparent; color: var(--ink); font-size: 14px; cursor: pointer; }
.nc-langbtn[aria-expanded="true"] svg { transform: rotate(180deg); }
.nc-langbtn:focus-visible, .nc-burger:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.nc-burger { width: 44px; height: 44px; border: 0; background: transparent; display: inline-flex; align-items: center; justify-content: center; padding: 0; color: var(--ink); cursor: pointer; }
.nc-langs-m, .nc-mobile { border-top: 1px solid rgba(240,237,232,0.08); background: var(--bg); padding: 8px var(--space-20) 20px; }
.nc-langs-m__list { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 0; padding: 0; list-style: none; }
.nc-langs-m__list a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 4px; color: var(--muted); font-size: 16px; text-decoration: none; }
.nc-langs-m__list a[aria-current="true"] { color: var(--ink); text-decoration: underline; text-underline-offset: 5px; }
.nc-mobile__list { margin: 0; padding: 0; list-style: none; }
.nc-mobile__list a { display: flex; align-items: center; min-height: 48px; font-size: 18px; font-family: var(--font-serif); }
.nc-mobile__cta { margin-top: 12px; }
@media (min-width: 1024px) {
  .nc-header__in { gap: 48px; height: 72px; padding: 0 var(--space-80); }
  .nc-logo__svg--full { height: 32px; }
  .nc-nav { display: block; }
  .nc-header__right { gap: 28px; }
  .nc-header__brief { display: inline-flex; }
  .nc-langs { display: block; }
  .nc-langbtn, .nc-burger, .nc-langs-m, .nc-mobile { display: none !important; }
}

/* ---- Hero (f01: 640 px, lockup on the right; f03: 200 px stage on top, text below) ---- */
.nc-hero { position: relative; overflow: hidden; isolation: isolate; }
.nc-hero__stage { position: relative; height: 200px; overflow: hidden; }
.nc-hero__stage .nc-hero__dust, .nc-hero__stage .nc-hero__mark { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
.nc-hero__mark { shape-rendering: geometricPrecision; will-change: transform; }
.nc-hero__static { position: absolute; inset: 0; }
.nc-hero__static img { width: 100%; height: 100%; object-fit: cover; }
/* no JS or weak device: static frame; live: svg + canvas */
.nc-hero__stage.is-live .nc-hero__static { display: none; }
.nc-hero__stage:not(.is-live) .nc-hero__dust, .nc-hero__stage:not(.is-live) .nc-hero__mark { display: none; }
.nc-hero__scrim { position: absolute; inset: 0; pointer-events: none; z-index: 1; background: linear-gradient(to bottom, rgba(13,13,13,0) 0, rgba(13,13,13,0) 150px, var(--bg) 200px); }
.nc-hero__in { position: relative; z-index: 2; padding: 0 var(--space-20) 40px; }
.nc-eyebrow { margin: 8px 0 14px; font-family: var(--font-serif); font-weight: 700; font-size: 12px; letter-spacing: .18em; color: var(--muted); }
.nc-hero__title { font-family: var(--font-serif); font-weight: 400; font-size: 34px; line-height: 1.12; text-shadow: var(--text-glow-hero); }
.nc-hero__lead { margin: 18px 0 0; font-family: var(--font-serif); font-size: 21px; line-height: 1.3; }
.nc-nw { white-space: nowrap; } /* a segment of a " · " list that never breaks inside (D-2: prices of home.03) */
.nc-hero__text { margin: 14px 0 0; font-size: 16px; line-height: 1.55; }
.nc-hero__note { margin: 10px 0 0; font-size: 16px; line-height: 1.5; color: var(--muted); }
.nc-hero__cta { margin-top: 24px; display: flex; flex-direction: column; gap: 12px; align-self: stretch; }
.nc-hero__reply { margin: 14px 0 0; font-size: 14px; color: var(--muted); text-align: center; }
@media (min-width: 1024px) {
  .nc-hero { height: 640px; }
  .nc-hero__stage { position: absolute; inset: 0; height: auto; }
  .nc-hero__static { left: auto; right: -20px; width: 760px; } /* D4: the mark of the static frame starts at 715 px, 24 px after the 600 px text column */
  .nc-hero__scrim { background: linear-gradient(to right, rgba(13,13,13,0.96) 0%, rgba(13,13,13,0.78) 40%, rgba(13,13,13,0) 60%); }
  .nc-hero__in { height: 100%; max-width: 1360px; margin: 0 auto; padding: 0 var(--space-80); display: flex; align-items: center; }
  .nc-hero__col { max-width: 600px; display: flex; flex-direction: column; align-items: flex-start; }
  .nc-eyebrow { margin: 0 0 20px; font-size: 13px; }
  .nc-hero__title { font-size: 58px; line-height: 1.06; letter-spacing: -.01em; }
  .nc-hero__lead { margin-top: 24px; font-size: 26px; }
  .nc-hero__text { margin-top: 16px; font-size: 17px; line-height: 1.6; max-width: 560px; }
  .nc-hero__note { margin-top: 12px; }
  .nc-hero__cta { margin-top: 30px; flex-direction: row; flex-wrap: wrap; gap: 14px; align-self: auto; }
  .nc-hero__reply { margin-top: 16px; text-align: left; }
}

/* ---- Ticker (glob.09): seamless CSS loop, stands still with reduced motion ---- */
.nc-ticker { height: 44px; display: flex; align-items: center; overflow: hidden; border-top: 1px solid var(--gold-line-band); border-bottom: 1px solid var(--gold-line-band); box-shadow: 0 0 16px rgba(232,201,74,0.10); font-family: var(--font-serif); font-weight: 700; font-size: 12px; letter-spacing: .18em; color: var(--muted); white-space: nowrap; }
.nc-ticker__track { display: flex; width: max-content; animation: nc-ticker 40s linear infinite; }
.nc-ticker__track span { padding-left: 20px; }
@keyframes nc-ticker { to { transform: translateX(-50%); } }
@media (min-width: 1024px) { .nc-ticker { height: 52px; font-size: 14px; } .nc-ticker__track span { padding-left: 28px; } }
@media (prefers-reduced-motion: reduce) { .nc-ticker__track { animation: none; } }

/* ---- Services ---- */
.nc-services .calc { margin-top: 24px; }
@media (min-width: 1024px) { .nc-services .calc { margin-top: 32px; } }

/* ---- Packages ---- */
.nc-packages .nc-sec__body { margin-top: 28px; display: flex; flex-direction: column; gap: 22px; }
.nc-packages .pk-wrap { margin: 10px 10px 10px 0; }
.nc-packages__note { margin: 22px 0 0; font-size: 14px; line-height: 1.5; color: var(--muted); }
@media (min-width: 768px) { .nc-packages__note { line-height: normal; } }
.nc-packages .glass { margin-top: 18px; }
.nc-packages__hosting { margin: 18px 0 0; font-size: 16px; line-height: 1.55; }
.nc-packages__more { margin-top: 6px; }
@media (min-width: 768px) {
  .nc-packages .nc-sec__body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-28); align-items: stretch; margin-top: 48px; }
  .nc-packages .pk-wrap { margin: 0; }
  .nc-packages .pk:not(.is-featured) { margin-top: 16px; }
  .nc-packages .pk-wrap, .nc-packages .pk.is-featured { height: 100%; }
  .nc-packages__note { margin-top: 28px; }
  .nc-packages .glass { margin-top: 22px; }
  .nc-packages__hosting { margin-top: 22px; font-size: 17px; line-height: 1.5; }
  .nc-packages__more { display: inline-block; margin-top: 18px; }
}

/* ---- After launch ---- */
.nc-after .glass { padding: 24px; border-top: 1px solid var(--gold-line); }
.nc-after h3 { font-family: var(--font-serif); font-weight: 400; font-size: 23px; line-height: normal; }
.nc-after .price { margin: 12px 0 0; font-family: var(--font-serif); font-size: 32px; line-height: 1; }
.nc-after ul { margin: 16px 0 0; padding: 0 0 0 20px; display: flex; flex-direction: column; gap: 10px; font-size: 16px; line-height: 1.5; }
.nc-after .nc-note { margin: 16px 0 0; font-size: 15px; line-height: normal; color: var(--muted); }
.nc-after .nc-link { display: inline-block; margin-top: 16px; } /* W-32: btn.07 under the card «Підтримка» leads to #support of the Services page */
@media (min-width: 1024px) {
  .nc-after .glass { padding: 36px; }
  .nc-after h3 { font-size: 26px; }
  .nc-after .price { margin-top: 14px; font-size: 36px; }
  .nc-after ul { margin-top: 22px; gap: 12px; }
  .nc-after .nc-note { margin-top: 22px; }
  .nc-after .nc-link { margin-top: 22px; }
}

/* ---- Manifesto: third line gold (the one filled gold of the block) ---- */
.nc-manifesto { padding: 72px var(--space-20); text-align: center; }
.nc-manifesto p { font-family: var(--font-serif); font-size: 36px; line-height: 1.15; }
.nc-manifesto p + p { margin-top: 10px; }
.nc-manifesto p.is-gold { color: var(--gold); text-shadow: 0 0 28px rgba(232,201,74,0.35); }
@media (min-width: 1024px) {
  .nc-manifesto { padding: 120px var(--space-80); }
  .nc-manifesto p { font-size: 64px; line-height: 1.1; }
  .nc-manifesto p + p { margin-top: 12px; }
  .nc-manifesto p.is-gold { text-shadow: 0 0 34px rgba(232,201,74,0.35); }
}

/* ---- Work ---- */
.nc-work .nc-sec__body { display: grid; grid-template-columns: 1fr; gap: 24px; }
.nc-work__all { margin-top: 12px; }
@media (min-width: 768px) {
  .nc-work .nc-sec__body { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-32); }
  .nc-work__all { display: inline-block; margin-top: 28px; }
}

/* ---- Steps (f02: axis in the centre, cards left/right; f04: axis on the left, block up to ~1300 px) ----
   Axis, nodes and links are separate elements (data-fx-anchor) that never move; only the card with its stack animates (D3).
   Positions follow the fixed card layout: 390 - cards 220 px, gap 48, first top 28 -> centres 138 / 406 / 674 / 942 (f04);
   1360 - cards 300 px at 40 / 300 / 560 / 820 -> centres 190 / 450 / 710 / 970 (f02). */
.nc-steps.nc-sec { padding-top: 64px; }
@media (min-width: 1024px) { .nc-steps.nc-sec { padding-top: var(--space-96); } }
.nc-steps .nc-sec__body { position: relative; margin-top: 36px; padding: 28px 0 16px 38px; display: flex; flex-direction: column; gap: 48px; }
.nc-steps .axis { left: 10px; }
.nc-steps .step { width: calc(100% - 12px); } /* 300 px at 390 as in f04 */
.nc-steps .axis-node { width: 14px; height: 14px; left: 4px; }
.nc-steps .axis-link { left: 18px; width: 20px; }
.nc-steps .axis-node[data-step="1"] { top: 131px; } .nc-steps .axis-link[data-step="1"] { top: 138px; }
.nc-steps .axis-node[data-step="2"] { top: 399px; } .nc-steps .axis-link[data-step="2"] { top: 406px; }
.nc-steps .axis-node[data-step="3"] { top: 667px; } .nc-steps .axis-link[data-step="3"] { top: 674px; }
.nc-steps .axis-node[data-step="4"] { top: 935px; } .nc-steps .axis-link[data-step="4"] { top: 942px; }
@media (min-width: 1024px) {
  .nc-steps .nc-sec__body { height: 1180px; max-width: 1200px; margin: 56px auto 0; padding: 0; display: block; }
  .nc-steps .axis { left: calc(50% - 1px); }
  .nc-steps .step { position: absolute; width: calc(50% - 80px); height: 300px; }
  .nc-steps .step:nth-child(2) { left: 0; top: 40px; }
  .nc-steps .step:nth-child(3) { right: 0; top: 300px; }
  .nc-steps .step:nth-child(4) { left: 0; top: 560px; }
  .nc-steps .step:nth-child(5) { right: 0; top: 820px; }
  .nc-steps .axis-node { width: 16px; height: 16px; left: calc(50% - 8px); }
  .nc-steps .axis-link { width: 64px; }
  .nc-steps .axis-link[data-step="1"], .nc-steps .axis-link[data-step="3"] { left: calc(50% - 64px); }
  .nc-steps .axis-link[data-step="2"], .nc-steps .axis-link[data-step="4"] { left: 50%; }
  .nc-steps .axis-node[data-step="1"] { top: 182px; } .nc-steps .axis-link[data-step="1"] { top: 189px; }
  .nc-steps .axis-node[data-step="2"] { top: 442px; } .nc-steps .axis-link[data-step="2"] { top: 449px; }
  .nc-steps .axis-node[data-step="3"] { top: 702px; } .nc-steps .axis-link[data-step="3"] { top: 709px; }
  .nc-steps .axis-node[data-step="4"] { top: 962px; } .nc-steps .axis-link[data-step="4"] { top: 969px; }
}

/* ---- About (f02: city background, figure left, text right; f04: photo on top with the title over it) ---- */
.nc-about { position: relative; padding: 0 0 40px; }
.nc-about__bg { position: relative; height: 470px; overflow: hidden; }
.nc-about__bg img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.nc-about .nc-h2 { position: absolute; left: var(--space-20); top: 48px; z-index: 2; } /* over the photo on phones (f04) */
.nc-about__in { margin-top: -28px; padding: 0 var(--space-20); }
.nc-about__greeting { position: relative; font-family: var(--font-serif); font-size: 26px; line-height: 1.2; color: var(--gold); text-shadow: var(--text-glow-gold); } /* positioned: paints over the photo edge (margin-top -28px) also without the fx filter (reduced motion) */
.nc-about__text { margin: 14px 0 0; font-size: 16px; line-height: 1.6; }
.nc-about__facts { margin-top: 20px; display: grid; grid-template-columns: 1fr; gap: 10px; }
.nc-about__more { margin-top: 12px; }
.nc-about__scrim { display: none; }
/* H-74, 431-767: the photo keeps the proportions of about-390, so the whole frame (chin included) stays in view; up to 430 it stays 470 high */
@media (min-width: 431px) and (max-width: 767px) {
  .nc-about__bg { width: 100%; height: auto; aspect-ratio: 390 / 470; max-height: 700px; } /* width: 100% - otherwise max-height also caps the width (581 px) through the ratio */
}
@media (min-width: 768px) { /* H-74: the desktop layout (about-1360, figure left, text right) from 768 */
  .nc-about { min-height: 780px; padding: 0; }
  .nc-about__bg { position: absolute; inset: 0; height: auto; }
  .nc-about__bg img { object-position: left top; }
  .nc-about .nc-h2 { position: static; }
  .nc-about__scrim { display: block; position: absolute; inset: 0; background: linear-gradient(270deg, rgba(13,13,13,0.95) 0%, rgba(13,13,13,0.86) 34%, rgba(13,13,13,0.30) 50%, rgba(13,13,13,0) 60%); }
  .nc-about__in { position: relative; max-width: 1360px; margin: 0 auto; padding: 96px var(--space-80) 72px; }
  .nc-about__col { max-width: 550px; margin-left: auto; }
  .nc-about__greeting { margin-top: 40px; font-size: 30px; }
  .nc-about__text { margin-top: 18px; font-size: 17px; }
  .nc-about__facts { margin-top: 26px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .nc-about__more { display: inline-block; margin-top: 24px; }
}
/* H-74, 768-1199: the 1360 frame at scale 1 (head x 227-503, y 142-495 of 1360x780, centre x 365), shifted left so that
   the head sits in the middle of the free zone left of the text; the text column narrows down to keep that zone.
   Without the shift the head covers x 227-503 and the text (80 px field, 550 px column) lands on it up to 1156 px. */
@media (min-width: 768px) and (max-width: 1199px) {
  .nc-about {
    --about-pad: var(--space-40);  /* side field of the text */
    --about-col: 550px;            /* widest text column */
    --about-gap: 32px;             /* head box -> text */
    --about-free: 316px;           /* narrowest free zone left of the text: head 276 + 2 x 20 */
    --about-face-cx: 365px;        /* head centre in about-1360 px */
  }
  .nc-about__bg { inset: 0 0 auto; height: 780px; } /* frame height = image height: scale stays 1 when the text runs longer (the image bottom is the page colour) */
  .nc-about__bg img { position: absolute; top: 0; left: max(calc(var(--about-free) / 2 - var(--about-face-cx)), calc(50% - (var(--about-pad) + var(--about-col) + var(--about-gap)) / 2 - var(--about-face-cx))); width: 1360px; max-width: none; height: 780px; }
  .nc-about__scrim { background: linear-gradient(270deg, rgba(13,13,13,0.95) 0%, rgba(13,13,13,0.86) calc(min(var(--about-pad) + var(--about-col), 100% - var(--about-free) - var(--about-gap)) - 96px), rgba(13,13,13,0.40) min(var(--about-pad) + var(--about-col), 100% - var(--about-free) - var(--about-gap)), rgba(13,13,13,0) min(var(--about-pad) + var(--about-col) + var(--about-gap), 100% - var(--about-free))); }
  .nc-about__in { padding-left: var(--about-pad); padding-right: var(--about-pad); }
  .nc-about__col { max-width: min(var(--about-col), calc(100% + var(--about-pad) - var(--about-free) - var(--about-gap))); }
  .nc-about__facts { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
}
/* ---- FAQ ---- */
.nc-faq .nc-sec__body { margin-top: 24px; }
@media (min-width: 1024px) { .nc-faq .nc-sec__body { margin-top: 36px; max-width: 920px; } }

/* ---- Start (#start) ---- */
#start { scroll-margin-top: 80px; }
.nc-start .glass { padding: 24px; display: flex; flex-direction: column; }
.nc-start .glass.is-main { border: 1px solid var(--gold-line-plate); box-shadow: 0 0 0 1px rgba(232,201,74,0.08), 0 0 34px rgba(232,201,74,0.20), 0 16px 40px rgba(0,0,0,0.45); }
.nc-start__num { font-family: var(--font-serif); font-size: 14px; line-height: normal; letter-spacing: .12em; color: var(--muted); }
.nc-start h3 { margin: 10px 0 0; font-family: var(--font-serif); font-weight: 400; font-size: 26px; line-height: normal; }
.nc-start p.nc-start__text { margin: 10px 0 0; font-size: 16px; line-height: 1.55; }
.nc-start__cta { margin-top: auto; padding-top: 20px; } /* A4: the CTA row is pinned to the card bottom, so buttons of one grid row share one axis */
@media (min-width: 1024px) {
  #start { scroll-margin-top: 90px; }
  .nc-start .glass { padding: 36px; }
  .nc-start .glass.is-main { box-shadow: 0 0 0 1px rgba(232,201,74,0.08), 0 0 40px rgba(232,201,74,0.20), 0 20px 50px rgba(0,0,0,0.45); }
  .nc-start h3 { margin-top: 14px; font-size: 30px; }
  .nc-start p.nc-start__text { margin-top: 12px; font-size: 17px; }
  .nc-start__cta { padding-top: 28px; }
}

/* ---- Contact ---- */
.nc-contact { padding-bottom: 64px; }
.nc-contact .nc-sec__body { margin-top: 24px; display: flex; flex-wrap: wrap; gap: 14px; }
.nc-contact__mail { display: inline-flex; align-items: center; min-height: 44px; margin-top: 16px; font-family: var(--font-serif); font-size: 20px; text-decoration: underline; text-underline-offset: 6px; }
.nc-contact__mail:hover { color: var(--gold); }
.nc-contact__mail:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
@media (min-width: 1024px) {
  .nc-contact { padding-bottom: 96px; }
  .nc-contact .nc-sec__body { margin-top: 36px; gap: 14px; } /* D2: the tip is absolute, no band is reserved (f02) */
  .nc-contact__mail { margin-top: 28px; font-size: 22px; }
}
/* K-1 (Roman 14.10): phones and devices without hover - 3 columns x 2 rows, a caption under every circle */
@media (max-width: 767px), (hover: none) {
  .nc-contact .nc-sec__body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px 8px; max-width: 420px; }
}

/* ---- Footer ---- */
.nc-footer { padding: 40px var(--space-20) 24px; border-top: 1px solid rgba(232,201,74,0.30); box-shadow: 0 -1px 16px -10px rgba(232,201,74,0.5); }
.nc-footer__in { max-width: 1360px; margin: 0 auto; }
.nc-footer__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px; }
.nc-footer__brand { grid-column: 1 / -1; display: flex; flex-direction: column; align-items: flex-start; gap: 0; }
.nc-footer__brand .nc-footer__tagline { margin-top: 14px; }
.nc-footer__logo { padding: 10px 0; margin: -10px 0; } /* 44 px touch target on a 24 px row */
.nc-footer__logo .nc-logo__svg--full { height: 27px; width: auto; margin: -1.5px 0; } /* 24 px row as the 42x24 mark in f04 */
.nc-footer__tagline { font-size: 15px; line-height: 1.55; color: var(--muted); }
@media (min-width: 1024px) { .nc-footer__tagline { max-width: 340px; } }
.nc-footer__mail { display: inline-flex; align-items: center; min-height: 44px; font-size: 16px; color: var(--ink); text-underline-offset: 5px; transition: color .18s ease; }
.nc-fcol { display: flex; flex-direction: column; gap: 4px; font-size: 16px; }
.nc-fcol--legal { grid-column: 1 / -1; }
.nc-fcol__h { margin: 0 0 4px; font-size: 12px; font-weight: 600; letter-spacing: .12em; color: var(--muted); }
.nc-fcol__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.nc-fcol__list a { display: flex; align-items: center; min-height: 44px; }
.nc-footer__copy { margin: 28px 0 0; padding-top: 18px; border-top: 1px solid rgba(240,237,232,0.08); font-size: 13px; color: var(--muted); }
@media (min-width: 1024px) {
  .nc-footer { padding: 56px var(--space-80) 28px; }
  .nc-footer__grid { grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); gap: 40px; }
  .nc-footer__brand { grid-column: auto; gap: 16px; }
  .nc-footer__brand .nc-footer__tagline { margin-top: 0; }
  .nc-footer__logo .nc-logo__svg--full { height: 32px; margin: -2px 0; } /* the lockup has 2 px of air above and below the 28 px mark (f02) */
  .nc-footer__mail { min-height: 0; font-size: 15px; }
  .nc-fcol { gap: 12px; font-size: 15px; }
  .nc-fcol--legal { grid-column: auto; }
  .nc-fcol__list { gap: 12px; }
  .nc-fcol__list a { min-height: 0; }
  .nc-footer__copy { margin-top: 48px; padding-top: 20px; }
}

/* ---- Cookie consent (stage 3a, E; decision of Roman 14.10, variant D). No frame: the glass panel and the buttons of the
   design system. Fixed strip: no layout shift; no animation; both buttons the same component and width.
   From 768 the strip is at the bottom. On phones it is right under the sticky header: with the text cookie.01 the strip is
   about 136 px high, and at 360 x 844 only 63 px are left below the Hero buttons of the home page (R22: the banner never covers
   them). It stays under the header (z-index below it), so the menu button and the open menu keep working without a choice. ---- */
.nc-fcol__btn { display: flex; align-items: center; min-height: 44px; padding: 0; border: 0; background: none; color: var(--ink); font: inherit; text-align: left; cursor: pointer; transition: color .18s ease; }
.nc-fcol__btn:hover { color: var(--gold); }
.nc-fcol__btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.nc-consent { position: fixed; left: 0; right: 0; top: 64px; z-index: 40; padding: 12px var(--space-20); background: var(--glass-panel-m); border-bottom: 1px solid var(--gold-line-band); box-shadow: 0 12px 30px rgba(0,0,0,0.45); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.nc-consent[hidden] { display: none; }
.nc-consent__in { max-width: 1200px; margin: 0 auto; }
.nc-consent__text { margin: 0; font-size: 14px; line-height: 1.45; color: var(--ink); }
.nc-consent__text a { color: var(--ink); text-underline-offset: 3px; }
.nc-consent__text a:hover { color: var(--gold); }
.nc-consent__text a:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.nc-consent__btns { margin-top: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.nc-consent__btns .nc-btn { width: 100%; justify-content: flex-start; font-family: var(--font-sans); cursor: pointer; }
@media (min-width: 768px) {
  .nc-consent { top: auto; bottom: 0; padding: 14px var(--space-40) calc(14px + env(safe-area-inset-bottom, 0px)); border-bottom: 0; border-top: 1px solid var(--gold-line-band); box-shadow: 0 -12px 30px rgba(0,0,0,0.45); }
  .nc-consent__in { display: flex; align-items: center; justify-content: space-between; gap: 32px; }
  .nc-consent__text { font-size: 15px; }
  .nc-consent__btns { margin-top: 0; flex: none; grid-template-columns: repeat(2, 150px); gap: 12px; }
}
@media (min-width: 1024px) { .nc-fcol__btn { min-height: 0; } }

