/*! Tanveer Jafri Portfolio Toolkit — generated from the Build Sheet prototype (assets/css/site.css) by tools/build_css.sh. Edit the source, not this file. */
/* =====================================================================
   THE BUILD SHEET — tanveerjafri.com
   One stylesheet for every page. Sections, in order:
     1. Tokens            -> Elementor: Site Settings > Global Colors / Fonts
     2. Base
     3. Primitives        (grid, type, buttons, links, labels)
     4. Placeholders      (prototype only — remove as real content arrives)
     5. Shared components (frames, header, menu, breadcrumbs, page hero,
                           specs, accordion, chips, CTA band, footer, forms)
     6. Page modules      (home, work, case study, services, about,
                           plugins, contact, article, 404)
     7. Responsive
     8. Reduced motion
   Class prefix map for Elementor: each top-level block (.tj-*, .page-hero,
   .cta-band, .entries ...) = one Container, saved as a template.
   ===================================================================== */

/* ---------- 1. Tokens ---------- */
:root{
  /* Global colors */
  --tj-paper:#F3F0E8;       /* page background                 */
  --tj-paper-2:#E9E4D8;     /* bands, slots                    */
  --tj-card:#FBF9F4;        /* inner UI surfaces               */
  --tj-ink:#141311;         /* text, dark sections             */
  --tj-graphite:#57534B;    /* secondary text                  */
  --tj-rule:#D9D2C3;        /* hairlines                       */
  --tj-rule-strong:#B4AB97;
  --tj-signal:#E2531D;      /* accent: large type, marks, focus */
  --tj-signal-text:#A93C10; /* accent for small text on paper  */
  --tj-on-ink:#F3F0E8;
  --tj-on-ink-muted:#A9A397;
  --tj-ink-rule:#3A3731;
  /* Global fonts */
  --tj-f-sans:'Geist','Inter',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --tj-f-serif:'Instrument Serif','Iowan Old Style',Georgia,serif;
  --tj-f-mono:'Geist Mono',ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;
  /* Type scale */
  --tj-fs-display:clamp(3rem,8vw,8.2rem);
  --tj-fs-h2:clamp(2.4rem,5.2vw,4.75rem);
  --tj-fs-h3:clamp(1.7rem,2.6vw,2.4rem);
  --tj-fs-h4:clamp(1.25rem,1.7vw,1.5rem);
  --tj-fs-lead:clamp(1.05rem,1.3vw,1.2rem);
  --tj-fs-body:17px;
  --tj-fs-small:14px;
  --tj-fs-label:12px;
  /* Layout */
  --tj-max:1360px;
  --tj-header-h:72px;
  --tj-pad:clamp(20px,4vw,56px);
  --tj-gap:clamp(16px,2vw,28px);
  --tj-section:clamp(88px,11vw,168px);
  --tj-block:clamp(64px,8vw,120px);
  --tj-ease:cubic-bezier(.2,.7,.1,1);
}

/* ---------- 2. Base ---------- */
.tjpt,.tjpt *,.tjpt::before,.tjpt *::before,.tjpt::after,.tjpt *::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--tj-header-h) + 16px);-webkit-text-size-adjust:100%}
body.tjpt-site{margin:0;background:var(--tj-paper);color:var(--tj-ink);font:400 var(--tj-fs-body)/1.6 var(--tj-f-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.tjpt-site.no-scroll{overflow:hidden}
.tjpt img,.tjpt svg{display:block;max-width:100%}
.tjpt img{height:auto}
.tjpt a{color:inherit}
.tjpt button,.tjpt input,.tjpt select,.tjpt textarea{font:inherit;color:inherit}
.tjpt h1,.tjpt h2,.tjpt h3,.tjpt h4,.tjpt p,.tjpt ol,.tjpt ul,.tjpt dl,.tjpt dd,.tjpt figure,.tjpt blockquote{margin:0}
.tjpt ol,.tjpt ul{padding:0;list-style:none}
.tjpt :focus-visible{outline:2px solid var(--tj-signal);outline-offset:3px}
.tjpt .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.tjpt .skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--tj-ink);color:var(--tj-on-ink);padding:10px 16px;font:500 14px var(--tj-f-mono);text-decoration:none}
.tjpt .skip:focus{top:12px}

/* ---------- 3. Primitives ---------- */
.tjpt .wrap{width:100%;max-width:var(--tj-max);margin-inline:auto;padding-inline:var(--tj-pad)}
.tjpt .grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--tj-gap)}
.tjpt .mono{font-family:var(--tj-f-mono);font-size:var(--tj-fs-label);letter-spacing:.06em;text-transform:uppercase}
.tjpt em,.tjpt .serif{font-family:var(--tj-f-serif);font-style:italic;font-weight:400;letter-spacing:-.01em}
.tjpt .h2{font-size:var(--tj-fs-h2);line-height:.98;letter-spacing:-.045em;font-weight:500;text-wrap:balance}
.tjpt .h2 em{font-size:1.06em}
.tjpt .h3{font-size:var(--tj-fs-h3);line-height:1.05;letter-spacing:-.035em;font-weight:500;text-wrap:balance}
.tjpt .h4{font-size:var(--tj-fs-h4);line-height:1.2;letter-spacing:-.02em;font-weight:500}
.tjpt .lead{font-size:var(--tj-fs-lead);line-height:1.6;color:var(--tj-graphite);max-width:34em}
.tjpt .muted{color:var(--tj-graphite)}

.tjpt .btn{display:inline-flex;align-items:center;gap:12px;min-height:52px;padding:0 24px;border:1px solid var(--tj-ink);border-radius:2px;font-weight:500;font-size:15px;text-decoration:none;cursor:pointer;transition:background .25s var(--tj-ease),color .25s var(--tj-ease),border-color .25s var(--tj-ease)}
.tjpt .btn .arr{transition:transform .25s var(--tj-ease)}
.tjpt .btn:hover .arr{transform:translateX(4px)}
.tjpt .btn--primary{background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .btn--primary:hover{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .btn--ghost{background:transparent;color:var(--tj-ink)}
.tjpt .btn--ghost:hover{background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .btn--signal{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .btn--signal:hover{background:var(--tj-on-ink);border-color:var(--tj-on-ink)}
.tjpt .link{display:inline-flex;gap:8px;align-items:center;font-weight:500;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}
.tjpt .link:hover{color:var(--tj-signal-text)}
.tjpt .links{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center}

/* Section header: mono index left, title right */
.tjpt .sh{padding-bottom:clamp(40px,6vw,88px)}
.tjpt .sh__idx{grid-column:1/4;padding-top:.9em;color:var(--tj-graphite)}
.tjpt .sh__idx b{color:var(--tj-signal-text);font-weight:500}
.tjpt .sh__title{grid-column:4/13}
.tjpt .sh__title .lead{margin-top:24px}
.tjpt .idx{color:var(--tj-graphite)}
.tjpt .idx b{color:var(--tj-signal-text);font-weight:500}

/* ---------- 4. Placeholders (prototype only) ---------- */
.tjpt .ph{text-decoration:underline dashed var(--tj-signal) 1.5px;text-underline-offset:4px;text-decoration-skip-ink:none}
.tjpt .ph::after{content:"edit";font:500 9px/1 var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-paper);background:var(--tj-signal-text);padding:2px 4px;margin-left:6px;vertical-align:2px;border-radius:2px}
.ph-off .tjpt .ph{text-decoration:none}
.ph-off .tjpt .ph::after{display:none}
.tjpt .slot{position:relative;display:grid;place-items:center;overflow:hidden;background:repeating-linear-gradient(135deg,transparent 0 11px,rgba(20,19,17,.055) 11px 12px),var(--tj-paper-2);border:1px dashed var(--tj-rule-strong)}
.tjpt .slot__label{display:grid;gap:6px;justify-items:center;text-align:center;padding:16px;max-width:30em;font:400 12px/1.5 var(--tj-f-mono);color:var(--tj-graphite)}
.tjpt .slot__label b{font-weight:500;color:var(--tj-paper);background:var(--tj-signal-text);padding:3px 7px;border-radius:2px;letter-spacing:.08em;font-size:10px;text-transform:uppercase}
.ph-off .tjpt .slot__label b{background:var(--tj-graphite)}
/* Real screenshots: drop an <img> into any .slot and the placeholder hides */
.tjpt .slot > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center}
.tjpt .slot:has(> img){background:var(--tj-card);border-style:solid}
.tjpt .slot:has(> img) .slot__label{display:none}
/* Writing brief inside templates */
.tjpt .brief{padding:16px 18px;border:1px dashed var(--tj-rule-strong);background:rgba(233,228,216,.45);color:var(--tj-graphite);font-size:16px;line-height:1.6}
.tjpt .brief b{display:block;margin-bottom:6px;font:500 11px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal-text)}
.tjpt .brief + .brief{margin-top:12px}
.tjpt .flag{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px dashed var(--tj-signal);border-radius:2px;font:500 10px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal-text)}
.ph-off .tjpt .flag{display:none}
.tjpt .tpl-bar{background:var(--tj-signal);color:var(--tj-ink);font:500 12px/1.4 var(--tj-f-mono);letter-spacing:.04em}
.tjpt .tpl-bar .wrap{display:flex;flex-wrap:wrap;gap:6px 18px;padding-block:10px}
.tjpt .tpl-bar b{text-transform:uppercase;letter-spacing:.08em}

/* ---------- 5. Shared components ---------- */

/* Browser + phone frames */
.tjpt .frame{background:var(--tj-card);border:1px solid var(--tj-ink);box-shadow:10px 10px 0 -1px var(--tj-paper-2),10px 10px 0 0 var(--tj-rule-strong);transition:transform .5s var(--tj-ease),box-shadow .5s var(--tj-ease)}
.tjpt .frame__bar{display:flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-bottom:1px solid var(--tj-ink);background:var(--tj-paper)}
.tjpt .frame__bar i{width:8px;height:8px;border:1px solid var(--tj-ink);border-radius:50%;flex:none}
.tjpt .frame__bar > span{margin-left:10px;font:400 11px var(--tj-f-mono);color:var(--tj-graphite);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tjpt .frame .slot{border:0}
.tjpt .stamp{margin-left:auto!important;flex:none;padding:2px 7px;border:1px solid var(--tj-ink);border-radius:2px;font:500 10px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-ink)}
.tjpt .phone{background:var(--tj-card);border:1px solid var(--tj-ink);border-radius:22px;padding:10px;box-shadow:8px 8px 0 -1px var(--tj-paper-2),8px 8px 0 0 var(--tj-rule-strong)}
.tjpt .phone .slot{border-radius:14px;border:0;aspect-ratio:9/19}
.tjpt .phone .slot__label{padding:8px;font-size:10px}
.tjpt .lift:hover .frame,.tjpt .lift:focus-within .frame{transform:translate(-4px,-4px);box-shadow:14px 14px 0 -1px var(--tj-paper-2),14px 14px 0 0 var(--tj-rule-strong)}
.tjpt .cap{display:flex;gap:12px;margin-top:16px;padding-top:10px;border-top:1px solid var(--tj-rule);font-size:var(--tj-fs-small);color:var(--tj-graphite)}
.tjpt .cap b{font:500 11px/1.9 var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--tj-ink);white-space:nowrap}

