/*
 * irodori-printing — Print-Trust Theme
 * 業種: 印刷会社（印刷・広告制作）
 * Category: industry
 * Preloader: L17 ノイズグレイン
 */

/* ==========================================================================
   0. Custom Properties
   ========================================================================== */

:root {
  /* Brand Colors */
  --pt-navy:         #003D7A;
  --pt-navy-deep:    #002B58;
  --pt-navy-pale:    #D6E4F5;
  --pt-amber:        #E8B200;
  --pt-amber-deep:   #C49500;
  --pt-amber-pale:   #FDF5D0;
  --pt-teal:         #1FA9A3;
  --pt-teal-deep:    #178580;
  --pt-teal-pale:    #D4F0EE;
  --pt-cream:        #F5F7FA;
  --pt-white:        #FFFFFF;
  --pt-charcoal:     #2A3240;
  --pt-silver:       #8FA5B8;
  --pt-divider:      #E0E8F0;

  /* CMYK Decoration Colors */
  --pt-cmyk-c:       #00AEEF;
  --pt-cmyk-m:       #EC008C;
  --pt-cmyk-y:       #FFF200;
  --pt-cmyk-k:       #231F20;

  /* Typography */
  --pt-font-sans:    "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Meiryo", sans-serif;
  --pt-font-en:      "Montserrat", Arial, sans-serif;

  /* Layout */
  --pt-container:    1200px;
  --pt-radius:       8px;
  --pt-radius-lg:    16px;
  --pt-shadow:       0 2px 16px rgba(0, 61, 122, 0.10);
  --pt-shadow-md:    0 4px 32px rgba(0, 61, 122, 0.15);
  --pt-shadow-lg:    0 8px 48px rgba(0, 61, 122, 0.20);

  /* Transitions */
  --pt-ease:         cubic-bezier(0.4, 0, 0.2, 1);
  --pt-duration:     0.3s;

  /* Hero Slider */
  --irodori-hero-slide-interval: 5000;
  --irodori-hero-overlay-gradient: linear-gradient(
    to right,
    rgba(0, 29, 61, 0.72) 0%,
    rgba(0, 29, 61, 0.40) 60%,
    rgba(0, 29, 61, 0.10) 100%
  );
  --irodori-hero-text: #ffffff;
  --irodori-hero-duration-fast: 0.2s;
  --irodori-hero-indicator-size: 10px;
  --irodori-hero-indicator-color: rgba(255, 255, 255, 0.45);
  --irodori-hero-indicator-active: #E8B200;

  /* Scroll Animations */
  --irodori-sa-duration: 600ms;
  --irodori-sa-easing: cubic-bezier(0.4, 0, 0.2, 1);
  --irodori-sa-distance: 30px;
  --irodori-sa-stagger-delay: 150ms;
  --irodori-counter-duration: 2000;

  /* Preloader */
  --irodori-loader-bg: #003D7A;
}

/* ==========================================================================
   1. Reset & Base
   ========================================================================== */

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  font-family: var(--pt-font-sans);
  font-size: 1rem;
  line-height: 1.7;
  color: var(--pt-charcoal);
  background: var(--pt-white);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: var(--pt-navy);
  text-decoration: none;
  transition: color var(--pt-duration) var(--pt-ease);
}

a:hover { color: var(--pt-teal); }

ul, ol { list-style: none; }

button {
  cursor: pointer;
  border: none;
  background: none;
  font-family: inherit;
}

/* ==========================================================================
   2. L17: ノイズグレイン Preloader
   ========================================================================== */

@property --irodori-noise-opacity {
  syntax: "<number>";
  inherits: false;
  initial-value: 0.4;
}

.irodori-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: var(--irodori-loader-bg);
}

.irodori-loader--l17 {
  background: var(--pt-navy);
}

.irodori-loader__noise-filter {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

.irodori-loader__noise-overlay {
  position: absolute;
  inset: -20%;
  z-index: 2;
  opacity: var(--irodori-noise-opacity);
  filter: url(#irodori-noise-grain);
  background: rgba(255, 255, 255, 0.5);
  animation: irodori-l17-noiseShift 0.12s steps(5) infinite;
  will-change: transform;
  pointer-events: none;
}

@keyframes irodori-l17-noiseShift {
  0%   { transform: translate(0, 0); }
  20%  { transform: translate(-3%, -3%); }
  40%  { transform: translate(2%, -5%); }
  60%  { transform: translate(-5%, 2%); }
  80%  { transform: translate(4%, 3%); }
  100% { transform: translate(0, 0); }
}

.irodori-loader__noise-content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.irodori-loader__noise-logo {
  font-family: var(--pt-font-en);
  font-size: 28px;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.irodori-loader__noise-text {
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 600;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

.irodori-loader__noise-cmyk {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-top: 4px;
}

.irodori-loader__cmyk-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  animation: irodori-l17-dotPulse 1.2s ease-in-out infinite;
}

.irodori-loader__cmyk-dot:nth-child(1) {
  background: var(--pt-cmyk-c);
  animation-delay: 0s;
}
.irodori-loader__cmyk-dot:nth-child(2) {
  background: var(--pt-cmyk-m);
  animation-delay: 0.2s;
}
.irodori-loader__cmyk-dot:nth-child(3) {
  background: var(--pt-cmyk-y);
  animation-delay: 0.4s;
}
.irodori-loader__cmyk-dot:nth-child(4) {
  background: #ffffff;
  animation-delay: 0.6s;
}

@keyframes irodori-l17-dotPulse {
  0%, 100% { transform: scale(1); opacity: 0.5; }
  50% { transform: scale(1.4); opacity: 1; }
}

.irodori-loader--exit .irodori-loader__noise-overlay {
  animation:
    irodori-l17-noiseFade 0.8s var(--pt-ease) forwards,
    irodori-l17-noiseShift 0.12s steps(5) infinite;
}

@keyframes irodori-l17-noiseFade {
  from { --irodori-noise-opacity: 0.4; }
  to   { --irodori-noise-opacity: 0; }
}

.irodori-loader--exit {
  animation: irodori-l17-loaderFade 1s var(--pt-ease) 0.5s forwards;
}

@keyframes irodori-l17-loaderFade {
  from { opacity: 1; visibility: visible; }
  to   { opacity: 0; visibility: hidden; }
}

/* ==========================================================================
   3. Layout Utilities
   ========================================================================== */

.pt-container {
  width: 100%;
  max-width: var(--pt-container);
  margin-inline: auto;
  padding-inline: 24px;
}

.pt-section {
  padding-block: 80px;
}

.pt-section--alt {
  background: var(--pt-cream);
}

.pt-section__header {
  text-align: center;
  margin-bottom: 56px;
}

.pt-section__eyebrow {
  display: inline-block;
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--pt-teal);
  margin-bottom: 12px;
  position: relative;
}

.pt-section__eyebrow::before,
.pt-section__eyebrow::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 32px;
  height: 1px;
  background: var(--pt-teal);
}

.pt-section__eyebrow::before { right: calc(100% + 10px); }
.pt-section__eyebrow::after  { left: calc(100% + 10px); }

.pt-section__title {
  font-family: var(--pt-font-sans);
  font-size: clamp(24px, 3vw, 36px);
  font-weight: 700;
  color: var(--pt-navy);
  line-height: 1.3;
  letter-spacing: 0.03em;
}

.pt-section__title strong {
  color: var(--pt-amber);
}

.pt-section__lead {
  margin-top: 16px;
  font-size: 15px;
  color: var(--pt-silver);
  max-width: 600px;
  margin-inline: auto;
}

/* ==========================================================================
   4. Header
   ========================================================================== */

.pt-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  transition:
    background var(--pt-duration) var(--pt-ease),
    box-shadow var(--pt-duration) var(--pt-ease),
    padding var(--pt-duration) var(--pt-ease);
  padding-block: 24px;
}

