/* ============================================================================
   Digital Bunker — visual system
   ----------------------------------------------------------------------------
   Black ground, carved white, one cold emissive — tuned to the Digital Bunker
   mark rather than to a template.

   Three rules this file exists to hold.

   1. THREE GROUNDS, THREE INKS. Depth comes from stacked near-blacks, not from
      borders everywhere. The ink ramp has a documented floor: --ink-3 measures
      5.9:1 on --bg, which is above the 4.5:1 body-text minimum. A "quiet" tier
      that fails contrast is not quiet, it is unreadable to anyone whose eyes or
      screen are worse than the designer's.

   2. THE EMISSIVE IS HARDWARE, NOT WASH. --cyan appears as edge light, a rule,
      a focus ring, a hover state. It never fills a panel and never tints body
      text. The logo earns its glow because everything around it is grey.

   3. THE GEOMETRY IS THE LOGO. The mark is a chamfered hexagonal shield, so
      panels and buttons cut their corners at the same angle rather than
      rounding them. --cut is that chamfer, applied with clip-path.
   ========================================================================= */

/* --- self-hosted, no font CDN: see brand/fonts/LICENSE.txt ---------------- */
@font-face{font-family:'Space Grotesk';src:url('/brand/fonts/space-grotesk-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Space Grotesk';src:url('/brand/fonts/space-grotesk-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('/brand/fonts/inter-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('/brand/fonts/inter-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Inter';src:url('/brand/fonts/inter-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'JetBrains Mono';src:url('/brand/fonts/jetbrains-mono-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}

:root{
  --bg:#07080a; --bg-2:#0c0e12; --bg-3:#12151b;
  --ink:#f2f3f5;
  --ink-2:rgba(242,243,245,.78);
  --ink-3:rgba(242,243,245,.56);
  --line:rgba(242,243,245,.10);
  --line-2:rgba(242,243,245,.20);
  --cyan:#7fd4ff;
  --cyan-dim:rgba(127,212,255,.28);

  --display:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  --body:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --cut-s:8px; --cut-m:12px; --cut-l:18px;
  --container:1200px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}

body{
  background:var(--bg);color:var(--ink);font-family:var(--body);
  line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:clip;
}
::selection{background:rgba(127,212,255,.3);color:#fff}
a{color:inherit}
img{max-width:100%;height:auto;display:block}

.wrap{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:20px}
@media (min-width:768px){.wrap{padding-inline:32px}}
.section{padding-block:88px}
@media (min-width:1024px){.section{padding-block:132px}}

/* --- shared type ---------------------------------------------------------- */
.kicker{
  font-family:var(--mono);font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--cyan);margin-bottom:1.25rem;
}
h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.02em;line-height:1.05}
h1{font-size:clamp(2.4rem,6.5vw,4.2rem)}
h2{font-size:clamp(1.8rem,4vw,2.75rem);margin-bottom:1.25rem}
h3{font-size:1.05rem;font-weight:600;letter-spacing:-.01em;line-height:1.3}
.lead{font-size:clamp(1.05rem,2.1vw,1.22rem);color:var(--ink-2);max-width:44ch}
p{color:var(--ink-3);max-width:68ch}
p strong{color:var(--ink);font-weight:500}
.section-intro{color:var(--ink-2);max-width:56ch;margin-bottom:3rem}

/* A hairline that starts bright at the left and fades — a lit edge, not a box. */
.rule{height:1px;background:linear-gradient(90deg,var(--cyan-dim),var(--line) 22%,transparent);margin:0}

/* --- buttons -------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--mono);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  padding:.95rem 1.6rem;text-decoration:none;border:1px solid var(--line-2);
  color:var(--ink);background:var(--bg-2);
  clip-path:polygon(var(--cut-s) 0,100% 0,100% calc(100% - var(--cut-s)),calc(100% - var(--cut-s)) 100%,0 100%,0 var(--cut-s));
  transition:background .18s ease,border-color .18s ease,color .18s ease;
}
.btn:hover,.btn:focus-visible{background:var(--bg-3);border-color:var(--cyan-dim);color:#fff}
.btn:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.btn-primary{background:var(--ink);color:#07080a;border-color:var(--ink)}
.btn-primary:hover,.btn-primary:focus-visible{background:#fff;color:#07080a;border-color:#fff}
.btn[aria-disabled="true"]{color:var(--ink-3);cursor:default;background:var(--bg-2)}
.btn[aria-disabled="true"]:hover{background:var(--bg-2);border-color:var(--line-2);color:var(--ink-3)}

/* --- hero ----------------------------------------------------------------- */
.hero{position:relative;min-height:min(92vh,860px);display:flex;align-items:center;overflow:hidden;isolation:isolate}
.hero-bg{position:absolute;inset:0;z-index:-2}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:center 42%}
/* Two washes: one sinks the plate so text stays legible, one fades the bottom
   edge into the next section so the image has no visible seam. */
.hero-bg::after{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(120% 80% at 50% 45%,transparent 0%,rgba(7,8,10,.55) 55%,rgba(7,8,10,.92) 100%),
    linear-gradient(180deg,rgba(7,8,10,.7) 0%,transparent 22%,transparent 62%,var(--bg) 100%);
}
.hero-inner{position:relative;width:100%;padding-block:120px 96px;text-align:center}
.wordmark{display:block;width:min(680px,84vw);margin:0 auto 2.25rem;filter:drop-shadow(0 8px 40px rgba(0,0,0,.6))}
.wordmark img{display:block;width:100%;height:auto}
.hero .lead{margin:0 auto;text-align:center;color:var(--ink-2)}
.hero-actions{display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center;margin-top:2.5rem}
.hero-meta{
  margin-top:3.5rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-3);
}

/* --- panels --------------------------------------------------------------- */
.cut{
  background:var(--bg-2);border:1px solid var(--line);
  clip-path:polygon(var(--cut-m) 0,100% 0,100% calc(100% - var(--cut-m)),calc(100% - var(--cut-m)) 100%,0 100%,0 var(--cut-m));
}
.grid{display:grid;gap:1px;background:var(--line)}
.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(17rem,1fr))}
.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(22rem,1fr))}
.cell{background:var(--bg-2);padding:1.9rem 1.7rem}
.cell .n{
  font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;color:var(--cyan);
  display:block;margin-bottom:1rem;
}
.cell h3{margin-bottom:.55rem}
.cell p{font-size:.94rem;margin:0}