/* Header */
.tjpt .tj-header{position:sticky;top:0;z-index:40;background:rgba(243,240,232,.92);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid transparent;transition:border-color .3s}
.tjpt .tj-header.is-scrolled{border-bottom-color:var(--tj-rule)}
.tjpt .tj-header__in{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:var(--tj-header-h)}
.tjpt .brand{display:flex;align-items:baseline;gap:12px;text-decoration:none}
.tjpt .brand strong{font-size:19px;font-weight:600;letter-spacing:-.03em}
.tjpt .brand span{color:var(--tj-graphite)}
.tjpt .nav{display:flex;align-items:center;gap:clamp(18px,2.6vw,36px)}
.tjpt .nav a{position:relative;text-decoration:none;font-size:15px;font-weight:500;padding:10px 0}
.tjpt .nav a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:2px;background:var(--tj-signal);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--tj-ease)}
.tjpt .nav a:hover::after,.tjpt .nav a[aria-current="page"]::after{transform:scaleX(1)}
.tjpt .tj-header .btn{min-height:44px;padding:0 18px;font-size:14px}
.tjpt .tj-header .btn[aria-current="page"]{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .menu-btn{display:none;align-items:center;gap:10px;min-height:44px;padding:0 14px;border:1px solid var(--tj-ink);background:transparent;border-radius:2px;cursor:pointer;font:500 12px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase}
.tjpt .menu-btn svg{width:18px;height:18px}

/* Mobile menu */
.tjpt .menu{position:fixed;inset:0;z-index:60;background:var(--tj-ink);color:var(--tj-on-ink);display:flex;flex-direction:column;padding:20px var(--tj-pad) 28px;overflow-y:auto}
.tjpt .menu[hidden]{display:none}
.tjpt .menu__top{display:flex;justify-content:space-between;align-items:center;min-height:52px}
.tjpt .menu__top a{font-size:19px;font-weight:600;letter-spacing:-.03em;text-decoration:none}
.tjpt .menu__close{min-height:44px;padding:0 14px;border:1px solid var(--tj-on-ink-muted);background:transparent;color:var(--tj-on-ink);border-radius:2px;font:500 12px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.tjpt .menu__links{margin-top:auto;display:grid;padding-top:32px}
.tjpt .menu__links a{display:flex;align-items:baseline;gap:16px;padding:12px 0;border-top:1px solid var(--tj-ink-rule);text-decoration:none;font-size:clamp(2rem,9vw,3.2rem);letter-spacing:-.04em;line-height:1.05}
.tjpt .menu__links a span{font:400 12px var(--tj-f-mono);color:var(--tj-on-ink-muted)}
.tjpt .menu__links a[aria-current="page"]{color:var(--tj-signal)}
.tjpt .menu__cta{margin-top:28px;justify-content:center}

/* Grid lines behind heroes */
.tjpt .cols{position:absolute;inset:0;pointer-events:none}
.tjpt .cols .wrap,.tjpt .cols .grid{height:100%}
.tjpt .cols .grid i{border-left:1px solid rgba(180,171,151,.28)}
.tjpt .cols .grid i:last-child{border-right:1px solid rgba(180,171,151,.28)}

/* Meta strip + breadcrumbs (top rule of every hero) */
.tjpt .meta{display:grid;grid-template-columns:.8fr 1.35fr 1fr 1.25fr;border-top:1px solid var(--tj-ink);border-bottom:1px solid var(--tj-rule)}
.tjpt .meta li{padding:12px 16px 12px 0;color:var(--tj-graphite)}
.tjpt .meta li+li{padding-left:16px;border-left:1px solid var(--tj-rule)}
.tjpt .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--tj-signal);margin-right:8px;vertical-align:1px}
.tjpt .crumbs{border-top:1px solid var(--tj-ink);border-bottom:1px solid var(--tj-rule)}
.tjpt .crumbs ol{display:flex;flex-wrap:wrap;gap:4px 10px;padding:12px 0;color:var(--tj-graphite)}
.tjpt .crumbs li{display:flex;gap:10px;align-items:center}
.tjpt .crumbs li+li::before{content:"/";color:var(--tj-rule-strong)}
.tjpt .crumbs a{text-decoration:none}
.tjpt .crumbs a:hover{color:var(--tj-signal-text)}
.tjpt .crumbs [aria-current="page"]{color:var(--tj-ink)}

/* Inner page hero */
.tjpt .page-hero{position:relative;padding:clamp(8px,1vw,12px) 0 clamp(56px,7vw,104px)}
.tjpt .page-hero > .wrap{position:relative}
.tjpt .display{margin:clamp(36px,4.6vw,72px) 0 clamp(28px,3vw,44px);font-size:var(--tj-fs-display);line-height:.88;letter-spacing:-.06em;font-weight:500;text-wrap:balance}
.tjpt .display em{color:var(--tj-signal);font-size:1.06em;letter-spacing:-.03em;padding-right:.04em}
.tjpt .page-hero__body{align-items:end;row-gap:32px}
.tjpt .page-hero__lead{grid-column:1/7;display:grid;gap:28px}
.tjpt .page-hero__aside{grid-column:8/13}

/* Jump list (in-page index) */
.tjpt .jump{border-top:1px solid var(--tj-ink)}
.tjpt .jump__head{padding:12px 0;color:var(--tj-graphite);border-bottom:1px solid var(--tj-rule)}
.tjpt .jump a{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--tj-rule);text-decoration:none;font-weight:500;transition:color .2s}
.tjpt .jump a > span:first-child{font:400 12px var(--tj-f-mono);color:var(--tj-signal-text)}
.tjpt .jump a::after{content:"↓";font-family:var(--tj-f-mono);color:var(--tj-graphite);transition:transform .25s var(--tj-ease)}
.tjpt .jump a:hover{color:var(--tj-signal-text)}
.tjpt .jump a:hover::after{transform:translateY(3px)}
.tjpt .jump--pages a::after{content:"→"}
.tjpt .jump--pages a:hover::after{transform:translateX(3px)}

/* Spec tables */
.tjpt .specs{margin-top:24px;border-top:1px solid var(--tj-ink)}
.tjpt .specs div{display:grid;grid-template-columns:104px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--tj-rule);font-size:var(--tj-fs-small)}
.tjpt .specs dt{font:400 11px/1.9 var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--tj-graphite)}
.tjpt .specs a{text-decoration-color:var(--tj-signal)}

/* Chips (status labels) */
.tjpt .chips{display:flex;flex-wrap:wrap;gap:8px}
.tjpt .chip{display:inline-flex;align-items:center;gap:7px;padding:4px 10px;border:1px solid var(--tj-ink);border-radius:99px;font:500 11px var(--tj-f-mono);letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.tjpt .chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tj-ink)}
.tjpt .chip--plain::before{display:none}
.tjpt .chip--dev{border-color:var(--tj-signal);color:var(--tj-signal-text)}
.tjpt .chip--dev::before{background:var(--tj-signal)}
.tjpt .chip--concept{border-style:dashed;color:var(--tj-graphite)}
.tjpt .chip--concept::before{background:transparent;border:1px solid var(--tj-graphite)}
.tjpt .chip--tbc{border:1px dashed var(--tj-signal);color:var(--tj-signal-text)}
.tjpt .chip--tbc::before{background:transparent;border:1px solid var(--tj-signal)}

/* Accordion (services, FAQ) — native <details>, works without JS */
.tjpt .acc{border-top:1px solid var(--tj-ink)}
.tjpt .acc details{border-bottom:1px solid var(--tj-rule-strong)}
.tjpt .acc summary{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--tj-gap);align-items:baseline;padding:clamp(20px,2.6vw,32px) 0;cursor:pointer;list-style:none}
.tjpt .acc summary::-webkit-details-marker{display:none}
.tjpt .acc .s-n{grid-column:1/2;font:400 12px var(--tj-f-mono);color:var(--tj-graphite);padding-top:.5em}
.tjpt .acc .s-t{grid-column:2/7;font-size:clamp(1.6rem,3.2vw,2.9rem);line-height:1.02;letter-spacing:-.045em;font-weight:500;transition:color .25s}
.tjpt .acc .s-d{grid-column:7/12;color:var(--tj-graphite);font-size:16px}
.tjpt .acc .s-i{grid-column:12/13;justify-self:end;width:36px;height:36px;border:1px solid var(--tj-ink);border-radius:50%;display:grid;place-items:center;transition:transform .35s var(--tj-ease),background .25s}
.tjpt .acc .s-i svg{width:14px;height:14px}
.tjpt .acc details[open] .s-i{transform:rotate(45deg);background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .acc summary:hover .s-t{color:var(--tj-signal-text)}
.tjpt .acc__body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--tj-gap);padding:0 0 clamp(24px,3vw,40px)}
.tjpt .acc__body ul{grid-column:7/12;display:grid;border-top:1px solid var(--tj-rule-strong)}
.tjpt .acc__body li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--tj-rule-strong);font-size:15px}
.tjpt .acc__body li::before{content:"→";color:var(--tj-signal-text);font-family:var(--tj-f-mono)}
.tjpt .acc__body .links{grid-column:7/12;margin-top:20px}
.tjpt .acc--faq .s-t{grid-column:2/12;font-size:clamp(1.25rem,2vw,1.6rem);letter-spacing:-.025em;line-height:1.25}
.tjpt .acc--faq .acc__body > p{grid-column:2/10;color:var(--tj-graphite);max-width:40em}
.tjpt .acc--faq .acc__body > p + p{margin-top:12px}

/* Arrow lists */
.tjpt .arrows{border-top:1px solid var(--tj-rule-strong)}
.tjpt .arrows li{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--tj-rule-strong);font-size:15px}
.tjpt .arrows li::before{content:"→";color:var(--tj-signal-text);font-family:var(--tj-f-mono)}
.tjpt .arrows code{font-family:var(--tj-f-mono);font-size:.88em;background:var(--tj-paper-2);padding:1px 5px;border-radius:2px}

/* Pre-footer CTA band (inner pages) */
.tjpt .cta-band{background:var(--tj-ink);color:var(--tj-on-ink);padding:var(--tj-section) 0 0}
.tjpt .cta-band .idx{color:var(--tj-on-ink-muted)}
.tjpt .cta-band .idx b{color:var(--tj-signal)}
.tjpt .cta-band__in{align-items:end;row-gap:32px;margin-top:clamp(28px,3vw,44px)}
.tjpt .cta-band__title{grid-column:1/9;font-size:clamp(2.6rem,6vw,6rem);line-height:.92;letter-spacing:-.055em;font-weight:500}
.tjpt .cta-band__title em{color:var(--tj-signal)}
.tjpt .cta-band__act{grid-column:9/13;display:grid;gap:18px;justify-items:start}
.tjpt .cta-band__act p{color:var(--tj-on-ink-muted);font-size:15px}
.tjpt .cta-band .link{color:var(--tj-on-ink)}
.tjpt .cta-band .link:hover{color:var(--tj-signal)}

/* Footer */
.tjpt .tj-footer{background:var(--tj-ink);color:var(--tj-on-ink);padding-top:clamp(72px,9vw,128px)}
.tjpt .tj-footer__cols{row-gap:40px;padding-bottom:clamp(56px,7vw,96px)}
.tjpt .fcol{grid-column:span 3}
.tjpt .fcol--about{grid-column:1/6;display:grid;gap:20px;align-content:start}
.tjpt .fcol--about p{color:var(--tj-on-ink-muted);max-width:26em}
.tjpt .fcol > .mono{color:var(--tj-on-ink-muted);margin-bottom:12px}
.tjpt .fcol a{display:inline-block;padding:5px 0;text-decoration:none;transition:color .2s}
.tjpt .fcol a:hover,.tjpt .fcol a[aria-current="page"]{color:var(--tj-signal)}
.tjpt .tj-footer__mail{justify-self:start;font-size:clamp(1.25rem,2vw,1.7rem);letter-spacing:-.03em;text-decoration:none;border-bottom:1px solid var(--tj-signal);padding-bottom:4px}
.tjpt .tj-footer__mail:hover{color:var(--tj-signal)}
.tjpt .tj-footer__mark{font-size:clamp(3.4rem,13.4vw,13rem);line-height:.8;letter-spacing:-.065em;font-weight:500;white-space:nowrap;overflow:hidden;padding-bottom:.08em;border-bottom:1px solid var(--tj-ink-rule)}
.tjpt .tj-footer__mark em{color:var(--tj-signal)}
.tjpt .tj-footer__row{display:flex;justify-content:space-between;align-items:center;gap:12px 24px;flex-wrap:wrap;padding:24px 0 32px;color:var(--tj-on-ink-muted)}
.tjpt .tj-footer__row a{text-decoration:none}
.tjpt .tj-footer__row a:hover{color:var(--tj-on-ink)}

