:root{
  --bg:#0d0d0d;
  --paper:#161616;
  --paper-2:#1f1f1f;
  --ink:#ededed;
  --ink-dim:#9a9a9a;
  --line:#2a2a2a;
  --accent:#ffb300;
  --accent-2:#ff5722;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{
  background:radial-gradient(ellipse at top, #1a1a1a 0%, #050505 70%);
  color:var(--ink);
  font-family:'Manrope',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  overflow-x:hidden;
}

/* CONTROL BAR */
.control-bar{
  position:fixed;top:0;left:0;right:0;z-index:100;
  padding:12px 20px;
  background:rgba(13,13,13,.85);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
}
.brand-area{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.brand{font-family:'Bebas Neue',sans-serif;font-size:24px;letter-spacing:.04em}
.brand span{color:var(--accent)}
.brand-tag{
  color:var(--ink-dim);font-size:11px;letter-spacing:.18em;
  font-family:'JetBrains Mono',monospace;text-transform:uppercase;
}
.controls{display:flex;align-items:center;gap:8px}
.ctrl-btn{
  background:var(--paper);color:var(--ink);
  border:1px solid var(--line);
  padding:8px 14px;border-radius:6px;cursor:pointer;
  font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  transition:all .2s ease;
  display:inline-flex;align-items:center;gap:6px;
}
.ctrl-btn:hover{background:var(--paper-2);border-color:var(--accent);color:var(--accent)}
.ctrl-btn:disabled{opacity:.3;cursor:not-allowed}
.ctrl-btn-pdf{background:rgba(255,179,0,.1);border-color:rgba(255,179,0,.4);color:var(--accent)}
.ctrl-btn-pdf:hover{background:var(--accent);color:#000}

/* OVERLAYS */
.loading-overlay{
  position:fixed;inset:0;z-index:150;
  background:var(--bg);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;
  transition:opacity .3s ease;
}
.loading-overlay.hide{opacity:0;pointer-events:none}
.pdf-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(5,5,5,.92);backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;flex-direction:column;gap:24px;
}
.pdf-overlay.active{display:flex}
.pdf-spinner{
  width:64px;height:64px;border:3px solid var(--line);
  border-top-color:var(--accent);border-radius:50%;
  animation:spin 1s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.pdf-status{
  font-family:'JetBrains Mono',monospace;font-size:13px;letter-spacing:.15em;
  color:var(--ink);text-transform:uppercase;text-align:center;
}
.pdf-status b{color:var(--accent);font-weight:700}
.pdf-progress-bar{width:280px;height:4px;background:var(--line);border-radius:99px;overflow:hidden}
.pdf-progress-bar-fill{height:100%;width:0;background:var(--accent);transition:width .3s ease}

.pdf-stage{
  position:fixed;left:-99999px;top:0;
  width:794px;
  pointer-events:none;
  z-index:-1;
}
.pdf-stage .page{
  width:794px !important;
  height:1123px !important;
  overflow:hidden;
  position:relative;
  box-sizing:border-box;
}
.page-info{
  font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.15em;color:var(--ink-dim);
  min-width:80px;text-align:center;
}
.page-info b{color:var(--accent)}

.stage{
  padding:90px 20px 40px;
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
}
#book{
  margin:0 auto;
  box-shadow:0 40px 80px -20px rgba(0,0,0,.8), 0 0 0 1px rgba(255,255,255,.04);
}

/* PAGE BASE */
.page{
  background:var(--paper);
  color:var(--ink);
  padding:32px 30px;
  overflow:hidden;
  position:relative;
  font-family:'Manrope',sans-serif;
  display:flex;
  flex-direction:column;
}
.page.page-full{padding:0}
.page.page-full .pg-num,
.page.page-full .pg-brand{z-index:5}
.page::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='.5'/></svg>");
  opacity:.04;mix-blend-mode:overlay;
}
.pg-num{
  position:absolute;bottom:14px;
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;
  color:var(--ink-dim);
}
.pg-num.left{left:30px}
.pg-num.right{right:30px}
.pg-brand{
  position:absolute;top:14px;
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;
  color:var(--ink-dim);text-transform:uppercase;
}
.pg-brand.left{left:30px}
.pg-brand.right{right:30px}

.page.--hard{background:linear-gradient(135deg,#0a0a0a,#1a1a1a)}

/* COVER */
.cover{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 80% 20%, rgba(255,179,0,.18), transparent 50%),
    linear-gradient(180deg,#0d0d0d 0%, #050505 100%);
  display:flex;flex-direction:column;
  padding:42px 36px 32px;
  overflow:hidden;
  z-index:1;
}
.cover-top{
  display:flex;justify-content:space-between;align-items:flex-start;
  position:relative;z-index:2;margin-bottom:auto;
}
.cover-mid{position:relative;z-index:2;padding:32px 0}
.cover-mid::after{
  content:"";display:block;width:60px;height:2px;background:var(--accent);
  margin-top:24px;
}
.cover::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(45deg,transparent 0 18px,rgba(255,255,255,.015) 18px 19px);
}
.cover-eyebrow{
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.25em;
  color:var(--accent);text-transform:uppercase;
  border:1px solid rgba(255,179,0,.3);padding:6px 10px;border-radius:99px;
  background:rgba(255,179,0,.05);
}
.cover-year{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.1em;color:var(--ink-dim)}
.cover-title{
  font-family:'Bebas Neue',sans-serif;
  font-size:88px;
  line-height:.85;letter-spacing:-.01em;
  text-transform:uppercase;color:var(--ink);position:relative;z-index:2;
}
@media (max-width:768px){.cover-title{font-size:64px}}
.cover-title em{font-style:normal;color:var(--accent);display:block}
.cover-bottom{
  position:relative;z-index:2;border-top:1px solid var(--line);padding-top:20px;
  display:flex;justify-content:space-between;align-items:flex-end;
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;color:var(--ink-dim);text-transform:uppercase;
  margin-top:auto;
}
.cover-bottom b{font-family:'Bebas Neue',sans-serif;font-size:32px;letter-spacing:.05em;color:var(--ink);display:block;margin-top:4px;font-weight:400}

/* ABOUT */
.about-page h2{font-family:'Bebas Neue',sans-serif;font-size:64px;line-height:.9;margin-bottom:8px}
.about-page .lead{
  color:var(--accent);font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.25em;
  text-transform:uppercase;margin-bottom:24px;
}
.about-page p{color:var(--ink-dim);line-height:1.7;font-size:13px;margin-bottom:14px}
.stats-mini{
  display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);
  border:1px solid var(--line);margin-top:24px;
}
.stat-mini{padding:18px;background:var(--paper-2)}
.stat-mini .num{font-family:'Bebas Neue',sans-serif;font-size:42px;line-height:1;color:var(--accent)}
.stat-mini .lbl{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-dim);margin-top:6px}