.pt-header.is-scrolled {
  background: var(--pt-white);
  box-shadow: 0 2px 20px rgba(0, 61, 122, 0.10);
  padding-block: 12px;
}

.pt-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: var(--pt-container);
  margin-inline: auto;
  padding-inline: 24px;
}

.pt-header__logo {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  line-height: 1;
}

.pt-header__logo-main {
  font-family: var(--pt-font-en);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pt-white);
  transition: color var(--pt-duration);
}

.pt-header.is-scrolled .pt-header__logo-main {
  color: var(--pt-navy);
}

.pt-header__logo-sub {
  font-family: var(--pt-font-sans);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.7);
  transition: color var(--pt-duration);
}

.pt-header.is-scrolled .pt-header__logo-sub {
  color: var(--pt-silver);
}

.pt-header__nav {
  display: flex;
  align-items: center;
  gap: 32px;
}

.pt-header__nav-link {
  font-family: var(--pt-font-sans);
  font-size: 14px;
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  letter-spacing: 0.02em;
  position: relative;
  transition: color var(--pt-duration);
}

.pt-header.is-scrolled .pt-header__nav-link {
  color: var(--pt-charcoal);
}

.pt-header__nav-link::after {
  content: "";
  position: absolute;
  bottom: -3px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--pt-amber);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--pt-duration) var(--pt-ease);
}

.pt-header__nav-link:hover::after,
.pt-header__nav-link[aria-current="page"]::after {
  transform: scaleX(1);
}

.pt-header__nav-link:hover {
  color: var(--pt-amber);
}

.pt-header.is-scrolled .pt-header__nav-link:hover {
  color: var(--pt-navy);
}

.pt-header__cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--pt-amber);
  color: var(--pt-navy-deep) !important;
  font-family: var(--pt-font-sans);
  font-size: 13px;
  font-weight: 700;
  padding: 10px 20px;
  border-radius: var(--pt-radius);
  transition: background var(--pt-duration), transform var(--pt-duration);
  letter-spacing: 0.02em;
  text-decoration: none;
}

.pt-header__cta:hover {
  background: var(--pt-amber-deep);
  transform: translateY(-1px);
  color: var(--pt-navy-deep) !important;
}

.pt-header__hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  width: 28px;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
}

.pt-header__hamburger span {
  display: block;
  height: 2px;
  background: var(--pt-white);
  transition: all var(--pt-duration) var(--pt-ease);
  border-radius: 2px;
}

.pt-header.is-scrolled .pt-header__hamburger span {
  background: var(--pt-navy);
}

.pt-header__hamburger.is-open span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.pt-header__hamburger.is-open span:nth-child(2) {
  opacity: 0;
}
.pt-header__hamburger.is-open span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Mobile Menu */
.pt-header__mobile-menu {
  display: none;
  position: fixed;
  inset: 0;
  top: 0;
  z-index: 999;
  background: var(--pt-navy);
  padding: 100px 24px 48px;
  flex-direction: column;
  gap: 0;
  transform: translateX(100%);
  transition: transform var(--pt-duration) var(--pt-ease);
}

.pt-header__mobile-menu.is-open {
  transform: translateX(0);
}

.pt-mobile-nav__link {
  display: block;
  font-family: var(--pt-font-sans);
  font-size: 20px;
  font-weight: 700;
  color: var(--pt-white);
  padding: 16px 0;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  transition: color var(--pt-duration), padding-left var(--pt-duration);
}

.pt-mobile-nav__link:hover {
  color: var(--pt-amber);
  padding-left: 8px;
}

/* ==========================================================================
   5. Hero B: Slider
   ========================================================================== */

.pt-hero {
  height: 100vh;
  height: 100dvh;
  position: relative;
  overflow: hidden;
  container-type: inline-size;
  container-name: irodori-hero;
}

.pt-hero__track {
  display: flex;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
}

.pt-hero__slide {
  position: relative;
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
  scroll-snap-align: start;
  display: flex;
  align-items: center;
}

.pt-hero__slide-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.pt-hero__slide-overlay {
  position: absolute;
  inset: 0;
  background: var(--irodori-hero-overlay-gradient);
  pointer-events: none;
}

/* CMYK Registration Mark Decoration */
.pt-hero__reg-mark {
  position: absolute;
  bottom: 80px;
  right: 40px;
  z-index: 3;
  display: flex;
  gap: 6px;
  align-items: center;
  pointer-events: none;
}

.pt-hero__reg-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  opacity: 0.7;
}

.pt-hero__reg-dot:nth-child(1) { background: var(--pt-cmyk-c); }
.pt-hero__reg-dot:nth-child(2) { background: var(--pt-cmyk-m); }
.pt-hero__reg-dot:nth-child(3) { background: var(--pt-cmyk-y); }
.pt-hero__reg-dot:nth-child(4) { background: rgba(255,255,255,0.8); }

.pt-hero__inner {
  width: 100%;
  position: relative;
  z-index: 3;
}

.pt-hero__content {
  max-width: var(--pt-container);
  margin-inline: auto;
  padding-inline: 24px;
  padding-block-start: 80px;
}

.pt-hero__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--pt-amber);
  margin-bottom: 20px;
}

.pt-hero__badge::before {
  content: "";
  display: inline-block;
  width: 24px;
  height: 2px;
  background: var(--pt-amber);
}

.pt-hero__heading {
  font-family: var(--pt-font-sans);
  font-size: clamp(32px, 5vw, 60px);
  font-weight: 700;
  color: var(--pt-white);
  line-height: 1.25;
  letter-spacing: 0.03em;
  margin-bottom: 20px;
  text-shadow: 0 2px 20px rgba(0,0,0,0.3);
}

