/* ============================================================
   Pier Head Japan — shared design system
   Concept: night harbor ink × Liverpool red · maritime editorial
   ============================================================ */
:root{
  --ink:#0a0e13; --ink-2:#10161e; --ink-3:#161d27;
  --ivory:#f2ede1; --ivory-dim:rgba(242,237,225,.62); --ivory-faint:rgba(242,237,225,.34);
  --red:#c8102e; --red-bright:#e11d33; --gold:#c9a24a;
  --line:rgba(242,237,225,.14); --line-2:rgba(242,237,225,.08);
  --maxw:1240px;
  --serif:"Spectral",Georgia,serif;
  --display:"Bricolage Grotesque",system-ui,sans-serif;
  --mono:"Space Mono",ui-monospace,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--ink);color:var(--ivory);font-family:var(--serif);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body::after{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
::selection{background:var(--red);color:var(--ivory)}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.red{color:var(--red-bright)}
.serif{font-family:var(--serif)}

/* ---------- header (JS-injected) ---------- */
header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;
  padding:16px 32px;background:linear-gradient(180deg,rgba(10,14,19,.92),rgba(10,14,19,0));transition:background .4s ease}
header.solid{background:rgba(10,14,19,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(10px)}
.brand{display:flex;align-items:center;gap:12px}
.brand svg{width:30px;height:30px;flex:none}
.brand .name{font-family:var(--display);font-weight:700;font-size:16px;letter-spacing:.02em}
.brand .name b{color:var(--red-bright);font-weight:700}
nav{display:flex;gap:28px;align-items:center}
nav a.link{font-family:var(--mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--ivory-dim);transition:color .25s;position:relative;padding:4px 0}
nav a.link:hover,nav a.link.active{color:var(--ivory)}
nav a.link.active::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:var(--red)}
nav a.cta{font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--ivory);border:1px solid var(--line);padding:9px 15px;border-radius:2px;transition:.25s}
nav a.cta:hover{background:var(--red);border-color:var(--red)}
.menu-btn{display:none;background:none;border:1px solid var(--line);color:var(--ivory);font-family:var(--mono);font-size:11px;letter-spacing:.14em;padding:9px 13px;border-radius:2px;cursor:pointer}
@media(max-width:900px){
  nav .link{display:none}
  .menu-btn{display:block}
  nav.open{position:fixed;inset:56px 0 auto 0;flex-direction:column;gap:0;background:rgba(10,14,19,.98);border-bottom:1px solid var(--line);padding:8px 0}
  nav.open .link{display:block;padding:14px 32px;width:100%}
  nav.open .cta{margin:12px 32px}
}

/* ---------- buttons ---------- */
.btn{font-family:var(--mono);font-size:12px;letter-spacing:.13em;text-transform:uppercase;padding:15px 26px;border-radius:2px;transition:.3s;display:inline-flex;align-items:center;gap:10px;cursor:pointer;border:none}
.btn-primary{background:var(--red);color:var(--ivory)}
.btn-primary:hover{background:var(--red-bright);transform:translateY(-2px)}
.btn-ghost{border:1px solid var(--line);color:var(--ivory-dim);background:none}
.btn-ghost:hover{color:var(--ivory);border-color:var(--ivory-faint)}

