  :root{
    --ink:#1a1a1a;
    --sub:#6e6e6e;
    --line:#e4e4e0;
    --bg:#ffffff;
    --bg-alt:#f4f4f1;
    --ghost:#e8e8e4;
    --jp:"Noto Sans JP",sans-serif;
    --en:"Archivo","Noto Sans JP",sans-serif;
    --ease:cubic-bezier(.22,1,.36,1);
    --pad:clamp(20px,4.2vw,60px);
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{background:var(--bg);color:var(--ink);font-family:var(--jp);font-weight:400;
       letter-spacing:.02em;line-height:1.9;-webkit-font-smoothing:antialiased;overflow-x:hidden}
  a{color:inherit;text-decoration:none}
  img{display:block;max-width:100%}
  h1,h2,h3{word-break:keep-all;overflow-wrap:break-word;line-height:1.3}
  :focus-visible{outline:2px solid #1a1a1a;outline-offset:3px}
  .wrap{max-width:1360px;margin-inline:auto;padding-inline:var(--pad)}
  .en{font-family:var(--en)}

  /* ============ header ============ */
  header{position:sticky;top:0;z-index:60;background:#fff;border-bottom:1px solid transparent}
  header.stuck{border-bottom-color:var(--line)}
  .hbar{display:flex;align-items:center;justify-content:space-between;gap:24px;
        height:76px;padding-inline:clamp(16px,3vw,40px)}
  .brand img{height:36px;width:auto}
  .hnav{display:flex;align-items:center;gap:clamp(18px,2.6vw,38px)}
  .hnav a{font-size:.8rem;letter-spacing:.06em;color:var(--ink);transition:opacity .2s ease}
  .hnav a.portal,.portal{display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:#fff;
          border-radius:4px;padding:10px 18px;font-size:.78rem;letter-spacing:.06em;
          transition:opacity .2s ease,transform .16s var(--ease)}
  .portal svg{width:11px;height:11px;fill:none;stroke:#fff;stroke-width:1.6}
  .portal:active{transform:scale(.98)}
  @media (hover:hover){ .hnav a:hover{opacity:.55} .portal:hover{opacity:.82} }
  .burger{display:none;width:40px;height:40px;border:0;background:none;cursor:pointer;
          flex-direction:column;justify-content:center;align-items:center;gap:5px}
  .burger i{display:block;width:20px;height:1.5px;background:var(--ink);transition:transform .24s var(--ease),opacity .24s var(--ease)}
  body.menu .burger i:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
  body.menu .burger i:nth-child(2){opacity:0}
  body.menu .burger i:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}

  /* ============ hero ============ */
  .hero{position:relative;height:clamp(460px,54.5vw,760px);overflow:hidden;display:flex;align-items:flex-end}
  .hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 42%}
  .hero::after{content:"";position:absolute;inset:0;
    background:linear-gradient(105deg,rgba(0,0,0,.46) 0%,rgba(0,0,0,.22) 42%,rgba(0,0,0,.04) 72%)}
  .hero .inner{position:relative;z-index:2;width:100%;padding-inline:clamp(24px,7.6vw,132px);padding-bottom:clamp(58px,11vw,152px);color:#fff}
  .hero h1{font-family:var(--en);font-weight:700;font-size:clamp(2.7rem,8.2vw,6.2rem);
           line-height:.98;letter-spacing:-.015em;text-transform:uppercase}
  .hero .lead{margin-top:clamp(14px,2vw,22px);font-size:clamp(.95rem,1.35vw,1.15rem);
              font-weight:400;letter-spacing:.06em}
  .ticket{display:inline-flex;align-items:center;gap:clamp(20px,3vw,42px);margin-top:clamp(22px,3.4vw,44px);
          background:#fff;color:var(--ink);border-radius:999px;padding:14px 22px 14px 26px;
          font-size:.8rem;letter-spacing:.08em;transition:transform .18s var(--ease),box-shadow .2s ease}
  .ticket .ar{font-family:var(--en)}
  .ticket:active{transform:scale(.985)}
  @media (hover:hover){ .ticket:hover{box-shadow:0 6px 22px rgba(0,0,0,.18)} }
  /* hero stagger */
  .h0{opacity:0;transform:translateY(18px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
  body.loaded .h0{opacity:1;transform:none}
  body.loaded .h0.d1{transition-delay:.07s}
  body.loaded .h0.d2{transition-delay:.14s}

  /* ============ section head ============ */
  section{position:relative}
  .sec{padding-block:clamp(56px,7.4vw,104px)}
  .shead{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
         margin-bottom:clamp(26px,3.4vw,44px)}
  .shead h2{font-family:var(--en);font-weight:700;font-size:clamp(1.45rem,2.5vw,2rem);
            letter-spacing:-.01em;line-height:1.2}
  .shead .ja{display:block;margin-top:4px;font-size:.72rem;font-weight:400;color:var(--sub);letter-spacing:.1em}
  .seelink{display:inline-flex;align-items:center;gap:14px;font-size:.78rem;color:var(--ink);white-space:nowrap;
           padding-bottom:4px;transition:opacity .2s ease}
  .seelink .ar{font-family:var(--en)}
  @media (hover:hover){ .seelink:hover{opacity:.55} }

  /* ============ services ============ */
  .cards{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,32px)}
  .card figure{overflow:hidden;background:var(--bg-alt)}
  .card img{width:100%;height:clamp(200px,24.5vw,352px);object-fit:cover;
            transition:transform .3s var(--ease)}
  @media (hover:hover){ .card:hover img{transform:scale(1.02)} }
  .card h3{margin-top:clamp(16px,1.8vw,24px);font-size:.98rem;font-weight:700;letter-spacing:.05em}
  .card p{margin-top:10px;font-size:.8rem;line-height:2.05;color:#3f3f3f}

  /* ============ list rows ============ */
  .rows{border-top:1px solid var(--line)}
  .row{display:grid;grid-template-columns:clamp(88px,10vw,132px) 1fr 18px;align-items:center;gap:clamp(8px,1.6vw,24px);
       padding:clamp(16px,2vw,24px) clamp(12px,4.4vw,60px);border-bottom:1px solid var(--line);
       transition:background-color .2s ease}
  .row .dt{font-family:var(--en);font-size:.74rem;color:var(--sub);letter-spacing:.04em}
  .row .tt{font-size:.86rem;font-weight:500;letter-spacing:.03em;line-height:1.7}
  .row .ar{font-family:var(--en);font-size:.82rem;color:#9a9a9a;text-align:right;
           transition:transform .2s var(--ease)}
  @media (hover:hover){ .row:hover{background:#fafaf8} .row:hover .ar{transform:translateX(3px)} }
  .more{display:block;width:clamp(180px,20vw,230px);margin:clamp(28px,3.4vw,44px) auto 0;
        text-align:center;border:1px solid var(--line);border-radius:999px;padding:13px 20px;
        font-size:.78rem;letter-spacing:.08em;transition:border-color .2s ease,background-color .2s ease}
  @media (hover:hover){ .more:hover{border-color:#b9b9b3;background:#fafaf8} }

  /* ============ mission ============ */
  .mission{background:var(--bg-alt);overflow:hidden;padding-block:clamp(48px,6vw,84px) clamp(56px,7.4vw,104px)}
  .mission .ghosttx{font-family:var(--en);font-weight:800;font-size:clamp(3rem,9.4vw,7.4rem);
                    line-height:1;letter-spacing:-.02em;color:var(--ghost);user-select:none;
                    margin-bottom:clamp(20px,2.6vw,34px)}
  .mission h2{font-size:clamp(1.2rem,2.1vw,1.62rem);font-weight:700;line-height:1.72;letter-spacing:.04em}
  .mission .body{max-width:74ch;margin-top:clamp(20px,2.4vw,30px);font-size:.8rem;line-height:2.15;color:#3f3f3f;letter-spacing:.03em}

  /* ============ safety ============ */
  .srow{grid-template-columns:minmax(0,1fr) auto auto}
  .srow .meta{font-size:.72rem;color:var(--sub);letter-spacing:.04em;white-space:nowrap}
  .srow .pdf{font-family:var(--en);font-size:.66rem;letter-spacing:.12em;color:var(--sub);
             border:1px solid var(--line);border-radius:3px;padding:3px 9px;transition:border-color .2s ease,color .2s ease}
  @media (hover:hover){ .srow:hover .pdf{border-color:#b9b9b3;color:var(--ink)} }

  /* ============ company / footer ============ */
  .company{border-top:1px solid var(--line);padding-block:clamp(48px,6vw,84px)}
  .cgrid{display:grid;grid-template-columns:clamp(180px,20vw,260px) minmax(0,1fr);gap:clamp(24px,3.4vw,56px)}
  .cgrid h2{font-family:var(--en);font-weight:700;font-size:clamp(1.35rem,2.2vw,1.8rem);letter-spacing:-.01em}
  .cdl .r{display:grid;grid-template-columns:clamp(96px,11vw,150px) minmax(0,1fr);gap:16px;
          padding:15px 0;border-bottom:1px solid var(--line);font-size:.8rem}
  .cdl dt{font-family:var(--en);font-size:.68rem;letter-spacing:.16em;color:var(--sub);padding-top:.25em}
  .cdl dd{line-height:1.95}
  footer{border-top:1px solid var(--line);padding-block:clamp(32px,4vw,52px);background:#fafaf8}
  .fgrid{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:28px}
  footer .fimg{height:26px;width:auto}
  footer .addr{margin-top:14px;font-size:.72rem;line-height:2;color:var(--sub)}
  .flinks{display:flex;flex-wrap:wrap;gap:8px clamp(16px,2.4vw,32px);font-size:.75rem}
  .fbot{margin-top:clamp(24px,3vw,40px);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
        font-family:var(--en);font-size:.66rem;letter-spacing:.14em;color:var(--sub)}

  /* ============ reveal ============ */
  .rv{opacity:0;transform:translateY(16px);transition:opacity .3s var(--ease),transform .3s var(--ease)}
  .rv.in{opacity:1;transform:none}

  /* ============ responsive ============ */
  @media (max-width:900px){
    .burger{display:flex}
    .shead{flex-direction:column;align-items:flex-start;gap:10px}
    .hnav{position:fixed;inset:76px 0 auto;flex-direction:column;align-items:stretch;gap:0;
          background:#fff;border-bottom:1px solid var(--line);padding:8px clamp(20px,5vw,40px) 24px;
          transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .24s var(--ease),transform .24s var(--ease)}
    body.menu .hnav{opacity:1;transform:none;pointer-events:auto}
    .hnav a{padding:15px 0;border-bottom:1px solid var(--line);font-size:.86rem}
    .hnav a.portal{display:none}
    .cards{grid-template-columns:1fr;gap:clamp(28px,5vw,40px)}
    .cgrid{grid-template-columns:1fr;gap:20px}
  }
  @media (max-width:640px){
    .card p br,.mission .body br{display:none}
  }
  @media (max-width:560px){
    .row{grid-template-columns:1fr 18px;gap:6px 12px;padding-inline:6px}
    .srow{grid-template-columns:1fr;gap:8px}
    .srow .meta{white-space:normal}
    .srow .pdf{justify-self:start}
    .row .dt{grid-column:1 / -1}
    .cdl .r{grid-template-columns:1fr;gap:4px}
  }
  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto}
    *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
    .rv,.h0{opacity:1;transform:none}
  }

  /* ============ article / list pages ============ */
  .page-head{padding-block:clamp(38px,5vw,72px) clamp(20px,2.6vw,34px);border-bottom:1px solid var(--line)}
  .page-head .crumb{font-size:.72rem;color:var(--sub);letter-spacing:.06em}
  .page-head .crumb a{transition:opacity .2s ease}
  @media (hover:hover){ .page-head .crumb a:hover{opacity:.55} }
  .page-head h1{margin-top:12px;font-family:var(--en);font-weight:700;
                font-size:clamp(1.5rem,2.6vw,2.1rem);letter-spacing:-.01em}
  .page-head h1 .ja{display:block;margin-top:5px;font-family:var(--jp);font-size:.74rem;
                    font-weight:400;color:var(--sub);letter-spacing:.1em}
  .article{padding-block:clamp(36px,5vw,64px) clamp(48px,6vw,88px)}
  .article .dt{font-family:var(--en);font-size:.76rem;color:var(--sub);letter-spacing:.06em}
  .article h1{margin-top:12px;font-size:clamp(1.15rem,2vw,1.6rem);font-weight:700;line-height:1.66;
              letter-spacing:.03em;max-width:34em}
  .article .body{margin-top:clamp(24px,3vw,38px);max-width:66ch;font-size:.85rem;line-height:2.15;
                 color:#333;letter-spacing:.03em;white-space:pre-wrap}
  .backlink{display:inline-flex;align-items:center;gap:12px;margin-top:clamp(34px,4vw,56px);
            border:1px solid var(--line);border-radius:999px;padding:12px 24px;font-size:.78rem;
            letter-spacing:.06em;transition:border-color .2s ease,background-color .2s ease}
  @media (hover:hover){ .backlink:hover{border-color:#b9b9b3;background:#fafaf8} }
  .empty{padding:clamp(40px,6vw,80px) 0;text-align:center;color:var(--sub);font-size:.82rem}
  .listsec{padding-top:clamp(26px,3.2vw,44px)}
  .card .go{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font-size:.78rem;
            letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:4px;
            transition:border-color .2s ease}
  .card .go .ar{font-family:var(--en);font-size:.8rem}
  @media (hover:hover){ a.card:hover .go{border-bottom-color:var(--ink)} }