.feat-list{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line)}
.feat-row{padding:18px;background:var(--paper-2);display:flex;gap:14px;align-items:flex-start}
.feat-row .ic{width:28px;height:28px;color:var(--accent);flex-shrink:0;margin-top:2px}
.feat-row h4{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:.02em;margin-bottom:4px;font-weight:400}
.feat-row p{color:var(--ink-dim);font-size:11px;line-height:1.5;margin:0}

/* STANDARDS */
.std-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:14px}
.std-cell{padding:11px 12px;background:var(--paper-2)}
.std-cell .lvl{font-family:'Bebas Neue',sans-serif;font-size:30px;line-height:.9;color:var(--accent);margin-bottom:3px;font-weight:400}
.std-cell .desc{color:var(--ink-dim);font-size:10px;line-height:1.45}

/* CATEGORY DIVIDER */
.cat-divider{
  position:absolute;inset:0;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:36px 32px;
  background:linear-gradient(180deg,var(--paper) 0%,var(--paper-2) 100%);
  overflow:hidden;
  z-index:1;
}
.cat-divider .num-big{
  font-family:'Bebas Neue',sans-serif;font-size:170px;line-height:.8;
  color:transparent;-webkit-text-stroke:1px var(--accent);
  letter-spacing:-.02em;align-self:flex-end;
}
.cat-divider h2{
  font-family:'Bebas Neue',sans-serif;font-size:72px;line-height:.85;letter-spacing:.01em;text-transform:uppercase;
}
.cat-divider .meta{
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);margin-bottom:10px;
}
.cat-divider p{
  color:var(--ink-dim);line-height:1.6;font-size:12px;max-width:90%;
  border-left:2px solid var(--accent);padding-left:12px;margin-top:14px;
}
.cat-divider .product-count{
  font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--ink-dim);
  letter-spacing:.2em;text-transform:uppercase;
  border-top:1px solid var(--line);padding-top:12px;
}
.cat-divider .product-count strong{color:var(--accent);font-size:28px;font-family:'Bebas Neue',sans-serif;letter-spacing:.02em;display:block;margin-top:2px;font-weight:400}

/* PRODUCT GRID */
.cat-page-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  margin-top:24px;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--line);
  flex-shrink:0;
}
.cat-page-head .ttl{font-family:'Bebas Neue',sans-serif;font-size:24px;letter-spacing:.02em;font-weight:400}
.cat-page-head .pn{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.2em;color:var(--ink-dim);text-transform:uppercase}