/* --- feature (the product) ------------------------------------------------ */
.feature{display:grid;gap:0;grid-template-columns:1fr;border:1px solid var(--line);background:var(--bg-2)}
@media (min-width:900px){.feature{grid-template-columns:1.05fr .95fr}}
.feature-body{padding:2.4rem 2.2rem;display:flex;flex-direction:column;justify-content:center}
.feature-shot{position:relative;background:var(--bg-3);border-top:1px solid var(--line);overflow:hidden}
@media (min-width:900px){.feature-shot{border-top:0;border-left:1px solid var(--line)}}
.feature-shot img{width:100%;height:100%;object-fit:cover;min-height:240px}
.feature .tagrow{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 1.6rem}
.tag{
  font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);border:1px solid var(--line-2);padding:.32rem .6rem;
}
.price-line{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;margin-bottom:1.5rem}
.price-line .amt{font-family:var(--display);font-size:1.9rem;font-weight:700;letter-spacing:-.02em}
.price-line .note{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}

/* --- contact -------------------------------------------------------------- */
.contact{text-align:center}
.contact .mail{
  font-family:var(--display);font-size:clamp(1.3rem,3.6vw,2.1rem);font-weight:700;
  letter-spacing:-.02em;text-decoration:none;color:var(--ink);
  border-bottom:1px solid var(--line-2);padding-bottom:.15rem;transition:border-color .18s ease,color .18s ease;
}
.contact .mail:hover,.contact .mail:focus-visible{color:#fff;border-color:var(--cyan)}

/* --- footer --------------------------------------------------------------- */
footer{border-top:1px solid var(--line);padding-block:2.5rem;background:var(--bg)}
footer .wrap{display:flex;flex-wrap:wrap;gap:.75rem 2rem;align-items:center}
footer .mark{width:26px;opacity:.7;flex:none}
footer a,footer span{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;color:var(--ink-3);text-decoration:none}
footer a:hover,footer a:focus-visible{color:var(--ink)}
footer .spacer{margin-left:auto}

/* --- skip link ------------------------------------------------------------ */
.skip{position:absolute;left:-9999px}
.skip:focus{left:1rem;top:1rem;z-index:10;background:var(--ink);color:#07080a;padding:.6rem 1rem;font-family:var(--mono);font-size:.75rem}

/* ==========================================================================
   Product page
   ========================================================================= */
.product-hero{padding-block:120px 60px}
.product-hero h1{margin-bottom:1.5rem}
.back{
  display:inline-block;font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3);text-decoration:none;margin-bottom:2.5rem;
}
.back:hover,.back:focus-visible{color:var(--cyan)}
.shot{margin:2.5rem 0 0;border:1px solid var(--line);background:var(--bg-2)}
.shot img{width:100%}
.shot figcaption{padding:.75rem 1rem;font-family:var(--mono);font-size:.7rem;color:var(--ink-3);border-top:1px solid var(--line)}

.buy{display:flex;flex-wrap:wrap;align-items:center;gap:1.5rem;margin:2rem 0}
.price{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}
.price .now{font-family:var(--display);font-size:2.1rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.price .tag{border:0;padding:0;color:var(--ink-3)}

/* The offer is styled BELOW the price on purpose. Both windows close; €14.99 is
   what the plugin costs. Styling the offer as the price dates the page. */
.offer{border:1px solid var(--line);border-left:2px solid var(--cyan);background:var(--bg-2);padding:1.15rem 1.3rem;margin:0 0 2rem;max-width:46rem}
.offer p{margin:0;font-size:.93rem;color:var(--ink-2)}
.offer p strong{color:var(--ink);font-weight:600}
.offer .offer-when{margin-top:.55rem;font-size:.85rem;color:var(--ink-3)}

ul.checks{list-style:none;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);
  grid-template-columns:repeat(auto-fit,minmax(18rem,1fr))}
ul.checks li{background:var(--bg-2);padding:1.15rem 1.3rem;color:var(--ink-3);font-size:.93rem}
ul.checks li strong{display:block;color:var(--ink);font-weight:500;margin-bottom:.25rem;font-family:var(--body)}

ul.plain{list-style:none;display:flex;flex-direction:column;gap:.5rem;color:var(--ink-3)}
ul.plain li::before{content:"—  ";color:var(--cyan)}

.skills{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 0;max-width:none}
.skills code{background:var(--bg-3);border:1px solid var(--line-2);padding:.36rem .7rem;
  font-family:var(--mono);font-size:.74rem;color:var(--ink-2)}
.unsupported{margin-top:1rem}
.seealso{margin-top:1.1rem;font-size:.93rem}
.product a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.product a:hover,.product a:focus-visible{text-decoration-color:var(--cyan)}
code{font-family:var(--mono);font-size:.9em}

dl.faq{margin:0}
dl.faq dt{font-family:var(--display);font-weight:600;font-size:1rem;color:var(--ink);margin-top:1.6rem}
dl.faq dt:first-child{margin-top:0}
dl.faq dd{margin:.4rem 0 0;color:var(--ink-3);max-width:68ch}

.doclinks{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}
.doclinks a{background:var(--bg-2);padding:1.25rem 1.3rem;text-decoration:none;display:block;transition:background .18s ease}
.doclinks a:hover,.doclinks a:focus-visible{background:var(--bg-3)}
.doclinks .name{display:block;font-family:var(--display);font-weight:600;color:var(--ink);margin-bottom:.2rem}
.doclinks .where{display:block;font-size:.82rem;color:var(--ink-3)}

.closing{border-top:1px solid var(--line);padding-top:2.5rem;margin-top:1rem}
.fineprint{font-size:.87rem}

/* ==========================================================================
   Generated documentation pages
   ========================================================================= */
.doc{max-width:60rem;margin-inline:auto;padding-block:80px 40px}
.doc h1{font-size:clamp(1.9rem,5vw,2.6rem);margin-bottom:2rem}
.doc h2{font-size:1.2rem;margin:2.75rem 0 .85rem}
.doc h3{font-size:1rem;margin:1.9rem 0 .5rem}
.doc p{margin-bottom:1rem;max-width:70ch}
.doc ul{margin:0 0 1.15rem 1.15rem;color:var(--ink-3)}
.doc li{margin-bottom:.35rem}
.doc code{background:var(--bg-3);border:1px solid var(--line);padding:.08em .38em;color:var(--ink-2);font-size:.86em}
.doc pre{background:var(--bg-2);border:1px solid var(--line);padding:1.1rem;overflow-x:auto;margin:0 0 1.35rem}
.doc pre code{background:none;border:0;padding:0;font-size:.82rem;line-height:1.65}
.doc a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.doc a:hover{text-decoration-color:var(--cyan)}
/* Wide tables scroll inside their own box; the page never scrolls sideways. */
.tw{overflow-x:auto;margin:0 0 1.6rem;border:1px solid var(--line)}
.doc table{border-collapse:collapse;width:100%;font-size:.85rem;min-width:34rem}
.doc th,.doc td{text-align:left;padding:.65rem .85rem;border-bottom:1px solid var(--line);vertical-align:top}
.doc th{background:var(--bg-3);color:var(--ink);font-weight:600;white-space:nowrap;font-family:var(--body)}
.doc td{color:var(--ink-3)}
.doc tbody tr:last-child td{border-bottom:0}
.doc td code{white-space:normal}

/* ==========================================================================
   404
   ========================================================================= */
.mid{min-height:70vh;display:flex;flex-direction:column;justify-content:center}
