/* ============================================================
   DNX AGENCY — Brand Guidelines 2026
   Design system stylesheet
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Bai+Jamjuree:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-ExtraLight.otf') format('opentype');font-weight:200;font-style:normal;font-display:swap;}
@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-Light.otf') format('opentype');font-weight:300;font-style:normal;font-display:swap;}
@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-Regular.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-Semibold.otf') format('opentype');font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-Bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'Conthrax';src:url('fonts/Conthrax-Heavy.otf') format('opentype');font-weight:800;font-style:normal;font-display:swap;}

:root{
  /* Core palette */
  --void:#000000;
  --abyss:#001B68;
  --blue:#0626F5;
  --ice:#EAF2F9;
  --white:#FFFFFF;

  /* Derived neutrals (tuned, not invented hues) */
  --ink:#05060f;
  --slate:#5a6275;
  --line:#d8e0ea;
  --line-soft:#e7edf4;
  --blue-deep:#031bb0;
  --blue-glow: oklch(0.55 0.27 264 / 0.35);

  /* Type */
  --display:'Conthrax', system-ui, sans-serif;
  --body:'Bai Jamjuree', system-ui, sans-serif;
  --mono:'JetBrains Mono', ui-monospace, monospace;

  --nav-w: 264px;
  --pad: clamp(28px, 6vw, 120px);
  --maxw: 1180px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--body);
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-size:17px;
  line-height:1.6;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}

/* ---------- Layout shell ---------- */
.shell{display:flex;align-items:flex-start;}

