:root{
  --paper:#ffffff;
  --paper-dim:#f2f1ec;
  --ink:#151a2e;
  --ink-soft:#4d5268;
  --ink-faint:#8b8fa3;
  --navy:#151a2e;
  --navy-deep:#0c0f1c;
  --gold:#c99a3f;
  --mint:#2fb387;
  --line:#e2e0d6;
  --radius:3px;
  --font-display:"Zen Kaku Gothic New","Hiragino Sans","Noto Sans JP",sans-serif;
  --font-body:"Noto Sans JP","Hiragino Sans",sans-serif;
  --ease:cubic-bezier(.19,1,.22,1);
}
@media (prefers-color-scheme: dark){
  :root{
    --paper:#0f1220;
    --paper-dim:#161a2c;
    --ink:#f0efe8;
    --ink-soft:#b9bcce;
    --ink-faint:#7d8199;
    --line:#2a2f47;
  }
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:auto}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  line-height:1.85;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3{font-family:var(--font-display)}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
.container{width:100%;max-width:1080px;margin:0 auto;padding:0 24px}
@media(min-width:768px){.container{padding:0 40px}}
section[id]{scroll-margin-top:80px}

/* ---------- header ---------- */
.header{
  position:sticky;top:0;z-index:50;
  background:var(--paper);
  border-bottom:1px solid var(--line);
}
.header__inner{
  display:flex;align-items:center;justify-content:space-between;
  height:68px;max-width:1080px;margin:0 auto;padding:0 24px;
}
@media(min-width:768px){.header__inner{padding:0 40px}}
.header__logo{display:flex;align-items:center;gap:10px}
.header__mark{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;flex-shrink:0;
  background:var(--navy);color:#fff;
  font-family:var(--font-display);font-weight:900;font-size:.95rem;
  border-radius:50%;
}
.header__mark img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;
}
.header__name{font-weight:800;font-size:.78rem;line-height:1.3;letter-spacing:.02em}
.header__toggle{
  display:flex;flex-direction:column;justify-content:center;gap:5px;
  width:40px;height:40px;background:none;border:0;cursor:pointer;
}
@media(min-width:860px){.header__toggle{display:none}}
.header__toggle span{display:block;width:22px;height:2px;background:var(--ink);transition:transform .25s var(--ease),opacity .25s}
.header__toggle.is-active span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.header__toggle.is-active span:nth-child(2){opacity:0}
.header__toggle.is-active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.gnav{
  position:fixed;top:68px;left:0;right:0;
  display:flex;flex-direction:column;gap:0;
  background:var(--paper);border-bottom:1px solid var(--line);
  transform:translateY(-8px);opacity:0;pointer-events:none;
  transition:opacity .25s var(--ease),transform .25s var(--ease);
}
.gnav.is-open{opacity:1;transform:translateY(0);pointer-events:auto}
.gnav a{padding:16px 24px;font-size:.9rem;font-weight:700;border-top:1px solid var(--line)}
@media(min-width:860px){
  .gnav{
    position:static;flex-direction:row;align-items:center;gap:28px;
    background:none;border:0;transform:none;opacity:1;pointer-events:auto;
  }
  .gnav a{padding:0;border:0;font-size:.85rem}
}
.gnav__cta{
  background:var(--navy);color:#fff !important;
  padding:10px 20px !important;border-radius:var(--radius);
  text-align:center;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:15px 30px;font-size:.9rem;font-weight:700;letter-spacing:.03em;
  border-radius:var(--radius);border:1.5px solid transparent;
  transition:transform .2s var(--ease),background .2s,border-color .2s;
}
.btn--primary{background:var(--navy);color:#fff}
.btn--primary:hover{background:var(--navy-deep);transform:translateY(-2px)}
.btn--ghost{border-color:var(--ink);color:var(--ink)}
.btn--ghost:hover{border-color:var(--gold);color:var(--gold);transform:translateY(-2px)}
.btn--block{display:flex;width:100%}

/* ---------- hero ---------- */
.hero{
  position:relative;padding:120px 0 72px;overflow:hidden;
  background:
    radial-gradient(ellipse 60% 50% at 85% 0%, rgba(201,154,63,.16), transparent 60%),
    radial-gradient(ellipse 50% 40% at 5% 100%, rgba(47,179,135,.14), transparent 60%),
    url('images/hero-bg.jpg') center / cover no-repeat,
    var(--paper);
}
.hero__inner{max-width:760px;margin:0 auto;padding:0 24px;text-align:center}
@media(min-width:768px){.hero__inner{padding:0 40px}}
.hero__badge{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--gold);color:#fff;font-size:.72rem;font-weight:800;letter-spacing:.03em;
  padding:8px 18px;border-radius:100px;margin-bottom:18px;
}
.hero__eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.14em;color:var(--gold);margin-bottom:18px}
.hero__title{
  font-size:clamp(2.1rem,6.4vw,3.4rem);font-weight:900;line-height:1.3;
  letter-spacing:.01em;margin-bottom:22px;text-wrap:balance;
}
.hero__title span{color:var(--gold)}
.hero__lead{color:var(--ink-soft);font-size:1rem;max-width:34em;margin:0 auto 36px}
.hero__cta{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-bottom:56px}
.hero__facts{
  display:flex;flex-wrap:wrap;justify-content:center;gap:1px;
  background:var(--line);border:1px solid var(--line);max-width:640px;margin:0 auto;
}
.hero__facts li{
  flex:1 1 160px;background:var(--paper);padding:22px 16px;text-align:center;
}
.hero__facts-was{display:block;font-size:.7rem;font-weight:700;color:var(--ink-faint);text-decoration:line-through;margin-bottom:2px}
.hero__facts b{display:block;font-family:var(--font-display);font-size:1.3rem;font-weight:900;color:var(--navy)}
@media (prefers-color-scheme: dark){.hero__facts b{color:#fff}}
.hero__facts span{display:block;font-size:.72rem;color:var(--ink-faint);margin-top:4px}
.hero__facts-note{display:block;font-size:.6rem;color:var(--ink-faint);margin-top:4px;line-height:1.5}
.hero__note{margin-top:20px;text-align:center;font-size:.76rem;color:var(--ink-faint)}

/* ---------- section shell ---------- */
.section{padding:80px 0}
@media(min-width:768px){.section{padding:104px 0}}
.section--tint{background:var(--paper-dim)}
.sec-head{max-width:640px;margin:0 auto 48px;text-align:center}
.sec-head__en{
  font-family:var(--font-display);font-size:.72rem;font-weight:700;letter-spacing:.22em;
  color:var(--gold);margin-bottom:10px;
}
.sec-head__ja{font-size:clamp(1.5rem,3.6vw,2rem);font-weight:900;letter-spacing:.01em}
.sec-head__lead{color:var(--ink-soft);font-size:.92rem;margin-top:14px}

/* ---------- pain ---------- */
.pain-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line)}
@media(min-width:640px){.pain-grid{grid-template-columns:repeat(2,1fr)}}
.pain-card{background:var(--paper);padding:32px 28px}
.pain-card__ico{font-size:1.8rem;display:block;margin-bottom:16px}
.pain-card h3{font-size:1rem;font-weight:800;margin-bottom:10px}
.pain-card p{font-size:.86rem;color:var(--ink-soft)}