/* ---------- home hero ---------- */
.hero{position:relative;min-height:100vh;display:flex;align-items:center;padding-top:90px;overflow:hidden}
.hero-bg{position:absolute;inset:0;z-index:0}
.hero-bg::before{content:"";position:absolute;inset:0;
  background:radial-gradient(120% 90% at 78% 18%,rgba(200,16,46,.16),transparent 55%),radial-gradient(90% 70% at 12% 90%,rgba(201,162,74,.07),transparent 60%),linear-gradient(180deg,#0a0e13,#0c1119 60%,#0a0e13)}
.hero-bg .horizon{position:absolute;left:0;right:0;top:62%;height:1px;background:linear-gradient(90deg,transparent,var(--line) 20%,var(--line) 80%,transparent)}
.route-svg{position:absolute;inset:0;width:100%;height:100%;z-index:1;opacity:.9}
.hero .wrap{position:relative;z-index:3}
.eyebrow{display:flex;align-items:center;gap:14px;color:var(--ivory-dim);margin-bottom:26px;flex-wrap:wrap}
.eyebrow::before{content:"";width:34px;height:1px;background:var(--red);flex:none}
.eyebrow .sig{color:var(--red-bright);letter-spacing:.16em}
h1.title{font-family:var(--display);font-weight:500;font-size:clamp(34px,5.4vw,68px);line-height:1.02;letter-spacing:-.02em;max-width:16ch}
h1.title b{font-weight:800}
h1.title .thin{font-family:var(--serif);font-weight:300;font-style:italic;color:var(--ivory)}
.lede{max-width:560px;margin:30px 0 38px;font-size:19px;line-height:1.6;color:var(--ivory-dim)}
.lede b{color:var(--ivory);font-weight:500}
.hero-cta{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.audience{display:flex;gap:14px;margin-top:44px;flex-wrap:wrap}
.audience a{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ivory-dim);border:1px solid var(--line);border-radius:2px;padding:12px 16px;transition:.25s;display:flex;gap:10px;align-items:center}
.audience a:hover{border-color:var(--red);color:var(--ivory)}
.audience a b{color:var(--red-bright);font-weight:400}
.port-tag{position:absolute;z-index:2;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--ivory-dim)}
.port-tag .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red);margin-right:8px;vertical-align:middle;box-shadow:0 0 0 4px rgba(200,16,46,.18)}
.port-tag .pt-name{color:var(--ivory);text-transform:uppercase;letter-spacing:.16em}
.port-tag.lpl{top:24%;left:7%}.port-tag.tyo{bottom:18%;right:8%;text-align:right}
@media(max-width:900px){.port-tag{display:none}}

/* ---------- interior page header ---------- */
.page-hero{position:relative;padding:150px 0 70px;border-bottom:1px solid var(--line);overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 120% at 88% 0%,rgba(200,16,46,.12),transparent 55%);z-index:0}
.page-hero .wrap{position:relative;z-index:2}
.page-hero .kicker{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--red-bright);display:flex;align-items:center;gap:12px;margin-bottom:22px}
.page-hero .kicker::before{content:"";width:28px;height:1px;background:var(--red)}
.page-hero h1{font-family:var(--display);font-weight:500;font-size:clamp(34px,6vw,68px);line-height:1;letter-spacing:-.02em;max-width:16ch}
.page-hero h1 .thin{font-family:var(--serif);font-weight:300;font-style:italic}
.page-hero .sub{max-width:600px;margin-top:26px;font-size:19px;color:var(--ivory-dim)}
.page-hero .coords{position:absolute;right:32px;bottom:30px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ivory-faint);text-align:right;line-height:1.8;z-index:2}
@media(max-width:700px){.page-hero .coords{display:none}}