.pt-hero__heading em {
  font-style: normal;
  color: var(--pt-amber);
}

.pt-hero__sub {
  font-family: var(--pt-font-sans);
  font-size: clamp(14px, 1.5vw, 17px);
  color: rgba(255, 255, 255, 0.88);
  line-height: 1.7;
  margin-bottom: 32px;
  max-width: 480px;
}

.pt-hero__cta-group {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.pt-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--pt-font-sans);
  font-size: 15px;
  font-weight: 700;
  padding: 14px 28px;
  border-radius: var(--pt-radius);
  transition: all var(--pt-duration) var(--pt-ease);
  letter-spacing: 0.03em;
  text-decoration: none;
}

.pt-hero__cta--primary {
  background: var(--pt-amber);
  color: var(--pt-navy-deep);
}

.pt-hero__cta--primary:hover {
  background: var(--pt-amber-deep);
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(232, 178, 0, 0.4);
  color: var(--pt-navy-deep);
}

.pt-hero__cta--secondary {
  background: transparent;
  color: var(--pt-white);
  border: 2px solid rgba(255,255,255,0.7);
}

.pt-hero__cta--secondary:hover {
  background: rgba(255,255,255,0.12);
  border-color: var(--pt-white);
  color: var(--pt-white);
}

/* Hero Nav */
.pt-hero__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.5);
  background: rgba(0, 0, 0, 0.2);
  color: var(--pt-white);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--pt-duration) var(--pt-ease);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.pt-hero__nav:hover {
  background: rgba(0, 0, 0, 0.5);
  border-color: rgba(255, 255, 255, 0.8);
}

.pt-hero__nav--prev { left: 24px; }
.pt-hero__nav--next { right: 24px; }

/* Indicators */
.pt-hero__indicators {
  position: absolute;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  gap: 12px;
  align-items: center;
}

.pt-hero__indicator {
  width: var(--irodori-hero-indicator-size);
  height: var(--irodori-hero-indicator-size);
  border-radius: 50%;
  border: none;
  background: var(--irodori-hero-indicator-color);
  cursor: pointer;
  padding: 0;
  transition: all var(--pt-duration) var(--pt-ease);
}

.pt-hero__indicator[aria-selected="true"],
.pt-hero__indicator.is-active {
  background: var(--pt-amber);
  transform: scale(1.3);
}

/* Scroll Indicator */
.pt-hero__scroll-hint {
  position: absolute;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  opacity: 0.7;
  margin-bottom: 48px;
}

@media (max-width: 600px) {
  .pt-hero__nav { display: none; }
  .pt-hero__track { overflow-x: auto; }
}

@media (prefers-reduced-motion: reduce) {
  .pt-hero__track { scroll-behavior: auto; }
}

/* ==========================================================================
   6. News Ticker (Hero Bottom Bar)
   ========================================================================== */

.pt-news-ticker {
  background: var(--pt-navy-deep);
  border-top: 3px solid var(--pt-amber);
  padding: 10px 0;
  overflow: hidden;
  position: relative;
  z-index: 4;
}

.pt-news-ticker__inner {
  display: flex;
  align-items: center;
  gap: 0;
  max-width: var(--pt-container);
  margin-inline: auto;
  padding-inline: 24px;
}

.pt-news-ticker__label {
  font-family: var(--pt-font-en);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--pt-amber);
  white-space: nowrap;
  padding-right: 20px;
  border-right: 1px solid rgba(255,255,255,0.2);
  margin-right: 20px;
}

.pt-news-ticker__list {
  display: flex;
  gap: 48px;
  overflow: hidden;
}

.pt-news-ticker__item {
  display: flex;
  align-items: center;
  gap: 12px;
  white-space: nowrap;
  color: rgba(255,255,255,0.8);
  font-size: 13px;
}

.pt-news-ticker__date {
  color: var(--pt-amber);
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 600;
}

/* ==========================================================================
   7. Services Section
   ========================================================================== */

.pt-services {
  padding-block: 96px;
}

.pt-services__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}

.pt-service-card {
  background: var(--pt-white);
  border-radius: var(--pt-radius-lg);
  border: 1px solid var(--pt-divider);
  overflow: hidden;
  transition:
    transform var(--pt-duration) var(--pt-ease),
    box-shadow var(--pt-duration) var(--pt-ease),
    border-color var(--pt-duration);
  position: relative;
}

.pt-service-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--pt-navy);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--pt-duration) var(--pt-ease);
}

.pt-service-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--pt-shadow-md);
  border-color: var(--pt-navy-pale);
}

.pt-service-card:hover::before {
  transform: scaleX(1);
}

.pt-service-card__img-wrap {
  aspect-ratio: 16/9;
  overflow: hidden;
}

.pt-service-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s var(--pt-ease);
}

.pt-service-card:hover .pt-service-card__img {
  transform: scale(1.05);
}

.pt-service-card__body {
  padding: 24px;
}

.pt-service-card__number {
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--pt-teal);
  margin-bottom: 8px;
  display: block;
}

.pt-service-card__title {
  font-family: var(--pt-font-sans);
  font-size: 18px;
  font-weight: 700;
  color: var(--pt-navy);
  margin-bottom: 10px;
  line-height: 1.35;
}

.pt-service-card__desc {
  font-size: 14px;
  color: var(--pt-silver);
  line-height: 1.65;
  margin-bottom: 16px;
}

.pt-service-card__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--pt-navy);
  transition: gap var(--pt-duration), color var(--pt-duration);
}

.pt-service-card__link:hover {
  gap: 10px;
  color: var(--pt-teal);
}

.pt-service-card__link svg {
  width: 14px;
  height: 14px;
}

/* ==========================================================================
   8. Strength Section (S8: counter)
   ========================================================================== */

.pt-strength {
  background: var(--pt-navy);
  padding-block: 96px;
  position: relative;
  overflow: hidden;
}

.pt-strength::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='30' cy='30' r='1' fill='rgba(255,255,255,0.04)'/%3E%3C/svg%3E") repeat;
  pointer-events: none;
}

.pt-strength .pt-section__eyebrow { color: var(--pt-amber); }
.pt-strength .pt-section__eyebrow::before,
.pt-strength .pt-section__eyebrow::after { background: var(--pt-amber); }

.pt-strength .pt-section__title { color: var(--pt-white); }
.pt-strength .pt-section__lead  { color: rgba(255,255,255,0.6); }

/* Stats Grid */
.pt-strength__stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(255,255,255,0.08);
  border-radius: var(--pt-radius-lg);
  overflow: hidden;
  margin-bottom: 64px;
}