/* Forms (on ink) */
.tjpt .form{display:grid;grid-template-columns:1fr 1fr;gap:28px var(--tj-gap)}
.tjpt .f{display:grid;gap:8px;align-content:start;min-width:0}
.tjpt .f--full{grid-column:1/-1}
.tjpt .f label,.tjpt .f legend{font:500 11px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-on-ink-muted);padding:0}
.tjpt .f label i{font-style:normal;color:var(--tj-signal)}
.tjpt .f input,.tjpt .f select,.tjpt .f textarea{width:100%;min-height:48px;padding:10px 0;border:0;border-bottom:1px solid var(--tj-on-ink-muted);border-radius:0;background:transparent;color:var(--tj-on-ink);font-size:17px;transition:border-color .2s}
.tjpt .f textarea{min-height:120px;resize:vertical;line-height:1.5}
.tjpt .f select{appearance:none;-webkit-appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%23A9A397' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 4px center;padding-right:24px;cursor:pointer}
.tjpt .f select option{background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .f input::placeholder,.tjpt .f textarea::placeholder{color:#8A8478}
.tjpt .f input:focus,.tjpt .f select:focus,.tjpt .f textarea:focus{outline:none;border-bottom:2px solid var(--tj-signal)}
.tjpt .f [aria-invalid="true"]{border-bottom-color:#FF8A5C}
.tjpt .f .err{font-size:13px;color:#FF9C76}
.tjpt .f .err:empty{display:none}
.tjpt .f .hint{font-size:13px;color:var(--tj-on-ink-muted)}
.tjpt .f.flash select{border-bottom:2px solid var(--tj-signal)}
.tjpt .form__foot{grid-column:1/-1;display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding-top:8px}
.tjpt .form__foot .btn--primary{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .form__foot .btn--primary:hover{background:var(--tj-on-ink);border-color:var(--tj-on-ink)}
.tjpt .form__note{font-size:13px;color:var(--tj-on-ink-muted);max-width:30em}
.tjpt .form__note b{color:var(--tj-signal)}
.tjpt .form__status{grid-column:1/-1;padding:16px 18px;border:1px solid var(--tj-signal);color:var(--tj-on-ink);font-size:15px;display:grid;gap:10px}
.tjpt .form__status[hidden]{display:none}
.tjpt .form__status strong{font:500 11px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal)}
.tjpt .form__status a{color:var(--tj-on-ink);text-decoration-color:var(--tj-signal)}
.tjpt .proto-note{grid-column:1/-1;display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px dashed var(--tj-signal);color:var(--tj-on-ink-muted);font-size:14px}
.tjpt .proto-note b{flex:none;font:500 11px/1.9 var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal)}
.tjpt .proto-note a{color:var(--tj-on-ink);text-decoration-color:var(--tj-signal)}
.tjpt .f--check{grid-template-columns:20px 1fr;column-gap:12px;align-items:start}
.tjpt .f--check input{width:18px;height:18px;min-height:0;margin:3px 0 0;padding:0;border:0;accent-color:var(--tj-signal);cursor:pointer}
.tjpt .f--check label{font:400 14px/1.5 var(--tj-f-sans);letter-spacing:0;text-transform:none;color:var(--tj-on-ink-muted);cursor:pointer}
.tjpt .f--check .err{grid-column:2}
.tjpt .f--check input:focus-visible{outline:2px solid var(--tj-signal);outline-offset:3px}

/* Prototype tools */
.tjpt .proto{position:fixed;right:16px;bottom:16px;z-index:50;display:flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;background:var(--tj-paper);color:var(--tj-ink);border:1px solid var(--tj-ink);border-radius:99px;cursor:pointer;font:500 11px var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase;box-shadow:0 6px 18px rgba(20,19,17,.15)}
.tjpt .proto i{width:8px;height:8px;border-radius:50%;background:var(--tj-signal)}
.tjpt .proto[aria-pressed="false"] i{background:var(--tj-rule-strong)}

/* Reveal on scroll (only when JS runs; content stays visible otherwise) */
.js .tjpt .rv{opacity:0;transform:translateY(18px);transition:opacity .7s var(--tj-ease),transform .7s var(--tj-ease)}
.js .tjpt .rv.is-in{opacity:1;transform:none}

/* ---------- 6. Page modules ---------- */

/* ===== Home: hero ===== */
.tjpt .tj-hero{position:relative;padding:clamp(8px,1vw,12px) 0 clamp(88px,10vw,144px)}
.tjpt .tj-hero .wrap{position:relative}
.tjpt .tj-hero h1{margin:clamp(32px,3.6vw,52px) 0 clamp(28px,2.8vw,40px);max-width:15ch;font-size:clamp(2.9rem,6.7vw,6.9rem);line-height:.9;letter-spacing:-.058em;font-weight:500}
.tjpt .tj-hero h1 .l{display:block}
.tjpt .tj-hero h1 em{color:var(--tj-signal);font-size:1.07em;letter-spacing:-.03em;padding-right:.04em}
.tjpt .hero-body{align-items:start;row-gap:clamp(28px,3vw,40px);grid-template-areas:"c c c c s s s s s s s s" "k k k k s s s s s s s s";grid-template-rows:auto 1fr}
.tjpt .hero-copy{grid-area:c;display:grid;gap:28px}
.tjpt .hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.tjpt .spec-wrap{grid-area:s}
.tjpt .legend{grid-area:k;align-self:start;border-top:1px solid var(--tj-ink)}
.tjpt .legend__head{display:flex;justify-content:space-between;gap:12px;padding:12px 0;color:var(--tj-graphite)}
.tjpt .legend button{display:grid;grid-template-columns:44px 1fr;gap:4px 12px;width:100%;padding:16px 0;border:0;border-top:1px solid var(--tj-rule);background:none;text-align:left;cursor:pointer;transition:background .2s}
.tjpt .legend button:hover,.tjpt .legend button[aria-pressed="true"]{background:linear-gradient(90deg,rgba(226,83,29,.08),transparent 80%)}
.tjpt .legend .n{grid-row:span 2;display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--tj-ink);border-radius:50%;font:500 12px var(--tj-f-mono);transition:background .2s,color .2s,border-color .2s}
.tjpt .legend button[aria-pressed="true"] .n,.tjpt .legend button:hover .n{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .legend strong{font-weight:600;font-size:16px;letter-spacing:-.01em}
.tjpt .legend small{font-size:14px;line-height:1.5;color:var(--tj-graphite)}

/* Fig. 01 specimen */
.tjpt .spec{position:relative}
.tjpt .spec__bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:12px}
.tjpt .tabs{display:inline-flex;border:1px solid var(--tj-ink);border-radius:2px;padding:3px;gap:3px;background:var(--tj-paper)}
.tjpt .tabs button{min-height:36px;padding:0 14px;border:0;border-radius:1px;background:transparent;cursor:pointer;font:500 12px var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase}
.tjpt .tabs button[aria-selected="true"]{background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .spec__fig{color:var(--tj-graphite)}
.tjpt .spec__stage{position:relative}
.tjpt .spec__panel{min-width:0}
.tjpt .spec__panel[hidden]{display:block;visibility:hidden}
.tjpt .spec__panel--code{position:absolute;inset:0}
.tjpt .spec__panel > .code{height:100%}
.tjpt .spec__caption{display:flex;gap:12px;margin-top:20px;padding-top:12px;border-top:1px solid var(--tj-rule);font-size:14px;color:var(--tj-graphite)}
.tjpt .spec__caption b{font:500 12px var(--tj-f-mono);letter-spacing:.06em;color:var(--tj-ink);white-space:nowrap;padding-top:2px}
.tjpt .ui{display:grid;grid-template-rows:auto 1fr;background:var(--tj-card)}
.tjpt .ui__nav{display:flex;align-items:center;justify-content:space-between;padding:11px 18px;border-bottom:1px solid var(--tj-rule)}
.tjpt .ui__logo{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;letter-spacing:-.02em}
.tjpt .ui__logo i{width:18px;height:18px;background:var(--tj-ink);border-radius:3px}
.tjpt .ui__links{display:flex;gap:16px;font-size:12px;color:var(--tj-graphite)}
.tjpt .ui__body{display:grid;grid-template-columns:1fr 1.15fr;gap:16px;padding:16px 18px 18px}
.tjpt .region{position:relative;border:1px solid var(--tj-rule);background:#fff;padding:14px}
.tjpt .region-sub{position:relative}
.tjpt .region,.tjpt .region-sub{transition:opacity .25s,box-shadow .25s,border-color .25s,background .25s}
.tjpt .prod__img{aspect-ratio:16/9;background:repeating-linear-gradient(135deg,transparent 0 9px,rgba(20,19,17,.05) 9px 10px),var(--tj-paper-2);margin-bottom:14px}
.tjpt .ui-line{height:8px;border-radius:2px;background:var(--tj-rule);margin:7px 0}
.tjpt .ui-line.w60{width:60%}.tjpt .ui-line.w40{width:40%}.tjpt .ui-line.dark{background:var(--tj-ink);height:10px;width:70%}
.tjpt .price{margin-top:14px;padding:12px;border:1px dashed var(--tj-rule-strong);font-size:13px;display:flex;align-items:center;gap:8px}
.tjpt .price svg{width:14px;height:14px;flex:none}
.tjpt .ui-btn{margin-top:12px;height:34px;display:grid;place-items:center;background:var(--tj-ink);color:var(--tj-on-ink);font-size:12px;font-weight:500}
.tjpt .acct__head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;font-weight:600;font-size:14px}
.tjpt .status{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--tj-signal);color:var(--tj-signal-text);border-radius:99px;font:500 11px var(--tj-f-mono);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.tjpt .status::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tj-signal)}
.tjpt .field-ui{margin-top:10px}
.tjpt .field-ui label{display:block;font-size:11px;color:var(--tj-graphite);margin-bottom:4px}
.tjpt .field-ui div{height:28px;border:1px solid var(--tj-rule);background:var(--tj-paper)}
.tjpt .fields{padding:2px 8px 10px;margin:8px -8px 0}
.tjpt .pin{position:absolute;top:-13px;right:-13px;z-index:2;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--tj-ink);color:var(--tj-on-ink);font:500 11px var(--tj-f-mono);cursor:pointer;transition:background .25s,color .25s,transform .25s var(--tj-ease)}
.tjpt .spec[data-active="1"] .region-1,.tjpt .spec[data-active="2"] .region-2,.tjpt .spec[data-active="3"] .region-3{box-shadow:0 0 0 2px var(--tj-signal);border-color:var(--tj-signal);background:#fff}
.tjpt .spec[data-active="1"] .region-1 > .pin,.tjpt .spec[data-active="2"] .region-2 > .pin,.tjpt .spec[data-active="3"] .region-3 > .pin{background:var(--tj-signal);color:var(--tj-ink);transform:scale(1.15)}
.tjpt .spec[data-active] .region:not(.is-hot),.tjpt .spec[data-active] .region-sub:not(.is-hot){opacity:.55}
.js .tjpt .spec .pin{opacity:0;transform:scale(.4)}
.js .tjpt .spec.is-drawn .pin{opacity:1;transform:scale(1);transition:opacity .4s,transform .5s var(--tj-ease)}
.js .tjpt .spec.is-drawn .region-2 > .pin{transition-delay:.15s}
.js .tjpt .spec.is-drawn .region-3 > .pin{transition-delay:.3s}

/* Code block (Fig. 01 and articles) */
.tjpt .code{background:var(--tj-ink);color:#E8E4DA;border:1px solid var(--tj-ink);font:400 13px/1.7 var(--tj-f-mono);overflow:auto}
.tjpt .code .c-note{display:block;padding:10px 18px 0 52px;margin-top:6px;border-top:1px solid var(--tj-ink-rule)}
.tjpt .code__bar{display:flex;justify-content:space-between;gap:16px;padding:8px 16px;border-bottom:1px solid var(--tj-ink-rule);color:var(--tj-on-ink-muted);font-size:11px;letter-spacing:.04em}
.tjpt .code pre{margin:0;padding:16px 0;tab-size:4}
.tjpt .code--plain pre{padding:16px 18px}
.tjpt .code .blk{display:block;position:relative;padding:4px 18px 4px 52px;border-left:2px solid transparent;transition:background .25s,border-color .25s,opacity .25s}
.tjpt .code .blk .gut{position:absolute;left:16px;top:6px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1px solid var(--tj-on-ink-muted);font-size:10px;color:var(--tj-on-ink-muted)}
.tjpt .spec[data-active="1"] .blk-1,.tjpt .spec[data-active="2"] .blk-2,.tjpt .spec[data-active="3"] .blk-3{background:rgba(226,83,29,.14);border-left-color:var(--tj-signal)}
.tjpt .spec[data-active="1"] .blk-1 .gut,.tjpt .spec[data-active="2"] .blk-2 .gut,.tjpt .spec[data-active="3"] .blk-3 .gut{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink)}
.tjpt .spec[data-active] .blk:not(.is-hot){opacity:.45}
.tjpt .c-com{color:#8E887B}.tjpt .c-fn{color:#F0A27F}.tjpt .c-str{color:#C9D99E}.tjpt .c-kw{color:#9CC3E6}.tjpt .c-var{color:#E8E4DA}

/* ===== Home: work, services, plugins, about, contact ===== */
.tjpt .tj-work{padding:var(--tj-section) 0;border-top:1px solid var(--tj-ink)}
.tjpt .project{position:relative;align-items:end;row-gap:28px;padding:clamp(40px,5vw,72px) 0;border-top:1px solid var(--tj-rule)}
.tjpt .project:first-of-type{border-top:0;padding-top:0}
.tjpt .project__media{grid-column:1/9;position:relative}
.tjpt .project__info{grid-column:9/13}
.tjpt .project--rev .project__media{grid-column:5/13;order:2}
.tjpt .project--rev .project__info{grid-column:1/5}
.tjpt .project__num{display:block;font-size:clamp(4.5rem,9vw,8.5rem);line-height:.8;font-weight:300;letter-spacing:-.06em;color:var(--tj-rule-strong);margin-bottom:24px}
.tjpt .project__kicker{color:var(--tj-signal-text);margin-bottom:10px}
.tjpt .project h3{font-size:var(--tj-fs-h3);line-height:1.05;letter-spacing:-.035em;font-weight:500;margin-bottom:14px;text-wrap:balance}
.tjpt .project p{color:var(--tj-graphite)}
.tjpt .project__foot{margin-top:20px;color:var(--tj-graphite)}
.tjpt .project .frame .slot{aspect-ratio:16/10}
.tjpt .project__media:hover .frame{transform:translate(-4px,-4px);box-shadow:14px 14px 0 -1px var(--tj-paper-2),14px 14px 0 0 var(--tj-rule-strong)}
.tjpt .pair{position:relative;padding-right:14%}
.tjpt .pair .phone{position:absolute;right:0;bottom:-6%;width:24%}
.tjpt .pair > .frame .slot__label{margin-right:24%}
.tjpt .ba{position:relative;padding:10% 0 0 24%}
.tjpt .ba .before{position:absolute;left:0;top:0;width:50%}
.tjpt .ba .before .frame{box-shadow:none}
.tjpt .ba .after{position:relative;z-index:1}
.tjpt .ba-tag{font-weight:500;color:var(--tj-ink);text-transform:uppercase;letter-spacing:.08em;margin-right:6px}
.tjpt .ba-tag--after{color:var(--tj-signal-text)}
.tjpt .ba .before .slot{aspect-ratio:16/10}
.tjpt .work-foot{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-top:clamp(40px,5vw,72px);padding-top:24px;border-top:1px solid var(--tj-ink)}
.tjpt .tj-services{padding:var(--tj-section) 0;background:var(--tj-paper-2);border-block:1px solid var(--tj-rule-strong)}
.tjpt .tj-services .acc + .links{margin-top:clamp(32px,4vw,48px)}
.tjpt .tj-plugins{padding:var(--tj-section) 0}
.tjpt .plugins{row-gap:var(--tj-gap)}
.tjpt .plugin{grid-column:span 6;display:grid;grid-template-rows:auto 1fr;border:1px solid var(--tj-ink);background:var(--tj-card)}
.tjpt .plugin .slot{aspect-ratio:16/9;border:0;border-bottom:1px solid var(--tj-ink)}
.tjpt .plugin__body{padding:clamp(20px,2.4vw,32px);display:grid;gap:14px;align-content:start}
.tjpt .plugin__type{color:var(--tj-signal-text)}
.tjpt .plugin h3{font-size:clamp(1.6rem,2.4vw,2.2rem);letter-spacing:-.04em;line-height:1.05;font-weight:500}
.tjpt .plugin p{color:var(--tj-graphite)}
.tjpt .plugin .specs{margin-top:6px}
.tjpt .section-foot{margin-top:clamp(32px,4vw,48px)}
.tjpt .tj-about{padding:var(--tj-section) 0;border-top:1px solid var(--tj-ink)}
.tjpt .about{row-gap:48px;align-items:start}
.tjpt .about__img{grid-column:1/5;position:sticky;top:110px}
.tjpt .about__img .slot{aspect-ratio:4/5}
.tjpt .about__img figcaption{margin-top:12px;color:var(--tj-graphite)}
.tjpt .about__copy{grid-column:6/13}
.tjpt .about__copy .h2{margin:18px 0 28px}
.tjpt .about__copy > p{color:var(--tj-graphite);font-size:18px;max-width:36em}
.tjpt .about__copy > p + p{margin-top:16px}
.tjpt .facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:40px;border-top:1px solid var(--tj-ink)}
.tjpt .facts div{padding:16px 16px 16px 0;border-bottom:1px solid var(--tj-rule)}
.tjpt .facts div:nth-child(even){padding-left:16px;border-left:1px solid var(--tj-rule)}
.tjpt .facts dt{color:var(--tj-graphite);margin-bottom:6px}
.tjpt .facts dd{font-size:17px;font-weight:500;letter-spacing:-.01em}
.tjpt .principles{margin-top:56px}
.tjpt .principles > .mono{color:var(--tj-graphite);margin-bottom:16px}
.tjpt .principles ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--tj-ink);counter-reset:p}
.tjpt .principles li{counter-increment:p;padding:20px 20px 24px 0;border-bottom:1px solid var(--tj-rule);font-size:clamp(1.15rem,1.6vw,1.4rem);line-height:1.25;letter-spacing:-.02em;font-weight:500}
.tjpt .principles li:nth-child(even){padding-left:20px;border-left:1px solid var(--tj-rule)}
.tjpt .principles li::before{content:"0" counter(p);display:block;font:400 12px var(--tj-f-mono);color:var(--tj-signal-text);margin-bottom:12px;letter-spacing:.06em}
.tjpt .principles li small{display:block;margin-top:8px;font-size:15px;font-weight:400;letter-spacing:0;line-height:1.5;color:var(--tj-graphite)}
.tjpt .tj-contact{background:var(--tj-ink);color:var(--tj-on-ink);padding:var(--tj-section) 0 0}
.tjpt .tj-contact .sh__idx{color:var(--tj-on-ink-muted)}
.tjpt .tj-contact .sh__idx b{color:var(--tj-signal)}
.tjpt .contact{row-gap:48px;align-items:start}
.tjpt .contact__lead{grid-column:1/6}
.tjpt .contact__lead .h2{font-size:clamp(2.6rem,5.6vw,5.4rem)}
.tjpt .contact__lead .h2 em{color:var(--tj-signal)}
.tjpt .contact__lead p{margin-top:24px;color:var(--tj-on-ink-muted);max-width:28em}
.tjpt .contact__lead .link{margin-top:20px;color:var(--tj-on-ink)}
.tjpt .contact__lead .link:hover{color:var(--tj-signal)}
.tjpt .contact__mail{display:inline-block;margin-top:36px;font-size:clamp(1.3rem,2.4vw,2rem);letter-spacing:-.03em;text-decoration:none;border-bottom:1px solid var(--tj-signal);padding-bottom:4px}
.tjpt .contact__mail:hover{color:var(--tj-signal)}
.tjpt .contact__list{margin-top:36px;border-top:1px solid var(--tj-ink-rule)}
.tjpt .contact__list li{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid var(--tj-ink-rule);font-size:15px}
.tjpt .contact__list .mono{color:var(--tj-on-ink-muted);width:96px;flex:none;padding-top:3px}
.tjpt .contact .form{grid-column:7/13}