/* ---------- Sidebar nav ---------- */
.nav{
  position:sticky;top:0;
  width:var(--nav-w);min-width:var(--nav-w);height:100vh;
  background:var(--void);color:var(--white);
  display:flex;flex-direction:column;
  padding:34px 28px 28px;
  z-index:40;
}
.nav__brand{display:flex;align-items:center;gap:12px;margin-bottom:48px;}
.nav__brand img{width:34px;height:auto;}
.nav__brand .wm{font-family:var(--display);font-weight:500;letter-spacing:.06em;font-size:18px;}
.nav__list{display:flex;flex-direction:column;gap:2px;margin-top:4px;}
.nav__item{
  display:flex;align-items:baseline;gap:12px;
  padding:9px 10px;border-radius:2px;
  font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;
  color:#8a93ac;transition:color .18s, background .18s;
}
.nav__item .num{color:#444f78;font-size:11px;}
.nav__item:hover{color:var(--white);background:#0b0d1c;}
.nav__item.is-active{color:var(--white);background:#0b0e22;}
.nav__item.is-active .num{color:var(--blue);}
.nav__foot{margin-top:auto;font-family:var(--mono);font-size:11px;color:#4a5270;line-height:1.7;}
.nav__progress{height:2px;background:#16192e;border-radius:2px;margin:22px 0 16px;overflow:hidden;}
.nav__progress > i{display:block;height:100%;width:0;background:var(--blue);transition:width .1s linear;}

/* ---------- Content ---------- */
.content{flex:1;min-width:0;}
.section{padding:clamp(64px,9vw,128px) var(--pad);scroll-margin-top:0;border-bottom:1px solid var(--line-soft);}
.section--tight{padding-top:clamp(40px,5vw,72px);}
.wrap{max-width:var(--maxw);margin:0 auto;}

/* Section kicker / heading */
.kicker{
  font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--blue);display:flex;align-items:center;gap:14px;margin:0 0 26px;
}
.kicker::before{content:"";width:32px;height:2px;background:var(--blue);display:inline-block;}
.kicker.on-dark{color:#5b7bff;}
.kicker.on-dark::before{background:#5b7bff;}

h1,h2,h3,h4{font-family:var(--display);font-weight:400;line-height:1.1;margin:0;letter-spacing:.012em;text-transform:uppercase;}
.h-display{font-size:clamp(38px,6.2vw,82px);font-weight:600;letter-spacing:.008em;}
.h-section{font-size:clamp(30px,4.4vw,52px);font-weight:600;margin-bottom:22px;letter-spacing:.01em;}
.h-sub{font-size:clamp(18px,2.1vw,24px);font-weight:600;margin-bottom:14px;letter-spacing:.012em;}
.lede{font-size:clamp(18px,2vw,22px);line-height:1.5;max-width:62ch;color:#222637;}
.body-col{max-width:64ch;}
.muted{color:var(--slate);}
.mono-note{font-family:var(--mono);font-size:12.5px;color:var(--slate);letter-spacing:.01em;}
strong{font-weight:600;}

/* Chamfer utility echoing logotype cut corners */
.chamfer{clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);}
.chamfer-sm{clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);}

/* ---------- Dark sections ---------- */
.section.dark{background:var(--void);color:var(--white);border-bottom:none;}
.section.navy{background:var(--abyss);color:var(--white);border-bottom:none;}
.section.blue{background:var(--blue);color:var(--white);border-bottom:none;}
.dark .lede,.navy .lede{color:#c3cbe0;}
.dark .muted,.navy .muted{color:#8b94ae;}

/* ---------- Cover ---------- */
.cover{
  min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;
  background:var(--void);color:var(--white);position:relative;overflow:hidden;
  padding:clamp(40px,5vw,72px) var(--pad);
}
.cover__grid{position:absolute;inset:0;
  background-image:linear-gradient(#ffffff0d 1px,transparent 1px),linear-gradient(90deg,#ffffff0d 1px,transparent 1px);
  background-size:64px 64px;mask-image:radial-gradient(ellipse 90% 70% at 70% 40%,#000 30%,transparent 100%);
  pointer-events:none;}
.cover__top{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:12px;letter-spacing:.15em;color:#7c86a6;position:relative;}
.cover__mid{position:relative;display:flex;align-items:center;gap:clamp(24px,5vw,72px);flex-wrap:wrap;}
.cover__mark{width:clamp(140px,20vw,300px);filter:drop-shadow(0 0 60px var(--blue-glow));}
.cover__title{font-family:var(--display);font-weight:600;font-size:clamp(40px,7.6vw,118px);line-height:1;letter-spacing:.004em;text-transform:uppercase;}
.cover__title .row2{color:var(--blue);}
.cover__bottom{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;}
.cover__bottom .yr{font-family:var(--display);font-weight:600;font-size:clamp(40px,7vw,96px);line-height:.9;letter-spacing:.006em;}
.cover__lede{max-width:40ch;color:#aab2cc;font-size:clamp(15px,1.5vw,18px);}

/* ---------- Grids & cards ---------- */
.grid{display:grid;gap:24px;}
.cols-2{grid-template-columns:repeat(2,1fr);}
.cols-3{grid-template-columns:repeat(3,1fr);}
.cols-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:860px){.cols-2,.cols-3,.cols-4{grid-template-columns:1fr;}}

.card{background:var(--white);border:1px solid var(--line);border-radius:3px;}
.tile{position:relative;display:flex;align-items:center;justify-content:center;border-radius:3px;overflow:hidden;}
.tile.checker{
  background-color:#f3f6fa;
  background-image:
    linear-gradient(45deg,#e3e9f1 25%,transparent 25%,transparent 75%,#e3e9f1 75%),
    linear-gradient(45deg,#e3e9f1 25%,transparent 25%,transparent 75%,#e3e9f1 75%);
  background-size:22px 22px;background-position:0 0,11px 11px;
}

/* ---------- Color swatches ---------- */
.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border:1px solid var(--line);border-radius:3px;overflow:hidden;}
@media(max-width:760px){.swatches{grid-template-columns:repeat(2,1fr);} }
.swatch{padding:26px 22px;min-height:240px;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;position:relative;border-right:1px solid #ffffff14;}
.swatch:last-child{border-right:none;}
.swatch .nm{font-family:var(--display);font-weight:600;font-size:17px;}
.swatch .role{font-family:var(--mono);font-size:11px;letter-spacing:.06em;opacity:.7;margin-bottom:12px;}
.swatch .hex{font-family:var(--mono);font-size:13px;letter-spacing:.04em;}
.swatch .meta{font-family:var(--mono);font-size:10.5px;opacity:.6;line-height:1.5;margin-top:2px;}
.swatch.brd{box-shadow:inset 0 0 0 1px var(--line);}

/* ---------- Spec rows ---------- */
.spec{display:flex;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid var(--line-soft);font-family:var(--mono);font-size:13px;}
.spec dt{color:var(--slate);}
.spec dd{margin:0;color:var(--ink);text-align:right;}

/* ---------- Do / Don't ---------- */
.dd{border:1px solid var(--line);border-radius:3px;overflow:hidden;background:var(--white);}
.dd__head{display:flex;align-items:center;gap:10px;padding:12px 16px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line-soft);}
.dd__head .dot{width:9px;height:9px;border-radius:50%;}
.dd--do .dot{background:var(--blue);}
.dd--no .dot{background:#d11;}
.dd--do .dd__head{color:var(--blue-deep);}
.dd--no .dd__head{color:#b00;}
.dd__body{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;background:#f6f8fc;padding:24px;}

/* ---------- Type specimen ---------- */
.specimen{border:1px solid var(--line);border-radius:3px;padding:30px;background:var(--white);}
.specimen .glyphs{font-family:var(--display);font-weight:600;font-size:clamp(40px,6vw,76px);line-height:1.05;letter-spacing:.008em;}
.scale-row{display:flex;align-items:baseline;gap:20px;padding:14px 0;border-bottom:1px solid var(--line-soft);}
.scale-row .lbl{font-family:var(--mono);font-size:11px;color:var(--slate);width:120px;min-width:120px;}
.scale-row .ex{font-family:var(--display);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ---------- Mark anatomy / construction ---------- */
.construct{position:relative;background:#f6f8fc;border:1px solid var(--line);border-radius:3px;padding:48px;display:flex;justify-content:center;align-items:center;}
.construct__grid{position:absolute;inset:0;background-image:linear-gradient(#0626f510 1px,transparent 1px),linear-gradient(90deg,#0626f510 1px,transparent 1px);background-size:32px 32px;}

/* ---------- Voice ---------- */
.voice-pair{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-radius:3px;overflow:hidden;}
@media(max-width:760px){.voice-pair{grid-template-columns:1fr;}}
.voice-pair > div{padding:22px 24px;}
.voice-pair .we{background:var(--white);}
.voice-pair .not{background:#fafbfd;border-left:1px solid var(--line-soft);color:var(--slate);}
.voice-pair h5{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px;}
.voice-pair .we h5{color:var(--blue);}
.voice-pair .not h5{color:#9aa3b8;}

/* ---------- Applications ---------- */
.bizcard{aspect-ratio:1.75/1;border-radius:6px;padding:26px;display:flex;flex-direction:column;justify-content:space-between;}
.placeholder{
  position:relative;border:1px dashed #b7c2d4;border-radius:3px;
  background:repeating-linear-gradient(45deg,#eef2f8,#eef2f8 10px,#e6ecf5 10px,#e6ecf5 20px);
  display:flex;align-items:center;justify-content:center;
}
.placeholder span{font-family:var(--mono);font-size:11px;color:#8893a8;letter-spacing:.05em;background:#ffffffcc;padding:4px 9px;border-radius:2px;}

/* pills */
.pill{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.05em;padding:6px 12px;border:1px solid var(--line);border-radius:999px;color:var(--slate);}

/* footer */
.foot{background:var(--void);color:var(--white);padding:clamp(48px,7vw,96px) var(--pad);}
.foot a.big{font-family:var(--display);font-weight:600;font-size:clamp(24px,3.4vw,42px);letter-spacing:.005em;display:inline-block;}
.foot a.big:hover{color:var(--blue);}

/* responsive: collapse sidebar */
@media(max-width:900px){
  .shell{flex-direction:column;}
  .nav{position:sticky;top:0;flex-direction:row;width:100%;min-width:0;height:auto;align-items:center;padding:14px 20px;gap:16px;}
  .nav__brand{margin:0;}
  .nav__list,.nav__progress,.nav__foot{display:none;}
}

/* ============================================================
   Color section — palette swatches in Bai Jamjuree (per request);
   headings/labels stay on the global type system
   ============================================================ */
#color .swatches, #color .swatches *{font-family:var(--body) !important;}
#color .swatch .nm{font-weight:600;}
#color .swatch .role,#color .swatch .hex,#color .swatch .meta{letter-spacing:.02em;}

/* color combination cards */
.combos{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
@media(max-width:860px){.combos{grid-template-columns:repeat(2,1fr);}}
.combo{aspect-ratio:4/3;border-radius:4px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff14;}
.combo .aa{font-family:var(--display);font-weight:600;font-size:34px;line-height:1;letter-spacing:.01em;}
.combo .lbl{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;opacity:.85;}

/* ============================================================
   Brand patterns — recognizable textures from the mark
   ============================================================ */
.pattern{position:relative;min-height:282px;border-radius:4px;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.pattern .tag,.surface .tag{position:absolute;left:16px;bottom:14px;z-index:3;}
.pattern .tag.tr,.surface .tag.tr{left:auto;right:16px;bottom:auto;top:14px;}

/* ============================================================
   Surface textures — all derived from the X mark's geometry
   (mark angle ≈ 27° from horizontal; built from its strokes)
   ============================================================ */

/* A — X LATTICE: thin crossing hairlines locked to the mark's ±27° angle */
.pat-xlat{background-color:#05060f;
  background-image:
    repeating-linear-gradient(27deg,#3f5cff 0 1px,transparent 1px 32px),
    repeating-linear-gradient(153deg,#3f5cff 0 1px,transparent 1px 32px);}

/* B — X STROKE: thin parallel hairlines along the mark's arm angle */
.pat-xstroke{background-color:var(--blue);
  background-image:repeating-linear-gradient(153deg,#ffffff40 0 1px,transparent 1px 24px);}

/* C — X SPEED: thin single-direction hairlines at the mark angle (motion) */
.pat-xspeed{background-color:#05060f;
  background-image:repeating-linear-gradient(153deg,#3f5cff 0 1px,transparent 1px 22px);}

/* D — X FIELD: the mark tessellated (tile bg set inline in HTML) */
.pat-mark{background-color:var(--abyss);}
.pat-mark::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 75% 75% at 50% 50%,#001b6833,#001b68f2);z-index:1;}

/* ============================================================
   Logo placement frames
   ============================================================ */
.frame{position:relative;aspect-ratio:16/9;border-radius:5px;overflow:hidden;display:flex;}
.frame .safe{position:absolute;inset:9%;border:1px dashed #ffffff45;border-radius:2px;pointer-events:none;z-index:2;}
.frame .safe.dk{border-color:#0626f540;}
.frame .ph-photo{position:absolute;inset:0;background:repeating-linear-gradient(45deg,#11131f,#11131f 12px,#161a2b 12px,#161a2b 24px);}
.framecap{font-family:var(--mono);font-size:11.5px;color:var(--slate);letter-spacing:.02em;margin-top:12px;}
.framecap b{color:var(--ink);font-weight:600;}

/* application surfaces */
.surface{border-radius:6px;overflow:hidden;position:relative;}
.poster{aspect-ratio:3/4;}
.square{aspect-ratio:1/1;}
.wide{aspect-ratio:16/9;}

/* ============================================================
   Chevron framing — angular image treatment (the X as a mask)
   ============================================================ */
/* B&W photo placeholder */
.photo-bw{position:absolute;inset:0;
  background:
    linear-gradient(135deg,#9aa3b2,#3d4452 55%,#1b1f2b),
    repeating-linear-gradient(45deg,#ffffff0a 0 14px,transparent 14px 28px);
  background-blend-mode:overlay;filter:grayscale(1) contrast(1.05);}
.photo-bw.lite{background:linear-gradient(135deg,#cfd6df,#9aa3b2 60%,#6b7280);}

/* big blue chevron banner (points down) */
.chev-banner{position:absolute;background:var(--blue);
  clip-path:polygon(0 16%,50% 44%,100% 0,100% 56%,50% 84%,0 40%);}

/* equalizer line texture (thin vertical lines) */
.eq-lines{background-image:repeating-linear-gradient(90deg,#ffffff66 0 1px,transparent 1px 9px);}

/* clip a photo into the DNX mark silhouette (X / chevron hourglass) */
.mark-mask{position:relative;clip-path:polygon(0% 0%,50% 22%,100% 0%,60% 50%,100% 100%,50% 78%,0% 100%,40% 50%);}

/* chevron / triangle photo crops */
.clip-tri-up{clip-path:polygon(50% 0,100% 100%,0 100%);}
.clip-tri-down{clip-path:polygon(0 0,100% 0,50% 100%);}
.clip-chev-down{clip-path:polygon(0 0,50% 36%,100% 0,100% 100%,0 100%);}
.clip-chev-up{clip-path:polygon(0 0,100% 0,100% 100%,50% 64%,0 100%);}

/* ============================================================
   Geometric X — line constructions from the mark
   ============================================================ */
.gx{position:relative;border-radius:5px;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:250px;border:1px solid #1a1f3a;background:#05060f;}
.gx.navy{background:var(--abyss);border-color:#16204d;}
.gx .tag{position:absolute;left:16px;bottom:14px;z-index:5;}
.gx-ring{border:1.5px solid #3f5cff;border-radius:50%;display:flex;align-items:center;justify-content:center;}
.gx-grid{background-image:linear-gradient(#ffffff0d 1px,transparent 1px),linear-gradient(90deg,#ffffff0d 1px,transparent 1px);background-size:26px 26px;}
.gx-guide{position:absolute;left:50%;top:50%;width:150%;height:1px;background:#3f5cff66;}
.gx-fill-lines{background-color:#05060f;background-image:repeating-linear-gradient(153deg,#3f5cff 0 1px,transparent 1px 9px);}
.gx-fill-dots{background-color:#05060f;background-image:radial-gradient(#3f5cff 1.4px,transparent 1.7px);background-size:11px 11px;}
.gx-fill-grid{background-color:#05060f;background-image:linear-gradient(#3f5cff66 1px,transparent 1px),linear-gradient(90deg,#3f5cff66 1px,transparent 1px);background-size:12px 12px;}
.gx-radiant{background:repeating-conic-gradient(from -90deg at 50% 50%,#2f50ff 0deg 0.5deg,transparent 0.5deg 11deg);}

/* ============================================================
   X pattern library — many tessellations from the outline
   ============================================================ */
.xp{position:relative;aspect-ratio:1;border-radius:4px;overflow:hidden;border:1px solid #1a1f3a;background:#05060f;display:flex;align-items:center;justify-content:center;}
.xp.navy{background:var(--abyss);border-color:#16204d;}
.xp.blue{background:var(--blue);border-color:#1e3aff;}
.xpcap{font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:#8b94ae;margin-top:8px;}