.pt-stat-card {
  background: rgba(255,255,255,0.04);
  padding: 40px 24px;
  text-align: center;
  position: relative;
  transition: background var(--pt-duration);
}

.pt-stat-card:hover {
  background: rgba(255,255,255,0.08);
}

.pt-stat-card__value {
  font-family: var(--pt-font-en);
  font-size: clamp(36px, 4vw, 52px);
  font-weight: 800;
  color: var(--pt-amber);
  line-height: 1;
  margin-bottom: 8px;
  display: block;
}

.pt-stat-card__unit {
  font-size: 18px;
  font-weight: 700;
  margin-left: 2px;
}

.pt-stat-card__label {
  font-family: var(--pt-font-sans);
  font-size: 13px;
  color: rgba(255,255,255,0.7);
  line-height: 1.4;
}

/* Strength Cards Grid */
.pt-strength__cards {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 24px;
}

.pt-strength-card {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: var(--pt-radius-lg);
  padding: 28px 20px;
  text-align: center;
  transition:
    background var(--pt-duration),
    border-color var(--pt-duration),
    transform var(--pt-duration);
}

.pt-strength-card:hover {
  background: rgba(255,255,255,0.10);
  border-color: rgba(255,255,255,0.2);
  transform: translateY(-4px);
}

.pt-strength-card__icon {
  width: 52px;
  height: 52px;
  background: rgba(232, 178, 0, 0.15);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 16px;
  color: var(--pt-amber);
}

.pt-strength-card__icon svg {
  width: 24px;
  height: 24px;
}

.pt-strength-card__title {
  font-family: var(--pt-font-sans);
  font-size: 14px;
  font-weight: 700;
  color: var(--pt-white);
  margin-bottom: 8px;
  line-height: 1.35;
}

.pt-strength-card__desc {
  font-size: 12px;
  color: rgba(255,255,255,0.55);
  line-height: 1.6;
}

/* ==========================================================================
   9. Portfolio / Works Section
   ========================================================================== */

.pt-works {
  padding-block: 96px;
}

.pt-works__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 40px;
}

.pt-work-card {
  border-radius: var(--pt-radius-lg);
  overflow: hidden;
  position: relative;
  cursor: pointer;
  background: var(--pt-charcoal);
}

.pt-work-card__img-wrap {
  aspect-ratio: 4/3;
  overflow: hidden;
}

.pt-work-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s var(--pt-ease);
}

.pt-work-card:hover .pt-work-card__img {
  transform: scale(1.08);
}

.pt-work-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(0, 29, 61, 0.90) 0%,
    rgba(0, 29, 61, 0.30) 50%,
    transparent 100%
  );
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 24px;
  opacity: 0;
  transition: opacity var(--pt-duration) var(--pt-ease);
}

.pt-work-card:hover .pt-work-card__overlay {
  opacity: 1;
}

.pt-work-card__category {
  font-family: var(--pt-font-en);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pt-amber);
  margin-bottom: 6px;
}

.pt-work-card__title {
  font-family: var(--pt-font-sans);
  font-size: 16px;
  font-weight: 700;
  color: var(--pt-white);
  line-height: 1.35;
}

.pt-work-card__info {
  background: var(--pt-cream);
  padding: 16px 20px;
}

.pt-work-card__info-category {
  font-family: var(--pt-font-en);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--pt-teal);
  margin-bottom: 4px;
  display: block;
}

.pt-work-card__info-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--pt-navy);
  line-height: 1.3;
}

.pt-works__more {
  text-align: center;
}

/* ==========================================================================
   10. Process Section
   ========================================================================== */

.pt-process {
  background: var(--pt-cream);
  padding-block: 96px;
}

.pt-process__steps {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 0;
  position: relative;
  margin-top: 16px;
}

.pt-process__steps::before {
  content: "";
  position: absolute;
  top: 32px;
  left: 14.28%;
  right: 14.28%;
  height: 2px;
  background: linear-gradient(to right, var(--pt-navy-pale) 0%, var(--pt-navy) 100%);
  z-index: 0;
}

.pt-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 12px;
  position: relative;
  z-index: 1;
}

.pt-step__number {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--pt-white);
  border: 3px solid var(--pt-navy-pale);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--pt-font-en);
  font-size: 18px;
  font-weight: 800;
  color: var(--pt-navy);
  margin-bottom: 16px;
  transition: all var(--pt-duration);
  flex-shrink: 0;
}

.pt-step:hover .pt-step__number,
.pt-step.is-active .pt-step__number {
  background: var(--pt-navy);
  border-color: var(--pt-navy);
  color: var(--pt-white);
  transform: scale(1.1);
  box-shadow: 0 4px 16px rgba(0, 61, 122, 0.3);
}

.pt-step__icon {
  width: 20px;
  height: 20px;
  margin-bottom: 10px;
  color: var(--pt-teal);
}

.pt-step__label {
  font-family: var(--pt-font-sans);
  font-size: 13px;
  font-weight: 700;
  color: var(--pt-navy);
  line-height: 1.3;
  margin-bottom: 6px;
}

.pt-step__desc {
  font-size: 11px;
  color: var(--pt-silver);
  line-height: 1.5;
}

/* ==========================================================================
   11. News Section
   ========================================================================== */

.pt-news {
  padding-block: 96px;
}

.pt-news__list {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-bottom: 40px;
  border-top: 1px solid var(--pt-divider);
}

.pt-news-item {
  display: block;
  border-bottom: 1px solid var(--pt-divider);
  transition: background var(--pt-duration);
}

.pt-news-item:hover {
  background: var(--pt-cream);
}

.pt-news-item__link {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 20px 16px;
  text-decoration: none;
}

.pt-news-item__date {
  font-family: var(--pt-font-en);
  font-size: 13px;
  font-weight: 600;
  color: var(--pt-silver);
  white-space: nowrap;
  min-width: 100px;
}

.pt-news-item__badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  white-space: nowrap;
  min-width: 72px;
  text-align: center;
}

.pt-news-item__badge--info    { background: var(--pt-navy-pale); color: var(--pt-navy); }
.pt-news-item__badge--update  { background: var(--pt-teal-pale); color: var(--pt-teal-deep); }
.pt-news-item__badge--recruit { background: var(--pt-amber-pale); color: var(--pt-amber-deep); }

.pt-news-item__title {
  font-family: var(--pt-font-sans);
  font-size: 15px;
  color: var(--pt-charcoal);
  flex: 1;
  line-height: 1.5;
  transition: color var(--pt-duration);
}

.pt-news-item:hover .pt-news-item__title {
  color: var(--pt-navy);
}

.pt-news-item__arrow {
  color: var(--pt-silver);
  flex-shrink: 0;
  transition: transform var(--pt-duration), color var(--pt-duration);
}