/* ===== Work index ===== */
html:not(.js) .tjpt .filter-bar{display:none}
.tjpt .filter-bar{position:sticky;top:var(--tj-header-h);z-index:20;background:rgba(243,240,232,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-block:1px solid var(--tj-rule)}
.tjpt .filter-bar .wrap{display:flex;align-items:center;gap:16px;padding-block:12px}
.tjpt .filters{display:flex;gap:8px;flex-wrap:wrap}
.tjpt .filter{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid var(--tj-ink);border-radius:2px;background:transparent;cursor:pointer;font:500 12px var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase;transition:background .2s,color .2s,border-color .2s}
.tjpt .filter__n{font-size:10px;color:var(--tj-graphite)}
.tjpt .filter:hover{border-color:var(--tj-signal)}
.tjpt .filter[aria-pressed="true"]{background:var(--tj-ink);color:var(--tj-on-ink)}
.tjpt .filter[aria-pressed="true"] .filter__n{color:var(--tj-on-ink-muted)}
.tjpt .filter-status{margin-left:auto;color:var(--tj-graphite);white-space:nowrap}
.tjpt .entries{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--tj-gap);row-gap:clamp(72px,9vw,136px);padding:clamp(56px,7vw,104px) 0 var(--tj-section)}
.tjpt .entry{display:grid;gap:18px;align-content:start}
.tjpt .entry[hidden]{display:none}
/* Work index: full-width rows like the homepage showcase (media 8 cols, text 4 cols, alternating) */
.tjpt .entry .frame .slot{aspect-ratio:16/10}
.tjpt .entry__get{margin-top:6px;justify-self:start}
@media (min-width:861px){
  .tjpt .entries{row-gap:0}
  .tjpt .entry[data-pos]{grid-column:1/13;margin-top:0;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:1fr repeat(6,auto) 1fr;column-gap:var(--tj-gap);row-gap:14px;padding:clamp(40px,5vw,72px) 0;border-top:1px solid var(--tj-rule)}
  .tjpt .entry[data-pos]:first-child{border-top:0;padding-top:0}
  .tjpt .entry[data-pos]>*{grid-column:9/13}
  .tjpt .entry[data-pos] .entry__media{grid-column:1/9;grid-row:1/-1;margin:0;align-self:center}
  .tjpt .entry[data-pos] .entry__meta{grid-row:2}
  .tjpt .entry[data-pos] .entry__title{grid-row:3}
  .tjpt .entry[data-pos] .entry__desc{grid-row:4}
  .tjpt .entry[data-pos] .specs{grid-row:5}
  .tjpt .entry[data-pos] .entry__get{grid-row:6}
  .tjpt .entry[data-pos] .flag{grid-row:7}
  .tjpt .entry[data-pos="1"]>*,.tjpt .entry[data-pos="3"]>*{grid-column:1/5}
  .tjpt .entry[data-pos="1"] .entry__media,.tjpt .entry[data-pos="3"] .entry__media{grid-column:5/13}
}
.tjpt .entry__media{margin-bottom:10px}
.tjpt .entry__meta{display:flex;justify-content:space-between;gap:16px;padding-bottom:10px;border-bottom:1px solid var(--tj-ink)}
.tjpt .entry__meta span:first-child{color:var(--tj-signal-text)}
.tjpt .entry__meta span:last-child{color:var(--tj-graphite)}
.tjpt .entry__title{font-size:var(--tj-fs-h3);line-height:1.05;letter-spacing:-.035em;font-weight:500;text-wrap:balance}
.tjpt .entry__desc{color:var(--tj-graphite);max-width:36em}
.tjpt .entry .specs{margin-top:4px}
.tjpt .entry .flag{justify-self:start}
.tjpt .entries__empty{grid-column:1/13;padding:40px 0;border-top:1px solid var(--tj-ink)}
.tjpt .entries__empty[hidden]{display:none}

/* ===== Case study template ===== */
.tjpt .cs-hero{padding-bottom:clamp(40px,5vw,72px)}
.tjpt .cs-sum{grid-column:1/8}
.tjpt .cs-spec{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(40px,5vw,64px);border-top:1px solid var(--tj-ink)}
.tjpt .cs-spec div{padding:14px 16px 14px 0;border-bottom:1px solid var(--tj-rule)}
.tjpt .cs-spec div + div{padding-left:16px;border-left:1px solid var(--tj-rule)}
.tjpt .cs-spec div:nth-child(4n+1){padding-left:0;border-left:0}
.tjpt .cs-spec dt{color:var(--tj-graphite);margin-bottom:6px}
.tjpt .cs-spec dd{font-weight:500;font-size:16px}
.tjpt .cs-cover .frame .slot{aspect-ratio:16/8}
.tjpt .cs-body{padding-block:var(--tj-section);align-items:start}
.tjpt .toc{grid-column:1/4;position:sticky;top:calc(var(--tj-header-h) + 24px);align-self:start}
.tjpt .toc > .mono{padding-bottom:12px;color:var(--tj-graphite);border-bottom:1px solid var(--tj-ink)}
.tjpt .toc a{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--tj-rule);text-decoration:none;font-size:15px;color:var(--tj-graphite);transition:color .2s}
.tjpt .toc a span{font:400 11px/2 var(--tj-f-mono);color:var(--tj-graphite)}
.tjpt .toc a:hover,.tjpt .toc a[aria-current="true"]{color:var(--tj-ink)}
.tjpt .toc a[aria-current="true"] span{color:var(--tj-signal-text)}
.tjpt .cs-main{grid-column:5/13;min-width:0}
.tjpt .cs-sec{padding-bottom:var(--tj-block);margin-bottom:var(--tj-block);border-bottom:1px solid var(--tj-rule)}
.tjpt .cs-sec:last-child{border-bottom:0;margin-bottom:0}
.tjpt .cs-sec__head{display:flex;align-items:baseline;gap:16px;margin-bottom:24px}
.tjpt .cs-sec__head .mono{color:var(--tj-signal-text)}
.tjpt .cs-sec__head h2{font-size:clamp(2rem,3.6vw,3.2rem);line-height:1;letter-spacing:-.045em;font-weight:500}
.tjpt .cs-sec__head .chip{margin-left:auto}
.tjpt .cs-sec > * + *{margin-top:20px}
.tjpt .deliver{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--tj-ink);counter-reset:d}
.tjpt .deliver li{counter-increment:d;padding:18px 18px 20px 0;border-bottom:1px solid var(--tj-rule)}
.tjpt .deliver li:nth-child(even){padding-left:18px;border-left:1px solid var(--tj-rule)}
.tjpt .deliver li::before{content:"0" counter(d);display:block;font:400 12px var(--tj-f-mono);color:var(--tj-signal-text);margin-bottom:8px}
.tjpt .gallery{display:grid;grid-template-columns:3fr 1fr;gap:var(--tj-gap);align-items:end}
.tjpt .gallery .frame .slot{aspect-ratio:16/10}
.tjpt .gallery--two{grid-template-columns:1fr 1fr}
.tjpt .anno{display:grid;grid-template-columns:2fr 1fr;gap:var(--tj-gap);align-items:start}
.tjpt .anno__fig{position:relative}
.tjpt .anno__pin{position:absolute;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--tj-signal);color:var(--tj-ink);font:500 11px var(--tj-f-mono)}
.tjpt .anno ol{border-top:1px solid var(--tj-ink)}
.tjpt .anno li{display:grid;grid-template-columns:36px 1fr;gap:10px;padding:12px 0;border-bottom:1px solid var(--tj-rule);font-size:15px;color:var(--tj-graphite)}
.tjpt .anno li b{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;border:1px solid var(--tj-ink);font:500 11px var(--tj-f-mono);color:var(--tj-ink)}
.tjpt .cs-next{border-top:1px solid var(--tj-ink);padding:var(--tj-block) 0}
.tjpt .cs-next .grid{align-items:end;row-gap:24px}
.tjpt .cs-next__t{grid-column:1/9}
.tjpt .cs-next__a{grid-column:9/13;justify-self:end}

