*,*::before,*::after{box-sizing:border-box}
:root{
  --bg:#070710;
  --text:#F4F2EF;
  --muted:rgba(244,242,239,.7);
  --muted-strong:rgba(244,242,239,.45);
  --line:rgba(244,242,239,.14);
  --amber:#FB7932;
  --amber-soft:#FFB985;
  --magenta:#A83BCF;
  --magenta-soft:#D27AEC;
  --indigo:#1E1869;
  --plum:#5B2A8F;
  --container:1440px;
}
html,body{margin:0;padding:0;background:var(--bg);overflow-x:clip;max-width:100%}

/* Custom scrollbar — site-wide dark theme (page + any scrollable element).
   Firefox uses scrollbar-color/width; Chromium/Safari use ::-webkit-scrollbar.
   Thumb picks up the brand amber on hover so it doesn't read as a system widget. */
html{
  scrollbar-width:thin;
  scrollbar-color:rgba(244,242,239,.22) transparent;
  scroll-behavior:smooth;
  scroll-padding-top:96px; /* leave room below sticky site-header for anchor jumps */
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{
  background:rgba(244,242,239,.18);
  border-radius:999px;
  border:2px solid transparent;
  background-clip:content-box;
  transition:background .2s ease;
}
*::-webkit-scrollbar-thumb:hover{background:rgba(251,121,50,.55);background-clip:content-box}
*::-webkit-scrollbar-corner{background:transparent}
img,svg{max-width:100%}
body.tab-hidden *,body.tab-hidden *::before,body.tab-hidden *::after{animation-play-state:paused!important;transition:none!important}
body{font-family:'Manrope',system-ui,sans-serif;color:var(--text);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}

/* Accessibility: keyboard focus indicator */
:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:6px}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--amber);outline-offset:3px}

/* Skip-to-content link (visible only when focused via Tab) */
.skip-link{
  position:absolute;left:-9999px;top:8px;z-index:1000;
  padding:10px 18px;border-radius:10px;
  background:linear-gradient(135deg,var(--magenta),var(--amber));color:#fff;
  font-weight:600;font-size:14px;text-decoration:none;
  box-shadow:0 10px 28px rgba(168,59,207,.4)
}
.skip-link:focus,.skip-link:focus-visible{left:8px;outline:none}

/* Screen-reader-only helper for accessible <label>s and live regions */
.sr-only{
  position:absolute!important;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);
  white-space:nowrap;border:0
}

/* Unified outer container — same gutter as .footer / .cta-card (40px) so the
   header, hero, content sections, CTA and footer all share one center column. */
.wrap{max-width:var(--container);margin:0 auto;padding:0 40px;position:relative;z-index:5;width:100%}
.sc-inner{max-width:var(--container);margin:0 auto;width:100%;padding:0 40px}

.frame{padding:15px;background:var(--bg)}
/* Hero content column — replaces inline style on .hero .wrap */
.hero > .wrap{display:flex;flex-direction:column;flex:1}

body.no-scroll{overflow:hidden}
/* Unified scroll-lock for modals (brief/auth/module-buy). iOS Safari resets
   scroll to 0 when overflow:hidden is on <html> or body, so we use the
   position:fixed pattern with the scroll position preserved in body.top
   via lock-scroll.js. Restored on unlock. */
body.cc-scroll-locked{position:fixed;left:0;right:0;width:100%;overflow:hidden}

