:root{
    --disp:"IBM Plex Sans","IBM Plex Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
    --body:"IBM Plex Sans JP","IBM Plex Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
    --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
    --ink:#14171b; --ink2:#1c2126; --slate:#39424a; --mut:#697079; --faint:#98a0a7;
    --paper:#f4f5f4; --panel:#eaecea; --panel2:#e0e3e0; --line:#d5d9d6; --line2:#c1c6c2; --white:#ffffff;
    --copper:#b06a30; --copper-d:#8a5323; --copper-bg:#f2e7d9; --copper-ln:#c98a4f;
    --signal:#d5372c; --signal-d:#a8271e;
    --l1:#2270a4; --l1-bg:#e5eff6; --l2:#6a4bab; --l2-bg:#ece7f6; --l3:#c15a2b; --l3-bg:#f7e9df;
    --mag:#7c7c72; --mag-bg:#eeeeeb; --ops:#12876a; --ops-bg:#def2ec; --cert:#943a86; --cert-bg:#f4e6f1;
    /* aliases: layer keys used dynamically in JS as var(--<layerkey>) — must match data keys */
    --magstripe:#7c7c72; --magstripe-bg:#eeeeeb; --operations:#12876a; --operations-bg:#def2ec;
    --icc:#c15a2b; --icc-bg:#f7e9df; --b2:#12876a; --b2-bg:#def2ec;
    --keo:#2270a4; --keo-bg:#e5eff6; --alc:#6a4bab; --alc-bg:#ece7f6; --bar:#8a6a1f; --bar-bg:#f4ecd6;
    --r:5px; --rl:11px;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{font-family:var(--body); color:var(--ink); background:var(--paper); line-height:1.72; font-size:15px; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;}
  a{color:inherit; text-decoration:none;}
  .wrap{max-width:1160px; margin:0 auto; padding:0 32px;}
  .mono{font-family:var(--mono);}
  ::selection{background:var(--copper-bg);}
  h1,h2,h3,h4{font-family:var(--disp); font-feature-settings:"palt";}
  body::before{content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
    background-image:linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);
    background-size:64px 64px; opacity:.20;}

  header{position:sticky; top:0; z-index:60; background:rgba(244,245,244,.9); backdrop-filter:blur(12px); border-bottom:1px solid var(--line);}
  .nav{display:flex; align-items:center; gap:30px; height:66px;}
  .brand{display:flex; align-items:center; gap:11px; margin-right:4px;}
  .brand .mk{width:30px; height:30px; background:var(--ink); border-radius:6px; position:relative; overflow:hidden; flex:none;}
  .brand .mk::before{content:""; position:absolute; inset:0; background:
     radial-gradient(circle at 50% 130%, transparent 40%, var(--copper) 41%, var(--copper) 46%, transparent 47%),
     radial-gradient(circle at 50% 130%, transparent 58%, var(--copper-ln) 59%, var(--copper-ln) 63%, transparent 64%); opacity:.9;}
  .brand .mk::after{content:""; position:absolute; left:50%; top:52%; width:5px; height:5px; background:#fff; border-radius:50%; transform:translate(-50%,-50%);}
  .brand .bt{line-height:1.15;}
  .brand .bt b{font-family:var(--disp); font-weight:700; font-size:16px; letter-spacing:-.01em; display:block;}
  .brand .bt span{font-family:var(--mono); font-size:9.5px; letter-spacing:.14em; color:var(--mut); text-transform:uppercase;}
  .navlinks{display:flex; flex-wrap:wrap; row-gap:2px; gap:16px; font-size:13px; font-weight:500; color:var(--slate);}
  .navlinks a{padding:4px 0; position:relative; white-space:nowrap;}
  @media (max-width:1180px){ .navlinks{gap:11px; font-size:12.5px;} .nav{gap:16px;} .btn{padding:9px 13px; font-size:13px;} }
  @media (max-width:1040px){ .navlinks{gap:9px; font-size:12px;} }
  @media (max-width:980px){ .navlinks{display:none;} }
  .navlinks a.primary{color:var(--ink); font-weight:600;}
  .navlinks a::after{content:""; position:absolute; left:0; bottom:-2px; width:0; height:2px; background:var(--copper); transition:width .18s;}
  .navlinks a:hover::after{width:100%;}
  .nav-cta{margin-left:auto; display:flex; gap:10px;}
  .btn{font-family:var(--disp); font-size:13.5px; font-weight:600; padding:9px 17px; border-radius:var(--r); cursor:pointer; border:1.5px solid transparent; transition:.15s; display:inline-flex; align-items:center; gap:7px; white-space:nowrap;}
  .btn.solid{background:var(--signal); color:#fff;}
  .btn.solid:hover{background:var(--signal-d);}
  .btn.ghost{border-color:var(--line2); color:var(--ink); background:var(--white);}
  .btn.ghost:hover{border-color:var(--ink);}
  .btn.copper{background:var(--ink); color:#fff;}
  .btn.copper:hover{background:var(--ink2);}

  .hero{padding:66px 0 34px;}
  .kick{display:inline-flex; align-items:center; gap:9px; font-family:var(--mono); font-size:11.5px; letter-spacing:.1em; color:var(--copper-d); font-weight:500; text-transform:uppercase; margin-bottom:20px; padding:5px 12px; border:1px solid var(--copper-ln); border-radius:20px; background:var(--copper-bg);}
  .kick .pulse{width:7px; height:7px; border-radius:50%; background:var(--copper); animation:pg 2.2s infinite;}
  @keyframes pg{0%{box-shadow:0 0 0 0 rgba(176,106,48,.45);}70%{box-shadow:0 0 0 8px rgba(176,106,48,0);}100%{box-shadow:0 0 0 0 rgba(176,106,48,0);}}
  .hero h1{font-size:52px; line-height:1.14; font-weight:700; letter-spacing:-.025em; max-width:20ch;}
  .hero h1 em{font-style:normal; color:var(--copper-d);}
  .hero .sub{font-size:17px; color:var(--slate); margin-top:22px; max-width:56ch; line-height:1.7;}
  .hero-actions{display:flex; gap:12px; margin-top:28px; flex-wrap:wrap; align-items:center;}
  .hero-actions .fine{font-family:var(--mono); font-size:11.5px; color:var(--mut); margin-left:4px;}

  .line-wrap{margin-top:54px; border:1px solid var(--line); border-radius:var(--rl); background:var(--white); overflow:hidden; box-shadow:0 1px 0 rgba(20,23,27,.03);}
  .line-head{display:flex; align-items:center; justify-content:space-between; padding:15px 22px; border-bottom:1px solid var(--line); flex-wrap:wrap; gap:8px;}
  .line-head .lt{font-family:var(--disp); font-weight:600; font-size:14.5px; display:flex; align-items:center; gap:9px;}
  .line-head .lt .tag{font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--copper-d); border:1px solid var(--copper-ln); padding:1px 7px; border-radius:4px;}
  .line-head .ls{font-family:var(--mono); font-size:11px; color:var(--mut); letter-spacing:.03em;}
  .line-svg{width:100%; display:block; padding:8px 10px 4px;}
  .line-foot{display:flex; gap:22px; padding:12px 22px 15px; flex-wrap:wrap; border-top:1px solid var(--line); background:var(--panel);}
  .line-foot .lf{font-family:var(--mono); font-size:11px; color:var(--slate); display:flex; align-items:center; gap:7px;}
  .line-foot .lf i{width:9px; height:9px; border-radius:2px; flex:none;}
  .st-node{cursor:pointer;}
  .st-node:hover circle.stn{stroke-width:5;}
  svg text{font-family:var(--mono);}

  .domains{padding:52px 0;}
  .dom-lead{font-family:var(--mono); font-size:11.5px; letter-spacing:.1em; color:var(--mut); text-transform:uppercase; margin-bottom:18px;}
  .dom-lead b{color:var(--ink);}
  .domgrid{display:grid; grid-template-columns:repeat(4,1fr); gap:14px;}
  .dom{border:1px solid var(--line); border-radius:var(--rl); padding:20px 20px; background:var(--white); position:relative; overflow:hidden;}
  .dom::before{content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--copper);}
  .dom .di{font-family:var(--mono); font-size:22px; color:var(--copper-d);}
  .dom h3{font-size:15.5px; font-weight:600; margin:12px 0 3px;}
  .dom p{font-size:12.5px; color:var(--mut); line-height:1.6;}
  .dom .dm{font-family:var(--mono); font-size:10.5px; color:var(--slate); margin-top:12px; padding-top:10px; border-top:1px dashed var(--line2); letter-spacing:.02em;}

  section.blk{padding:60px 0;}
  .sec-head{margin-bottom:30px; max-width:64ch;}
  .sec-head .ey{font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--copper-d); font-weight:500; text-transform:uppercase; display:flex; align-items:center; gap:9px;}
  .sec-head .ey::before{content:""; width:20px; height:1.5px; background:var(--copper);}
  .sec-head h2{font-size:31px; font-weight:700; letter-spacing:-.02em; margin-top:12px; line-height:1.22;}
  .sec-head p{color:var(--slate); margin-top:10px; font-size:15.5px;}

  .wizbox{border:1px solid var(--line2); border-radius:var(--rl); overflow:hidden; background:var(--white);}
  .wizbar{background:var(--ink); color:#fff; padding:15px 24px; display:flex; align-items:center; justify-content:space-between;}
  .wizbar .t{font-family:var(--disp); font-weight:600; font-size:14.5px; display:flex; align-items:center; gap:9px;}
  .wizbar .t .dot{width:8px; height:8px; border-radius:50%; background:var(--copper-ln); box-shadow:0 0 0 3px rgba(201,138,79,.25);}
  .wizbar .st{font-family:var(--mono); font-size:11px; opacity:.72; letter-spacing:.05em;}
  .wizbody{padding:30px 28px;}
  .crumb{font-family:var(--mono); font-size:11.5px; color:var(--mut); margin-bottom:14px; min-height:16px;}
  .crumb b{color:var(--ink);} .crumb .sep{opacity:.4; margin:0 6px;}
  .q{font-size:21px; font-weight:600; letter-spacing:-.01em; font-family:var(--disp);}
  .qs{color:var(--mut); font-size:13.5px; margin:3px 0 20px;}
  .opts{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
  .opt{border:1.5px solid var(--line2); border-radius:var(--r); padding:15px 17px; text-align:left; background:var(--white); cursor:pointer; font-family:inherit; transition:.13s;}
  .opt:hover{border-color:var(--copper); background:var(--copper-bg); transform:translateY(-1px);}
  .opt .ot{font-weight:600; font-size:14.5px; display:block;}
  .opt .od{color:var(--mut); font-size:12.5px; display:block; margin-top:2px; font-family:var(--mono);}
  .opt.help{grid-column:1/-1; border-style:dashed; text-align:center; color:var(--slate);}
  .backb{background:none; border:none; color:var(--copper-d); font-size:13px; cursor:pointer; font-family:var(--mono); margin-top:18px; padding:0;}
  .backb:hover{text-decoration:underline;}
  .rlead{color:var(--mut); font-size:13px; margin-bottom:14px;}
  .rcards{display:grid; gap:11px;}
  .rcard{border:1px solid var(--line2); border-radius:var(--r); padding:16px 18px; border-left:5px solid var(--line2); background:var(--white);}
  .rcard.icc{border-left-color:var(--icc);} .rcard.b2{border-left-color:var(--b2);}
  .rcard.keo{border-left-color:var(--keo);} .rcard.alc{border-left-color:var(--alc);}
  .rcard .rn{font-weight:600; font-size:15px; font-family:var(--disp);}
  .vpill{font-family:var(--mono); font-size:10px; font-weight:600; padding:2px 9px; border-radius:20px; margin-left:8px; vertical-align:middle;}
  .vpill.icc{background:var(--icc-bg); color:var(--icc);} .vpill.b2{background:var(--b2-bg); color:var(--b2);}
  .vpill.keo{background:var(--keo-bg); color:var(--keo);} .vpill.alc{background:var(--alc-bg); color:var(--alc);} .vpill.bar{background:var(--bar-bg); color:var(--bar);}
  .rwhy{font-size:13px; color:var(--mut); margin-top:6px;}
  .rlink{font-family:var(--mono); font-size:12px; color:var(--copper-d); font-weight:600; margin-top:8px; display:inline-block;}
  .rlink:hover{text-decoration:underline;}
  .rlinks{display:flex; gap:16px; align-items:baseline;}
  .rlink.sub{color:var(--mut); font-weight:500;}

  .explorer{border:1px solid var(--line); border-radius:var(--rl); overflow:hidden; background:var(--white);}
  .laytabs{display:flex; border-bottom:1px solid var(--line); overflow-x:auto;}
  .laytab{flex:1; min-width:128px; padding:16px 12px; border:none; background:var(--panel); cursor:pointer; font-family:inherit; border-right:1px solid var(--line); border-bottom:3px solid transparent; transition:.14s; text-align:left;}
  .laytab:last-child{border-right:none;}
  .laytab .lc{font-family:var(--mono); font-size:11px; font-weight:600; letter-spacing:.05em; color:var(--mut); display:flex; align-items:center; gap:6px;}
  .laytab .lc i{width:8px; height:8px; border-radius:2px;}
  .laytab .ln{font-size:13px; font-weight:600; margin-top:4px; color:var(--slate); font-family:var(--disp);}
  .laytab:hover{background:var(--white);}
  .laytab.on{background:var(--white); border-bottom-color:var(--copper);}
  .laytab.on .lc, .laytab.on .ln{color:var(--ink);}
  .exp-body{padding:22px 24px;}
  .fbar{display:flex; flex-wrap:wrap; gap:22px; padding-bottom:18px; margin-bottom:18px; border-bottom:1px solid var(--line);}
  .fg{display:flex; flex-direction:column; gap:7px;}
  .fl{font-family:var(--mono); font-size:10px; font-weight:600; letter-spacing:.06em; color:var(--mut); text-transform:uppercase;}
  .fchips{display:flex; flex-wrap:wrap; gap:6px;}
  .fc{font-family:var(--mono); font-size:12px; font-weight:500; padding:5px 12px; border-radius:20px; background:var(--white); border:1.5px solid var(--line2); cursor:pointer; transition:.12s;}
  .fc:hover{border-color:var(--ink);}
  .fc.on{background:var(--ink); color:#fff; border-color:var(--ink);}
  .exp-count{font-family:var(--mono); font-size:12px; color:var(--mut); margin-bottom:14px;}
  .exp-count b{color:var(--ink);}
  .pgrid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
  .pcard{border:1px solid var(--line2); border-radius:var(--r); padding:15px 16px; border-left:4px solid var(--line2); background:var(--white); transition:.14s; display:block;}
  .pcard:hover{border-color:var(--ink); transform:translateY(-2px); box-shadow:0 6px 18px rgba(20,23,27,.06);}
  .pcard[data-v="icc"]{border-left-color:var(--icc);} .pcard[data-v="b2"]{border-left-color:var(--b2);}
  .pcard[data-v="keo"]{border-left-color:var(--keo);} .pcard[data-v="alc"]{border-left-color:var(--alc);} .pcard[data-v="bar"]{border-left-color:var(--bar);}
  .pcard .pn{font-weight:600; font-size:14px; line-height:1.4; font-family:var(--disp);}
  .pcard .pmeta{margin-top:10px; display:flex; gap:5px; flex-wrap:wrap;}
  .pcard .pt{font-family:var(--mono); font-size:10px; font-weight:500; padding:1px 8px; border-radius:20px;}
  .pcard .pt.tA{background:var(--panel2); color:var(--slate);}
  .pcard .parrow{font-family:var(--mono); font-size:11px; color:var(--faint); margin-top:10px;}

  .split2{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
  .vend{border:1px solid var(--line2); border-radius:var(--rl); padding:26px 28px; background:var(--white); position:relative;}
  .vend::before{content:""; position:absolute; left:0; top:0; right:0; height:4px; border-radius:var(--rl) var(--rl) 0 0;}
  .vend.icc::before{background:var(--icc);} .vend.b2::before{background:var(--b2);}
  .vend .vh{display:flex; align-items:center; gap:10px; margin-bottom:6px; flex-wrap:wrap;}
  .vend .vbadge{font-family:var(--mono); font-size:11px; font-weight:600; padding:3px 10px; border-radius:20px;}
  .vend.icc .vbadge{background:var(--icc-bg); color:var(--icc);} .vend.b2 .vbadge{background:var(--b2-bg); color:var(--b2);}
  .vend .vlayer{font-family:var(--mono); font-size:11px; color:var(--mut);}
  .vend h3{font-size:19px; font-weight:600; margin:8px 0 2px; letter-spacing:-.01em;}
  .vend .vpurp{font-size:13.5px; color:var(--slate); margin-bottom:16px;}
  .vend ul{list-style:none; display:flex; flex-direction:column; gap:8px;}
  .vend li{font-size:13px; padding-left:22px; position:relative; color:var(--slate);}
  .vend li::before{content:"→"; position:absolute; left:0; font-family:var(--mono); font-size:12px;}
  .vend.icc li::before{color:var(--icc);} .vend.b2 li::before{color:var(--b2);}
  .split-note{grid-column:1/-1; font-size:13px; color:var(--slate); background:var(--panel); border-radius:var(--r); padding:15px 18px; display:flex; gap:12px; align-items:flex-start;}
  .split-note .mk{font-family:var(--mono); font-size:10px; color:var(--copper-d); border:1px solid var(--copper-ln); padding:2px 7px; border-radius:4px; flex:none; margin-top:2px;}
  .split-note b{color:var(--ink);}

  .tpl3{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}
  .tpl{border:1px solid var(--line2); border-radius:var(--rl); padding:24px 24px; background:var(--white);}
  .tpl .tk{font-family:var(--mono); font-size:12px; font-weight:600; color:var(--copper-d); letter-spacing:.04em;}
  .tpl h4{font-size:16px; font-weight:600; margin:8px 0 3px;}
  .tpl .tsub{font-family:var(--mono); font-size:12px; color:var(--mut); margin-bottom:14px;}
  .tpl .core{background:var(--panel); border-radius:var(--r); padding:13px 15px; font-size:12.5px; color:var(--slate); line-height:1.6;}
  .tpl .core b{display:block; font-family:var(--mono); font-size:10.5px; color:var(--ink); margin-bottom:5px; letter-spacing:.04em; text-transform:uppercase;}

  .trust{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}
  .tcard{border:1px solid var(--line); border-radius:var(--rl); padding:22px 22px; background:var(--panel);}
  .tcard .ti{font-family:var(--mono); font-size:11px; color:var(--cert); font-weight:600; letter-spacing:.05em;}
  .tcard h3{font-size:16px; font-weight:600; margin:8px 0 4px;}
  .tcard p{font-size:13px; color:var(--slate);}

  .plogos{display:flex; flex-wrap:wrap; gap:10px;}
  .plogo{border:1px solid var(--line2); border-radius:var(--r); padding:11px 20px; font-family:var(--disp); font-weight:600; font-size:14px; color:var(--slate); background:var(--white);}
  .plogo:hover{border-color:var(--ink); color:var(--ink);}

  .cta{background:var(--ink); color:#fff; border-radius:var(--rl); padding:46px 42px; display:flex; align-items:center; justify-content:space-between; gap:26px; flex-wrap:wrap; position:relative; overflow:hidden;}
  .cta::after{content:""; position:absolute; right:-40px; top:-40px; width:260px; height:260px; border-radius:50%;
     background:radial-gradient(circle, transparent 44%, rgba(176,106,48,.5) 45%, transparent 46%, transparent 60%, rgba(201,138,79,.35) 61%, transparent 62%); opacity:.6;}
  .cta .ct-l{position:relative; z-index:1;}
  .cta h2{font-size:25px; font-weight:600; letter-spacing:-.01em; font-family:var(--disp);}
  .cta p{color:#aeb5bb; margin-top:8px; font-size:14.5px;}
  .cta .ct-b{display:flex; gap:10px; flex-wrap:wrap; position:relative; z-index:1;}
  .cta .btn.ghost{border-color:#39424a; color:#fff; background:transparent;}
  .cta .btn.ghost:hover{border-color:#fff;}

  footer.site{border-top:1px solid var(--line); padding:54px 0 30px; margin-top:20px; background:var(--panel);}
  .fgrid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:30px;}
  .fcol h5{font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:var(--mut); text-transform:uppercase; margin-bottom:12px;}
  .fcol a{display:block; font-size:13px; color:var(--slate); padding:3px 0;}
  .fcol a:hover{color:var(--copper-d);}
  .fabout{font-size:13px; color:var(--mut); line-height:1.7; max-width:34ch;}
  .fbrand{display:flex; align-items:center; gap:10px; margin-bottom:12px;}
  .fbrand .mk{width:26px; height:26px; background:var(--ink); border-radius:6px; position:relative;}
  .fbrand .mk::after{content:""; position:absolute; left:50%; top:50%; width:4px; height:4px; background:var(--copper-ln); border-radius:50%; transform:translate(-50%,-50%); box-shadow:0 0 0 3px rgba(201,138,79,.35);}
  .fbrand b{font-family:var(--disp); font-weight:700; font-size:15px;}
  .fbot{border-top:1px solid var(--line); margin-top:36px; padding-top:20px; display:flex; justify-content:space-between; font-family:var(--mono); font-size:11.5px; color:var(--mut); flex-wrap:wrap; gap:8px;}

  .rv{opacity:0; transform:translateY(16px); transition:opacity .6s cubic-bezier(.2,.6,.2,1), transform .6s cubic-bezier(.2,.6,.2,1);}
  .rv.in{opacity:1; transform:none;}
  @media (prefers-reduced-motion:reduce){ .rv{opacity:1; transform:none; transition:none;} html{scroll-behavior:auto;} .kick .pulse{animation:none;} #tapdot{display:none;} }

  @media (max-width:940px){
    .navlinks{display:none;}
    .domgrid{grid-template-columns:1fr 1fr;} .pgrid{grid-template-columns:1fr 1fr;}
    .split2{grid-template-columns:1fr;} .tpl3{grid-template-columns:1fr;} .trust{grid-template-columns:1fr;}
    .fgrid{grid-template-columns:1fr 1fr;} .opts{grid-template-columns:1fr;}
    .hero h1{font-size:36px;} .line-svg{min-width:720px;} .line-scroll{overflow-x:auto;}
  }
  @media (max-width:560px){
    .wrap{padding:0 20px;} .domgrid{grid-template-columns:1fr;} .pgrid{grid-template-columns:1fr;} .fgrid{grid-template-columns:1fr;}
    .cta{padding:32px 24px;} .hero h1{font-size:30px;}
  }

/* ============ product & layer page additions ============ */
.subnav{font-family:var(--mono); font-size:12px; color:var(--mut); padding:14px 0; display:flex; gap:8px; align-items:center; flex-wrap:wrap;}
.subnav a{color:var(--copper-d);} .subnav .sep{opacity:.4;}
.phero{padding:26px 0 30px;}
.phero .ptag{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px; font-weight:600; padding:3px 11px; border-radius:20px;}
.phero h1{font-size:34px; font-weight:700; letter-spacing:-.02em; margin:14px 0 6px; line-height:1.2;}
.phero .plede{font-size:16px; color:var(--slate); max-width:60ch;}
.phero .pmeta{display:flex; gap:8px; flex-wrap:wrap; margin-top:16px;}
.phero .chip{font-family:var(--mono); font-size:11px; padding:4px 11px; border-radius:6px; background:var(--panel); border:1px solid var(--line); color:var(--slate);}
.pbody{display:grid; grid-template-columns:1fr 300px; gap:36px; align-items:start; padding-bottom:70px;}
.pmain h2{font-size:20px; font-weight:600; margin:34px 0 10px; letter-spacing:-.01em;}
.pmain h2:first-child{margin-top:0;}
.pmain p{color:var(--slate); font-size:14.5px;}
.matrix{border:1px solid var(--line); border-radius:var(--rl); overflow:hidden; margin-top:6px;}
.matrix table{border-collapse:collapse; width:100%; font-size:12.5px;}
.matrix th,.matrix td{border-bottom:1px solid var(--line); border-right:1px solid var(--line); padding:9px 12px; text-align:left;}
.matrix th{background:var(--panel); font-family:var(--mono); font-size:11px; font-weight:600; color:var(--slate); text-transform:uppercase; letter-spacing:.03em;}
.matrix tr:last-child td{border-bottom:none;} .matrix th:last-child,.matrix td:last-child{border-right:none;}
.matrix td .mono{font-family:var(--mono); font-size:11.5px; color:var(--copper-d);}
.stepflow{display:flex; gap:10px; flex-wrap:wrap; margin-top:6px;}
.stepflow .sf{flex:1; min-width:120px; background:var(--panel); border-radius:var(--r); padding:12px 14px; position:relative; border-left:3px solid var(--copper);}
.stepflow .sf .n{font-family:var(--mono); font-size:10.5px; color:var(--copper-d); font-weight:600;}
.stepflow .sf .l{font-weight:600; font-size:13px; margin-top:3px;}
.stepflow .sf .d{font-size:11.5px; color:var(--mut); margin-top:2px; font-family:var(--mono);}
.uselist{list-style:none; display:grid; gap:8px; margin-top:6px;}
.uselist li{font-size:13.5px; color:var(--slate); padding-left:22px; position:relative;}
.uselist li::before{content:"▸"; position:absolute; left:0; color:var(--copper); font-family:var(--mono);}
.aside{border:1px solid var(--line); border-radius:var(--rl); padding:20px 20px; background:var(--white); position:sticky; top:84px;}
.aside h4{font-family:var(--mono); font-size:11px; letter-spacing:.05em; color:var(--mut); text-transform:uppercase; margin-bottom:10px;}
.aside .arow{display:flex; justify-content:space-between; font-size:12.5px; padding:6px 0; border-bottom:1px dashed var(--line2);}
.aside .arow:last-of-type{border-bottom:none;} .aside .arow .k{color:var(--mut); font-family:var(--mono); font-size:11px;}
.aside .arow .v{font-weight:600; text-align:right;}
.aside .btn{width:100%; justify-content:center; margin-top:14px;}
.related{margin-top:16px; border-top:1px solid var(--line); padding-top:14px;}
.related a{display:block; font-size:12.5px; color:var(--copper-d); padding:3px 0; font-family:var(--mono);}
.layerhero{padding:30px 0 22px;}
.layerhero .lcode{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:12px; font-weight:600; padding:4px 12px; border-radius:20px;}
.layerhero h1{font-size:36px; font-weight:700; letter-spacing:-.02em; margin:14px 0 6px;}
.layerhero p{font-size:16px; color:var(--slate); max-width:62ch;}
@media (max-width:860px){ .pbody{grid-template-columns:1fr;} .aside{position:static;} }

/* principal vendor banner on layer pages */
.prin{margin-top:18px; display:flex; gap:12px; align-items:flex-start; background:var(--icc-bg); border:1px solid #e2c3ad; border-radius:var(--rl); padding:14px 18px;}
.prin-tag{font-family:var(--mono); font-size:10px; font-weight:600; color:#fff; background:var(--icc); padding:3px 9px; border-radius:20px; flex:none; margin-top:2px; letter-spacing:.04em;}
.prin-b{font-size:13px; color:var(--slate); line-height:1.6;}
.prin-b b{color:var(--icc); font-family:var(--disp); font-size:14px; margin-right:8px;}

/* ============ HERO SLIDESHOW ============ */
.slideshow{margin-top:44px; border:1px solid var(--line); border-radius:var(--rl); overflow:hidden; background:var(--ink); box-shadow:0 1px 0 rgba(20,23,27,.03); position:relative;}
.slides{position:relative; width:100%; aspect-ratio:21/9; min-height:300px;}
.slide{position:absolute; inset:0; margin:0; background-size:cover; background-position:center; opacity:0; transition:opacity .8s ease; display:flex; align-items:flex-end;}
.slide.is-active{opacity:1;}
.slide::before{content:""; position:absolute; inset:0; background:linear-gradient(90deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.55) 34%, rgba(255,255,255,0) 58%);}
.slide.dark::before{background:linear-gradient(90deg, rgba(20,23,27,.9) 0%, rgba(20,23,27,.5) 36%, rgba(20,23,27,0) 62%);}
.slide-cap{position:relative; z-index:2; padding:34px 40px; max-width:56%; display:flex; flex-direction:column; gap:8px;}
.slide-cap .sc-tag{font-family:var(--mono); font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--copper-d); background:var(--copper-bg); border:1px solid var(--copper-ln); padding:3px 11px; border-radius:20px; width:fit-content;}
.slide-cap .sc-t{font-family:var(--disp); font-size:34px; font-weight:700; letter-spacing:-.02em; color:var(--ink); line-height:1.15;}
.slide-cap .sc-d{font-size:14.5px; color:var(--slate); max-width:42ch; line-height:1.65;}
.slide-cap .sc-d b{color:var(--copper-d); font-weight:700;}
.slide-cap.dark .sc-t{color:#fff;} .slide-cap.dark .sc-d{color:#cfd4d8;} .slide-cap.dark .sc-d b{color:var(--copper-ln);}
.slide-ui{position:absolute; left:0; right:0; bottom:16px; z-index:5; display:flex; align-items:center; justify-content:center; gap:16px; pointer-events:none;}
.sdots{display:flex; gap:8px; pointer-events:auto;}
.sdots button{width:9px; height:9px; border-radius:50%; border:none; background:rgba(20,23,27,.28); cursor:pointer; padding:0; transition:.2s;}
.sdots button.on{background:var(--copper); width:26px; border-radius:20px;}
.slide.dark ~ .slide-ui .sdots button{background:rgba(255,255,255,.4);}
.sarrow{pointer-events:auto; width:34px; height:34px; border-radius:50%; border:1px solid var(--line2); background:rgba(255,255,255,.85); backdrop-filter:blur(4px); cursor:pointer; font-size:18px; line-height:1; color:var(--ink); display:grid; place-items:center; transition:.15s; font-family:var(--disp);}
.sarrow:hover{background:#fff; border-color:var(--ink);}
@media (prefers-reduced-motion:reduce){ .slide{transition:none;} }
@media (max-width:760px){
  .slides{aspect-ratio:4/3; min-height:0;}
  .slide::before{background:linear-gradient(180deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.92) 72%);}
  .slide.dark::before{background:linear-gradient(180deg, rgba(20,23,27,0) 30%, rgba(20,23,27,.92) 72%);}
  .slide-cap{max-width:100%; padding:20px 22px;}
  .slide-cap .sc-t{font-size:24px;} .slide-cap .sc-d{font-size:13px;}
}

/* ============ DOMAIN CARDS WITH PHOTO ============ */
.dom{padding:0; overflow:hidden; display:block; color:inherit; transition:.16s;}
.dom:hover{border-color:var(--ink); transform:translateY(-3px); box-shadow:0 10px 26px rgba(20,23,27,.08);}
.dom::before{display:none;}
.dom .dom-ph{width:100%; aspect-ratio:16/10; background-size:cover; background-position:center; border-bottom:1px solid var(--line);}
.dom .dom-b{padding:18px 20px 20px; position:relative;}
.dom .dom-b::before{content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--copper);}

/* ============ HERO NEED CHIPS ============ */
.needbar{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:22px;}
.needbar .need-lead{font-family:var(--mono); font-size:11px; color:var(--mut); letter-spacing:.06em; text-transform:uppercase; margin-right:2px;}
.need{font-size:13px; font-weight:600; padding:7px 14px; border-radius:20px; border:1.5px solid var(--line2); background:var(--white); color:var(--slate); transition:.13s; white-space:nowrap;}
.need:hover{border-color:var(--copper); color:var(--copper-d); background:var(--copper-bg);}

/* ============ WHAT WE PROVIDE ============ */
.provide{padding:54px 0 8px;}
.prov-lead{font-size:16px; color:var(--slate); max-width:70ch; line-height:1.7; margin-bottom:24px;}
.prov-lead b{color:var(--ink);}
.prov-lead .pl-tag{display:inline-block; font-family:var(--mono); font-size:11px; font-weight:600; color:var(--copper-d); background:var(--copper-bg); border:1px solid var(--copper-ln); padding:3px 11px; border-radius:20px; margin-right:12px; letter-spacing:.03em; vertical-align:middle;}
.provgrid{display:grid; grid-template-columns:repeat(5,1fr); gap:12px;}
.prov{border:1px solid var(--line); border-radius:var(--rl); padding:20px 18px; background:var(--white); position:relative;}
.prov .pv-n{font-size:11px; color:var(--copper-d); font-weight:600; letter-spacing:.06em;}
.prov h3{font-size:14.5px; font-weight:700; margin:10px 0 6px; letter-spacing:-.01em;}
.prov p{font-size:12px; color:var(--mut); line-height:1.6;}
@media (max-width:940px){ .provgrid{grid-template-columns:1fr 1fr;} }
@media (max-width:560px){ .provgrid{grid-template-columns:1fr;} .needbar .need{font-size:12px; padding:6px 12px;} }

/* ============ HERO WITH BACKGROUND PHOTO SLIDESHOW ============ */
.hero-bg{position:relative; padding:0; overflow:hidden; border-bottom:1px solid var(--line); background:url(img/nfc-tetsudo.jpg) center right/cover no-repeat;}
.hero-bglayer{position:absolute; inset:0; z-index:0;}
.hero-slide{position:absolute; inset:0; background-size:cover; background-position:center right; opacity:0; transition:opacity 1s ease;}
.hero-slide.is-active{opacity:1;}
/* left-to-right scrim so text stays readable over any photo */
.hero-scrim{position:absolute; inset:0;
  background:linear-gradient(90deg, var(--paper) 0%, rgba(244,245,244,.97) 30%, rgba(244,245,244,.82) 46%, rgba(244,245,244,.35) 62%, rgba(244,245,244,0) 82%);}
.hero-inner{position:relative; z-index:2; padding:70px 32px 30px;}
.hero-bg .hero-actions{margin-top:26px;}
/* scene caption + dots under the CTA */
.hero-scene{margin-top:30px; display:flex; align-items:center; gap:18px; flex-wrap:wrap;}
.hs-dots{display:flex; gap:8px;}
.hs-dots button{width:9px; height:9px; border-radius:50%; border:none; background:rgba(20,23,27,.24); cursor:pointer; padding:0; transition:.2s;}
.hs-dots button.on{background:var(--copper); width:26px; border-radius:20px;}
.hs-cap{font-family:var(--mono); font-size:12px; color:var(--slate); letter-spacing:.02em;}
.hs-cap b{color:var(--copper-d); font-weight:600; margin-right:8px;}
/* the verification line now sits in its own band below the photo hero */
.hero-line{padding:34px 0 8px;}
@media (max-width:760px){
  .hero-scrim{background:linear-gradient(180deg, rgba(244,245,244,.62) 0%, rgba(244,245,244,.9) 42%, var(--paper) 78%);}
  .hero-slide{background-position:center;}
  .hero-inner{padding:36px 20px 26px;}
  .hero-scene{gap:12px;}
}

/* ============ DOMAIN PAGE ============ */
.dhero{position:relative; background-size:cover; background-position:center right; border-bottom:1px solid var(--line);}
.dhero-scrim{position:absolute; inset:0; background:linear-gradient(90deg, var(--paper) 0%, rgba(244,245,244,.96) 32%, rgba(244,245,244,.8) 48%, rgba(244,245,244,.3) 66%, rgba(244,245,244,0) 84%);}
.dhero-in{position:relative; z-index:2; padding:52px 32px 46px;}
.dhero-tag{display:inline-block; font-family:var(--mono); font-size:11px; font-weight:600; padding:4px 12px; border-radius:20px; letter-spacing:.03em;}
.dhero-in h1{font-size:36px; font-weight:700; letter-spacing:-.02em; margin:14px 0 8px; line-height:1.18; max-width:20ch;}
.dhero-lede{font-size:16px; color:var(--slate); max-width:52ch; line-height:1.7;}
.dhero-cta{display:flex; gap:10px; margin-top:22px; flex-wrap:wrap;}
.dgrid{display:grid; grid-template-columns:1fr 300px; gap:36px; align-items:start;}
.dmain h2{font-size:20px; font-weight:600; letter-spacing:-.01em; margin:32px 0 10px;}
.dmain h2:first-child{margin-top:0;}
.buildlist{display:flex; flex-direction:column; gap:0; border:1px solid var(--line); border-radius:var(--rl); overflow:hidden;}
.buildlist .bl{display:grid; grid-template-columns:180px 1fr; gap:14px; padding:12px 16px; border-bottom:1px solid var(--line);}
.buildlist .bl:last-child{border-bottom:none;}
.buildlist .bl-k{font-family:var(--mono); font-size:11.5px; color:var(--copper-d); font-weight:600; padding-top:1px;}
.buildlist .bl-v{font-size:13.5px; color:var(--slate);}
.dnote{background:var(--panel); border-left:4px solid var(--copper); border-radius:0 var(--r) var(--r) 0; padding:12px 16px; font-size:13px; color:var(--slate); margin-top:14px; line-height:1.7;}
.dnote-mk{font-family:var(--mono); font-size:10px; font-weight:600; color:var(--copper-d); border:1px solid var(--copper-ln); padding:2px 7px; border-radius:4px; margin-right:10px;}
.dprod{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.dpcard{border:1px solid var(--line2); border-radius:var(--r); padding:13px 15px; display:flex; flex-direction:column; gap:8px; background:var(--white); transition:.14s;}
.dpcard:hover{border-color:var(--ink); transform:translateY(-2px); box-shadow:0 6px 16px rgba(20,23,27,.06);}
.dpcard .dpn{font-weight:600; font-size:13.5px; font-family:var(--disp); line-height:1.4;}
.dpcard .dparrow{font-family:var(--mono); font-size:11px; color:var(--faint);}
@media (max-width:860px){ .dgrid{grid-template-columns:1fr;} .aside{position:static;} .buildlist .bl{grid-template-columns:1fr; gap:3px;} .dprod{grid-template-columns:1fr;} .dhero-scrim{background:linear-gradient(180deg, rgba(244,245,244,.55) 0%, rgba(244,245,244,.92) 46%, var(--paper) 80%);} }

/* ============ TYPE V — VIEWER / ANALYSIS FEATURE CARDS ============ */
.viewgrid{display:grid; gap:14px; margin-top:6px;}
.viewcard{border:1px solid var(--line2); border-radius:var(--rl); padding:20px 22px; background:var(--white); border-left:4px solid var(--l1);}
.viewcard .vh{display:flex; align-items:baseline; gap:12px; margin-bottom:6px;}
.viewcard .vjp{font-family:var(--disp); font-weight:700; font-size:17px; letter-spacing:-.01em;}
.viewcard .ven{font-size:12px; color:var(--l1); background:var(--l1-bg); padding:2px 9px; border-radius:20px; font-weight:600;}
.viewcard .vd{font-size:13.5px; color:var(--slate); line-height:1.7; margin-bottom:10px;}
.viewcard .vlist{list-style:none; display:flex; flex-direction:column; gap:6px; margin:0;}
.viewcard .vlist li{font-size:13px; color:var(--slate); padding-left:20px; position:relative; line-height:1.6;}
.viewcard .vlist li::before{content:"▸"; position:absolute; left:0; color:var(--l1); font-family:var(--mono); font-size:11px; top:2px;}

/* ============ TYPE P — PLATFORM CAPABILITIES ============ */
.capgrid{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:6px;}
.capcard{border:1px solid var(--line2); border-radius:var(--rl); padding:16px 18px; background:var(--white); border-top:3px solid var(--keo);}
.capcard .capk{font-family:var(--disp); font-weight:700; font-size:14.5px; margin-bottom:4px;}
.capcard .capv{font-size:13px; color:var(--slate); line-height:1.6;}
/* protocol / interface chips */
.pchips{display:flex; flex-wrap:wrap; gap:7px; margin-top:6px;}
.pchip{font-family:var(--mono); font-size:11.5px; color:var(--keo); background:var(--keo-bg); border:1px solid #b9d3e6; padding:4px 11px; border-radius:20px;}
.pchip.alt{color:var(--slate); background:var(--panel); border-color:var(--line2);}
@media (max-width:640px){ .capgrid{grid-template-columns:1fr;} }

/* ============ RUNTIME (Alcineo) axis note ============ */
.axisnote{background:var(--alc-bg); border:1px solid #cfc6ee; border-left:4px solid var(--alc); border-radius:var(--r); padding:14px 18px; font-size:13.5px; color:var(--slate); line-height:1.7; margin-bottom:8px;}
.axisnote-mk{font-family:var(--mono); font-size:10px; font-weight:600; color:#fff; background:var(--alc); padding:2px 9px; border-radius:20px; margin-right:10px; letter-spacing:.04em;}
.axisnote b{color:var(--ink);}
/* homepage runtime band */
.runtime{padding:56px 0;}
.rt-head{max-width:64ch; margin-bottom:24px;}
.rt-head .ey{font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--alc); font-weight:600; text-transform:uppercase; display:flex; align-items:center; gap:9px;}
.rt-head .ey::before{content:""; width:20px; height:1.5px; background:var(--alc);}
.rt-head h2{font-size:29px; font-weight:700; letter-spacing:-.02em; margin-top:12px; line-height:1.22;}
.rt-head p{color:var(--slate); margin-top:10px; font-size:15.5px;}
.rt-head .rt-dist{display:inline-block; margin-top:12px; font-family:var(--mono); font-size:11.5px; color:var(--alc); background:var(--alc-bg); border:1px solid #cfc6ee; padding:4px 12px; border-radius:20px;}
.rtgrid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
.rtcard{border:1px solid var(--line2); border-radius:var(--rl); padding:18px 20px; background:var(--white); border-top:3px solid var(--alc); transition:.14s; display:block;}
.rtcard:hover{border-color:var(--ink); transform:translateY(-2px); box-shadow:0 6px 18px rgba(20,23,27,.06);}
.rtcard .rtn{font-family:var(--disp); font-weight:700; font-size:15px; letter-spacing:-.01em;}
.rtcard .rtd{font-size:12.5px; color:var(--mut); margin-top:6px; line-height:1.6;}
.rtcard .rtstd{font-family:var(--mono); font-size:10.5px; color:var(--alc); margin-top:10px;}
@media (max-width:860px){ .rtgrid{grid-template-columns:1fr;} }

/* domain product cards: role colouring */
.drole-note{font-size:13px; color:var(--mut); margin-top:6px; margin-bottom:8px; line-height:1.6;}
.drole-note b{color:var(--ink);}
.dpcard.rt{border-top:3px solid var(--alc);}
.dpcard.rt .dparrow{color:var(--alc);}
.dpcard.ts{border-top:3px solid var(--keo);}

/* Type R — reference jig sub-headings */
.refh{font-family:var(--disp); font-size:15px; font-weight:700; margin:22px 0 8px; color:var(--ink); padding-left:12px; border-left:3px solid var(--l1);}

/* test-suite chips (ICCSim TMat) */
.suites{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px;}
.suite{font-family:var(--mono); font-size:11px; color:var(--l3); background:#f7ede6; border:1px solid #e6c8b4; padding:3px 10px; border-radius:5px;}

.pnote{background:var(--panel); border-left:3px solid var(--l3); border-radius:0 var(--r) var(--r) 0; padding:11px 15px; font-size:12.5px; color:var(--slate); line-height:1.7; margin-top:12px;}
.pintro{font-size:14.5px; color:var(--slate); line-height:1.75; margin-bottom:8px;}

/* jig cards with photos (Type R accessories) */
.jiggrid{display:flex; flex-direction:column; gap:14px; margin-top:8px;}
.jigcard{display:grid; grid-template-columns:200px 1fr; gap:20px; align-items:start; border:1px solid var(--line); border-radius:var(--rl); padding:16px; background:var(--white);}
.jig-ph{background:#fafafa; border:1px solid var(--line); border-radius:var(--r); overflow:hidden; aspect-ratio:16/10; display:flex; align-items:center; justify-content:center;}
.jig-ph img{width:100%; height:100%; object-fit:contain;}
.jig-body .refh{margin-top:0;}
.jig-body table{font-size:12.5px;}
@media (max-width:720px){ .jigcard{grid-template-columns:1fr;} .jig-ph{aspect-ratio:16/9;} }

/* partner directory (data-driven) */
.pvgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; margin-top:8px;}
.pvcard{border:1px solid var(--line); border-radius:var(--rl); padding:20px; background:var(--white); border-top:3px solid var(--line2);}
.pvcard[data-v="keo"]{border-top-color:var(--keo);} .pvcard[data-v="icc"]{border-top-color:var(--icc);}
.pvcard[data-v="bar"]{border-top-color:var(--bar);} .pvcard[data-v="alc"]{border-top-color:var(--alc);} .pvcard[data-v="b2"]{border-top-color:var(--b2);}
.pv-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px;}
.pv-name{font-family:var(--disp); font-weight:700; font-size:16px; display:flex; align-items:center; gap:9px;}
.pv-dot{width:11px; height:11px; border-radius:50%; flex:none;}
.pv-axis{font-family:var(--mono); font-size:9.5px; font-weight:600; padding:3px 8px; border-radius:20px; letter-spacing:.03em; white-space:nowrap;}
.pv-axis.tester{color:var(--keo); background:var(--keo-bg);}
.pv-axis.runtime{color:#fff; background:var(--alc);}
.pv-role{font-size:12px; color:var(--copper-d); font-weight:600; margin-bottom:8px;}
.pv-desc{font-size:12.5px; color:var(--mut); line-height:1.65; margin-bottom:10px;}
.pv-count{font-family:var(--mono); font-size:10.5px; color:var(--slate); border-top:1px solid var(--line); padding-top:10px; margin-bottom:8px;}
.pv-list{list-style:none; display:flex; flex-direction:column; gap:3px; margin:0;}
.pv-list li{font-size:12.5px; line-height:1.5;}
.pv-list a{color:var(--slate); border-bottom:1px solid transparent; transition:.12s;}
.pv-list a:hover{color:var(--ink); border-bottom-color:var(--copper);}
.vmore{display:inline-block; margin-top:12px; font-size:12.5px; font-weight:600; color:var(--copper-d); font-family:var(--mono);}
.vmore:hover{color:var(--ink);}

/* product-type grid (6 types) */
.tplgrid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
@media (max-width:820px){ .tplgrid{grid-template-columns:1fr 1fr;} }
@media (max-width:520px){ .tplgrid{grid-template-columns:1fr;} }

/* responsibility-scope band on layer pages */
.scopeband{margin-top:16px; background:var(--white); border:1px solid var(--line2); border-left:3px solid var(--copper); border-radius:0 var(--r) var(--r) 0; padding:12px 16px; display:flex; gap:12px; align-items:baseline; flex-wrap:wrap;}
.scope-mk{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--copper-d); white-space:nowrap;}
.scope-t{font-size:12.5px; color:var(--slate); line-height:1.7;}
.scope-t b{color:var(--ink);}

/* standards / brand logo strip */
.lgo-block{margin-top:8px;}
.lgo-row{display:flex; align-items:center; gap:14px; margin:10px 0; flex-wrap:wrap;}
.lgo-lbl{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--slate); min-width:72px;}
.lgo-set{display:flex; flex-wrap:wrap; gap:10px; align-items:center;}
.lgo{display:inline-flex; align-items:center; justify-content:center; width:84px; height:46px; padding:0; background:var(--white); border:1px solid var(--line2); border-radius:6px; overflow:hidden;}
.lgo img{width:100%; height:100%; object-fit:contain; display:block;}
.lgo-txt{font-family:var(--disp); font-size:12px; font-weight:700; color:var(--slate); letter-spacing:.01em;}
.lgo-note{font-size:11.5px; color:var(--mut); margin-top:8px; line-height:1.6;}

.layer-lgo{margin-top:14px; padding-top:14px; border-top:1px solid var(--line2);}
.layer-lgo .lgo{width:76px; height:42px;}

/* partner logos in directory — uniform framed treatment */
.pv-logo{display:inline-flex; align-items:center; justify-content:center; width:132px; height:53px; border:1px solid var(--line2); border-radius:8px; overflow:hidden; background:var(--white);}
.pv-logo img{width:100%; height:100%; object-fit:contain; display:block;}
.pv-logo-txt{font-family:var(--disp); font-weight:700; font-size:15px; color:var(--ink);}
/* product gallery (real bench / UI) */
.galgrid{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:8px;}
.galcard{border:1px solid var(--line2); border-radius:var(--rl); overflow:hidden; background:var(--white);}
.gal-ph{background:#f4f5f6; aspect-ratio:16/10; display:flex; align-items:center; justify-content:center; overflow:hidden;}
.gal-ph img{width:100%; height:100%; object-fit:cover;}
.galcard figcaption{padding:12px 14px; display:flex; flex-direction:column; gap:3px;}
.galcard figcaption b{font-size:13.5px;}
.galcard figcaption span{font-size:12px; color:var(--mut); line-height:1.55;}
@media (max-width:680px){ .galgrid{grid-template-columns:1fr;} }

/* axis bands: platform (execution env) & issuer (card QC) */
.axis-band{padding:52px 0;}
.axis-band .rt-head h2{font-size:27px; font-weight:700; letter-spacing:-.02em; margin-top:12px; line-height:1.24;}
.axgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; margin-top:20px;}
.axcard{border:1px solid var(--line2); border-radius:var(--rl); padding:18px 20px; background:var(--white); transition:.14s; display:block;}
.axgrid[data-axis="platform"] .axcard{border-top:3px solid #5a616b;}
.axgrid[data-axis="issuer"] .axcard{border-top:3px solid #8a5a2b;}
.axcard:hover{border-color:var(--ink); transform:translateY(-2px); box-shadow:0 6px 18px rgba(20,23,27,.06);}
.axcard .axn{font-family:var(--disp); font-weight:700; font-size:15px;}
.axcard .axd{font-size:12px; color:var(--mut); margin-top:6px; line-height:1.55;}
.axis-band.issuer{background:var(--panel);}

/* ICTK certification-lab callout (cert section) */
.certlab{display:grid; grid-template-columns:180px 1fr; gap:24px; align-items:center; margin-top:22px; padding:22px 24px; background:var(--white); border:1px solid var(--line2); border-left:3px solid var(--cert); border-radius:0 var(--rl) var(--rl) 0;}
.cl-logo{display:flex; align-items:center; justify-content:center; height:88px; border:1px solid var(--line2); border-radius:10px; background:var(--white); overflow:hidden; padding:10px;}
.cl-logo img{width:100%; height:100%; object-fit:contain;}
.cl-tag{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--cert); margin-bottom:6px;}
.cl-body h3{font-size:17px; margin-bottom:8px;}
.cl-body p{font-size:13px; color:var(--slate); line-height:1.7;}
.cl-key{margin-top:10px; padding:11px 14px; background:var(--panel); border-radius:8px; font-size:12.5px;}
.certlab-partner{display:grid; grid-template-columns:150px 1fr; gap:20px; align-items:center; margin-top:16px; padding:18px 20px; background:var(--panel); border:1px dashed var(--cert); border-radius:var(--rl);}
@media (max-width:680px){ .certlab,.certlab-partner{grid-template-columns:1fr;} }

/* ICTK certification-lab page */
.ictk-pos{background:var(--panel); border-left:3px solid var(--cert); border-radius:0 var(--r) var(--r) 0; padding:16px 20px; margin-bottom:24px;}
.ictk-pos-mk{font-family:var(--mono); font-size:11px; font-weight:600; color:var(--cert); display:block; margin-bottom:6px;}
.ictk-pos p{font-size:13.5px; color:var(--slate); line-height:1.75;}
.svc-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:8px;}
.svc-card{border:1px solid var(--line2); border-radius:var(--rl); padding:18px 20px; background:var(--white); border-top:3px solid var(--cert);}
.svc-h{display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:8px;}
.svc-h h3{font-size:16px;}
.svc-en{font-family:var(--mono); font-size:10px; color:var(--mut); text-transform:uppercase; letter-spacing:.04em;}
.svc-d{font-size:12.5px; color:var(--slate); line-height:1.65; margin-bottom:10px;}
.svc-list{list-style:none; display:flex; flex-direction:column; gap:4px; margin:0;}
.svc-list li{font-size:12px; color:var(--ink); padding-left:14px; position:relative; line-height:1.5;}
.svc-list li::before{content:"›"; position:absolute; left:0; color:var(--cert); font-weight:700;}
.proc-flow{display:flex; align-items:stretch; gap:6px; flex-wrap:wrap; margin-top:8px;}
.proc-step{flex:1; min-width:150px; border:1px solid var(--line2); border-radius:var(--rl); padding:16px; background:var(--white); position:relative;}
.proc-step[data-i="4"]{border-color:var(--cert); border-width:2px;}
.proc-n{width:26px; height:26px; border-radius:50%; background:var(--cert); color:#fff; font-family:var(--mono); font-weight:600; font-size:12px; display:flex; align-items:center; justify-content:center; margin-bottom:10px;}
.proc-en{font-family:var(--disp); font-weight:700; font-size:14px;}
.proc-ja{font-size:12px; color:var(--copper-d); font-weight:600; margin-bottom:6px;}
.proc-d{font-size:11.5px; color:var(--mut); line-height:1.6;}
.proc-arrow{display:flex; align-items:center; color:var(--cert); font-size:18px; font-weight:700;}
.faq-list{display:flex; flex-direction:column; gap:10px; margin-top:8px;}
.faq-item{border:1px solid var(--line2); border-radius:var(--rl); padding:14px 18px; background:var(--white);}
.faq-q{font-weight:700; font-size:13.5px; margin-bottom:6px;}
.faq-q::before{content:"Q. "; color:var(--cert);}
.faq-a{font-size:12.5px; color:var(--slate); line-height:1.7;}
.faq-a::before{content:"A. "; color:var(--mut); font-weight:600;}
.aside-cta{display:block; text-align:center; background:var(--signal); color:#fff; font-weight:600; font-size:13px; padding:11px; border-radius:8px; margin-top:14px;}
.aside-link{display:block; text-align:center; font-size:12px; color:var(--slate); margin-top:8px; font-family:var(--mono);}
@media (max-width:680px){ .svc-grid{grid-template-columns:1fr;} .proc-arrow{display:none;} }
.cl-more{display:inline-block; margin-top:10px; font-family:var(--mono); font-size:12px; font-weight:600; color:var(--cert);}
.cl-more:hover{text-decoration:underline;}

/* standards-update blog */
.art-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:16px; margin-top:8px;}
.art-card{border:1px solid var(--line2); border-radius:var(--rl); padding:22px; background:var(--white); border-top:3px solid var(--l1); transition:.14s; display:block;}
.art-card:hover{border-color:var(--ink); transform:translateY(-2px); box-shadow:0 6px 18px rgba(20,23,27,.06);}
.art-meta{display:flex; gap:10px; align-items:center; margin-bottom:10px; flex-wrap:wrap;}
.art-cat{font-family:var(--mono); font-size:10.5px; font-weight:600; color:var(--l1); background:var(--l1-bg,#e5eff6); padding:3px 9px; border-radius:5px;}
.art-date{font-family:var(--mono); font-size:11px; color:var(--mut);}
.art-tag{font-family:var(--mono); font-size:10.5px; color:var(--copper-d); border:1px solid var(--line2); padding:2px 8px; border-radius:5px;}
.art-card h3{font-size:16px; line-height:1.4; margin-bottom:8px;}
.art-card p{font-size:12.5px; color:var(--slate); line-height:1.65; margin-bottom:10px;}
.art-more{font-family:var(--mono); font-size:12px; font-weight:600; color:var(--l1);}
/* article page */
.art-wrap{max-width:760px;}
.art-head{padding:8px 0 24px; border-bottom:1px solid var(--line); margin-bottom:24px;}
.art-head h1{font-size:30px; line-height:1.25; letter-spacing:-.02em; margin:14px 0 14px;}
.art-lede{font-size:15px; color:var(--slate); line-height:1.8;}
.art-body h2{font-size:19px; margin:26px 0 10px;}
.art-body p{font-size:14px; color:var(--ink); line-height:1.9; margin-bottom:14px;}
.art-key{background:var(--panel); border-radius:var(--rl); padding:18px 22px; margin-bottom:24px;}
.art-key h4{font-size:13px; margin-bottom:10px; color:var(--l1);}
.art-key ul{margin:0; padding-left:18px;}
.art-key li{font-size:13px; line-height:1.8; color:var(--ink);}
.art-note{background:#f9f6f2; border-left:3px solid var(--copper); border-radius:0 var(--r) var(--r) 0; padding:14px 18px; font-size:12.5px; color:var(--slate); line-height:1.75; margin:24px 0;}
.art-related{border-top:1px solid var(--line); padding-top:20px; margin-top:24px;}
.art-related h4{font-size:13px; margin-bottom:12px;}
.rel-prod-list{display:flex; flex-direction:column; gap:8px;}
.rel-prod{font-size:13.5px; color:var(--l1); font-weight:500;}
.rel-prod:hover{color:var(--ink);}
.art-back{display:inline-block; margin-top:26px; font-family:var(--mono); font-size:12.5px; color:var(--slate);}
.art-ref a{font-size:12px; line-height:1.5; color:var(--l1); display:block; margin-bottom:6px;}
.art-ref a:hover{color:var(--ink);}
  .art-fig{margin:26px 0; border:1px solid var(--line,#e5e2dc); background:#fff; padding:10px;}
  .art-fig img{width:100%; height:auto; display:block;}
  .art-fig figcaption{font-size:12.5px; color:var(--mut,#6b6b66); padding:10px 4px 2px; line-height:1.7;}
  .art-fig2{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
  @media(max-width:700px){.art-fig2{grid-template-columns:1fr;}}