/* ===== Services ===== */
.tjpt .sv{padding-block:var(--tj-block);border-top:1px solid var(--tj-ink);align-items:start;row-gap:40px}
.tjpt .sv:first-of-type{border-top:0}
.tjpt .sv__head{grid-column:1/6;position:sticky;top:calc(var(--tj-header-h) + 32px);display:grid;gap:18px}
.tjpt .sv__num{font-size:clamp(4rem,8vw,7.5rem);line-height:.8;font-weight:300;letter-spacing:-.06em;color:var(--tj-rule-strong)}
.tjpt .sv__head h2{font-size:var(--tj-fs-h3);line-height:1.02;letter-spacing:-.04em;font-weight:500}
.tjpt .sv__head p{color:var(--tj-graphite);max-width:30em}
.tjpt .sv__body{grid-column:7/13;display:grid;grid-template-columns:1fr 1fr;gap:36px var(--tj-gap)}
.tjpt .sv__body > div > .mono{color:var(--tj-graphite);margin-bottom:12px}
.tjpt .sv__full{grid-column:1/-1}
.tjpt .sv__ex{grid-column:1/-1;display:grid;grid-template-columns:120px 1fr;gap:12px;padding:16px 0;border-block:1px solid var(--tj-ink);font-size:15px}
.tjpt .sv__ex .mono{color:var(--tj-signal-text);padding-top:2px}
.tjpt .sv__ex a{text-decoration-color:var(--tj-signal)}
.tjpt .trio{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--tj-ink)}
.tjpt .trio > div{padding:16px 16px 18px 0;border-bottom:1px solid var(--tj-rule)}
.tjpt .trio > div + div{padding-left:16px;border-left:1px solid var(--tj-rule)}
.tjpt .trio h3{font-size:18px;font-weight:600;letter-spacing:-.01em;margin-bottom:8px}
.tjpt .trio p{font-size:15px;color:var(--tj-graphite)}
.tjpt .band{background:var(--tj-paper-2);border-block:1px solid var(--tj-rule-strong);padding:var(--tj-section) 0}
.tjpt .steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--tj-gap);border-top:1px solid var(--tj-ink);counter-reset:s}
.tjpt .steps li{counter-increment:s;padding:24px 0 0;display:grid;gap:10px;align-content:start}
.tjpt .steps li::before{content:"0" counter(s);font:400 12px var(--tj-f-mono);color:var(--tj-signal-text)}
.tjpt .steps h3{font-size:var(--tj-fs-h4);letter-spacing:-.025em;font-weight:500}
.tjpt .steps p{font-size:15px;color:var(--tj-graphite)}
.tjpt .terms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(48px,6vw,80px);border-top:1px solid var(--tj-ink)}
.tjpt .terms > div{padding:18px 18px 20px 0;border-bottom:1px solid var(--tj-rule-strong)}
.tjpt .terms > div + div{padding-left:18px;border-left:1px solid var(--tj-rule-strong)}
.tjpt .terms dt{color:var(--tj-graphite);margin-bottom:8px}
.tjpt .terms dd{font-size:clamp(1.15rem,1.6vw,1.4rem);letter-spacing:-.02em;font-weight:500}
.tjpt .faq-sec{padding:var(--tj-section) 0}

/* ===== About ===== */
.tjpt .ab-hero{align-items:end;row-gap:40px}
.tjpt .ab-hero__text{grid-column:1/8}
.tjpt .ab-hero__text .display{font-size:clamp(2.8rem,6.6vw,6.8rem);max-width:12ch}
.tjpt .ab-hero__img{grid-column:9/13}
.tjpt .ab-hero__img .slot{aspect-ratio:4/5}
.tjpt .ab-hero__img figcaption{margin-top:12px;color:var(--tj-graphite)}
.tjpt .story{padding-block:var(--tj-section);border-top:1px solid var(--tj-ink);align-items:start;row-gap:40px}
.tjpt .story__label{grid-column:1/4}
.tjpt .story__text{grid-column:4/10;display:grid;gap:20px}
.tjpt .story__text p{font-size:clamp(1.1rem,1.4vw,1.3rem);line-height:1.6}
.tjpt .story__text p:first-child{font-size:clamp(1.4rem,2.2vw,2rem);line-height:1.3;letter-spacing:-.02em}
.tjpt .story__aside{grid-column:10/13}
.tjpt .story__aside .facts{grid-template-columns:1fr;margin-top:0}
.tjpt .story__aside .facts div:nth-child(even){padding-left:0;border-left:0}
.tjpt .stack{border-top:1px solid var(--tj-ink)}
.tjpt .stack__row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--tj-gap);padding:clamp(22px,2.6vw,32px) 0;border-bottom:1px solid var(--tj-rule-strong);align-items:baseline}
.tjpt .stack__row h3{grid-column:1/5;font-size:var(--tj-fs-h3);line-height:1.05;letter-spacing:-.04em;font-weight:500}
.tjpt .stack__row ul{grid-column:5/10;display:flex;flex-wrap:wrap;gap:8px 0}
.tjpt .stack__row li{font-size:16px}
.tjpt .stack__row li:not(:last-child)::after{content:"·";margin:0 10px;color:var(--tj-signal-text)}
.tjpt .stack__row > a,.tjpt .stack__row > span{grid-column:10/13;justify-self:end;font-size:14px}
.tjpt .ab-sec{padding:var(--tj-section) 0}

/* ===== Plugins ===== */
.tjpt .status-key{display:grid;gap:10px;border-top:1px solid var(--tj-ink);padding-top:14px}
.tjpt .status-key div{display:flex;gap:12px;align-items:baseline;font-size:15px;color:var(--tj-graphite)}
.tjpt .prod{padding-block:var(--tj-block);border-top:1px solid var(--tj-ink);align-items:start;row-gap:36px}
.tjpt .prod__media{grid-column:1/8;position:sticky;top:calc(var(--tj-header-h) + 32px)}
.tjpt .prod__media .frame .slot{aspect-ratio:16/10}
.tjpt .prod__media .cap{margin-top:24px}
.tjpt .prod__info{grid-column:8/13;display:grid;gap:20px}
.tjpt .prod--rev .prod__media{grid-column:6/13;order:2}
.tjpt .prod--rev .prod__info{grid-column:1/6}
.tjpt .prod__num{font:400 12px var(--tj-f-mono);color:var(--tj-signal-text);letter-spacing:.06em}
.tjpt .prod__info h2{font-size:var(--tj-fs-h3);line-height:1.02;letter-spacing:-.04em;font-weight:500}
.tjpt .prod__info h2 small{display:block;margin-top:8px;font:400 13px var(--tj-f-mono);letter-spacing:.04em;text-transform:none;color:var(--tj-graphite)}
.tjpt .prod__info > p{color:var(--tj-graphite)}
.tjpt .prod__info h3{margin-bottom:10px}
.tjpt .prod__info h3.mono{color:var(--tj-graphite)}
.tjpt .ledger{border-top:1px solid var(--tj-ink)}
.tjpt .ledger li{display:grid;grid-template-columns:48px minmax(0,1.6fr) minmax(0,1fr) auto;gap:16px;align-items:baseline;padding:18px 0;border-bottom:1px solid var(--tj-rule-strong)}
.tjpt .ledger .mono:first-child{color:var(--tj-signal-text)}
.tjpt .ledger h3{font-size:clamp(1.15rem,1.6vw,1.4rem);letter-spacing:-.02em;font-weight:500;line-height:1.25}
.tjpt .ledger p{font-size:14px;color:var(--tj-graphite)}
.tjpt .ledger a{font-size:14px;white-space:nowrap}

/* ===== Contact page ===== */
.tjpt .ct{align-items:stretch}
.tjpt .ct__intro{grid-column:1/6;padding:clamp(8px,1vw,12px) 0 var(--tj-block)}
.tjpt .ct__intro .display{font-size:clamp(3rem,7vw,7rem)}
.tjpt .ct__panel{grid-column:6/13;position:relative;background:var(--tj-ink);color:var(--tj-on-ink);box-shadow:0 0 0 100vmax var(--tj-ink);clip-path:inset(0 -100vmax 0 0);padding:clamp(40px,5vw,72px) 0 var(--tj-block) clamp(24px,4vw,64px)}
.tjpt .ct__panel .form{gap:28px var(--tj-gap)}
.tjpt .ct__panel > .mono{color:var(--tj-on-ink-muted);margin-bottom:28px}
.tjpt .ct__mail{display:inline-block;margin-top:8px;font-size:clamp(1.3rem,2.2vw,1.8rem);letter-spacing:-.03em;text-decoration:none;border-bottom:1px solid var(--tj-signal);padding-bottom:4px}
.tjpt .ct__mail:hover{color:var(--tj-signal-text)}
.tjpt .ct__next{margin-top:clamp(40px,5vw,64px)}
.tjpt .ct__next > .mono{color:var(--tj-graphite);margin-bottom:12px}
.tjpt .ct__next ol{border-top:1px solid var(--tj-ink);counter-reset:n}
.tjpt .ct__next li{counter-increment:n;display:grid;grid-template-columns:40px 1fr;gap:8px;padding:14px 0;border-bottom:1px solid var(--tj-rule);font-size:16px}
.tjpt .ct__next li::before{content:"0" counter(n);font:400 12px/2 var(--tj-f-mono);color:var(--tj-signal-text)}
.tjpt .ct__next li small{display:block;color:var(--tj-graphite);font-size:14px;margin-top:2px}
.tjpt .ct__help{margin-top:32px}
.tjpt .ct__help > .mono{color:var(--tj-graphite);margin-bottom:12px}