/* ---------- about ---------- */
.about-grid{display:grid;grid-template-columns:1fr;gap:36px}
@media(min-width:820px){.about-grid{grid-template-columns:.9fr 1.1fr;align-items:center}}
.about-history{display:flex;flex-direction:column;gap:16px}
.about-history li{display:flex;align-items:baseline;gap:12px;font-size:.92rem;font-weight:700;color:var(--ink)}
.about-history__dot{width:8px;height:8px;border-radius:50%;background:var(--gold);flex-shrink:0}
.about-quote{
  background:var(--paper);border-left:3px solid var(--gold);
  padding:32px 28px;font-size:.98rem;color:var(--ink-soft);line-height:1.9;
}
.about-quote p{margin-bottom:14px}
.about-quote footer{font-size:.78rem;color:var(--ink-faint);font-style:normal;margin-top:4px}
.about-area{
  max-width:760px;margin:40px auto 0;text-align:center;
  font-size:.86rem;color:var(--ink-soft);line-height:1.9;
}

.about-brand{
  position:relative;overflow:hidden;margin-top:56px;
  width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  background:var(--navy);color:#f0efe8;padding:48px 32px;text-align:center;
}
.about-brand.no-logo::before{
  content:"39";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  font-family:var(--font-display);font-size:11rem;font-weight:900;
  color:rgba(255,255,255,.05);white-space:nowrap;pointer-events:none;
}
.about-brand__watermark{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:60%;max-width:420px;opacity:.1;pointer-events:none;z-index:0;
}
.about-brand__label{position:relative;font-size:.72rem;font-weight:700;letter-spacing:.22em;color:var(--gold);margin-bottom:14px}
.about-brand__title{position:relative;font-size:1.15rem;font-weight:900;margin-bottom:20px;text-wrap:balance}
.about-brand p{position:relative;max-width:640px;margin:0 auto 14px;font-size:.88rem;color:#d8d5c8;line-height:1.9}
.about-brand p:last-child{margin-bottom:0}
.about-brand strong{color:var(--gold);font-weight:800}

/* ---------- survey ---------- */
.survey-branch{max-width:760px;margin:0 auto 56px}
.survey-branch__start{
  display:flex;align-items:center;gap:14px;justify-content:center;
  background:var(--paper);border:1px solid var(--line);
  padding:20px 24px;margin-bottom:8px;text-align:center;font-size:.9rem;font-weight:700;
}
.survey-branch__ico{font-size:1.4rem}
.survey-branch__paths{display:grid;grid-template-columns:1fr;gap:16px;margin-top:24px}
@media(min-width:700px){.survey-branch__paths{grid-template-columns:1fr 1fr}}
.survey-branch__path{border:1px solid var(--line);background:var(--paper);padding:24px;text-align:center}
.survey-branch__path--good{border-color:var(--mint);background:rgba(47,179,135,.08)}
.survey-branch__rating{font-family:var(--font-display);font-weight:900;font-size:1.1rem;margin-bottom:8px}
.survey-branch__path--good .survey-branch__rating{color:var(--mint)}
.survey-branch__arrow{color:var(--ink-faint);margin-bottom:8px}
.survey-branch__result{font-weight:700;font-size:.9rem;margin-bottom:8px}
.survey-branch__note{font-size:.78rem;color:var(--ink-faint)}

.survey-gallery{margin-bottom:48px}
.survey-gallery__label{font-size:.78rem;font-weight:800;letter-spacing:.05em;color:var(--ink-faint);margin:0 0 16px;text-align:center}
.survey-gallery__scroll{
  display:flex;gap:16px;overflow-x:auto;padding:4px 4px 14px;margin-bottom:40px;
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
}
.survey-gallery__scroll::-webkit-scrollbar{height:6px}
.survey-gallery__scroll::-webkit-scrollbar-thumb{background:var(--line)}
.survey-gallery__scroll .survey-gallery__item{flex:0 0 auto;width:180px;scroll-snap-align:start}
.survey-gallery__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media(min-width:640px){.survey-gallery__grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:960px){.survey-gallery__grid{grid-template-columns:repeat(4,1fr)}}
.survey-gallery__item a{
  display:block;aspect-ratio:1/1;overflow:hidden;
  border:1px solid var(--line);cursor:zoom-in;background:var(--paper);
}
.survey-gallery__item img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;transition:transform .4s var(--ease)}
.survey-gallery__item a:hover img{transform:scale(1.08)}
.survey-gallery__item figcaption{margin-top:8px;font-size:.74rem;color:var(--ink-soft);text-align:center}