.pt-news-item:hover .pt-news-item__arrow {
  transform: translateX(4px);
  color: var(--pt-navy);
}

/* ==========================================================================
   12. CTA Section
   ========================================================================== */

.pt-cta {
  background: linear-gradient(135deg, var(--pt-navy) 0%, #00509E 50%, #0070C0 100%);
  padding-block: 96px;
  position: relative;
  overflow: hidden;
  text-align: center;
}

.pt-cta::before {
  content: "";
  position: absolute;
  top: -50%;
  right: -10%;
  width: 60%;
  height: 200%;
  background: radial-gradient(ellipse, rgba(232,178,0,0.08) 0%, transparent 70%);
  pointer-events: none;
}

.pt-cta__title {
  font-family: var(--pt-font-sans);
  font-size: clamp(24px, 3.5vw, 40px);
  font-weight: 700;
  color: var(--pt-white);
  line-height: 1.3;
  margin-bottom: 16px;
}

.pt-cta__title strong {
  color: var(--pt-amber);
}

.pt-cta__lead {
  font-size: 16px;
  color: rgba(255,255,255,0.75);
  margin-bottom: 40px;
  max-width: 560px;
  margin-inline: auto;
  line-height: 1.7;
}

.pt-cta__buttons {
  display: flex;
  gap: 16px;
  justify-content: center;
  flex-wrap: wrap;
}

.pt-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--pt-font-sans);
  font-size: 15px;
  font-weight: 700;
  padding: 16px 32px;
  border-radius: var(--pt-radius);
  text-decoration: none;
  transition: all var(--pt-duration) var(--pt-ease);
  letter-spacing: 0.03em;
}

.pt-btn--amber {
  background: var(--pt-amber);
  color: var(--pt-navy-deep);
}

.pt-btn--amber:hover {
  background: var(--pt-amber-deep);
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(232, 178, 0, 0.45);
  color: var(--pt-navy-deep);
}

.pt-btn--outline-white {
  background: transparent;
  color: var(--pt-white);
  border: 2px solid rgba(255,255,255,0.6);
}

.pt-btn--outline-white:hover {
  background: rgba(255,255,255,0.10);
  border-color: var(--pt-white);
  color: var(--pt-white);
}

.pt-btn--teal {
  background: var(--pt-teal);
  color: var(--pt-white);
}

.pt-btn--teal:hover {
  background: var(--pt-teal-deep);
  transform: translateY(-2px);
  color: var(--pt-white);
}

.pt-btn--navy {
  background: var(--pt-navy);
  color: var(--pt-white);
}

.pt-btn--navy:hover {
  background: var(--pt-navy-deep);
  transform: translateY(-2px);
  color: var(--pt-white);
}

/* CTA Cards */
.pt-cta__cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 48px;
  text-align: left;
}

.pt-cta-card {
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--pt-radius-lg);
  padding: 28px 24px;
  transition: background var(--pt-duration);
}

.pt-cta-card:hover {
  background: rgba(255,255,255,0.14);
}

.pt-cta-card__icon {
  width: 44px;
  height: 44px;
  border-radius: var(--pt-radius);
  background: rgba(232,178,0,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
  color: var(--pt-amber);
}

.pt-cta-card__icon svg { width: 22px; height: 22px; }

.pt-cta-card__title {
  font-size: 16px;
  font-weight: 700;
  color: var(--pt-white);
  margin-bottom: 8px;
}

.pt-cta-card__desc {
  font-size: 13px;
  color: rgba(255,255,255,0.6);
  line-height: 1.65;
}

/* ==========================================================================
   13. Footer
   ========================================================================== */

.pt-footer {
  background: var(--pt-navy-deep);
  color: rgba(255,255,255,0.75);
}

.pt-footer__main {
  padding-block: 64px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.pt-footer__grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 48px;
}

.pt-footer__brand-logo {
  font-family: var(--pt-font-en);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pt-white);
  margin-bottom: 4px;
  display: block;
}

.pt-footer__brand-name {
  font-family: var(--pt-font-sans);
  font-size: 12px;
  color: rgba(255,255,255,0.5);
  margin-bottom: 16px;
  display: block;
}

.pt-footer__brand-desc {
  font-size: 13px;
  line-height: 1.7;
  color: rgba(255,255,255,0.55);
  margin-bottom: 20px;
}

.pt-footer__contact-info {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 20px;
}

.pt-footer__contact-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: rgba(255,255,255,0.65);
}

.pt-footer__contact-item svg {
  width: 14px;
  height: 14px;
  color: var(--pt-amber);
  flex-shrink: 0;
}

.pt-footer__social {
  display: flex;
  gap: 10px;
}

.pt-footer__social-link {
  width: 36px;
  height: 36px;
  border-radius: var(--pt-radius);
  border: 1px solid rgba(255,255,255,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(255,255,255,0.6);
  transition: all var(--pt-duration);
}

.pt-footer__social-link:hover {
  background: var(--pt-amber);
  border-color: var(--pt-amber);
  color: var(--pt-navy-deep);
}

.pt-footer__social-link svg { width: 16px; height: 16px; }

.pt-footer__nav-title {
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pt-amber);
  margin-bottom: 16px;
}

.pt-footer__nav-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.pt-footer__nav-link {
  font-size: 13px;
  color: rgba(255,255,255,0.6);
  transition: color var(--pt-duration), padding-left var(--pt-duration);
}

.pt-footer__nav-link:hover {
  color: var(--pt-white);
  padding-left: 4px;
}

.pt-footer__bottom {
  padding-block: 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 16px;
}

.pt-footer__copyright {
  font-size: 12px;
  color: rgba(255,255,255,0.35);
}

.pt-footer__legal {
  display: flex;
  gap: 20px;
}

.pt-footer__legal-link {
  font-size: 12px;
  color: rgba(255,255,255,0.35);
  transition: color var(--pt-duration);
}

.pt-footer__legal-link:hover {
  color: rgba(255,255,255,0.7);
}

/* ==========================================================================
   14. Scroll Animations (S1:fadeInUp / S6:stagger / S8:counter)
   ========================================================================== */