/* ===== Article template ===== */
.tjpt .art-head{align-items:end;row-gap:28px}
.tjpt .art-head__meta{grid-column:1/4;display:grid;gap:8px;color:var(--tj-graphite)}
.tjpt .art-head__title{grid-column:4/13}
.tjpt .art-head__title .display{font-size:clamp(2.6rem,5.6vw,5.6rem);line-height:.95;margin-top:clamp(28px,3vw,44px)}
.tjpt .art-head__title .lead{max-width:38em}
.tjpt .art-cover{margin-top:clamp(40px,5vw,72px)}
.tjpt .art-cover .slot{aspect-ratio:21/9}
.tjpt .art-body{padding-block:var(--tj-block) var(--tj-section);align-items:start}
.tjpt .art-body .toc{grid-column:1/4}
.tjpt .prose{grid-column:4/11;min-width:0;font-size:18px;line-height:1.7}
.tjpt .prose > * + *{margin-top:1.1em}
.tjpt .prose h2{margin-top:2.2em;font-size:clamp(1.7rem,2.8vw,2.4rem);line-height:1.08;letter-spacing:-.04em;font-weight:500}
.tjpt .prose h3{margin-top:1.8em;font-size:clamp(1.25rem,1.8vw,1.5rem);letter-spacing:-.02em;font-weight:500}
.tjpt .prose a{text-decoration-color:var(--tj-signal);text-underline-offset:3px}
.tjpt .prose ul,.tjpt .prose ol{border-top:1px solid var(--tj-rule-strong)}
.tjpt .prose li{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--tj-rule-strong);font-size:17px}
.tjpt .prose ul li::before{content:"→";color:var(--tj-signal-text);font-family:var(--tj-f-mono);flex:none}
.tjpt .prose ol{counter-reset:o}
.tjpt .prose ol li{counter-increment:o}
.tjpt .prose ol li::before{content:counter(o,decimal-leading-zero);font:400 12px/2.4 var(--tj-f-mono);color:var(--tj-signal-text);flex:none}
.tjpt .prose :not(pre) > code{font-family:var(--tj-f-mono);font-size:.84em;background:var(--tj-paper-2);padding:1px 5px;border-radius:2px}
.tjpt .prose .code{font-size:13px;line-height:1.7}
.tjpt .note{padding:16px 20px;border-left:3px solid var(--tj-signal);border-radius:0;background:rgba(233,228,216,.6)}
.tjpt .note b{display:block;font:500 11px var(--tj-f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal-text);margin-bottom:4px}
.tjpt .prose figure .slot{aspect-ratio:16/9}
.tjpt .prose figcaption{margin-top:10px;font-size:14px;color:var(--tj-graphite)}
.tjpt .art-aside{grid-column:11/13;position:sticky;top:calc(var(--tj-header-h) + 24px)}
.tjpt .author{display:grid;grid-template-columns:72px 1fr;gap:18px;align-items:center;margin-top:3em;padding:20px 0;border-block:1px solid var(--tj-ink)}
.tjpt .author .slot{aspect-ratio:1;border-radius:50%}
.tjpt .author .slot__label{padding:4px;font-size:9px}
.tjpt .author p{font-size:15px;color:var(--tj-graphite);line-height:1.5}
.tjpt .author strong{display:block;color:var(--tj-ink);font-size:16px}
.tjpt .related{padding:var(--tj-block) 0;border-top:1px solid var(--tj-ink)}
.tjpt .related__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--tj-gap);margin-top:32px}
.tjpt .related__grid article{display:grid;gap:12px}
.tjpt .related__grid .slot{aspect-ratio:16/10}
.tjpt .related__grid h3{font-size:var(--tj-fs-h4);letter-spacing:-.02em;font-weight:500}


/* ===== Blog ===== */
.tjpt .post-meta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--tj-graphite)}
.tjpt .post-cat{color:var(--tj-signal-text);text-decoration:none}
.tjpt a.post-cat:hover{text-decoration:underline}
.tjpt .post-feature{padding-bottom:clamp(48px,6vw,88px)}
.tjpt .post-feature__in{align-items:center;row-gap:24px}
.tjpt .post-feature__media{grid-column:1/8;display:block}
.tjpt .post-feature__media .slot{aspect-ratio:16/10}
.tjpt .post-feature__text{grid-column:8/13;display:grid;gap:18px;align-content:start}
.tjpt .post-feature__text h3 a,.tjpt .post-card h3 a{text-decoration:none}
.tjpt .post-feature__text h3 a:hover,.tjpt .post-card h3 a:hover{color:var(--tj-signal-text)}
.tjpt .posts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(40px,5vw,64px) var(--tj-gap);padding-block:clamp(48px,6vw,88px) var(--tj-section)}
.tjpt .post-card{display:grid;gap:12px;align-content:start}
.tjpt .post-card[hidden]{display:none}
.tjpt .post-card > a{display:block;margin-bottom:6px;text-decoration:none}
.tjpt .post-feature__media{text-decoration:none}
.tjpt .post-card .slot{aspect-ratio:16/10}
.tjpt .post-card h3{font-size:var(--tj-fs-h4);line-height:1.2;letter-spacing:-.025em;font-weight:500;text-wrap:balance}
.tjpt .post-card .chip{justify-self:start}
.tjpt .posts .entries__empty{grid-column:1/-1}
.tjpt .tj-blog{padding:var(--tj-section) 0;border-top:1px solid var(--tj-ink)}
.tjpt .tj-blog .posts{padding:0}
.tjpt .updates-sec{padding-block:0 var(--tj-section)}
.tjpt .updates{border-top:1px solid var(--tj-ink)}
.tjpt .updates li{display:grid;grid-template-columns:140px 1fr auto;gap:16px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--tj-rule-strong)}
.tjpt .updates li > .mono{color:var(--tj-graphite)}
.tjpt .updates p{font-size:17px}
.tjpt .subscribe{background:var(--tj-paper-2);border-block:1px solid var(--tj-rule-strong);padding-block:var(--tj-block)}
.tjpt .subscribe__in{align-items:end;row-gap:28px}
.tjpt .subscribe__text{grid-column:1/6;display:grid;gap:14px}
.tjpt .subscribe__form{grid-column:7/13;display:grid;gap:10px}
.tjpt .subscribe__form > label{color:var(--tj-graphite)}
.tjpt .subscribe__row{display:flex;gap:12px;align-items:stretch}
.tjpt .subscribe__row input{flex:1;min-width:0;min-height:52px;padding:10px 0;border:0;border-bottom:1px solid var(--tj-ink);border-radius:0;background:transparent;font-size:17px}
.tjpt .subscribe__row input:focus{outline:none;border-bottom:2px solid var(--tj-signal)}
.tjpt .subscribe__row input[aria-invalid="true"]{border-bottom-color:var(--tj-signal-text)}
.tjpt .subscribe .err{font-size:13px;color:var(--tj-signal-text)}
.tjpt .subscribe .err:empty{display:none}
.tjpt .subscribe__note{font-size:13px;color:var(--tj-graphite)}
.tjpt .subscribe__note b{color:var(--tj-signal-text)}
.tjpt .subscribe__status{padding:12px 14px;border:1px solid var(--tj-signal-text);font-size:15px}
.tjpt .subscribe__status[hidden]{display:none}
.tjpt .share{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-top:2em;padding-top:16px;border-top:1px solid var(--tj-rule)}
.tjpt .share .mono{color:var(--tj-graphite)}
.tjpt .share__copy{background:none;border:0;border-bottom:1px solid currentColor;padding:0 0 2px;cursor:pointer;font-size:inherit}
.tjpt .post-nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--tj-gap);margin-top:2em;border-top:1px solid var(--tj-ink)}
.tjpt .post-nav div{display:grid;gap:6px;padding-top:14px;font-size:16px}
.tjpt .post-nav div:last-child{text-align:right}
.tjpt .post-nav .mono{color:var(--tj-graphite)}
.tjpt .prose .share,.tjpt .prose .post-nav{font-size:16px}

/* ===== 404 ===== */
.tjpt .nf .display{font-size:clamp(6rem,20vw,18rem);line-height:.8}

/* ---------- 7. Responsive ---------- */
@media (max-width:1100px){
  .tjpt .hero-body{grid-template-areas:"c c c c c c c c c c c c" "s s s s s s s s s s s s" "k k k k k k k k k k k k";grid-template-rows:auto}
  .tjpt .hero-copy{grid-template-columns:1fr auto;column-gap:var(--tj-gap);align-items:end}
  .tjpt .legend ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--tj-gap)}
  .tjpt .sh__idx{grid-column:1/13;padding:0 0 16px}
  .tjpt .sh__title{grid-column:1/13}
  .tjpt .acc .s-t{grid-column:2/8}.tjpt .acc .s-d{grid-column:8/12}
  .tjpt .acc__body ul,.tjpt .acc__body .links{grid-column:2/12}
  .tjpt .about__img{grid-column:1/6}.tjpt .about__copy{grid-column:6/13}
  .tjpt .contact__lead,.tjpt .contact .form{grid-column:1/13}
  .tjpt .page-hero__lead{grid-column:1/9}
  .tjpt .page-hero__aside{grid-column:1/13}
  .tjpt .cs-sum{grid-column:1/13}
  .tjpt .cs-spec{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tjpt .cs-spec div:nth-child(odd){padding-left:0;border-left:0}
  .tjpt .cs-spec div:nth-child(even){padding-left:16px;border-left:1px solid var(--tj-rule)}
  .tjpt .toc,.tjpt .art-body .toc{display:none}
  .tjpt .cs-main{grid-column:1/13}
  .tjpt .prose{grid-column:1/10}
  .tjpt .art-aside{grid-column:10/13}
  .tjpt .sv__head{grid-column:1/13;position:static}
  .tjpt .sv__body{grid-column:1/13}
  .tjpt .story__label{grid-column:1/13}
  .tjpt .story__text{grid-column:1/9}
  .tjpt .story__aside{grid-column:9/13}
  .tjpt .prod__media,.tjpt .prod--rev .prod__media{grid-column:1/13;order:0;position:static}
  .tjpt .prod__info,.tjpt .prod--rev .prod__info{grid-column:1/13}
  .tjpt .ct__intro,.tjpt .ct__panel{grid-column:1/13}
  .tjpt .ct__panel{clip-path:inset(0 -100vmax);padding-left:0}
  .tjpt .art-head__meta,.tjpt .art-head__title{grid-column:1/13}
  .tjpt .cta-band__title{grid-column:1/13}
  .tjpt .post-feature__media,.tjpt .post-feature__text{grid-column:1/13}
  .tjpt .posts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tjpt .subscribe__text,.tjpt .subscribe__form{grid-column:1/13}
  .tjpt .cta-band__act{grid-column:1/13}
  .tjpt .fcol--about{grid-column:1/13}
  .tjpt .fcol{grid-column:span 6}
}
@media (max-width:860px){
  :root{--tj-header-h:64px}
  .tjpt .nav,.tjpt .tj-header .btn{display:none}
  .tjpt .menu-btn{display:inline-flex}
  .tjpt .brand span{display:none}
  .tjpt .meta{grid-template-columns:1fr 1fr}
  .tjpt .meta li:nth-child(3){padding-left:0;border-left:0}
  .tjpt .meta li:nth-child(n+3){border-top:1px solid var(--tj-rule)}
  .tjpt .hero-copy{grid-template-columns:1fr}
  .tjpt .legend ol{grid-template-columns:1fr}
  .tjpt .legend__hint{display:none}
  .tjpt .cols .grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .tjpt .cols .grid i:nth-child(n+5){display:none}
  .tjpt .cols .grid i:nth-child(4){border-right:1px solid rgba(180,171,151,.28)}
  .tjpt .project__media,.tjpt .project__info,.tjpt .project--rev .project__media,.tjpt .project--rev .project__info{grid-column:1/13;order:0}
  .tjpt .project__num{font-size:4.5rem;margin-bottom:12px}
  .tjpt .acc summary{grid-template-columns:40px 1fr 36px;column-gap:12px}
  .tjpt .acc .s-n{grid-column:1}.tjpt .acc .s-t{grid-column:2}.tjpt .acc .s-i{grid-column:3}
  .tjpt .acc .s-d{grid-column:2/3;margin-top:8px}
  .tjpt .acc__body{grid-template-columns:40px 1fr;column-gap:12px}
  .tjpt .acc__body ul,.tjpt .acc__body .links,.tjpt .acc--faq .acc__body > p{grid-column:2}
  .tjpt .plugin{grid-column:1/13}
  .tjpt .about__img{grid-column:1/13;position:static;max-width:420px}
  .tjpt .about__copy{grid-column:1/13}
  .tjpt .ui__body{grid-template-columns:1fr}
  .tjpt .ui__links{display:none}
  .tjpt .page-hero__lead{grid-column:1/13}
  .tjpt .entry[data-pos]{grid-column:1/13;margin-top:0}
  .tjpt .entry[data-pos="1"] .frame .slot,.tjpt .entry[data-pos="2"] .frame .slot{aspect-ratio:16/10}
  .tjpt .filter-bar .wrap{flex-wrap:wrap}
  .tjpt .filters{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:2px;scrollbar-width:thin}
  .tjpt .filter{flex:none}
  .tjpt .filter-status{margin-left:0}
  .tjpt .deliver{grid-template-columns:1fr}
  .tjpt .deliver li:nth-child(even){padding-left:0;border-left:0}
  .tjpt .gallery,.tjpt .gallery--two,.tjpt .anno{grid-template-columns:1fr}
  .tjpt .gallery .phone{max-width:220px}
  .tjpt .cs-next__t,.tjpt .cs-next__a{grid-column:1/13;justify-self:start}
  .tjpt .sv__body{grid-template-columns:1fr}
  .tjpt .trio{grid-template-columns:1fr}
  .tjpt .trio > div + div{padding-left:0;border-left:0}
  .tjpt .steps{grid-template-columns:1fr 1fr;row-gap:28px}
  .tjpt .terms{grid-template-columns:1fr}
  .tjpt .terms > div + div{padding-left:0;border-left:0}
  .tjpt .ab-hero__text{grid-column:1/13}
  .tjpt .ab-hero__img{grid-column:1/13;max-width:420px}
  .tjpt .story__text,.tjpt .story__aside{grid-column:1/13}
  .tjpt .stack__row h3,.tjpt .stack__row ul,.tjpt .stack__row > a,.tjpt .stack__row > span{grid-column:1/13;justify-self:start}
  .tjpt .stack__row ul{margin-top:10px}
  .tjpt .stack__row > a,.tjpt .stack__row > span{margin-top:10px}
  .tjpt .ledger li{grid-template-columns:40px 1fr;row-gap:6px}
  .tjpt .ledger li > p,.tjpt .ledger li > a{grid-column:2}
  .tjpt .prose,.tjpt .art-aside{grid-column:1/13}
  .tjpt .art-aside{position:static}
  .tjpt .related__grid{grid-template-columns:1fr}
  .tjpt .posts{grid-template-columns:1fr}
  .tjpt .updates li{grid-template-columns:1fr auto}
  .tjpt .updates li p{grid-column:1/-1;grid-row:2}
  .tjpt .post-nav{grid-template-columns:1fr}
  .tjpt .post-nav div:last-child{text-align:left}
}
@media (max-width:560px){
  body.tjpt-site{font-size:16px}
  .tjpt .meta{grid-template-columns:1fr}
  .tjpt .meta li:nth-child(1),.tjpt .meta li:nth-child(3){display:none}
  .tjpt .meta li:nth-child(2){border-top:0}
  .tjpt .meta li,.tjpt .meta li+li{padding:10px 0;border-left:0}
  .tjpt .meta li+li{border-top:1px solid var(--tj-rule)}
  .tjpt .hero-actions .btn{flex:1 1 100%;justify-content:space-between}
  .tjpt .spec__bar{flex-direction:column;align-items:flex-start}
  .tjpt .frame{box-shadow:6px 6px 0 -1px var(--tj-paper-2),6px 6px 0 0 var(--tj-rule-strong)}
  .tjpt .pair{padding-right:0}.tjpt .pair .phone{width:30%;bottom:-10%;right:-4px}
  .tjpt .ba{padding:16% 0 0 14%}.tjpt .ba .before{width:56%}
  .tjpt .specs div{grid-template-columns:88px 1fr}
  .tjpt .facts,.tjpt .principles ol{grid-template-columns:1fr}
  .tjpt .facts div:nth-child(even),.tjpt .principles li:nth-child(even){padding-left:0;border-left:0}
  .tjpt .form{grid-template-columns:1fr}
  .tjpt .form__foot .btn{width:100%;justify-content:space-between}
  .tjpt .code{font-size:11.5px}
  .tjpt .code .blk{padding-left:44px}.tjpt .code .blk .gut{left:12px}
  .tjpt .proto{right:10px;bottom:10px;min-height:34px;padding:0 10px;font-size:10px}
  .tjpt .cs-spec{grid-template-columns:1fr}
  .tjpt .cs-spec div:nth-child(even){padding-left:0;border-left:0}
  .tjpt .steps{grid-template-columns:1fr}
  .tjpt .fcol{grid-column:1/13}
  .tjpt .cs-sec__head{flex-wrap:wrap}
  .tjpt .cs-sec__head .chip{margin-left:0}
  .tjpt .subscribe__row{flex-direction:column}
  .tjpt .subscribe__row .btn{justify-content:space-between}
}