.survey-features{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:28px}
@media(min-width:640px){.survey-features{grid-template-columns:repeat(2,1fr)}}
@media(min-width:960px){.survey-features{grid-template-columns:repeat(3,1fr)}}
.survey-features li{background:var(--paper);padding:28px 24px}
.survey-features h3{font-size:.92rem;font-weight:800;margin-bottom:8px}
.survey-features p{font-size:.82rem;color:var(--ink-soft)}

.survey-compare{
  max-width:720px;margin:0 auto 32px;background:var(--paper);
  border:1px solid var(--gold);border-left:4px solid var(--gold);
  padding:28px 30px;
}
.survey-compare__label{font-size:.72rem;font-weight:800;letter-spacing:.1em;color:var(--gold);margin-bottom:12px}
.survey-compare p{font-size:.88rem;color:var(--ink-soft);line-height:1.85}
.survey-compare strong{color:var(--ink);font-weight:800}
.survey-compare__note{font-size:.76rem;color:var(--ink-faint);margin-top:10px}

.survey-note{font-size:.78rem;color:var(--ink-faint);text-align:center;max-width:640px;margin:0 auto}

/* ---------- service ---------- */
.service-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);border:1px solid var(--line)}
@media(min-width:640px){.service-grid{grid-template-columns:repeat(2,1fr)}.service-card--wide{grid-column:1/-1}}
.service-card{background:var(--paper);padding:36px 28px}
.service-card__num{
  display:block;font-family:var(--font-display);font-weight:900;font-size:1.6rem;
  color:var(--line);margin-bottom:14px;
}
.service-card h3{font-size:1.02rem;font-weight:800;margin-bottom:10px}
.service-card p{font-size:.86rem;color:var(--ink-soft)}
.service-card p a{color:var(--gold);font-weight:700;text-decoration:underline;text-underline-offset:3px}