@keyframes irodori-sa-fadeInUp {
  from {
    opacity: 0;
    transform: translateY(var(--irodori-sa-distance));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* S1: fadeInUp */
[data-sa="s1"] {
  animation-timeline: view();
  animation-range: entry 0% entry 25%;
}

.irodori-anim {
  opacity: 0;
  transform: translateY(var(--irodori-sa-distance));
  transition:
    opacity var(--irodori-sa-duration) var(--irodori-sa-easing),
    transform var(--irodori-sa-duration) var(--irodori-sa-easing);
}

.irodori-anim.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* S6: stagger */
.irodori-stagger > .irodori-anim:nth-child(1) { transition-delay: 0ms; }
.irodori-stagger > .irodori-anim:nth-child(2) { transition-delay: var(--irodori-sa-stagger-delay); }
.irodori-stagger > .irodori-anim:nth-child(3) { transition-delay: calc(var(--irodori-sa-stagger-delay) * 2); }
.irodori-stagger > .irodori-anim:nth-child(4) { transition-delay: calc(var(--irodori-sa-stagger-delay) * 3); }
.irodori-stagger > .irodori-anim:nth-child(5) { transition-delay: calc(var(--irodori-sa-stagger-delay) * 4); }
.irodori-stagger > .irodori-anim:nth-child(6) { transition-delay: calc(var(--irodori-sa-stagger-delay) * 5); }

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .irodori-anim {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .irodori-stagger > .irodori-anim { transition-delay: 0ms; }
}

/* ==========================================================================
   15. Subpage Layout (共通)
   ========================================================================== */

.pt-subpage-hero {
  background: linear-gradient(135deg, var(--pt-navy) 0%, #00509E 100%);
  padding-block: 100px 60px;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.pt-subpage-hero__decoration {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.06;
}

.pt-subpage-hero__eyebrow {
  font-family: var(--pt-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--pt-amber);
  display: block;
  margin-bottom: 12px;
}

.pt-subpage-hero__title {
  font-family: var(--pt-font-sans);
  font-size: clamp(28px, 4vw, 44px);
  font-weight: 700;
  color: var(--pt-white);
  line-height: 1.25;
  margin-bottom: 12px;
}

.pt-subpage-hero__sub {
  font-size: 15px;
  color: rgba(255,255,255,0.7);
}

/* Breadcrumb */
.pt-breadcrumb {
  background: var(--pt-cream);
  padding: 12px 0;
  border-bottom: 1px solid var(--pt-divider);
}

.pt-breadcrumb__list {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.pt-breadcrumb__item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--pt-silver);
}

.pt-breadcrumb__item:last-child { color: var(--pt-charcoal); }

.pt-breadcrumb__link {
  color: var(--pt-navy);
  transition: color var(--pt-duration);
}

.pt-breadcrumb__link:hover { color: var(--pt-teal); }

.pt-breadcrumb__sep { color: var(--pt-silver); font-size: 10px; }

/* ==========================================================================
   16. Buttons & General UI
   ========================================================================== */

.pt-btn-more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--pt-font-sans);
  font-size: 14px;
  font-weight: 700;
  color: var(--pt-navy);
  border: 2px solid var(--pt-navy);
  padding: 12px 28px;
  border-radius: var(--pt-radius);
  transition: all var(--pt-duration) var(--pt-ease);
  text-decoration: none;
}

.pt-btn-more:hover {
  background: var(--pt-navy);
  color: var(--pt-white);
}

.pt-badge {
  display: inline-block;
  font-family: var(--pt-font-en);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 4px;
}

.pt-badge--navy   { background: var(--pt-navy-pale);   color: var(--pt-navy); }
.pt-badge--amber  { background: var(--pt-amber-pale);  color: var(--pt-amber-deep); }
.pt-badge--teal   { background: var(--pt-teal-pale);   color: var(--pt-teal-deep); }

/* Contact Form */
.pt-form {
  max-width: 640px;
  margin-inline: auto;
}

.pt-form-group {
  margin-bottom: 24px;
}

.pt-form-label {
  display: block;
  font-size: 14px;
  font-weight: 700;
  color: var(--pt-charcoal);
  margin-bottom: 6px;
}

.pt-form-label .required {
  color: #e53e3e;
  margin-left: 4px;
  font-size: 12px;
}

.pt-form-input,
.pt-form-textarea,
.pt-form-select {
  width: 100%;
  border: 1.5px solid var(--pt-divider);
  border-radius: var(--pt-radius);
  padding: 12px 16px;
  font-family: var(--pt-font-sans);
  font-size: 15px;
  color: var(--pt-charcoal);
  background: var(--pt-white);
  transition: border-color var(--pt-duration), box-shadow var(--pt-duration);
  outline: none;
}

.pt-form-input:focus,
.pt-form-textarea:focus,
.pt-form-select:focus {
  border-color: var(--pt-navy);
  box-shadow: 0 0 0 3px rgba(0, 61, 122, 0.1);
}

.pt-form-textarea {
  min-height: 160px;
  resize: vertical;
}

/* ==========================================================================
   17. Responsive — Tablet (max 1024px)
   ========================================================================== */

@media (max-width: 1024px) {
  .pt-services__grid { grid-template-columns: repeat(2, 1fr); }
  .pt-strength__stats { grid-template-columns: repeat(2, 1fr); }
  .pt-strength__cards { grid-template-columns: repeat(3, 1fr); }
  .pt-works__grid { grid-template-columns: repeat(2, 1fr); }
  .pt-process__steps { grid-template-columns: repeat(4, 1fr); }
  .pt-footer__grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .pt-header__nav { display: none; }
  .pt-header__cta { display: none; }
  .pt-header__hamburger { display: flex; }
  .pt-header__mobile-menu { display: flex; }
  .pt-cta__cards { grid-template-columns: 1fr; gap: 12px; }
}

/* ==========================================================================
   18. Responsive — Mobile (max 640px)
   ========================================================================== */

@media (max-width: 640px) {
  .pt-section { padding-block: 56px; }
  .pt-services__grid { grid-template-columns: 1fr; }
  .pt-strength__stats { grid-template-columns: repeat(2, 1fr); }
  .pt-strength__cards { grid-template-columns: repeat(2, 1fr); }
  .pt-works__grid { grid-template-columns: 1fr; }
  .pt-process__steps { grid-template-columns: repeat(2, 1fr); gap: 16px; }
  .pt-process__steps::before { display: none; }
  .pt-footer__grid { grid-template-columns: 1fr; gap: 32px; }
  .pt-footer__bottom { flex-direction: column; text-align: center; }
  .pt-news-item__link { flex-wrap: wrap; gap: 8px; }
  .pt-hero__content { padding-inline: 20px; }
  .pt-cta__buttons { flex-direction: column; align-items: center; }
}

/* ==========================================================================
   19. Print Style
   ========================================================================== */

@media print {
  .pt-header, .pt-hero, .pt-cta, .pt-footer { display: none; }
  body { color: #000; background: #fff; }
}

/* ==========================================================================
   20. Utility Classes
   ========================================================================== */

.pt-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

.pt-text-center { text-align: center; }
.pt-text-navy   { color: var(--pt-navy); }
.pt-text-amber  { color: var(--pt-amber); }
.pt-text-teal   { color: var(--pt-teal); }

.pt-mt-8  { margin-top: 8px; }
.pt-mt-16 { margin-top: 16px; }
.pt-mt-24 { margin-top: 24px; }
.pt-mt-32 { margin-top: 32px; }
.pt-mt-48 { margin-top: 48px; }

/* ==========================================================================
   21. Presets — data-preset 属性によるカラーオーバーライド
   ========================================================================== */

[data-preset="commercial-print"] {
  --pt-amber: #E8B200;
  --pt-amber-deep: #C49500;
  --pt-teal: #1FA9A3;
}

[data-preset="package-print"] {
  --pt-amber: #D4430F;
  --pt-amber-deep: #B53500;
  --pt-teal: #5B8CFF;
  --pt-navy: #0F2A4A;
}

[data-preset="large-format"] {
  --pt-amber: #00A859;
  --pt-amber-deep: #007A40;
  --pt-teal: #0066CC;
  --pt-navy: #1A2D1A;
}

[data-preset="digital-marketing"] {
  --pt-amber: #7B2FF7;
  --pt-amber-deep: #5B1ED9;
  --pt-teal: #FF6B35;
  --pt-navy: #1A0A2E;
}

[data-preset="video-production"] {
  --pt-amber: #FF3D00;
  --pt-amber-deep: #CC2A00;
  --pt-teal: #FFD600;
  --pt-navy: #0D0D0D;
}

[data-preset="graphic-design"] {
  --pt-amber: #FF4081;
  --pt-amber-deep: #CC1F5C;
  --pt-teal: #40C4FF;
  --pt-navy: #1A0033;
}

[data-preset="catalog-booklet"] {
  --pt-amber: #795548;
  --pt-amber-deep: #5D4037;
  --pt-teal: #009688;
  --pt-navy: #2B1B0E;
}

[data-preset="novelty-promo"] {
  --pt-amber: #FF6F00;
  --pt-amber-deep: #CC4A00;
  --pt-teal: #00BCD4;
  --pt-navy: #1A0A00;
}

[data-preset="dm-direct-mail"] {
  --pt-amber: #006064;
  --pt-amber-deep: #004044;
  --pt-teal: #E91E63;
  --pt-navy: #001A1C;
}

[data-preset="3d-print"] {
  --pt-amber: #37474F;
  --pt-amber-deep: #263238;
  --pt-teal: #76FF03;
  --pt-navy: #0D1318;
}

/* ==========================================================================
   22. CMYK Decorative Elements
   ========================================================================== */

.pt-cmyk-bar {
  display: flex;
  height: 4px;
}

.pt-cmyk-bar__c { flex: 1; background: var(--pt-cmyk-c); }
.pt-cmyk-bar__m { flex: 1; background: var(--pt-cmyk-m); }
.pt-cmyk-bar__y { flex: 1; background: var(--pt-cmyk-y); }
.pt-cmyk-bar__k { flex: 1; background: var(--pt-charcoal); }

.pt-cmyk-dots {
  display: flex;
  gap: 6px;
  align-items: center;
}

.pt-cmyk-dots__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.pt-cmyk-dots__dot--c { background: var(--pt-cmyk-c); }
.pt-cmyk-dots__dot--m { background: var(--pt-cmyk-m); }
.pt-cmyk-dots__dot--y { background: var(--pt-cmyk-y); }
.pt-cmyk-dots__dot--k { background: var(--pt-charcoal); }

/* Print Registration Mark */
.pt-reg-mark {
  display: inline-block;
  width: 24px;
  height: 24px;
  position: relative;
  opacity: 0.3;
}

.pt-reg-mark::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid var(--pt-charcoal);
}

.pt-reg-mark::after {
  content: "";
  position: absolute;
  inset: 50% 0 0 0;
  top: calc(50% - 1px);
  left: 0;
  right: 0;
  height: 2px;
  background: var(--pt-charcoal);
  box-shadow: 0 -12px 0 var(--pt-charcoal), 0 12px 0 var(--pt-charcoal);
}

/* ==========================================================================
   23. About / Staff page specific
   ========================================================================== */

.pt-about-vision {
  background: linear-gradient(135deg, var(--pt-navy-deep) 0%, var(--pt-navy) 100%);
  padding-block: 80px;
  text-align: center;
}

.pt-about-vision__title {
  font-family: var(--pt-font-sans);
  font-size: clamp(20px, 3vw, 32px);
  font-weight: 700;
  color: var(--pt-white);
  line-height: 1.5;
  margin-bottom: 24px;
}

.pt-about-vision__title strong {
  color: var(--pt-amber);
  font-size: 1.2em;
}

.pt-about-vision__text {
  font-size: 15px;
  color: rgba(255,255,255,0.75);
  max-width: 640px;
  margin-inline: auto;
  line-height: 1.8;
}

/* Staff Card */
.pt-staff-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}