/* ---------- 8. Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .tjpt,.tjpt *,.tjpt::before,.tjpt *::before,.tjpt::after,.tjpt *::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .js .tjpt .rv,.js .tjpt .spec .pin{opacity:1;transform:none}
}

/* =====================================================================
   WordPress / Elementor integration layer (not in the prototype)
   ===================================================================== */


/* Sticky header: stick the outer location wrapper, not the inner widget
   (a sticky element inside a same-height parent never sticks). */
.elementor-location-header,
.tjpt-fallback-header{position:sticky;top:0;z-index:40}
.admin-bar .elementor-location-header,
.admin-bar .tjpt-fallback-header{top:32px}
@media (max-width:782px){
  .admin-bar .elementor-location-header,
  .admin-bar .tjpt-fallback-header{top:46px}
}
@media (max-width:600px){
  .admin-bar .elementor-location-header,
  .admin-bar .tjpt-fallback-header{top:0}
}
.tjpt .tj-header{position:relative}
.tjpt{display:block;width:100%}

/* Post content lists: block layout with a positioned marker, so mixed inline
   content from the block editor (links, <code>, <strong>) never splits into
   flex items. Design lists wrap mixed content in a <span> instead. */
.tjpt .prose li{display:block;position:relative;padding-left:26px}
.tjpt .prose ul li::before{position:absolute;left:0;top:10px;line-height:inherit}
.tjpt .prose li{padding-top:8px;padding-bottom:8px}
.tjpt .prose ul li::before{top:8px}
.tjpt .prose ol li::before{position:absolute;left:0;top:8px}
.tjpt .prose li > ul,.tjpt .prose li > ol{margin-top:8px}

