:root{
    --ink:#2A3320;
    --ink-soft:#525F3E;
    --paper:#FFFFFF;
    --paper-deep:#F0F0EE;
    --teal:#CFE21B;
    --teal-deep:#A3B816;
    --green-mid:#A8C54F;
    --green-sage:#C3CE91;
    --green-mint:#CFD791;
    --gold:#F6C944;
    --gold-soft:#FAE4A1;
    --line:#E1E1DD;
    --white:#FFFFFF;
    --red:#F6C944;
    --espresso:#3D2B1B;
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Noto Sans JP', sans-serif;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    word-break:keep-all;
    overflow-wrap:break-word;
    -webkit-hyphens:none; hyphens:none;
  }
  h1,h2,h3,h4,.serif,.seminar-headline,.gothic-heading,.hero-jp,
  .course-acc-title,.slide-agenda,.footer-logo{
    text-wrap:balance;
  }
  .tag,.news-tag,.label,.pillar-label,.footer-col h5,.course-acc-body .tag,
  .company-links a,.sns-link,.nav-cta,.btn,.course-apply,.company-pillar .num,
  .item-num,.mission .tag,.course-acc-num,.course-acc-plus,.slide-date{
    white-space:nowrap;
  }
  h1,h2,h3,.serif{ font-family:'Noto Sans JP', sans-serif; font-weight:700; }
  .gothic-heading{
    font-family:'Noto Sans JP',sans-serif !important; font-weight:300 !important;
    letter-spacing:0.02em; font-size:clamp(26px,5vw,42px) !important;
  }
  .mono{ font-family:'Space Mono', monospace; letter-spacing:0.06em; }
  a{ color:inherit; text-decoration:none; }
  img{max-width:100%; display:block;}
  .wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }
  @media(max-width:720px){ .wrap{padding:0 20px;} }
  .sp-break{ display:none; }
  @media(max-width:480px){ .sp-break{ display:inline; } }

  /* ---------- grid texture ---------- */
  .grid-bg{
    background-image:
      linear-gradient(var(--line) 1px, transparent 1px),
      linear-gradient(90deg, var(--line) 1px, transparent 1px);
    background-size: 34px 34px;
  }

  /* ---------- header ---------- */
  header{
    position:fixed; top:0; left:0; right:0; z-index:100;
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 40px;
    background:var(--white);
    color:var(--ink);
    box-shadow:0 1px 0 var(--line);
    transition:padding .3s ease, box-shadow .3s ease;
  }
  header.scrolled{
    padding:10px 40px;
    box-shadow:0 4px 14px rgba(30,42,34,0.1);
  }
  .logo{ display:flex; align-items:center; margin-left:-10px; }
  .logo span{ font-family:'Space Mono',monospace; font-size:10px; color:var(--ink-soft); letter-spacing:0.15em; }
  nav{ display:flex; gap:30px; font-size:13px; letter-spacing:0.06em; color:var(--ink-soft); font-weight:500; }
  @media(max-width:1000px){ nav{display:none;} header{padding:14px 20px;} }
  nav a{ position:relative; padding-bottom:4px; color:inherit; }
  nav a::after{ content:""; position:absolute; left:0; bottom:0; width:0; height:1px; background:var(--gold); transition:width .25s ease;}
  nav a:hover::after{ width:100%; }
  .header-ctas{ display:flex; align-items:center; gap:10px; }
  @media(max-width:1000px){ .header-ctas{ gap:8px; } }
  .cta-short{ display:none; }
  @media(max-width:480px){
    header{ padding:12px 14px; }
    .header-ctas{ gap:5px; }
    .brand-logo-img{ width:76px; height:28px; }
    .nav-cta{ padding:8px 11px; font-size:10.5px; }
    .nav-cta-outline{ padding:6.5px 9px; }
    .logo span{ display:none; }
    .logo .brand-logo-img{ display:block; }
  }
  @media(max-width:400px){
    .header-ctas{ gap:4px; }
    .brand-logo-img{ width:64px; height:24px; }
    .nav-cta{ padding:7px 9px; font-size:10px; }
    .nav-cta-outline{ padding:6px 8px; font-size:10px; }
    .cta-full{ display:none; }
    .cta-short{ display:inline; }
  }
  .nav-cta{
    background:var(--gold); color:var(--espresso) !important; padding:11px 22px;
    border-radius:999px; font-size:12px; font-weight:700; letter-spacing:0.03em;
    white-space:nowrap; text-align:center;
    transition:background .2s ease, transform .2s ease;
  }
  .nav-cta:hover{ background:var(--teal-deep); color:var(--white) !important; transform:translateY(-1px); }
  .nav-cta-outline{ background:transparent; color:var(--gold) !important; border:1.5px solid var(--gold); padding:9.5px 20px; }
  .nav-cta-outline:hover{ background:var(--gold); color:var(--espresso) !important; }
  .nav-cta::after{display:none;}

  /* ---------- マンツーマン指導 バッジ ---------- */
  .badge-1to1{
    display:inline-block; margin-bottom:14px; padding:7px 18px;
    background:var(--gold); color:var(--espresso); border-radius:999px;
    font-family:'Noto Sans JP',sans-serif; font-weight:700; font-size:12.5px;
    letter-spacing:0.05em; box-shadow:0 6px 18px rgba(0,0,0,0.18);
  }
  .badge-1to1-alt{
    margin-top:14px; margin-bottom:0; background:var(--espresso); color:var(--gold-soft);
    box-shadow:none;
  }

  /* ---------- 講師 認定ロゴ ---------- */
  .photo-col{ display:flex; flex-direction:column; align-items:flex-start; gap:14px; }
  .instructor-cert-logo{ width:75px; height:auto; object-fit:contain; }

  /* ---------- ロゴコンセプト ---------- */
  .footer-logo-concept{
    margin-top:14px; max-width:260px; font-size:11.5px; line-height:1.9; color:var(--ink-soft);
  }

  /* ---------- お問い合わせページ ---------- */
  .page-hero{
    padding:150px 0 70px; background:var(--paper-deep);
    border-bottom:1px solid var(--line);
  }
  .page-hero .label{ color:var(--teal-deep); }
  .page-hero h1{ margin-top:10px; font-size:clamp(30px,5vw,44px); color:var(--ink); }
  .page-hero p{ margin-top:16px; max-width:520px; color:var(--ink-soft); font-size:14.5px; line-height:1.9; }
  .contact-section{ padding:70px 0 110px; }
  .contact-form-wrap{ max-width:640px; margin:0 auto; }
  .contact-form-wrap form{ max-width:640px; margin:0 auto; }
  .contact-form-wrap .form-field{ margin-bottom:28px; }
  .contact-form-wrap label{
    display:flex; align-items:center; gap:8px;
    font-weight:700; font-size:14.5px; color:var(--ink); margin-bottom:10px;
  }
  .contact-form-wrap .required-badge{
    display:inline-block; padding:2px 9px; border-radius:999px;
    background:var(--gold-soft); color:var(--espresso);
    font-size:10.5px; font-weight:700; letter-spacing:0.04em;
  }
  .contact-form-wrap .wpcf7-form-control-wrap{ display:block; width:100%; }
  .contact-form-wrap .cf-input{
    width:100%; padding:14px 16px; border:1px solid var(--line);
    border-radius:6px; background:var(--paper-deep);
    font-family:'Noto Sans JP', sans-serif; font-size:14.5px; color:var(--ink);
    transition:border-color .2s ease, background .2s ease;
  }
  .contact-form-wrap .cf-input::placeholder{ color:#9A9A90; }
  .contact-form-wrap .cf-input:focus{
    outline:none; border-color:var(--teal-deep); background:var(--white);
  }
  .contact-form-wrap textarea.cf-input{ min-height:150px; resize:vertical; }
  .contact-form-wrap .wpcf7-submit{
    width:100%; display:flex; align-items:center; justify-content:center; gap:10px;
    padding:18px 20px; border:none; border-radius:999px; cursor:pointer;
    background:var(--teal-deep); color:var(--white);
    font-family:'Noto Sans JP', sans-serif; font-size:15.5px; font-weight:700; letter-spacing:0.04em;
    transition:background .2s ease, transform .2s ease;
  }
  .contact-form-wrap .wpcf7-submit:hover{ background:var(--espresso); transform:translateY(-1px); }
  .contact-form-wrap .wpcf7-spinner{ margin:10px auto 0; }
  .contact-form-wrap .wpcf7-not-valid-tip{ display:block; margin-top:6px; font-size:12px; color:#C0392B; font-weight:500; }
  .contact-form-wrap .wpcf7-response-output{
    margin-top:24px; padding:16px 18px; border-radius:8px; border:1px solid var(--line); font-size:13.5px;
  }
  .contact-form-wrap form.sent .wpcf7-response-output{ border-color:var(--teal-deep); background:var(--gold-soft); color:var(--espresso); }
  .contact-form-wrap form.invalid .wpcf7-response-output,
  .contact-form-wrap form.spam .wpcf7-response-output,
  .contact-form-wrap form.aborted .wpcf7-response-output{ border-color:#C0392B; background:#FBEAE8; color:#7A2E22; }

  /* ---------- hero ---------- */
  .hero{
    position:relative;
    min-height:100vh;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding:120px 0 60px;
    overflow:hidden;
  }
  .hero-photo-full{ position:absolute; inset:0; z-index:0; background:var(--ink); }
  .hero-photo-full img, .hero-photo-full video{ width:100%; height:100%; object-fit:cover; }
  .hero-scrim-full{
    position:absolute; inset:0; z-index:1;
    background:linear-gradient(180deg, rgba(42,51,32,0.55) 0%, rgba(42,51,32,0.3) 30%, rgba(42,51,32,0.4) 65%, rgba(42,51,32,0.82) 100%);
  }
  .hero-typo{ position:relative; z-index:2; text-align:center; padding:0 20px; width:100%; max-width:100%; box-sizing:border-box; }
  .hero-kicker{
    font-family:'Space Mono',monospace; font-size:13px; letter-spacing:0.3em; color:var(--white);
    margin-bottom:18px; text-transform:uppercase;
  }
  .hero-kicker span{ color:var(--gold-soft); letter-spacing:0.2em; }
  .hero-en{
    font-family:'Noto Sans JP',sans-serif; font-weight:900; letter-spacing:0.01em;
    font-size:clamp(38px, 9vw, 110px); line-height:1; color:rgba(255,255,255,0.16);
    -webkit-text-stroke:1.5px rgba(255,255,255,0.6);
    margin-bottom:8px;
  }
  .hero-jp-onphoto{
    position:relative; font-family:'Noto Sans JP',sans-serif; font-weight:900;
    font-size:clamp(32px, 5.8vw, 58px); color:var(--white); letter-spacing:0.02em; line-height:1.35;
    text-shadow:0 6px 26px rgba(0,0,0,0.45);
  }
  .hero-bottom{ position:relative; z-index:2; margin-top:36px; text-align:center; width:100%; max-width:100%; box-sizing:border-box; padding:0 20px; }
  .hero-bottom .lead-onphoto{
    font-size:16px; line-height:1.9; color:#EDECE1; max-width:540px; margin:0 auto;
  }
  .hero-actions{ margin-top:30px; display:flex; gap:16px; flex-wrap:wrap; justify-content:center; }
  .btn{
    display:inline-flex; align-items:center; gap:10px;
    padding:15px 28px; font-size:13px; letter-spacing:0.05em;
    border-radius:2px; white-space:nowrap;
    transition:transform .2s ease, background .2s ease;
  }
  .btn-primary{ background:var(--gold); color:var(--espresso); }
  .btn-primary:hover{ background:var(--teal-deep); color:var(--white); transform:translateY(-2px); }
  .btn-outline{ border:1px solid var(--ink); color:var(--ink); }
  .btn-outline:hover{ background:var(--ink); color:var(--white); transform:translateY(-2px); }
  .btn-outline-light{ border:1px solid rgba(255,255,255,0.75); color:var(--white); }
  .btn-outline-light:hover{ background:var(--white); color:var(--ink); transform:translateY(-2px); }

  /* hero art: blueprint tooth + annotation */
  .hero-art{ position:relative; aspect-ratio:1/1; display:flex; align-items:center; justify-content:center; }
  .hero-art svg{ width:60%; height:60%; position:relative; z-index:2; }
  .blueprint-path{
    fill:none; stroke:var(--teal-deep); stroke-width:1.4;
    stroke-dasharray:1400; stroke-dashoffset:1400;
    animation:draw 2.6s ease forwards .3s;
  }
  .blueprint-fill{ fill:var(--teal); opacity:0; animation:fadein 1s ease forwards 2.2s; }
  @keyframes draw{ to{ stroke-dashoffset:0; } }
  @keyframes fadein{ to{ opacity:0.08; } }
  .annot{
    position:absolute; font-family:'Space Mono',monospace; font-size:11px; color:var(--red);
    opacity:0; animation:fadein2 .6s ease forwards 2.6s; z-index:5;
  }
  @keyframes fadein2{ to{opacity:1;} }
  .annot-circle{
    position:absolute; width:86px; height:56px; border:2px solid var(--red); border-radius:50%;
    transform:rotate(-8deg); opacity:0; animation:fadein2 .6s ease forwards 2.4s; z-index:5;
  }

  /* ---------- collage tiles (RARA-inspired editorial reference) ---------- */
  .photo-tile{
    position:absolute; overflow:hidden; border:5px solid var(--white);
    box-shadow:0 14px 34px rgba(19,42,58,0.22);
  }
  .photo-tile .fill{
    position:absolute; inset:0; overflow:hidden;
    background:#22323e;
  }
  .photo-tile .fill img{
    width:100%; height:100%; object-fit:cover;
    filter:grayscale(1) contrast(1.08) brightness(0.95);
  }
  .photo-tile .fill::after{
    content:""; position:absolute; inset:0; opacity:.28;
    background:linear-gradient(155deg, rgba(163,184,22,0.5), rgba(246,201,68,0.35));
    mix-blend-mode:multiply;
  }
  .photo-tile .cap{
    position:absolute; left:10px; bottom:8px; font-family:'Space Mono',monospace;
    font-size:9px; color:#EDEBE3; letter-spacing:.05em; opacity:.85;
  }
  .tile-a{ width:64%; aspect-ratio:3/4; top:2%; left:0; transform:rotate(-4deg); z-index:1; }
  .tile-b{ width:44%; aspect-ratio:4/3; bottom:4%; right:0; transform:rotate(5deg); z-index:3; }
  .big-dot{
    position:absolute; width:120px; height:120px; border-radius:50%;
    background:var(--red); opacity:0; mix-blend-mode:multiply;
    animation:fadein2 .7s ease forwards 1.4s;
  }
  .dot-1{ top:6%; right:8%; z-index:4; }
  .dot-2{ width:26px; height:26px; bottom:22%; left:6%; background:var(--gold); mix-blend-mode:normal; z-index:4; }
  .hand-line{ position:absolute; inset:0; z-index:4; pointer-events:none; }
  .hand-line path{
    fill:none; stroke:var(--ink); stroke-width:1.2; stroke-dasharray:260; stroke-dashoffset:260;
    animation:draw 1.4s ease forwards 1.8s;
  }
  .people-line{ position:absolute; inset:0; z-index:2; }
  .people-line path, .people-line circle{
    fill:none; stroke:#F3F0E6; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round;
    stroke-dasharray:900; stroke-dashoffset:900;
    animation:draw 2.2s ease forwards 1s;
  }
  .people-line .screen{ stroke:var(--gold-soft); }


  /* ---------- lecture scenes slider ---------- */
  .lecture-slider{
    background:
      repeating-linear-gradient(-45deg, rgba(255,255,255,0.06) 0px, rgba(255,255,255,0.06) 1px, transparent 1px, transparent 7px),
      var(--teal-deep);
    padding:90px 0; overflow:hidden;
  }
  .gallery-head{ margin-bottom:32px; }
  .gallery-head .label{ font-family:'Space Mono',monospace; font-size:12px; color:var(--gold-soft); letter-spacing:0.15em; margin-bottom:12px; }
  .gallery-head h2{ color:var(--white); font-size:clamp(26px,3.4vw,38px); font-weight:700; }
  .gallery-head p{ margin-top:16px; max-width:560px; font-size:14.5px; color:var(--gold-soft); line-height:1.9; }
  .seminar-intro{ max-width:640px; margin-bottom:44px; }
  .seminar-intro .label{
    font-family:'Space Mono',monospace; font-size:12px; color:var(--gold-soft);
    letter-spacing:0.1em; margin-bottom:16px;
  }
  .seminar-headline{
    font-family:'Noto Sans JP',sans-serif; font-weight:300;
    font-size:clamp(26px,5vw,42px); line-height:1.25; color:var(--white); letter-spacing:0.02em;
  }
  .seminar-sub{
    margin-top:20px; font-size:14px; line-height:1.9; color:var(--white); max-width:480px;
  }
  .seminar-cta{ margin-top:26px; display:inline-flex; }
  .slider-track{
    display:flex; gap:20px; overflow-x:auto; padding:4px 32px 20px;
    scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
  }
  @media(max-width:720px){ .slider-track{ padding:4px 20px 20px; } }
  .slide{
    display:flex; flex-direction:column; flex:0 0 auto; width:min(72vw, 340px);
    border-radius:8px; overflow:hidden; scroll-snap-align:start;
    box-shadow:0 18px 40px rgba(30,42,34,0.14);
    background:var(--white);
  }
  .slide-img-wrap{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--paper-deep); }
  .slide-img{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  }
  .slide-info{ padding:18px 20px 22px; }
  .slide-date{ font-family:'Space Mono',monospace; font-size:11px; color:var(--gold); letter-spacing:0.08em; margin-bottom:8px; }
  .slide-agenda{ font-family:'Noto Sans JP',sans-serif; font-size:16px; font-weight:700; color:var(--ink); }
  .slide-desc{ margin-top:8px; font-size:12.5px; color:var(--ink-soft); line-height:1.75; }

  .band{
    background:var(--paper); color:var(--ink);
    padding:90px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  }
  .band-illust{ text-align:center; margin-bottom:20px; }
  .band-illust svg{ width:220px; height:auto; opacity:0.95; }
  .band-illust-label{
    font-family:'Space Mono',monospace; font-size:10px; letter-spacing:0.25em;
    color:rgba(246,241,230,0.55); margin-top:-6px;
  }
  .band-grid{ display:grid; grid-template-columns:1fr 1fr; gap:50px; }
  .band-grid > div{ min-width:0; }
  .mission-photo{
    margin-top:20px; aspect-ratio:16/10; border-radius:6px; overflow:hidden;
    box-shadow:0 14px 30px rgba(15,23,18,0.25);
  }
  .mission-photo img{ width:100%; height:100%; object-fit:cover; }
  @media(max-width:800px){ .band-grid{grid-template-columns:1fr; gap:34px;} }
  .band .label{ font-family:'Space Mono',monospace; font-size:11px; color:var(--gold); letter-spacing:0.15em; margin-bottom:14px;}
  .band h3{ font-size:clamp(19px,5.5vw,22px); line-height:1.8; font-weight:600; color:var(--ink); }
  .band p{ margin-top:12px; font-size:13px; color:var(--ink-soft); line-height:1.8; }

  /* ---------- section heading pattern ---------- */
  .section{ padding:90px 0; }
  #news.section{ padding:90px 0; }
  #news .section-head{ margin-bottom:56px; }
  .section-head{ margin-bottom:56px; }
  .section-head .label{ font-family:'Space Mono',monospace; font-size:12px; color:var(--teal-deep); letter-spacing:0.15em; margin-bottom:12px; }
  #news .label{ margin-bottom:2px; }
  .section-head h2{ font-size:clamp(26px,3.4vw,38px); font-weight:700; }
  .section-head p.desc{ margin-top:16px; max-width:560px; font-size:14.5px; color:var(--ink-soft); line-height:1.9; }

  /* ---------- seminar/course cards ---------- */
  .courses{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
  @media(max-width:640px){ .courses{grid-template-columns:1fr;} }
  .course{
    background:var(--white); border:1.5px solid var(--line); border-radius:6px;
    padding:32px 28px; position:relative;
    transition:background .25s ease, border-color .25s ease;
  }
  .course:hover{ background:var(--paper-deep); border-color:var(--gold); }
  .course .num{ font-family:'Space Mono',monospace; font-size:12px; color:var(--gold); }
  .course h4{ font-family:'Noto Sans JP',sans-serif; font-size:26px; margin-top:14px; font-weight:900; line-height:1.4; color:var(--ink); }
  .course p{ font-size:12.5px; color:var(--ink-soft); margin-top:12px; line-height:1.8; }
  .course .tag{
    display:inline-block; margin-top:18px; font-size:10.5px; font-family:'Space Mono',monospace;
    color:var(--teal-deep); border:1px solid var(--teal); padding:4px 10px; border-radius:20px;
  }
  .course:nth-child(2) .tag{ color:var(--green-mid); border-color:var(--green-mid); }
  .course:nth-child(3) .tag{ color:var(--green-sage); border-color:var(--green-sage); }
  .course:nth-child(4) .tag{ color:var(--green-mint); border-color:var(--green-mint); }
  .course:nth-child(5) .tag{ color:var(--teal-deep); border-color:var(--teal-deep); }

  /* ---------- course accordion (orange) ---------- */
  .course-section{
    background:
      repeating-linear-gradient(45deg, rgba(255,255,255,0.07) 0px, rgba(255,255,255,0.07) 1px, transparent 1px, transparent 7px),
      var(--gold);
  }
  .course-section .label{ color:var(--espresso); opacity:0.75; font-size:16px; }
  .course-section h2{ color:var(--espresso); }
  .course-section .desc{ color:var(--espresso) !important; opacity:0.85; }
  .course-accordion{ display:flex; flex-direction:column; gap:12px; }
  .course-acc{
    position:relative; background:var(--paper); border-radius:8px; overflow:hidden;
    box-shadow:0 10px 26px rgba(90,50,10,0.15);
  }
  .course-acc summary{
    position:relative; z-index:1;
    display:flex; align-items:center; gap:18px; padding:22px 24px; cursor:pointer;
    list-style:none; -webkit-user-select:none; user-select:none;
  }
  .course-acc summary::-webkit-details-marker{ display:none; }
  .course-acc-num{
    font-family:'Noto Sans JP',sans-serif; font-size:34px; font-weight:900; color:var(--gold);
    width:44px; flex-shrink:0; line-height:1; text-align:center; opacity:0.55;
  }
  .course-acc-title{ flex:1; min-width:0; font-family:'Noto Sans JP',sans-serif; font-size:17px; font-weight:700; color:var(--ink); }
  .course-acc-plus{
    font-family:'Space Mono',monospace; font-size:18px; color:var(--gold); transition:transform .25s ease;
    width:20px; text-align:center;
  }
  .course-acc[open] .course-acc-plus{ transform:rotate(45deg); }
  .course-acc-body{ position:relative; z-index:1; padding:0 24px 24px 68px; }
  .course-acc-body p{ font-size:13px; color:var(--ink-soft); line-height:1.85; }
  .course-acc-meta{
    margin-top:16px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
    gap:9px 28px; padding:16px 18px; background:var(--paper-deep); border-radius:6px;
  }
  @media(max-width:640px){ .course-acc-meta{ grid-template-columns:1fr; } }
  @media(max-width:480px){
    .course-acc-body{ padding:0 18px 20px 18px; }
    .course-acc summary{ padding:18px 16px; gap:12px; }
    .course-acc-num{ font-size:24px; width:auto; min-width:32px; }
  }
  .course-acc-meta .meta-row{ display:flex; gap:12px; font-size:12.5px; align-items:baseline; }
  .course-acc-meta .meta-label{
    flex:0 0 40px; font-family:'Space Mono',monospace; font-size:10.5px;
    letter-spacing:0.08em; color:var(--teal-deep);
  }
  .course-acc-meta .meta-value{ color:var(--ink); line-height:1.6; }
  .course-acc-footer{ margin-top:16px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
  .course-video-intro{
    margin-top:36px; max-width:560px;
    background:rgba(255,255,255,0.35); border:1px solid rgba(255,255,255,0.6);
    border-radius:10px; padding:24px 28px;
  }
  .course-video-intro-label{
    font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.15em;
    color:var(--espresso); margin-bottom:8px;
  }
  .course-video-intro-title{
    font-size:14px; line-height:1.8; color:var(--espresso);
  }
  .course-video-intro-desc{
    margin-top:8px; font-size:12.5px; line-height:1.8; color:var(--espresso);
  }
  .course-video-qr-row{ margin-top:22px; display:flex; gap:34px; flex-wrap:wrap; }
  .course-video-qr-item{ display:flex; align-items:center; gap:16px; }
  .course-video-qr-img{
    flex-shrink:0; width:80px; height:80px; background:var(--white);
    border-radius:6px; padding:6px;
  }
  .course-video-qr-img img{ display:block; width:100%; height:100%; object-fit:contain; }
  .course-video-qr-info{ display:flex; flex-direction:column; gap:8px; }
  .course-video-qr-info .qr-label{
    font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.1em; color:var(--espresso);
  }
  .course-video-link{
    align-self:flex-start; font-family:'Space Mono',monospace; font-size:11px;
    color:var(--espresso); border-bottom:1px solid rgba(61,43,27,0.4);
  }
  .course-acc-body .tag{
    display:inline-block; font-size:10.5px; font-family:'Space Mono',monospace;
    color:var(--teal-deep); border:1px solid var(--teal); padding:4px 10px; border-radius:20px;
  }
  .course-apply{
    font-family:'Space Mono',monospace; font-size:11.5px; letter-spacing:0.04em;
    color:var(--espresso); background:var(--gold); padding:8px 16px; border-radius:20px;
    transition:background .2s ease, color .2s ease;
  }
  .course-apply:hover{ background:var(--teal-deep); color:var(--white); }

  /* ---------- news ---------- */
  .news-list{ display:flex; flex-direction:column; gap:0; }
  .news-item{
    display:grid; grid-template-columns:96px auto 1fr 22px; gap:14px; align-items:center;
    padding:11px 14px; border-radius:6px;
    transition:background .2s ease, padding-left .2s ease;
  }
  .news-item:hover{ background:var(--paper-deep); padding-left:20px; }
  .news-item .date{ font-family:'Space Mono',monospace; font-size:11.5px; color:var(--ink-soft); }
  .news-tag{
    font-family:'Space Mono',monospace; font-size:9.5px; letter-spacing:0.06em;
    color:var(--gold); border:1px solid var(--gold); padding:2px 8px; border-radius:20px;
    justify-self:start; white-space:nowrap;
  }
  .news-tag-alt{ color:var(--teal-deep); border-color:var(--teal); }
  .news-tag-mute{ color:var(--ink-soft); border-color:var(--line); }
  .news-item .title{ font-size:13px; line-height:1.5; }
  .news-item .arrow{ font-size:14px; color:var(--gold); transition:transform .2s ease; }
  .news-item:hover .arrow{ transform:translateX(4px); }
  @media(max-width:640px){
    .news-item{ grid-template-columns:1fr auto; grid-template-areas:"date tag" "title title"; row-gap:3px; padding:10px 12px; }
    .news-item .date{ grid-area:date; }
    .news-tag{ grid-area:tag; }
    .news-item .title{ grid-area:title; }
    .news-item .arrow{ display:none; }
  }

  /* ---------- voice ---------- */
  .voices{ display:grid; grid-template-columns:repeat(3,1fr); gap:28px; }
  @media(max-width:900px){ .voices{grid-template-columns:1fr;} }
  .voice-card{ background:var(--white); border:1px solid var(--line); padding:0; overflow:hidden; }
  .voice-photo{
    aspect-ratio:4/3; background:
      repeating-linear-gradient(135deg, var(--paper-deep), var(--paper-deep) 8px, var(--paper) 8px, var(--paper) 16px);
    display:flex; align-items:center; justify-content:center;
    font-family:'Space Mono',monospace; font-size:11px; color:var(--ink-soft); text-align:center; padding:14px;
  }
  .voice-body{ padding:26px; }
  .quote-mark{ font-family:'Noto Sans JP',sans-serif; font-weight:900; font-size:34px; color:var(--gold-soft); line-height:1; }
  .voice-body p.quote{ font-size:13.5px; line-height:1.9; margin-top:8px; color:var(--ink); }
  .voice-meta{ margin-top:18px; font-size:11.5px; color:var(--ink-soft); border-top:1px solid var(--line); padding-top:14px; }

  /* ---------- instructors ---------- */
  .instructors{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); }
  .instructors > .instructor{ min-width:0; }
  @media(max-width:800px){ .instructors{grid-template-columns:1fr;} }
  .instructor{ background:var(--white); display:grid; grid-template-columns:120px 1fr; gap:24px; padding:34px; min-width:0; }
  .instructor > div{ min-width:0; }
  @media(max-width:520px){ .instructor{grid-template-columns:1fr;} .photo-col{ flex-direction:row; align-items:flex-start; } }
  @media(max-width:480px){ .instructor{ padding:22px; gap:18px; } }
  .instructor .photo{
    width:112px; aspect-ratio:3/4; justify-self:start; overflow:hidden;
    background:linear-gradient(160deg, var(--paper-deep), var(--line));
    display:flex; align-items:center; justify-content:center; font-family:'Space Mono',monospace; font-size:9px; color:var(--ink-soft); text-align:center; padding:6px;
  }
  .instructor .photo img{ width:100%; height:100%; object-fit:cover; display:block; padding:0; }
  .instructor h4{ font-family:'Noto Sans JP',sans-serif; font-weight:700; font-size:19px; }
  .instructor .role{ font-family:'Space Mono',monospace; font-size:10.5px; color:var(--teal-deep); margin-top:6px; letter-spacing:0.06em;}
  .instructor p.bio{ font-size:12.5px; color:var(--ink-soft); margin-top:14px; line-height:1.85; }
  .instructor.open{ display:flex; align-items:center; justify-content:center; }
  .instructor.open .plus{ text-align:center; }
  .instructor.open .plus .sym{ font-size:28px; color:var(--gold); font-family:'Space Mono',monospace; }
  .instructor.open .plus p{ margin-top:10px; font-size:12px; color:var(--ink-soft); }

  /* ---------- mission strip (gold lead band) ---------- */
  .mission{
    background:
      repeating-linear-gradient(-45deg, rgba(61,43,27,0.05) 0px, rgba(61,43,27,0.05) 1px, transparent 1px, transparent 7px),
      var(--gold);
    color:var(--espresso); padding:80px 0 70px; text-align:center; position:relative;
  }
  .mission .tag{ font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.2em; color:var(--espresso); opacity:0.7; }
  .mission h3{ font-size:clamp(22px,3vw,32px); margin-top:18px; line-height:1.7; font-weight:600; max-width:760px; margin-left:auto; margin-right:auto; }
  .mission .divider{ width:36px; height:2px; background:var(--white); margin:26px auto; }
  .mission p.sub{ font-size:14px; color:var(--espresso); opacity:0.82; max-width:520px; margin:0 auto; line-height:1.9; }
  .mission .company-lead{ max-width:680px; }

  /* ---------- company detail (two-column: pillars + facts card) ---------- */
  .company-detail{ background:var(--paper); padding:64px 0 72px; }
  .company-layout{ display:grid; grid-template-columns:1fr 300px; gap:60px; align-items:start; }
  @media(max-width:860px){ .company-layout{ grid-template-columns:1fr; gap:48px; } }
  .company-main{ min-width:0; }
  .company-timeline{ position:relative; padding-left:56px; }
  @media(max-width:480px){
    .company-timeline{ padding-left:44px; }
    .company-timeline::before{ left:16px; }
    .timeline-item .item-num{ left:-44px; width:34px; font-size:18px; }
  }
  .company-timeline::before{
    content:""; position:absolute; left:20px; top:4px; bottom:4px; width:2px; background:var(--line);
  }
  .timeline-item{ position:relative; padding-bottom:38px; text-align:left; }
  .timeline-item:last-child{ padding-bottom:0; }
  .timeline-item .item-num{
    position:absolute; left:-56px; top:-6px; width:42px; text-align:center;
    font-family:'Space Mono',monospace; font-size:22px; font-weight:700; color:var(--gold);
    background:var(--paper); padding:2px 0;
  }
  .timeline-item .pillar-label{
    font-family:'Space Mono',monospace; font-size:10.5px; letter-spacing:0.12em; color:var(--teal-deep);
  }
  .timeline-item h4{ font-family:'Noto Sans JP',sans-serif; font-size:16px; font-weight:700; margin:6px 0 8px; color:var(--ink); }
  .timeline-item p{ font-size:13px; line-height:1.85; color:var(--ink-soft); }

  .company-links{
    display:flex; flex-wrap:wrap; gap:12px 14px;
    margin-top:44px; padding-left:56px;
  }
  @media(max-width:480px){ .company-links{ padding-left:44px; } }
  .company-links a{
    font-size:12.5px; letter-spacing:0.02em; color:var(--ink);
    background:transparent; border:1.5px solid var(--gold); border-radius:999px;
    padding:8px 19px; transition:background .2s,color .2s;
    white-space:nowrap;
  }
  .company-links a:hover{ background:var(--gold); color:var(--espresso); }
  .company-note{ margin-top:26px; text-align:center; font-size:12px; color:var(--ink-soft); opacity:0.85; }

  .company-card{
    background:var(--paper-deep); border-radius:10px; padding:32px 26px;
  }
  .company-card-label{
    font-family:'Space Mono',monospace; font-size:11px; letter-spacing:0.15em;
    color:var(--teal-deep); margin-bottom:18px;
  }
  .company-facts > div{ padding:14px 0; border-top:1px solid var(--line); }
  .company-facts > div:first-of-type{ border-top:none; padding-top:0; }
  .company-facts dt{
    font-family:'Space Mono',monospace; font-size:10.5px; letter-spacing:0.06em;
    color:var(--ink-soft); margin-bottom:5px;
  }
  .company-facts dd{ font-size:13px; color:var(--ink); line-height:1.7; margin:0; }

  /* ---------- alumni support ---------- */
  .alumni-grid{
    display:grid; grid-template-columns:repeat(3,1fr); gap:20px; max-width:920px;
  }
  @media(max-width:820px){ .alumni-grid{ grid-template-columns:1fr; } }
  .alumni-card{
    background:var(--white); border:1px solid var(--line); border-radius:8px;
    overflow:hidden; box-shadow:0 8px 20px rgba(30,42,34,0.05);
  }
  .alumni-img{
    aspect-ratio:4/3; position:relative; overflow:hidden;
    background:
      repeating-linear-gradient(-45deg, rgba(30,42,34,0.05) 0px, rgba(30,42,34,0.05) 1px, transparent 1px, transparent 9px),
      var(--paper-deep);
    border-bottom:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
  }
  .alumni-img img{ width:100%; height:100%; object-fit:cover; display:block; }
  .alumni-img .placeholder-label{
    font-family:'Space Mono',monospace; font-size:10.5px; letter-spacing:0.08em;
    color:var(--ink-soft); opacity:0.55; text-align:center; padding:0 16px;
  }
  .alumni-body{ padding:22px 20px 26px; }
  .alumni-card .num{ font-family:'Space Mono',monospace; font-size:11px; color:var(--teal-deep); letter-spacing:0.1em; margin-bottom:10px; }
  .alumni-card h4{ font-family:'Noto Sans JP',sans-serif; font-size:15px; font-weight:700; color:var(--ink); margin-bottom:8px; }
  .alumni-card p{ font-size:12.5px; color:var(--ink-soft); line-height:1.8; }

  /* ---------- contact cta ---------- */
  .cta-section{ padding:90px 0; text-align:center; }
  .company-info-grid > div{ min-width:0; }
  @media(max-width:560px){ .company-info-grid{ grid-template-columns:1fr !important; } }
  .cta-section h2{ font-size:clamp(26px,4vw,40px); }
  .cta-section p{ margin-top:16px; color:var(--ink-soft); font-size:14px; }
  .cta-section .btn{ margin-top:34px; }

  /* ---------- footer ---------- */
  footer{ background:var(--white); color:var(--ink-soft); padding:60px 0 30px; font-size:12.5px; border-top:1px solid var(--line); }
  .footer-grid{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:40px; padding-bottom:40px; border-bottom:1px solid var(--line); }
  .sns-links{ display:flex; gap:10px; margin-top:16px; }
  .sns-link{
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    display:flex; align-items:center; justify-content:center;
    font-family:'Space Mono',monospace; font-size:10px; font-weight:700; letter-spacing:0.01em;
    color:var(--ink-soft); transition:background .2s, color .2s, border-color .2s;
  }
  .sns-link:hover{ background:var(--gold); border-color:var(--gold); color:var(--espresso); }
  .footer-logo{ font-family:'Noto Sans JP',sans-serif; font-weight:700; color:var(--ink); font-size:18px; letter-spacing:0.06em; }
  .footer-links{ display:flex; gap:60px; flex-wrap:wrap; }
  .footer-col h5{ font-family:'Space Mono',monospace; font-size:10.5px; color:var(--teal-deep); letter-spacing:0.1em; margin-bottom:14px; }
  .footer-col a{ display:block; margin-bottom:10px; color:var(--ink-soft); opacity:0.85; }
  .footer-col a:hover{ color:var(--ink); opacity:1; }
  .footer-bottom{ padding-top:24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; opacity:0.6; font-size:11px;}

  /* reveal on scroll */
  .reveal{ opacity:0; transform:translateY(24px); transition:opacity .7s ease, transform .7s ease; }
  .reveal.in{ opacity:1; transform:translateY(0); }

  /* note badge */
  .note{
    position:fixed; bottom:18px; right:18px; z-index:200;
    background:var(--ink); color:var(--paper); font-family:'Space Mono',monospace;
    font-size:10.5px; padding:10px 14px; border-radius:3px; opacity:0.88; max-width:220px; line-height:1.6;
  }
  @media(max-width:720px){ .note{display:none;} }

  /* ---------- brand logo mark (client asset) ---------- */
  .brand-logo-img{ display:block; width:120px; height:44px; object-fit:contain; object-position:left center; }
  .foot-logo-box .brand-logo-img{ width:100px; height:36px; }

/* ---------- testimonials (star-rating list) ---------- */
.testimonial-list{ display:flex; flex-direction:column; max-width:780px; }
.testimonial-item{ display:flex; gap:20px; padding:26px 0; border-top:1px solid var(--line); }
.testimonial-item:last-child{ border-bottom:1px solid var(--line); }
.testimonial-avatar{
  flex:0 0 auto; width:52px; height:52px; border-radius:50%;
  background:var(--paper-deep); border:1px solid var(--line);
  display:flex; align-items:flex-end; justify-content:center; overflow:hidden;
}
.testimonial-avatar img{ width:100%; height:100%; object-fit:cover; }
.testimonial-avatar svg{ width:70%; height:70%; }
.testimonial-body{ flex:1; min-width:0; }
.testimonial-top{ display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.testimonial-who-inline{ display:flex; flex-direction:column; gap:3px; }
.who-name{ font-family:'Noto Sans JP',sans-serif; font-weight:700; font-size:14.5px; color:var(--ink); }
.who-role{ font-family:'Space Mono',monospace; font-size:10.5px; color:var(--teal-deep); }
.testimonial-stars{ color:var(--gold); font-size:13px; letter-spacing:1px; white-space:nowrap; }
.testimonial-text{ margin-top:10px; font-size:13.5px; line-height:1.85; color:var(--ink-soft); }

/* =========================================================
   歯科医療従事者確認ゲート (Dental Professional Gate)
========================================================= */
html.dg-ok #dental-gate{ display:none !important; }
html:not(.dg-ok){ overflow:hidden; }

#dental-gate{
  position:fixed; inset:0; z-index:9999;
  display:flex; align-items:center; justify-content:center;
  padding:24px;
}
.dental-gate-overlay{
  position:absolute; inset:0;
  background:rgba(42,51,32,0.92);
  backdrop-filter:blur(3px);
}
.dental-gate-card{
  position:relative; z-index:1;
  width:100%; max-width:480px;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:4px;
  padding:48px 40px 40px;
  text-align:center;
  box-shadow:0 20px 60px rgba(0,0,0,0.35);
  animation:dgIn .35s ease;
}
@keyframes dgIn{
  from{ opacity:0; transform:translateY(12px); }
  to{ opacity:1; transform:translateY(0); }
}
.dental-gate-mark{ width:48px; height:48px; margin:0 auto 20px; }
.dental-gate-mark svg{ width:100%; height:100%; }
.dental-gate-title{
  font-family:'Noto Sans JP',sans-serif; font-weight:700;
  font-size:19px; letter-spacing:0.03em; color:var(--ink);
  margin-bottom:18px;
}
.dental-gate-text{
  font-size:13px; line-height:1.9; color:var(--ink-soft);
  margin-bottom:14px;
}
.dental-gate-question{
  font-size:14.5px; font-weight:700; color:var(--ink);
  margin-bottom:26px;
}
.dental-gate-actions{
  display:flex; gap:14px; justify-content:center; flex-wrap:wrap;
}
.dental-gate-btn{
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 30px; font-size:13px; letter-spacing:0.05em;
  font-family:'Noto Sans JP',sans-serif; font-weight:700;
  border-radius:2px; border:none; cursor:pointer;
  transition:transform .2s ease, background .2s ease, color .2s ease;
}
.dental-gate-btn-yes{ background:var(--gold); color:var(--espresso); }
.dental-gate-btn-yes:hover{ background:var(--teal-deep); color:var(--white); transform:translateY(-2px); }
.dental-gate-btn-no{ background:transparent; border:1px solid var(--ink); color:var(--ink); }
.dental-gate-btn-no:hover{ background:var(--ink); color:var(--white); transform:translateY(-2px); }
.dental-gate-arrow{ font-size:14px; transition:transform .2s ease; }
.dental-gate-btn:hover .dental-gate-arrow{ transform:translateX(4px); }

@media (max-width:480px){
  .dental-gate-card{ padding:36px 24px 30px; }
  .dental-gate-actions{ flex-direction:column; }
  .dental-gate-btn{ justify-content:center; }
}