.pt-staff-card {
  background: var(--pt-white);
  border-radius: var(--pt-radius-lg);
  overflow: hidden;
  box-shadow: var(--pt-shadow);
  transition: transform var(--pt-duration), box-shadow var(--pt-duration);
}

.pt-staff-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--pt-shadow-md);
}

.pt-staff-card__img-wrap {
  aspect-ratio: 3/4;
  overflow: hidden;
  background: var(--pt-cream);
}

.pt-staff-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.pt-staff-card__body {
  padding: 20px;
}

.pt-staff-card__dept {
  font-family: var(--pt-font-en);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pt-teal);
  margin-bottom: 6px;
  display: block;
}

.pt-staff-card__name {
  font-family: var(--pt-font-sans);
  font-size: 17px;
  font-weight: 700;
  color: var(--pt-navy);
  margin-bottom: 2px;
}

.pt-staff-card__name-en {
  font-family: var(--pt-font-en);
  font-size: 11px;
  color: var(--pt-silver);
  margin-bottom: 12px;
  display: block;
}

.pt-staff-card__bio {
  font-size: 13px;
  color: var(--pt-silver);
  line-height: 1.65;
}

@media (max-width: 1024px) {
  .pt-staff-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
  .pt-staff-grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
}

/* ==========================================================================
   24. FAQ Section
   ========================================================================== */

.pt-faq-list {
  max-width: 800px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.pt-faq-item {
  border: 1.5px solid var(--pt-divider);
  border-radius: var(--pt-radius-lg);
  overflow: hidden;
  transition: border-color var(--pt-duration);
}

.pt-faq-item.is-open {
  border-color: var(--pt-navy-pale);
}

.pt-faq-item__q {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px 24px;
  cursor: pointer;
  background: var(--pt-white);
  transition: background var(--pt-duration);
  text-align: left;
}

.pt-faq-item.is-open .pt-faq-item__q {
  background: var(--pt-cream);
}

.pt-faq-item__q-icon {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--pt-navy);
  color: var(--pt-white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--pt-font-en);
  font-size: 13px;
  font-weight: 800;
  flex-shrink: 0;
}