/* Real post content from the block editor */
.tjpt .prose img{max-width:100%;height:auto}
.tjpt .prose .wp-block-image,
.tjpt .prose figure{margin-inline:0}
.tjpt .prose figcaption,
.tjpt .prose .wp-element-caption{margin-top:10px;font-size:14px;color:var(--tj-graphite)}
.tjpt .prose pre,
.tjpt .prose .wp-block-code{background:var(--tj-ink);color:#E8E4DA;border:1px solid var(--tj-ink);padding:16px 18px;overflow:auto;font:400 13px/1.7 var(--tj-f-mono);border-radius:0}
.tjpt .prose pre code{background:none;padding:0;font-size:inherit;color:inherit}
.tjpt .prose blockquote,
.tjpt .prose .wp-block-quote{padding:16px 20px;border-left:3px solid var(--tj-signal);border-radius:0;background:rgba(233,228,216,.6)}
.tjpt .prose blockquote p{font-size:18px}
.tjpt .prose table{width:100%;border-collapse:collapse;font-size:15px}
.tjpt .prose th,.tjpt .prose td{padding:10px 12px;border-bottom:1px solid var(--tj-rule);text-align:left}
.tjpt .prose th{font:500 11px var(--tj-f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--tj-graphite)}
.tjpt .prose hr{border:0;border-top:1px solid var(--tj-ink);margin:2.4em 0}
.tjpt .prose .alignwide,.tjpt .prose .alignfull{width:100%}

/* Enquiry form: server messages */
.tjpt .form__status--ok{border-color:var(--tj-signal)}
.tjpt .form__status--error{border-color:#FF8A5C}
.tjpt .f .err:not(:empty){display:block}

/* Pagination (blog) */
.tjpt .pager{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap;padding-top:8px}
.tjpt .pager a,.tjpt .pager span{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 12px;border:1px solid var(--tj-ink);border-radius:2px;font:500 12px var(--tj-f-mono);text-decoration:none}
.tjpt .pager .current{background:var(--tj-ink);color:var(--tj-on-ink)}

/* Empty states shown when there is no published content yet */
.tjpt .empty-state{padding:clamp(40px,5vw,72px) 0;border-top:1px solid var(--tj-ink);color:var(--tj-graphite)}

/* Editor-only notices (visible to logged-in editors, never to visitors) */
.tjpt .tjpt-editor-note{display:block;margin:12px 0;padding:10px 14px;border:1px dashed var(--tj-signal);font:500 12px/1.5 var(--tj-f-mono);color:var(--tj-signal-text);background:var(--tj-card)}

/* Skip-link target and loop-item card */
.tjpt-main:focus{outline:none}
.tjpt .entries--single{grid-template-columns:minmax(0,1fr)}

/* Links: Elementor's frontend CSS removes underlines (.elementor a); the
   design relies on the browser default for plain links. */
.tjpt a{text-decoration:underline}

/* Elementor Pro forms (TJ Contact Form – Full/Short) styled like the site's own form */
.tjpt .contact .contact__ef{grid-column:7/13}
@media (max-width:860px){.tjpt .contact .contact__ef{grid-column:1/-1}}
.tjpt .tjpt-ef .elementor-form-fields-wrapper{margin-left:-12px;margin-right:-12px}
.tjpt .tjpt-ef .elementor-field-group{padding-left:12px;padding-right:12px;margin-bottom:28px;gap:8px}
.tjpt .tjpt-ef .elementor-field-label{font-family:var(--tj-f-mono);font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb,currentColor 62%,transparent);margin:0;padding:0}
.tjpt .tjpt-ef .elementor-mark-required .elementor-field-label:after{color:var(--tj-signal);padding-left:.2em}
.tjpt .tjpt-ef .elementor-field-textual,.tjpt .tjpt-ef .elementor-field-group .elementor-select-wrapper select{width:100%;background:transparent;border:0;border-bottom:1px solid color-mix(in srgb,currentColor 55%,transparent);border-radius:0;color:inherit;font-family:var(--tj-f-sans);font-size:17px;line-height:1.4;padding:10px 0;min-height:48px;box-shadow:none;outline:0;transition:border-color .2s}
.tjpt .tjpt-ef textarea.elementor-field-textual{min-height:120px;resize:vertical}
.tjpt .tjpt-ef .elementor-field-textual::placeholder{color:color-mix(in srgb,currentColor 45%,transparent)}
.tjpt .tjpt-ef .elementor-field-textual:focus{border-bottom-color:var(--tj-signal);box-shadow:none}
.tjpt .tjpt-ef .elementor-select-wrapper .select-caret-down-wrapper{color:inherit;right:4px}
.tjpt .tjpt-ef select option{color:var(--tj-ink);background:var(--tj-paper)}
.tjpt .tjpt-ef .elementor-field-type-acceptance .elementor-field-subgroup{gap:10px}
.tjpt .tjpt-ef .elementor-field-option{display:flex;align-items:flex-start;gap:10px}
.tjpt .tjpt-ef .elementor-field-option input{width:18px;height:18px;margin-top:2px;accent-color:var(--tj-signal);flex:none}
.tjpt .tjpt-ef .elementor-field-option label{font-size:15px;line-height:1.5;color:color-mix(in srgb,currentColor 80%,transparent)}
.tjpt .tjpt-ef .elementor-field-type-submit{margin-top:4px}
.tjpt .tjpt-ef .elementor-button{display:inline-flex;align-items:center;gap:12px;height:52px;padding:0 24px;background:var(--tj-signal);border:1px solid var(--tj-signal);border-radius:2px;color:var(--tj-ink);font-family:var(--tj-f-sans);font-size:15px;font-weight:500;letter-spacing:normal;text-transform:none;transition:background .2s,border-color .2s,transform .2s}
.tjpt .tjpt-ef .elementor-button:after{content:"\2192"}
.tjpt .tjpt-ef .elementor-button:hover,.tjpt .tjpt-ef .elementor-button:focus-visible{background:var(--tj-paper);border-color:var(--tj-paper);color:var(--tj-ink)}
.tjpt .tjpt-ef .elementor-field-type-submit .elementor-button{width:auto}
.tjpt .tjpt-ef .elementor-message{font-size:15px;color:inherit;margin-top:12px}
.tjpt .tjpt-ef .elementor-message.elementor-message-danger,.tjpt .tjpt-ef .elementor-error .elementor-field-textual{border-bottom-color:var(--tj-signal)}
.tjpt .tjpt-ef .elementor-message:before{color:var(--tj-signal)}
.tjpt .tjpt-ef .elementor-form .elementor-help-inline{color:var(--tj-signal);font-size:13px}

/* Override Elementor's default form colours (higher specificity than the widget's generated CSS) */
.tjpt .tjpt-ef .elementor-field-group .elementor-field:not(.elementor-select-wrapper),.tjpt .tjpt-ef .elementor-field-group .elementor-select-wrapper select{background-color:transparent!important;color:inherit!important;border-top:0!important;border-left:0!important;border-right:0!important;border-bottom:1px solid color-mix(in srgb,currentColor 55%,transparent)!important;border-radius:0!important}
.tjpt .tjpt-ef .elementor-field-group .elementor-field:focus{border-bottom-color:var(--tj-signal)!important}
.tjpt .tjpt-ef .elementor-field-group .elementor-select-wrapper .select-caret-down-wrapper{color:inherit!important}
.tjpt .tjpt-ef .elementor-field-type-submit .elementor-button{width:auto!important;flex:none!important;background-color:var(--tj-signal)!important;color:var(--tj-ink)!important;border-radius:2px!important}
.tjpt .tjpt-ef .elementor-field-type-submit .elementor-button:hover,.tjpt .tjpt-ef .elementor-field-type-submit .elementor-button:focus-visible{background-color:var(--tj-paper)!important;border-color:var(--tj-paper)!important}
.tjpt .tjpt-ef .elementor-field-type-submit{justify-content:flex-start!important}

/* Cookie banner */
.tj-cookie{position:fixed;left:clamp(12px,3vw,32px);bottom:clamp(12px,3vw,32px);z-index:9999;width:min(440px,calc(100vw - 24px));padding:22px 24px 24px;background:var(--tj-ink);color:var(--tj-paper);border:1px solid color-mix(in srgb,var(--tj-paper) 18%,transparent);box-shadow:0 18px 50px rgba(20,19,17,.28);font-family:var(--tj-f-sans)}
.tj-cookie[hidden]{display:none}
.tj-cookie__label{font-family:var(--tj-f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal);margin:0 0 10px}
.tj-cookie__text{font-size:15px;line-height:1.55;margin:0 0 18px;color:color-mix(in srgb,var(--tj-paper) 85%,transparent)}
.tj-cookie__text a{color:var(--tj-paper);text-decoration:underline;text-underline-offset:3px}
.tj-cookie__btns{display:flex;flex-wrap:wrap;gap:10px}
.tj-cookie .btn{height:44px;padding:0 18px;font-size:14px}
.tj-cookie .btn--ghost{background:transparent;color:var(--tj-paper);border:1px solid color-mix(in srgb,var(--tj-paper) 45%,transparent)}
.tj-cookie .btn--ghost:hover{border-color:var(--tj-paper)}
.tj-cookie-link{color:inherit}

/* Legal pages (Privacy & cookie policy) */
.e-con.tjpt-legal-wrap{width:100%!important;max-width:var(--tj-max)!important;margin-inline:auto!important;padding:clamp(24px,4vw,56px) var(--tj-pad) var(--tj-section,120px)!important;--content-width:100%}
.e-con.tjpt-legal-wrap>.e-con-inner{max-width:100%!important;padding:0!important}
.e-con .elementor-widget.tjpt-legal{max-width:760px!important}
.tjpt-legal table,.tjpt-legal th,.tjpt-legal td{border-left:0!important;border-right:0!important;border-top:0!important;background:transparent!important}
.tjpt-legal{max-width:760px;font-size:17px;line-height:1.7;color:var(--tj-ink)}
.tjpt-legal p,.tjpt-legal li,.tjpt-legal td{color:var(--tj-graphite)}
.tjpt-legal h2{font-family:var(--tj-f-sans);font-size:clamp(1.6rem,2.6vw,2.1rem);line-height:1.15;font-weight:500;letter-spacing:-.025em;color:var(--tj-ink);margin:56px 0 16px;padding-top:24px;border-top:1px solid var(--tj-rule)}
.tjpt-legal h2:first-child{margin-top:0}
.tjpt-legal h3{font-family:var(--tj-f-mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--tj-signal-text);margin:32px 0 10px}
.tjpt-legal p{margin:0 0 16px}
.tjpt-legal ul{margin:0 0 20px;padding-left:1.2em}
.tjpt-legal li{margin:0 0 8px}
.tjpt-legal li::marker{color:var(--tj-signal)}
.tjpt-legal strong{color:var(--tj-ink);font-weight:500}
.tjpt-legal a{color:var(--tj-ink);text-decoration:underline;text-decoration-color:var(--tj-signal);text-underline-offset:3px}
.tjpt-legal figure{margin:8px 0 24px;overflow-x:auto}
.tjpt-legal table{width:100%;border-collapse:collapse;font-size:15px}
.tjpt-legal th{font-family:var(--tj-f-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--tj-graphite);text-align:left;padding:10px 12px 10px 0;border-bottom:1px solid var(--tj-ink)}
.tjpt-legal td{padding:12px 12px 12px 0;border-bottom:1px solid var(--tj-rule);vertical-align:top}
.tjpt-legal td:first-child{font-family:var(--tj-f-mono);font-size:13px;color:var(--tj-ink)}
.tj-cookie button,.tj-cookie a,.tj-cookie-link,[data-tj-cookie-settings]{cursor:pointer}


/* ==========================================================================
   Social links (footer + contact) and Reviews page
   ========================================================================== */
.tjpt .tj-social{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.tjpt .tj-social li{margin:0;padding:0}
.tjpt .tj-social__a{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:44px;height:44px;border:1px solid var(--tj-rule-strong);border-radius:999px;color:var(--tj-ink);text-decoration:none;transition:background .2s var(--tj-ease),border-color .2s var(--tj-ease),color .2s var(--tj-ease),transform .2s var(--tj-ease)}
.tjpt .tj-social__a:hover{background:var(--tj-signal);border-color:var(--tj-signal);color:var(--tj-ink);transform:translateY(-2px)}
.tjpt .tj-social__a:focus-visible{outline:2px solid var(--tj-signal);outline-offset:3px}
.tjpt .tj-social__ico{width:20px;height:20px;flex:none;display:block}
.tjpt .tj-social--labels .tj-social__a{width:auto;padding:0 18px 0 14px;font-size:var(--tj-fs-small);font-weight:500}
.tjpt .tj-footer .tj-social{justify-self:start;margin-top:22px;gap:12px}
.tjpt .tj-footer .tj-social__a{width:46px;height:46px;color:var(--tj-on-ink);background:rgba(243,240,232,.07);border-color:rgba(243,240,232,.2)}
.tjpt .tj-footer .tj-social__ico{width:21px;height:21px}
.tjpt .tj-footer .tj-social li{margin:0;padding:0;border:0}
.tjpt .tj-footer .tj-social .tj-social__a{display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1}
.tjpt .tj-social__a--fiverr:hover{background:#1DBF73;border-color:#1DBF73;color:#fff}
.tjpt .tj-social__a--upwork:hover{background:#14A800;border-color:#14A800;color:#fff}
.tjpt .tj-social__a--linkedin:hover{background:#0A66C2;border-color:#0A66C2;color:#fff}
.tjpt .tj-social__a--whatsapp:hover{background:#25D366;border-color:#25D366;color:#fff}
.tjpt .tj-footer .tj-social__a:hover{color:#fff}
.tjpt .ct__social .tj-social{margin-top:12px}
.tjpt .ct__next .tj-social li{counter-increment:none;display:block;padding:0;border:0;font-size:inherit}
.tjpt .ct__next .tj-social li::before{content:none}

/* Reviews page */
.tjpt-reviews .rvw-hero__in{align-items:end;row-gap:48px}
.tjpt-reviews .rvw-hero__text{grid-column:1 / span 8}
.tjpt-reviews .rvw-hero__text .lead{max-width:44ch}
.tjpt-reviews .rvw-hero .hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,3.2vw,44px)}
.tjpt-reviews .rvw-stats{grid-column:9 / span 4;margin:0;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--tj-ink)}
.tjpt-reviews .rvw-stats > div{padding:18px 0 20px;border-bottom:1px solid var(--tj-rule)}
.tjpt-reviews .rvw-stats > div:nth-child(odd){padding-right:16px}
.tjpt-reviews .rvw-stats dt{font-size:var(--tj-fs-label);color:var(--tj-graphite);text-transform:uppercase;letter-spacing:.08em;margin:0 0 6px}
.tjpt-reviews .rvw-stats dd{margin:0;font-size:clamp(1.6rem,2.6vw,2.3rem);letter-spacing:-.03em;line-height:1.05}
.tjpt-reviews .rvw-stats small{display:block;font-size:var(--tj-fs-small);letter-spacing:0;color:var(--tj-graphite);margin-top:4px}
.tjpt-reviews .rvw-journey__in{align-items:center;row-gap:40px;margin-top:clamp(32px,4vw,56px)}
.tjpt-reviews .rvw-journey__text{grid-column:1 / span 5}
.tjpt-reviews .rvw-journey__text p{margin:0 0 1em;font-size:var(--tj-fs-lead);line-height:1.55}
.tjpt-reviews .rvw-journey__text .muted{color:var(--tj-graphite)}
.tjpt-reviews .rvw-facts{list-style:none;margin:28px 0 32px;padding:0;border-top:1px solid var(--tj-rule)}
.tjpt-reviews .rvw-facts li{margin:0;padding:12px 0;border-bottom:1px solid var(--tj-rule);font-size:var(--tj-fs-small);color:var(--tj-graphite);display:flex;gap:14px;align-items:baseline}
.tjpt-reviews .rvw-facts b{min-width:92px;font-size:1.15rem;color:var(--tj-ink);font-weight:600;letter-spacing:-.02em}
.tjpt-reviews .rvw-shot{grid-column:7 / span 6;margin:0}
.tjpt-reviews .rvw-shot__frame{display:block;text-decoration:none;color:inherit;background:var(--tj-card);border:1px solid var(--tj-rule-strong);border-radius:14px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(20,19,17,.35),0 2px 0 rgba(20,19,17,.04);transition:transform .4s var(--tj-ease),box-shadow .4s var(--tj-ease)}
.tjpt-reviews .rvw-shot__frame:hover{transform:translateY(-4px);box-shadow:0 40px 70px -30px rgba(20,19,17,.45)}
.tjpt-reviews .rvw-shot__bar{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--tj-rule);background:var(--tj-paper-2)}
.tjpt-reviews .rvw-shot__bar i{width:9px;height:9px;border-radius:50%;background:var(--tj-rule-strong)}
.tjpt-reviews .rvw-shot__bar span{margin-left:10px;font-size:var(--tj-fs-label);color:var(--tj-graphite)}
.tjpt-reviews .rvw-shot img{display:block;width:100%;height:auto}
.tjpt-reviews .rvw-shot__ph{display:grid;place-items:center;aspect-ratio:16/10;color:var(--tj-graphite)}
.tjpt-reviews .rvw-shot figcaption{margin-top:16px;font-size:var(--tj-fs-label);color:var(--tj-graphite)}
.tjpt-reviews .rvw-list{list-style:none;margin:clamp(32px,4vw,56px) 0 0;padding:0;columns:3 300px;column-gap:var(--tj-gap)}
.tjpt-reviews .rvw-card{break-inside:avoid;margin:0 0 var(--tj-gap);padding:0}
.tjpt-reviews .rvw-card figure{margin:0;background:var(--tj-card);border:1px solid var(--tj-rule);border-radius:12px;padding:24px 24px 20px;transition:border-color .2s var(--tj-ease),transform .2s var(--tj-ease)}
.tjpt-reviews .rvw-card figure:hover{border-color:var(--tj-rule-strong);transform:translateY(-2px)}
.tjpt-reviews .rvw-card__top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.tjpt-reviews .rvw-stars{color:var(--tj-signal);letter-spacing:2px;font-size:15px}
.tjpt-reviews .rvw-card__date{font-size:var(--tj-fs-label);color:var(--tj-graphite)}
.tjpt-reviews .rvw-card blockquote{margin:0;padding:0;border:0;quotes:none}
.tjpt-reviews .rvw-card blockquote p{margin:0;font-size:16px;line-height:1.6;color:var(--tj-ink)}
.tjpt-reviews .rvw-card__who{display:flex;align-items:center;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--tj-rule)}
.tjpt-reviews .rvw-card__av{width:38px;height:38px;border-radius:50%;background:var(--tj-ink);color:var(--tj-on-ink);display:grid;place-items:center;font-weight:600;font-size:15px;flex:none}
.tjpt-reviews .rvw-card__id{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.tjpt-reviews .rvw-card__id b{font-weight:600;font-size:var(--tj-fs-small);overflow-wrap:anywhere}
.tjpt-reviews .rvw-card__id small{font-size:13px;color:var(--tj-graphite)}
.tjpt-reviews .rvw-card__chip{margin-left:auto;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--tj-signal-text);border:1px solid currentColor;border-radius:999px;padding:3px 9px;white-space:nowrap}
.tjpt-reviews .rvw-more{margin:clamp(24px,3vw,40px) 0 0;text-align:center}
@media (max-width:1024px){
  .tjpt-reviews .rvw-hero__text,.tjpt-reviews .rvw-stats,.tjpt-reviews .rvw-journey__text,.tjpt-reviews .rvw-shot{grid-column:1 / -1}
  .tjpt-reviews .rvw-shot__frame{transform:none}
}
@media (max-width:600px){
  .tjpt-reviews .rvw-card figure{padding:20px 18px 16px}
  .tjpt-reviews .rvw-card__chip{display:none}
}
@media (prefers-reduced-motion:reduce){
  .tjpt .tj-social__a,.tjpt-reviews .rvw-shot__frame,.tjpt-reviews .rvw-card figure{transition:none;transform:none}
}