/* ---------- generic section ---------- */
section{position:relative;z-index:2}
.sec{padding:100px 0}
.sec-tight{padding:70px 0}
.sec-head{display:flex;align-items:baseline;gap:20px;margin-bottom:52px;flex-wrap:wrap}
.sec-num{font-family:var(--mono);font-size:12px;color:var(--red-bright);letter-spacing:.1em}
.sec-title{font-family:var(--display);font-weight:500;font-size:clamp(26px,3.6vw,42px);line-height:1.05;letter-spacing:-.01em}
.sec-sub{color:var(--ivory-dim);max-width:520px;margin-left:auto;font-size:16px}
.rule{height:1px;background:var(--line);width:100%}
.alt{background:var(--ink-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* ---------- home: manifesto ---------- */
.manifesto .wrap{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
@media(max-width:860px){.manifesto .wrap{grid-template-columns:1fr;gap:36px}}
.manifesto .big{font-family:var(--serif);font-weight:300;font-size:clamp(23px,2.8vw,32px);line-height:1.45}
.manifesto .big em{color:var(--red-bright);font-style:italic}
.manifesto .body p{color:var(--ivory-dim);margin-bottom:18px}.manifesto .body p:last-child{margin-bottom:0}
.heritage{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ivory-faint);margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}

/* ---------- 3-pillar service cards (home) ---------- */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
@media(max-width:860px){.pillars{grid-template-columns:1fr}}
.pillar{background:var(--ink);padding:38px 30px;transition:.35s;position:relative}
.pillar:hover{background:var(--ink-2)}
.pillar .pn{font-family:var(--mono);font-size:12px;color:var(--red-bright);letter-spacing:.1em}
.pillar h3{font-family:var(--display);font-weight:600;font-size:22px;margin:20px 0 6px;line-height:1.15}
.pillar .jp{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ivory-faint);text-transform:uppercase}
.pillar p{color:var(--ivory-dim);font-size:15px;margin:16px 0 20px;line-height:1.55}
.pillar .who{font-size:13px;color:var(--ivory-faint);font-style:italic;border-top:1px solid var(--line);padding-top:14px}
.pillar .go{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--ivory);margin-top:18px;display:inline-flex;gap:8px;transition:.25s}
.pillar:hover .go{gap:14px;color:var(--red-bright)}

/* ---------- proof stats (home) ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
@media(max-width:860px){.stats{grid-template-columns:1fr}}
.stat{padding:8px 30px;border-left:1px solid var(--line)}
.stat:first-child{border-left:none;padding-left:0}
.stat .v{font-family:var(--display);font-weight:700;font-size:clamp(30px,4vw,44px);line-height:1;color:var(--ivory)}
.stat .v em{color:var(--red-bright);font-style:normal}
.stat .k{color:var(--ivory-dim);font-size:15px;margin-top:12px;line-height:1.4}
@media(max-width:860px){.stat{border-left:none;border-top:1px solid var(--line);padding:22px 0}.stat:first-child{border-top:none}}

/* ---------- reasons (home) ---------- */
.reasons{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
@media(max-width:760px){.reasons{grid-template-columns:1fr}}
.reason{background:var(--ink);padding:30px 28px}
.reason .n{font-family:var(--mono);font-size:11px;color:var(--red-bright);letter-spacing:.12em}
.reason h4{font-family:var(--display);font-weight:600;font-size:18px;margin:14px 0 8px}
.reason p{color:var(--ivory-dim);font-size:14.5px;line-height:1.55}

/* ---------- service detail (services page) ---------- */
.svc-detail{padding:74px 0;border-bottom:1px solid var(--line)}
.svc-detail:last-child{border-bottom:none}
.svc-top{display:grid;grid-template-columns:.85fr 1.15fr;gap:50px;margin-bottom:44px}
@media(max-width:860px){.svc-top{grid-template-columns:1fr;gap:20px}}
.svc-top .idx{font-family:var(--mono);font-size:13px;color:var(--red-bright);letter-spacing:.1em}
.svc-top h2{font-family:var(--display);font-weight:600;font-size:clamp(26px,3.4vw,38px);line-height:1.08;margin-top:16px}
.svc-top .jp{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--ivory-faint);text-transform:uppercase;margin-top:10px}
.svc-top .intro{font-size:18px;color:var(--ivory-dim);line-height:1.6}
.svc-top .intro b{color:var(--ivory);font-weight:500}
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:38px 50px}
@media(max-width:760px){.svc-grid{grid-template-columns:1fr;gap:28px}}
.svc-block h4{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--red-bright);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.svc-block ul{list-style:none}
.svc-block li{color:var(--ivory-dim);font-size:15.5px;line-height:1.5;padding-left:20px;position:relative;margin-bottom:11px}
.svc-block li::before{content:"→";position:absolute;left:0;color:var(--red-bright);font-family:var(--mono);font-size:12px;top:3px}
.svc-block .process li{counter-increment:step}
.svc-block p{color:var(--ivory-dim);font-size:15.5px;line-height:1.55}
.svc-block .cap{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ivory-faint);line-height:1.9}
.engagement{background:var(--ink-2);border:1px solid var(--line);border-radius:2px;padding:22px 26px;font-size:14.5px;color:var(--ivory-dim);grid-column:1/-1;display:flex;gap:30px;flex-wrap:wrap;align-items:center}
.engagement b{color:var(--ivory);font-weight:500;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.engagement .tag{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--red-bright)}