.pt-faq-item__q-text {
  font-size: 15px;
  font-weight: 700;
  color: var(--pt-charcoal);
  flex: 1;
  line-height: 1.4;
}

.pt-faq-item__toggle {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 2px solid var(--pt-divider);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all var(--pt-duration);
  color: var(--pt-silver);
}

.pt-faq-item.is-open .pt-faq-item__toggle {
  background: var(--pt-navy);
  border-color: var(--pt-navy);
  color: var(--pt-white);
  transform: rotate(180deg);
}

.pt-faq-item__a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s var(--pt-ease);
}

.pt-faq-item.is-open .pt-faq-item__a {
  max-height: 300px;
}

.pt-faq-item__a-inner {
  padding: 0 24px 20px 72px;
  font-size: 14px;
  color: var(--pt-silver);
  line-height: 1.7;
}

/* --------------------------------------------------------------------------
   19. WP Block FSE Header & Navigation
   -------------------------------------------------------------------------- */

html { overflow-x: hidden; }
.wp-site-blocks { overflow-x: hidden; }

.irodori-header {
  position: sticky;
  top: 0; left: 0; right: 0;
  width: 100%;
  z-index: 800;
  background: transparent;
  color: #fff;
  transition: background 0.4s ease, box-shadow 0.4s ease, color 0.4s ease;
}
.irodori-header.is-scrolled {
  background: rgba(255, 255, 255, 0.97);
  box-shadow: 0 2px 16px rgba(0,0,0,0.10);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  color: #1a1a1a;
}
.irodori-header__inner {
  height: 72px;
  padding: 0 clamp(20px, 4vw, 48px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}
.irodori-header__logo .wp-block-site-logo img {
  max-height: 44px;
  width: auto;
}
.irodori-header .wp-block-navigation-item__content {
  color: inherit;
  text-decoration: none;
  font-size: 13px;
  letter-spacing: 0.06em;
  padding: 6px 10px;
  transition: opacity 0.2s;
  white-space: nowrap;
}
.irodori-header .wp-block-navigation-item__content:hover { opacity: 0.7; }
.irodori-header .wp-block-navigation .wp-block-navigation-item { list-style: none; }
.irodori-header__cta-btn {
  display: inline-flex;
  align-items: center;
  padding: 10px 22px;
  background: #1a5276;
  color: #fff !important;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.06em;
  white-space: nowrap;
  text-decoration: none;
  transition: opacity 0.2s;
}
.irodori-header__cta-btn:hover { opacity: 0.85; }
.irodori-header .wp-block-navigation__responsive-container-open,
.irodori-header .wp-block-navigation__responsive-container-close { display: none !important; }
.irodori-header .wp-block-navigation__responsive-container {
  display: contents !important;
  background: none !important;
}
.wp-site-blocks > * + * { margin-block-start: 0 !important; }
footer .wp-block-navigation { flex-direction: column !important; }
.wp-block-group.irodori-section.is-layout-constrained > *,
.wp-block-group.irodori-section > * {
  max-width: 100% !important;
  width: 100%;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.wp-block-post-content > .wp-block-group.irodori-section,
.wp-block-post-content > .wp-block-group.irodori-section + .wp-block-group.irodori-section {
  margin-block: 0;
}
@media (max-width: 1100px) {
  .irodori-header__toggle {
    display: flex; flex-direction: column; justify-content: center; align-items: center;
    gap: 6px; width: 34px; height: 34px; cursor: pointer; position: relative;
    z-index: 10001; flex-shrink: 0;
  }
  .irodori-header__toggle span {
    display: block; width: 22px; height: 1.8px;
    background: currentColor; transition: transform 0.3s ease, opacity 0.3s ease;
  }
  .irodori-header__toggle-input { display: none; }
  .wp-block-group.irodori-header__nav {
    display: none; position: fixed; inset: 0;
    background: rgba(255,255,255,0.98); z-index: 10000;
    flex-direction: column; align-items: center; justify-content: center; padding: 40px;
  }
  #irodori-nav-toggle:checked ~ .wp-block-group.irodori-header__nav { display: flex; }
  #irodori-nav-toggle:checked ~ label.irodori-header__toggle span:nth-child(1) {
    transform: translateY(7.8px) rotate(45deg);
  }
  #irodori-nav-toggle:checked ~ label.irodori-header__toggle span:nth-child(2) { opacity: 0; }
  #irodori-nav-toggle:checked ~ label.irodori-header__toggle span:nth-child(3) {
    transform: translateY(-7.8px) rotate(-45deg);
  }
  .irodori-header--hamburger .irodori-header__nav .wp-block-navigation {
    display: flex !important; flex-direction: column; align-items: center; width: 100%;
  }
  .irodori-header--hamburger .irodori-header__nav .wp-block-navigation__container {
    display: flex; flex-direction: column; align-items: center;
    gap: 2rem; list-style: none; margin: 0; padding: 0;
  }
  .irodori-header--hamburger .irodori-header__nav .wp-block-navigation__container a {
    font-size: clamp(18px, 4vw, 24px); font-weight: 600; letter-spacing: 0.06em;
    color: #1a1a1a;
  }
  .irodori-header__cta { margin-top: 32px; }
}

/* ===== WP 7.0 Bug Fixes ===== */

/* ---------------------------------------------------------------
   WP 7.0 Fix: ナビゲーション デスクトップ表示強制
   親テーマ .irodori-header--hamburger が position:fixed/opacity:0 を
   全ブレークポイントに適用するため !important で解除
   --------------------------------------------------------------- */
@media (min-width: 1101px) {
  .irodori-header .wp-block-group.irodori-header__nav {
    position: relative !important;
    opacity: 1 !important;
    visibility: visible !important;
    inset: auto !important;
    background: none !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 24px !important;
    padding: 0 !important;
    z-index: auto !important;
  }
  .irodori-header__toggle {
    display: none !important;
  }
}

/* ---------------------------------------------------------------
   WP 7.0 Fix: ヒーロー背景 全幅解除
   WP is-layout-constrained が max-width:1280px/margin:auto を
   hero bg 要素に適用するため強制解除
   --------------------------------------------------------------- */
.is-layout-constrained > [class*="-hero__bg"],
.is-layout-constrained > [class*="-hero-bg"],
.is-layout-constrained > [class*="-hero__slide"],
.is-layout-constrained > [class*="-hero__image"],
.is-layout-constrained > [class*="-hero__visual"] {
  max-width: none !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