/* ---------- flow ---------- */
.flow-list{max-width:640px;margin:0 auto;display:flex;flex-direction:column}
.flow-step{display:flex;gap:22px;padding:22px 0;border-top:1px solid var(--line)}
.flow-step:last-child{border-bottom:1px solid var(--line)}
.flow-step__num{
  flex-shrink:0;display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:50%;
  background:var(--navy);color:#fff;font-weight:800;font-size:.9rem;
}
.flow-step h3{font-size:.98rem;font-weight:800;margin-bottom:6px}
.flow-step p{font-size:.86rem;color:var(--ink-soft)}

/* ---------- price ---------- */
.price-card{
  max-width:560px;margin:0 auto;background:var(--paper);
  border:1px solid var(--line);padding:44px 36px;text-align:center;
}
.price-card__badge{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--gold);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.03em;
  padding:7px 16px;border-radius:100px;margin-bottom:16px;
}
.price-card__label{font-size:.85rem;font-weight:700;color:var(--ink-soft);margin-bottom:16px}
.price-card__compare{
  display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;
}
.price-card__was{font-size:.92rem;font-weight:700;color:var(--ink-faint);text-decoration:line-through;text-decoration-color:var(--ink-faint)}
.price-card__arrow{color:var(--gold);font-weight:800}
.price-card__off{
  background:rgba(201,154,63,.14);color:var(--gold);font-size:.72rem;font-weight:800;
  padding:3px 10px;border-radius:100px;letter-spacing:.02em;
}
.price-card__amount{
  font-family:var(--font-display);font-weight:900;color:var(--navy);
  font-size:clamp(2.4rem,7vw,3.2rem);margin-bottom:28px;
}
@media (prefers-color-scheme: dark){.price-card__amount{color:#fff}}
.price-card__amount span{font-size:1rem;font-weight:700;color:var(--ink-faint);margin-left:6px}
.price-card__list{text-align:left;display:flex;flex-direction:column;gap:12px;margin-bottom:28px}
.price-card__list li{
  position:relative;padding-left:22px;font-size:.88rem;color:var(--ink-soft);
}
.price-card__list li::before{content:"✓";position:absolute;left:0;color:var(--mint);font-weight:800}
.price-card__note{font-size:.74rem;color:var(--ink-faint);text-align:left;margin-bottom:28px;line-height:1.7}
.price-card__condition{
  font-size:.78rem;font-weight:700;color:var(--gold);text-align:left;
  margin:-14px 0 24px;padding-top:14px;border-top:1px solid var(--line);line-height:1.7;
}

.price-addons-head{max-width:760px;margin:56px auto 20px;text-align:center;font-size:.8rem;font-weight:700;color:var(--ink-faint);letter-spacing:.05em}
.price-addons{max-width:760px;margin:0 auto;display:grid;grid-template-columns:1fr;gap:20px}
@media(min-width:640px){.price-addons{grid-template-columns:1fr 1fr}}
.price-addon{background:var(--paper);border:1px solid var(--line);padding:28px 26px}
.price-addon__label{font-size:.82rem;font-weight:800;color:var(--ink);margin-bottom:10px}
.price-addon__amount{font-family:var(--font-display);font-weight:900;font-size:1.5rem;color:var(--navy);margin-bottom:12px}
@media (prefers-color-scheme: dark){.price-addon__amount{color:#fff}}
.price-addon__amount span{font-size:.68rem;font-weight:700;color:var(--ink-faint);margin-left:4px}
.price-addon__desc{font-size:.82rem;color:var(--ink-soft);line-height:1.8}
.price-addon__notes{margin-top:10px;display:flex;flex-direction:column;gap:7px}
.price-addon__notes li{font-size:.78rem;color:var(--ink-soft);line-height:1.7;padding-left:16px;position:relative}
.price-addon__notes li::before{content:"※";position:absolute;left:0;color:var(--ink-faint);font-size:.74rem}

/* ---------- works ---------- */
.works-grid{display:grid;grid-template-columns:1fr;gap:32px}
@media(min-width:700px){.works-grid{grid-template-columns:repeat(2,1fr)}}
.works-grid--single{grid-template-columns:1fr;max-width:520px;margin:0 auto}
.works-card__link{display:block;transition:transform .2s var(--ease)}
.works-card__link:hover{transform:translateY(-3px)}
.works-card__media{
  aspect-ratio:16/10;overflow:hidden;border:1px solid var(--line);background:var(--paper-dim);
}
.works-card__media--kaisen{background:linear-gradient(135deg,#16324F 0%,#0E2135 60%,#C9A05A 150%)}
.works-card__media img{width:100%;height:100%;object-fit:cover;object-position:top}
.works-card__body{padding-top:16px}
.works-card__body h3{font-size:.95rem;font-weight:800;margin-bottom:8px}
.works-card__body p{font-size:.84rem;color:var(--ink-soft)}
.works-card__cta{display:inline-block;margin-top:10px;font-size:.8rem;font-weight:700;color:var(--gold)}

/* ---------- faq ---------- */
.faq-list{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line)}
.faq-item{background:var(--paper);padding:26px 28px}
.faq-item dt{
  font-weight:800;font-size:.92rem;margin-bottom:10px;padding-left:26px;position:relative;
}
.faq-item dt::before{content:"Q";position:absolute;left:0;color:var(--gold);font-weight:900}
.faq-item dd{font-size:.86rem;color:var(--ink-soft);padding-left:26px;position:relative}
.faq-item dd::before{content:"A";position:absolute;left:0;color:var(--mint);font-weight:900}

/* ---------- contact ---------- */
.contact-actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}
.contact-btn{
  display:inline-flex;align-items:center;justify-content:center;
  padding:18px 32px;font-size:.92rem;font-weight:800;border-radius:var(--radius);
  min-width:240px;text-align:center;transition:transform .2s var(--ease),background .2s;
}
.contact-btn--primary{background:var(--mint);color:#fff}
.contact-btn--primary:hover{background:#268f6d;transform:translateY(-2px)}
.contact-btn--outline{border:1.5px solid var(--ink);color:var(--ink)}
.contact-btn--outline:hover{border-color:var(--gold);color:var(--gold);transform:translateY(-2px)}
.contact-note{text-align:center;font-size:.8rem;color:var(--ink-faint);margin-top:24px}
.contact-note a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}

/* ---------- contact line ---------- */
.contact-line{
  display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;
  max-width:560px;margin:0 auto 40px;padding:28px 26px;
  background:var(--paper-dim);border:1px solid var(--line);
}
.contact-line__qr img{width:120px;height:120px;background:#fff;border:1px solid var(--line);padding:8px}
.contact-line__label{font-size:.98rem;font-weight:800;margin-bottom:8px}
.contact-line__desc{font-size:.84rem;color:var(--ink-soft);margin-bottom:18px}
@media(min-width:640px){
  .contact-line{flex-direction:row;text-align:left}
  .contact-line__qr{flex-shrink:0}
}

/* ---------- contact form ---------- */
.contact-form{max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.contact-form__hp{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
.contact-form label{display:flex;flex-direction:column;gap:8px;font-size:.85rem;font-weight:700;color:var(--ink)}
.contact-form__label-row{display:inline-flex;align-items:center}
.contact-form input,
.contact-form textarea,
.contact-form select{
  font:inherit;padding:13px 14px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--paper);color:var(--ink);
}
.contact-form input:focus,
.contact-form textarea:focus,
.contact-form select:focus{outline:2px solid var(--gold);outline-offset:1px}
.contact-form textarea{resize:vertical}
.contact-form select{appearance:auto}
.tag{font-size:.66rem;font-weight:700;letter-spacing:.05em;padding:2px 8px;border-radius:100px;margin-left:8px;vertical-align:middle}
.tag--req{background:rgba(201,154,63,.15);color:var(--gold)}
.tag--opt{background:var(--paper-dim);color:var(--ink-faint);border:1px solid var(--line)}

.form-status{
  max-width:560px;margin:0 auto 24px;padding:14px 18px;
  border-radius:var(--radius);font-size:.85rem;font-weight:700;text-align:center;
}
.form-status--ok{background:rgba(47,179,135,.12);color:var(--mint)}
.form-status--error{background:rgba(201,59,46,.1);color:#c23b2e}

/* ---------- footer ---------- */
.footer{background:var(--navy);color:#f0efe8;padding:56px 0 32px;text-align:center}
.footer__inner{max-width:640px;margin:0 auto;padding:0 24px}
.footer__name{font-family:var(--font-display);font-weight:900;font-size:1.05rem;margin-bottom:14px}
.footer__tagline{font-size:.82rem;color:#c7c4d8;margin-bottom:18px;line-height:1.9}
.footer__contact{font-size:.82rem;margin-bottom:16px}
.footer__contact a{text-decoration:underline;text-underline-offset:3px}
.footer__keywords{font-size:.68rem;color:#7d7a92;line-height:1.8;max-width:520px;margin:0 auto 20px}
.footer__copy{font-size:.7rem;color:#8a87a0}