/* ---------- case studies (works page) ---------- */
.case{border:1px solid var(--line);border-radius:2px;margin-bottom:26px;overflow:hidden;transition:.3s;background:var(--ink)}
.case:hover{border-color:var(--ivory-faint)}
.case-head{display:flex;justify-content:space-between;gap:20px;padding:26px 30px;border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:baseline;background:var(--ink-2)}
.case-head .ct{font-family:var(--display);font-weight:600;font-size:20px}
.case-head .meta{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ivory-faint);text-align:right;line-height:1.8}
.case-body{padding:28px 30px;display:grid;grid-template-columns:repeat(2,1fr);gap:26px 40px}
@media(max-width:760px){.case-body{grid-template-columns:1fr;gap:20px}}
.case-body .cell.full{grid-column:1/-1}
.case-body h5{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--red-bright);margin-bottom:10px}
.case-body p{color:var(--ivory-dim);font-size:15px;line-height:1.55}
.case-body .results{display:flex;gap:26px;flex-wrap:wrap}
.case-body .results div .rv2{font-family:var(--display);font-weight:700;font-size:24px;color:var(--ivory)}
.case-body .results div .rk{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ivory-faint);text-transform:uppercase;margin-top:4px}
.case-body .risk{background:rgba(200,16,46,.06);border-left:2px solid var(--red);padding:14px 18px;font-size:14.5px;color:var(--ivory-dim)}
.disclaimer{font-style:italic;color:var(--ivory-faint);font-size:14px;margin-bottom:34px}

/* ---------- company page ---------- */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:60px}
@media(max-width:860px){.two-col{grid-template-columns:1fr;gap:34px}}
.info-table{width:100%;border-top:1px solid var(--line)}
.info-table .row{display:grid;grid-template-columns:170px 1fr;gap:20px;padding:16px 0;border-bottom:1px solid var(--line)}
@media(max-width:600px){.info-table .row{grid-template-columns:1fr;gap:4px}}
.info-table .k{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ivory-faint);padding-top:3px}
.info-table .v{color:var(--ivory);font-size:16px}
.info-table .v small{color:var(--ivory-dim);display:block;font-size:13.5px;margin-top:3px}
.tbd{color:var(--red-bright);font-family:var(--mono);font-size:10px;letter-spacing:.1em;border:1px solid var(--red);border-radius:2px;padding:2px 7px;margin-left:8px;text-transform:uppercase}
.principal p{color:var(--ivory-dim);margin-bottom:18px;font-size:16.5px}
.principal p b{color:var(--ivory);font-weight:500}
.creds{display:flex;gap:24px;flex-wrap:wrap;margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}
.creds div .v{font-family:var(--display);font-weight:700;font-size:22px;color:var(--ivory)}
.creds div .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ivory-faint);margin-top:4px}
/* how we work grid */
.trust-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
@media(max-width:860px){.trust-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.trust-grid{grid-template-columns:1fr}}
.trust{background:var(--ink);padding:26px 24px}
.trust .ico{font-family:var(--mono);font-size:11px;color:var(--red-bright);letter-spacing:.12em}
.trust h4{font-family:var(--display);font-weight:600;font-size:16px;margin:12px 0 8px}
.trust p{color:var(--ivory-dim);font-size:14px;line-height:1.5}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px}
@media(max-width:860px){.contact-grid{grid-template-columns:1fr;gap:36px}}
.form-field{margin-bottom:22px}
.form-field label{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ivory-dim);margin-bottom:9px}
.form-field label .opt{color:var(--ivory-faint);text-transform:none;letter-spacing:.02em}
.form-field input,.form-field select,.form-field textarea{width:100%;background:var(--ink-2);border:1px solid var(--line);border-radius:2px;padding:13px 15px;color:var(--ivory);font-family:var(--serif);font-size:16px;transition:.2s}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--red)}
.form-field textarea{resize:vertical;min-height:120px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:520px){.form-row{grid-template-columns:1fr}}
.contact-aside h4{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--red-bright);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.contact-aside p{color:var(--ivory-dim);font-size:15.5px;margin-bottom:22px;line-height:1.6}
.contact-aside .altcta{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--ivory);display:inline-flex;gap:8px;border-bottom:1px solid var(--red);padding-bottom:3px}