.prod-list{
  display:flex;flex-direction:column;gap:14px;
  flex:1;min-height:0;
  padding-bottom:20px;
}
.prod-row{
  display:grid;
  grid-template-columns: 1fr 1.4fr;
  gap:16px;
  background:var(--paper-2);
  border:1px solid var(--line);
  padding:14px;
  position:relative;
  flex:1;min-height:0;
}
.prod-list .prod-row:nth-child(even){grid-template-columns: 1.4fr 1fr}
.prod-list .prod-row:nth-child(even) .visual{grid-column:2;grid-row:1}
.prod-list .prod-row:nth-child(even) .info{grid-column:1;grid-row:1}

.prod-row .visual{
  width:100%;height:100%;min-height:0;
  background:linear-gradient(135deg,#1a1a1a,#0a0a0a);
  border:1px solid var(--line);
  display:grid;place-items:center;
  position:relative;overflow:hidden;
}
.prod-row .visual::after{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(45deg,transparent 0 10px,rgba(255,255,255,.015) 10px 11px);
  pointer-events:none;
}
.prod-row .visual .boot{width:75%;color:var(--ink-dim)}
.prod-row .visual .prod-img{
  width:100%;height:100%;object-fit:contain;
  padding:6%;
  position:relative;z-index:2;
}

.prod-row .info{display:flex;flex-direction:column;gap:6px;min-width:0;justify-content:center}
.prod-row .code{
  font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.2em;
  color:var(--accent);text-transform:uppercase;
}
.prod-row .name{
  font-family:'Bebas Neue',sans-serif;font-size:24px;line-height:1;letter-spacing:.02em;
  font-weight:400;color:var(--ink);
}
.prod-row .std{
  font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.15em;
  color:var(--ink-dim);text-transform:uppercase;
  padding:5px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  margin:4px 0;
}
.prod-row .std b{color:var(--accent);font-weight:700}
.prod-row ul{list-style:none;padding:0;margin:2px 0;display:flex;flex-direction:column;gap:4px}
.prod-row ul li{
  font-size:10.5px;color:var(--ink);line-height:1.45;
  padding-left:11px;position:relative;
}
.prod-row ul li::before{
  content:"";position:absolute;left:0;top:8px;
  width:6px;height:1px;background:var(--accent);
}
.prod-row ul li b{color:var(--ink-dim);font-weight:600;font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.05em}

/* Product description (HTML from OpenCart product description) */
.prod-row .prod-desc{
  font-size:10.5px;color:var(--ink);line-height:1.5;
  margin:6px 0 4px;
  max-height:170px;overflow:hidden;
}
.prod-row .prod-desc p{margin:0 0 6px;color:var(--ink)}
.prod-row .prod-desc p:last-child{margin-bottom:0}
.prod-row .prod-desc strong,
.prod-row .prod-desc b{color:var(--accent);font-weight:700}
.prod-row .prod-desc em,
.prod-row .prod-desc i{font-style:italic;color:var(--ink-dim)}
.prod-row .prod-desc h1,
.prod-row .prod-desc h2,
.prod-row .prod-desc h3,
.prod-row .prod-desc h4,
.prod-row .prod-desc h5,
.prod-row .prod-desc h6{
  font-family:'Bebas Neue',sans-serif;font-weight:400;letter-spacing:.02em;
  color:var(--ink);margin:6px 0 4px;line-height:1.05;
}
.prod-row .prod-desc h1{font-size:18px}
.prod-row .prod-desc h2{font-size:16px}
.prod-row .prod-desc h3{font-size:14px}
.prod-row .prod-desc h4,
.prod-row .prod-desc h5,
.prod-row .prod-desc h6{font-size:12px}
.prod-row .prod-desc ul,
.prod-row .prod-desc ol{
  list-style:none;padding:0;margin:4px 0;
  display:flex;flex-direction:column;gap:3px;
}
.prod-row .prod-desc ul li,
.prod-row .prod-desc ol li{
  font-size:10px;color:var(--ink);line-height:1.4;
  padding-left:11px;position:relative;
}
.prod-row .prod-desc ul li::before,
.prod-row .prod-desc ol li::before{
  content:"";position:absolute;left:0;top:7px;
  width:6px;height:1px;background:var(--accent);
}
.prod-row .prod-desc a{color:var(--accent);text-decoration:underline}
.prod-row .prod-desc img{max-width:100%;height:auto}
.prod-row .prod-desc table{border-collapse:collapse;font-size:10px;margin:4px 0}
.prod-row .prod-desc table td,
.prod-row .prod-desc table th{
  border:1px solid var(--line);padding:3px 6px;color:var(--ink);
}

.prod-row .specs{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto;padding-top:8px}
.spec{
  font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.1em;
  padding:3px 6px;border:1px solid var(--line);color:var(--ink-dim);border-radius:2px;
  text-transform:uppercase;background:var(--paper);
}
.spec.hl{color:var(--accent);border-color:rgba(255,179,0,.4);background:rgba(255,179,0,.05)}

/* CONTACT */
.contact-page h2{font-family:'Bebas Neue',sans-serif;font-size:48px;line-height:.85;margin-bottom:6px;font-weight:400}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:14px}
.contact-grid .full{grid-column:1 / -1}
.contact-block{padding:14px;background:var(--paper-2)}
.contact-block h5{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.2em;color:var(--accent);text-transform:uppercase;margin-bottom:8px}
.contact-block p,.contact-block a{color:var(--ink);font-size:12px;line-height:1.5;display:block}
.contact-block a:hover{color:var(--accent)}
.contact-block .dim{color:var(--ink-dim);font-size:11px}
.contact-cta{
  margin-top:14px;padding:18px;
  background:linear-gradient(135deg,rgba(255,179,0,.08),rgba(255,87,34,.04));
  border:1px solid rgba(255,179,0,.25);
}
.contact-cta .lbl{font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.2em;color:var(--accent);text-transform:uppercase;margin-bottom:6px}
.contact-cta p{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:.02em;color:var(--ink);font-weight:400;line-height:1.1}