/* Generic section tag (reusable on inner pages) */
.sec-tag{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;display:inline-flex;align-items:center;gap:10px;margin-bottom:22px}
.sec-tag i{width:8px;height:8px;border-radius:50%;background:var(--amber);box-shadow:0 0 14px rgba(251,121,50,.6)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:10px;padding:16px 28px;border-radius:999px;font-size:15.5px;font-weight:600;cursor:pointer;transition:background .25s ease;border:1px solid transparent}
.btn-primary{background:var(--text);color:var(--bg)}
.btn-primary:hover{background:#fff}
.btn-ghost{background:rgba(7,7,16,.35);color:var(--text);border-color:rgba(244,242,239,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.btn-ghost:hover{background:rgba(244,242,239,.12);border-color:var(--text)}
.btn svg{width:16px;height:16px}

@media (max-width:900px){
  .wrap,.sc-inner{padding:0 24px}
  .btn{padding:14px 22px;font-size:14.5px}
}
@media (max-width:600px){
  .frame{padding:8px}
  .wrap,.sc-inner{padding:0 18px}
  .btn{justify-content:center;padding:14px 20px;font-size:14.5px;width:100%}
}
@media (max-width:380px){
  .frame{padding:6px}
  .wrap,.sc-inner{padding:0 14px}
}
@media (max-width:320px){
  .frame{padding:4px}
  .wrap,.sc-inner{padding:0 12px}
  .btn{padding:12px 16px;font-size:13.5px}
}

/* ====== Shared CTA card (used on home + archives + singles) ====== */
.sec-cta{padding:64px 15px 64px;background:var(--bg)}
.cta-card{
  background:linear-gradient(135deg,var(--indigo) 0%, var(--magenta) 50%, var(--amber) 100%);
  color:#fff;border-radius:20px;padding:110px 40px 72px;position:relative;overflow:hidden;
  text-align:center;
  max-width:1440px;margin:0 auto
}
.cta-card::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:3px 3px;mix-blend-mode:overlay;pointer-events:none}
.cta-card > *{position:relative;z-index:2}
.cta-card h2{font-size:clamp(34px,3.6vw,56px);font-weight:700;letter-spacing:-.028em;line-height:1.05;margin:0;text-wrap:balance}
.cta-right{position:relative;display:flex;flex-direction:column;align-items:center;gap:22px;margin-top:28px}
.cta-right p{font-size:15.5px;color:rgba(255,255,255,.88);margin:0;text-align:center;max-width:680px;text-wrap:balance}
.cta-btn{display:inline-flex;align-items:center;gap:10px;padding:18px 32px;background:var(--bg);color:#fff;border-radius:999px;font-size:16px;font-weight:600;transition:all .25s ease;border:1px solid rgba(255,255,255,.2)}
.cta-btn:hover{transform:translateY(-2px);background:#fff;color:var(--bg)}
.cta-btn svg{width:16px;height:16px}

@media (max-width:1100px){
  .cta-card{padding:80px 28px 56px}
}
@media (max-width:900px){
  .cta-card{padding:64px 28px 48px}
}
@media (max-width:600px){
  .sec-cta{padding:36px 8px 36px}
  .cta-card{padding:48px 22px 36px;border-radius:14px}
  .cta-card h2{font-size:clamp(26px,7vw,38px)}
  .cta-right p{font-size:14.5px}
  .cta-btn{padding:14px 22px;font-size:14.5px;width:100%;justify-content:center}
}
@media (max-width:380px){
  .cta-card{padding:40px 18px 30px}
}
@media (max-width:320px){
  .cta-btn{padding:12px 18px;font-size:13.5px}
}

/* ===== Back-to-top floating button ===== */
.back-to-top{
  position:fixed;right:24px;bottom:24px;z-index:46;
  width:46px;height:46px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(20,20,30,.85);color:var(--text);
  border:1px solid var(--line);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  cursor:pointer;
  opacity:0;transform:translateY(16px);pointer-events:none;
  transition:opacity .3s ease, transform .3s cubic-bezier(.2,.7,.2,1), background .2s ease, border-color .2s ease;
}
.back-to-top.is-visible{opacity:1;transform:none;pointer-events:auto}
.back-to-top:hover{background:rgba(28,28,40,.95);border-color:rgba(251,121,50,.45);color:var(--amber-soft)}
.back-to-top svg{width:18px;height:18px}
/* Single-case page has a centered sticky CTA at the bottom; nudge back-to-top up so
   it does not visually collide with the pill on narrow viewports. */
.work-single .back-to-top{bottom:80px}
@media (max-width:600px){
  .back-to-top{right:14px;bottom:14px;width:42px;height:42px}
  .work-single .back-to-top{bottom:70px}
}

/* GDPR cookie-consent bar (revealed by assets/js/consent.js when no choice stored). */
.cookie-bar{
  position:fixed; left:16px; right:16px; bottom:16px; z-index:9999;
  display:none; max-width:780px; margin:0 auto;
  padding:16px 20px; gap:14px;
  background:rgba(10,10,18,.96); border:1px solid var(--line); border-radius:14px;
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
  box-shadow:0 14px 44px rgba(0,0,0,.5); color:var(--text);
}
.cookie-bar.is-visible{display:flex; flex-wrap:wrap; align-items:center}
.cookie-bar__text{flex:1 1 300px; margin:0; font-size:14px; line-height:1.5; color:var(--muted)}
.cookie-bar__text a{color:var(--amber); text-decoration:underline}
.cookie-bar__actions{display:flex; gap:10px; flex-shrink:0}
.cookie-bar__btn{
  cursor:pointer; border:0; border-radius:9px; padding:10px 18px;
  font:inherit; font-weight:600; font-size:14px; min-height:40px;
  transition:opacity .15s ease, background .15s ease;
}
.cookie-bar__btn--accept{background:var(--amber); color:#1a0c00}
.cookie-bar__btn--decline{background:rgba(244,242,239,.08); color:var(--text)}
.cookie-bar__btn:hover{opacity:.88}
.cookie-bar__btn:focus-visible{outline:2px solid var(--amber-soft); outline-offset:2px}
@media (max-width:560px){
  .cookie-bar__actions{flex:1 1 100%}
  .cookie-bar__btn{flex:1}
}