/* ---------- news / insights ---------- */
.news-item{display:grid;grid-template-columns:130px 1fr auto;gap:26px;padding:24px 0;border-bottom:1px solid var(--line);align-items:baseline}
@media(max-width:600px){.news-item{grid-template-columns:1fr;gap:6px}}
.news-item .date{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ivory-faint)}
.news-item .tag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--red-bright);text-transform:uppercase}
.news-item h3{font-family:var(--display);font-weight:500;font-size:19px;margin-bottom:6px}
.news-item p{color:var(--ivory-dim);font-size:15px}
.insight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
@media(max-width:860px){.insight-grid{grid-template-columns:1fr}}
.insight{border:1px solid var(--line);border-radius:2px;padding:28px 26px;transition:.3s;display:block}
.insight:hover{border-color:var(--ivory-faint);background:var(--ink-2)}
.insight .cat{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--red-bright)}
.insight h3{font-family:var(--display);font-weight:600;font-size:19px;margin:16px 0 10px;line-height:1.2}
.insight p{color:var(--ivory-dim);font-size:14.5px;line-height:1.55}
.insight .go{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ivory-faint);margin-top:18px;display:inline-block}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden;text-align:center;padding:110px 0}
.cta-band::before{content:"";position:absolute;inset:0;background:radial-gradient(80% 130% at 50% 0%,rgba(200,16,46,.18),transparent 60%)}
.cta-band .wrap{position:relative;z-index:2}
.cta-band .k{color:var(--red-bright);margin-bottom:20px}
.cta-band h2{font-family:var(--display);font-weight:500;font-size:clamp(32px,5.4vw,64px);line-height:1;letter-spacing:-.02em;margin-bottom:18px}
.cta-band h2 b{font-weight:800}
.cta-band p{color:var(--ivory-dim);max-width:460px;margin:0 auto 34px;font-size:17px}
.cta-band .btn{margin:0 6px}

/* ---------- footer (JS-injected) ---------- */
footer{border-top:1px solid var(--line);padding:52px 0 40px;background:var(--ink-2)}
footer .ftop{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;padding-bottom:40px;border-bottom:1px solid var(--line)}
@media(max-width:760px){footer .ftop{grid-template-columns:1fr 1fr;gap:28px}}
footer .fcol h5{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ivory-faint);margin-bottom:16px}
footer .fcol a{display:block;color:var(--ivory-dim);font-size:14px;margin-bottom:10px;transition:.2s}
footer .fcol a:hover{color:var(--ivory)}
footer .fbrand p{color:var(--ivory-dim);font-size:14px;margin-top:14px;max-width:34ch;line-height:1.6}
footer .fbrand .tag{color:var(--red-bright);font-family:var(--mono);font-size:11px;letter-spacing:.1em;margin-top:14px}
footer .fbot{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:26px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ivory-faint)}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(24px);transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* ============================================================
   PREMIUM LAYER — cinematic elevation
   ============================================================ */