/* BACK COVER */
.back-cover{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 20% 80%, rgba(255,179,0,.15), transparent 50%),
    #050505;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:42px 36px 32px;
  overflow:hidden;
  z-index:1;
}
.back-cover::before{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(-45deg,transparent 0 18px,rgba(255,255,255,.012) 18px 19px);
}
.back-cover .bc-mark{
  font-family:'Bebas Neue',sans-serif;font-size:80px;line-height:.85;letter-spacing:-.01em;
  position:relative;z-index:2;
}
.back-cover .bc-mark span{color:var(--accent)}
.back-cover .bc-tag{
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.25em;color:var(--accent);text-transform:uppercase;margin-top:8px;
  position:relative;z-index:2;
}
.back-cover .bc-foot{
  position:relative;z-index:2;font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.18em;color:var(--ink-dim);text-transform:uppercase;
  border-top:1px solid var(--line);padding-top:14px;
}

/* HINT */
.hint{
  position:fixed;bottom:20px;left:50%;transform:translateX(-50%);
  background:rgba(13,13,13,.85);backdrop-filter:blur(8px);
  border:1px solid var(--line);border-radius:99px;
  padding:8px 16px;color:var(--ink-dim);
  font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.15em;text-transform:uppercase;
  z-index:50;
  animation:fadeOut 1s ease forwards;animation-delay:5s;
}
@keyframes fadeOut{to{opacity:0;visibility:hidden}}

@media (max-width:680px){
  .control-bar{padding:10px 12px;gap:8px}
  .brand{font-size:18px}
  .ctrl-btn{padding:6px 10px;font-size:10px}
  .stage{padding:80px 8px 30px}
}

@media (max-width:768px){
  .page{padding:24px 22px}
  .pg-num.left, .pg-num{left:22px}
  .pg-num.right{right:22px}
  .pg-brand.left, .pg-brand{left:22px}
  .pg-brand.right{right:22px}

  .about-page h2{font-size:44px}
  .feat-row{padding:12px}
  .feat-row h4{font-size:15px}
  .feat-row p{font-size:10px}

  .stat-mini{padding:14px}
  .stat-mini .num{font-size:32px}

  .std-cell{padding:9px 10px}
  .std-cell .lvl{font-size:24px}
  .std-cell .desc{font-size:9px}

  .cat-divider{padding:28px 24px}
  .cat-divider h2{font-size:54px}
  .cat-divider .num-big{font-size:130px}
  .cat-divider p{font-size:11px}

  .cat-page-head .ttl{font-size:18px}
  .prod-row{padding:10px;gap:10px}
  .prod-row .name{font-size:18px}
  .prod-row .code{font-size:8px}
  .prod-row .std{font-size:8px}
  .prod-row ul li{font-size:9px}
  .prod-row ul li b{font-size:8px}
  .prod-row .prod-desc{font-size:9px;max-height:120px}
  .spec{font-size:7px;padding:2px 4px}

  .contact-page h2{font-size:38px}
  .contact-block{padding:11px}
  .contact-block p,.contact-block a{font-size:11px}
  .contact-cta p{font-size:18px}

  .back-cover .bc-mark{font-size:64px}
  .cover-bottom b{font-size:24px}
}