/* ---- loading intro (curtain + Liver Bird self-draw) ---- */
#phj-intro{position:fixed;inset:0;z-index:10000;background:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;transition:opacity .7s ease,visibility .7s}
#phj-intro.done{opacity:0;visibility:hidden;pointer-events:none}
#phj-intro .bird{width:76px;height:76px}
#phj-intro .bird path{stroke:#e11d33;stroke-width:2.2;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:120;stroke-dashoffset:120;animation:draw 1.15s cubic-bezier(.6,.1,.3,1) forwards}
#phj-intro .wm{font-family:var(--mono);font-size:12px;letter-spacing:.42em;color:var(--ivory);opacity:0;animation:fadeUp .6s ease .75s forwards;text-transform:uppercase;padding-left:.42em}
#phj-intro .co{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--ivory-faint);opacity:0;animation:fadeUp .6s ease 1s forwards}
#phj-intro .barwrap{width:150px;height:1px;background:var(--line);overflow:hidden}
#phj-intro .bar{display:block;height:100%;width:0;background:var(--red);animation:load 1.3s ease .2s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes load{to{width:100%}}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){#phj-intro{display:none}}

/* ---- custom cursor (desktop pointer only) ---- */
@media(hover:hover) and (pointer:fine){
  .cur-ring,.cur-dot{position:fixed;top:0;left:0;z-index:9998;pointer-events:none;border-radius:50%;mix-blend-mode:screen;will-change:transform}
  .cur-ring{width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid rgba(242,237,225,.45);transition:width .25s,height .25s,margin .25s,border-color .25s,background .25s}
  .cur-dot{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;background:var(--red-bright)}
  .cur-ring.hot{width:56px;height:56px;margin:-28px 0 0 -28px;border-color:rgba(225,29,51,.8);background:rgba(200,16,46,.08)}
  body.has-cursor{cursor:none}
  body.has-cursor a,body.has-cursor button,body.has-cursor input,body.has-cursor select,body.has-cursor textarea{cursor:none}
}

/* ---- scroll depth gauge ---- */
.depth-gauge{position:fixed;top:0;right:0;bottom:0;width:2px;z-index:95;background:var(--line-2)}
.depth-gauge .fill{position:absolute;top:0;left:0;right:0;height:0;background:linear-gradient(180deg,var(--red-bright),var(--red))}
.depth-gauge .tick{position:absolute;right:0;width:6px;height:1px;background:var(--ivory-faint)}
@media(max-width:900px){.depth-gauge{display:none}}

/* ---- hero atmosphere: lighthouse beam + harbor canvas ---- */
.beam{position:absolute;top:24%;left:7%;width:200vmax;height:200vmax;transform-origin:0 0;pointer-events:none;z-index:1;mix-blend-mode:screen;
  background:conic-gradient(from -8deg,transparent 0deg,rgba(200,16,46,.055) 7deg,rgba(201,162,74,.03) 12deg,transparent 20deg);
  animation:sweep 16s linear infinite}
@keyframes sweep{to{transform:rotate(360deg)}}
#harbor{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;opacity:.9}
@media(prefers-reduced-motion:reduce){.beam{display:none}}

/* ---- headline mask reveal ---- */
.rv-mask{clip-path:inset(0 0 100% 0);transform:translateY(14px);opacity:.001;transition:clip-path 1s cubic-bezier(.2,.8,.2,1),transform 1s cubic-bezier(.2,.8,.2,1),opacity .8s}
.rv-mask.in{clip-path:inset(0 0 -12% 0);transform:none;opacity:1}

/* ---- count-up numerals ---- */
.count[data-count]{font-variant-numeric:tabular-nums}

/* ---- magnetic buttons ---- */
.btn.mag{will-change:transform}

/* ---- link/pillar micro-interaction upgrades ---- */
.pillar::after{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--red);transform:scaleY(0);transform-origin:top;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.pillar:hover::after{transform:scaleY(1)}
.audience a,.insight,.case,.trust,.reason,.btn,.pillar{will-change:transform}

/* subtle vignette on everything for depth */
.vignette{position:fixed;inset:0;z-index:94;pointer-events:none;box-shadow:inset 0 0 220px 40px rgba(0,0,0,.55)}

/* intro failsafe: hide even if JS fails to remove */
#phj-intro{animation:introFail 0s linear 3s forwards}
@keyframes introFail{to{opacity:0;visibility:hidden;pointer-events:none}}

/* ============================================================
   TOTAL-MOBILIZATION LAYER — page transitions, motion craft, a11y
   ============================================================ */

/* ---- View Transitions API: real cross-page transitions (feels like real pages) ---- */
@media (prefers-reduced-motion: no-preference){
  @view-transition{ navigation:auto; }
  ::view-transition-old(root){ animation:vt-out .34s cubic-bezier(.7,0,.2,1) both; }
  ::view-transition-new(root){ animation:vt-in .46s cubic-bezier(.7,0,.2,1) both; }
  @keyframes vt-out{ to{ opacity:0; transform:translateY(-10px) scale(.995); filter:blur(2px); } }
  @keyframes vt-in{ from{ opacity:0; transform:translateY(14px) scale(.995); } }
  /* keep the sticky header steady across navigations */
  #hdr{ view-transition-name:site-header; }
  ::view-transition-group(site-header){ animation-duration:.34s; }
}

/* ---- skip link (a11y) ---- */
.skip{position:fixed;left:14px;top:-60px;z-index:10001;background:var(--red);color:var(--ivory);padding:11px 18px;border-radius:2px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;transition:top .22s cubic-bezier(.7,0,.2,1)}
.skip:focus{top:14px}

/* ---- focus-visible: designed red ring, not browser blue ---- */
:focus:not(:focus-visible){outline:none}
:focus-visible{outline:2px solid var(--red-bright);outline-offset:3px;border-radius:2px}
a.link:focus-visible,nav a.cta:focus-visible{outline-offset:6px}

/* ---- drawn underline for prose links (background-size trick) ---- */
.svc-block a:not(.btn),.case a:not(.btn),.disclaimer a,.legal-body a,.contact-aside a.altcta,.info-table a,.principal a{
  background:linear-gradient(var(--red-bright),var(--red-bright)) no-repeat;
  background-size:0% 1px;background-position:0 100%;
  transition:background-size .45s cubic-bezier(.19,1,.22,1),color .25s;padding-bottom:1px}
.svc-block a:not(.btn):hover,.case a:not(.btn):hover,.disclaimer a:hover,.legal-body a:hover,.info-table a:hover,.principal a:hover{background-size:100% 1px}

/* ---- tide-fill on ghost buttons (rises like a tide) ---- */
.btn-ghost{position:relative;overflow:hidden;z-index:0}
.btn-ghost::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--red);transform:scaleY(0);transform-origin:bottom;transition:transform .4s cubic-bezier(.19,1,.22,1)}
.btn-ghost:hover{color:var(--ivory);border-color:var(--red)}
.btn-ghost:hover::before{transform:scaleY(1)}

/* ---- variable-font optical sizing on display type ---- */
h1.title,.page-hero h1,.sec-title,.cta-band h2,.final h2{font-variation-settings:'opsz' 96,'wght' 600}
h1.title b,.cta-band h2 b{font-variation-settings:'opsz' 96,'wght' 800}

/* ---- SplitText masked-line reveal (GSAP) ---- */
.split .line{overflow:hidden;display:block}
.split .line>*{display:block}

/* ---- Lenis smooth-scroll base ---- */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* three.js WebGL harbor-depth canvas (home hero) */
#webgl{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.95}

/* hero legibility scrim (over the 3D harbour, under the text) */
.hero-scrim{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,rgba(8,11,16,.94) 0%,rgba(8,11,16,.72) 34%,rgba(8,11,16,.28) 62%,rgba(8,11,16,.05) 100%),
             linear-gradient(0deg,rgba(8,11,16,.55) 0%,transparent 26%),
             linear-gradient(180deg,rgba(8,11,16,.6) 0%,transparent 22%)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* guarantee hero headline legibility over the 3D harbour */
.hero h1.title,.hero .lede{text-shadow:0 2px 34px rgba(8,11,16,.85),0 1px 5px rgba(8,11,16,.7)}
.hero .eyebrow{text-shadow:0 1px 12px rgba(8,11,16,.8)}

/* lift hero copy above the skyline so the 3D city sits clear below it */
.hero .wrap{transform:translateY(-8vh)}
@media(max-width:900px){.hero .wrap{transform:none}}
