/* Somnio 共通スタイルシート */
  :root{
    --bg: #EDF0E6;
    --surface: #FFFFFF;
    --surface-warm: #F7F5EE;
    --ink: #1E2B26;
    --ink-soft: #5B6A62;
    --primary: #2F5D53;
    --primary-dark: #1F433B;
    --primary-soft: #DCE7E2;
    --accent: #C98A3E;
    --accent-soft: #F1DBB4;
    --line: #D3DAD0;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0; background:var(--bg); color:var(--ink);
    font-family:'Zen Kaku Gothic New', sans-serif;
    line-height:1.75; -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3{font-family:'Zen Old Mincho', serif; font-weight:700; margin:0;}
  p{margin:0;}
  a{color:inherit;}
  img{max-width:100%; display:block;}
  .wrap{max-width:1040px; margin:0 auto; padding:0 24px;}
  .wrap-narrow{max-width:760px; margin:0 auto; padding:0 24px;}

  /* ---- header ---- */
  header{
    position:sticky; top:0; z-index:50;
    background:rgba(237,240,230,0.92); backdrop-filter:blur(6px);
    border-bottom:1px solid var(--line);
  }
  .nav-row{display:flex; align-items:center; justify-content:space-between; padding:14px 24px; max-width:1040px; margin:0 auto;}
  .wordmark{font-family:'Zen Old Mincho', serif; font-weight:700; font-size:19px; color:var(--primary-dark); text-decoration:none; letter-spacing:.02em;}
  .wordmark span{color:var(--accent);}
  nav.links{display:flex; gap:26px; font-size:14px;}
  nav.links a{text-decoration:none; color:var(--ink-soft); font-weight:500;}
  nav.links a:hover{color:var(--primary);}
  .nav-phone{font-size:13.5px; font-weight:700; color:var(--primary-dark); text-decoration:none; white-space:nowrap;}
  .nav-toggle{display:none;}
  @media (max-width:760px){
    nav.links{display:none;}
  }

  /* ---- hero ---- */
  .hero{position:relative; overflow:hidden; padding:76px 24px 90px; background:var(--primary); text-align:center;}
  .hero-river{position:absolute; inset:0; width:100%; height:100%; opacity:.14;}
  .hero-inner{position:relative; z-index:1; max-width:760px; margin:0 auto;}
  .hero-eyebrow{color:#DCE7E2; font-size:13.5px; font-weight:700; letter-spacing:.08em; margin-bottom:18px;}
  .hero h1{color:#fff; font-size:clamp(23px,6vw,44px); line-height:1.55; margin:0 auto;}
  .hero-sub{color:#E7EDE7; font-size:15.5px; max-width:34em; margin:22px auto 0; line-height:1.9;}
  .hero-actions{display:flex; gap:12px; margin-top:34px; flex-wrap:wrap; justify-content:center;}
  .btn{
    display:inline-block; text-decoration:none; border-radius:999px; padding:13px 26px;
    font-weight:700; font-size:14.5px; transition:.15s; border:1.5px solid transparent;
  }
  .btn-accent{background:var(--accent); color:#2B1C08;}
  .btn-accent:hover{background:#B87A32;}
  .btn-outline{border-color:rgba(255,255,255,.55); color:#fff;}
  .btn-outline:hover{background:rgba(255,255,255,.12);}
  .hero-meta{display:flex; gap:28px; margin-top:46px; flex-wrap:wrap; color:#DCE7E2; font-size:13px; justify-content:center;}
  .hero-meta strong{display:block; color:#fff; font-family:'Zen Old Mincho', serif; font-size:22px; font-weight:700; margin-bottom:2px;}

  /* ---- section shell ---- */
  section{padding:78px 0;}
  .section-head{max-width:620px; margin:0 auto 44px; text-align:center;}
  .eyebrow{color:var(--accent); font-weight:700; font-size:13px; letter-spacing:.04em; margin-bottom:10px;}
  .section-head h2{font-size:clamp(24px,3vw,32px); color:var(--primary-dark); line-height:1.5;}
  .section-lead{color:var(--ink-soft); font-size:15px; margin:14px auto 0; max-width:52ch;}

  /* ---- about ---- */
  .about{background:var(--surface);}
  .about-grid{display:grid; grid-template-columns:200px 1fr; gap:40px; align-items:start;}
  .about-portrait{
    width:200px; height:200px; border-radius:50%; background:var(--primary-soft);
    display:flex; align-items:center; justify-content:center; color:var(--primary-dark);
    font-family:'Zen Old Mincho', serif; font-size:15px; text-align:center; line-height:1.6; padding:12px;
  }
  .about-name{font-size:22px; margin-bottom:4px;}
  .about-role{color:var(--ink-soft); font-size:13.5px; margin-bottom:20px;}
  .credential-list{list-style:none; margin:22px 0 0; padding:0; display:grid; gap:10px;}
  .credential-list li{display:flex; gap:10px; font-size:14px; color:var(--ink-soft); align-items:baseline;}
  .credential-list li::before{content:"—"; color:var(--accent); flex-shrink:0;}
  @media (max-width:640px){ .about-grid{grid-template-columns:1fr; justify-items:center; text-align:center;} .credential-list li{justify-content:center;} }

  /* ---- brands ---- */
  .brands{background:var(--bg);}
  .brand-cards{display:grid; grid-template-columns:repeat(3,1fr); gap:22px;}
  .brand-card{
    background:var(--surface); border:1px solid var(--line); border-radius:18px;
    padding:28px 24px; display:flex; flex-direction:column;
  }
  .brand-card .tag{
    display:inline-block; font-size:11.5px; font-weight:700; color:var(--primary-dark);
    background:var(--primary-soft); padding:4px 11px; border-radius:999px; margin-bottom:16px; align-self:flex-start;
  }
  .brand-card h3{font-size:19px; color:var(--primary-dark); margin-bottom:6px; line-height:1.5;}
  .brand-card .desc{font-size:13.5px; color:var(--ink-soft); margin-bottom:20px; line-height:1.8;}
  .price-table{border-top:1px solid var(--line); margin-top:auto; padding-top:14px;}
  .price-row{display:flex; justify-content:space-between; gap:10px; font-size:13px; padding:6px 0; color:var(--ink);}
  .price-row .label{color:var(--ink-soft);}
  .price-row .value{font-weight:700; white-space:nowrap; text-align:right;}
  .price-row-stacked{padding:8px 0; font-size:13px; color:var(--ink);}
  .price-row-stacked .label{color:var(--ink-soft); margin-bottom:3px;}
  .price-row-stacked .value{font-weight:700;}
  @media (max-width:860px){ .brand-cards{grid-template-columns:1fr;} }

  /* ---- access ---- */
  .access{background:var(--surface);}
  .access-grid{display:grid; grid-template-columns:1fr 1fr; gap:40px;}
  .access-card{background:var(--surface-warm); border-radius:16px; padding:26px;}
  .access-card h3{font-size:16px; color:var(--primary-dark); margin-bottom:10px;}
  .access-card p{font-size:14px; color:var(--ink-soft); line-height:1.9;}
  .access-detail{margin-top:30px; display:grid; gap:10px; font-size:14px;}
  .access-detail .row{display:flex; gap:14px;}
  .access-detail .k{width:80px; flex-shrink:0; color:var(--ink-soft); font-size:12.5px; padding-top:2px;}
  @media (max-width:760px){ .access-grid{grid-template-columns:1fr;} }

  /* ---- voices ---- */
  .voices{background:var(--bg);}
  .voice-empty{
    border:1.5px dashed var(--line); border-radius:16px; padding:40px 28px; text-align:center;
    color:var(--ink-soft); font-size:14px; background:var(--surface-warm);
  }
  .voice-empty strong{display:block; font-family:'Zen Old Mincho', serif; color:var(--primary-dark); font-size:17px; font-weight:700; margin-bottom:8px;}

  /* ---- faq ---- */
  .faq{background:var(--surface);}
  .faq-item{border-bottom:1px solid var(--line);}
  .faq-item:first-child{border-top:1px solid var(--line);}
  .faq-q{
    width:100%; text-align:left; background:none; border:none; cursor:pointer;
    display:flex; justify-content:space-between; align-items:center; gap:16px;
    padding:20px 2px; font-family:inherit; font-size:15px; font-weight:700; color:var(--ink);
  }
  .faq-q .plus{font-size:20px; color:var(--accent); font-weight:400; flex-shrink:0; transition:transform .2s;}
  .faq-item.open .faq-q .plus{transform:rotate(45deg);}
  .faq-a{max-height:0; overflow:hidden; transition:max-height .25s ease;}
  .faq-a-inner{padding:0 2px 20px; font-size:14px; color:var(--ink-soft); line-height:1.85; max-width:62ch;}

  /* ---- cta band ---- */
  .cta-band{background:var(--primary-dark); color:#fff; padding:64px 24px; text-align:center;}
  .cta-band h2{color:#fff; font-size:clamp(22px,3vw,28px); margin-bottom:14px;}
  .cta-band p{color:#D8E2DD; font-size:14.5px; max-width:44ch; margin:0 auto 28px;}

  footer{background:var(--ink); color:#B9C4BD; padding:40px 24px 30px; font-size:12.5px;}
  .footer-inner{max-width:1040px; margin:0 auto; display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px;}
  .footer-inner a{color:#B9C4BD; text-decoration:none;}

  /* ---- breadcrumb ---- */
  .breadcrumb{padding:20px 24px 0; font-size:12.5px; color:var(--ink-soft);}
  .breadcrumb .inner{max-width:1040px; margin:0 auto;}
  .breadcrumb a{color:var(--ink-soft); text-decoration:none;}
  .breadcrumb a:hover{color:var(--primary);}
  .breadcrumb .sep{margin:0 6px; color:var(--line);}

  /* ---- brand hero ---- */
  .brand-hero{position:relative; overflow:hidden; padding:46px 24px 64px; background:var(--primary); text-align:center;}
  .brand-hero-inner{position:relative; z-index:1; max-width:760px; margin:0 auto;}
  .brand-hero .tag{
    display:inline-block; font-size:12px; font-weight:700; color:#fff;
    background:rgba(255,255,255,.16); padding:5px 14px; border-radius:999px; margin-bottom:18px;
  }
  .brand-hero h1{color:#fff; font-size:clamp(24px,5vw,38px); line-height:1.5; margin:0 auto;}
  .mobile-break{display:none;}
  @media (max-width:640px){ .mobile-break{display:block;} }
  .brand-catch{
    font-family:'Zen Old Mincho', serif; font-weight:700; color:var(--accent-soft);
    font-size:clamp(16px,2.4vw,20px); margin:16px auto 0; max-width:30em;
  }
  .brand-hero p{color:#E7EDE7; font-size:15px; max-width:42em; margin:20px auto 0; line-height:1.85;}
  .brand-body p{margin-bottom:14px;}
  .brand-body p:last-child{margin-bottom:0;}

  /* ---- brand detail sections ---- */
  .detail-block{padding:64px 0; border-bottom:1px solid var(--line);}
  .detail-block:last-of-type{border-bottom:none;}
  .detail-grid{display:grid; grid-template-columns:220px 1fr; gap:36px;}
  .detail-grid .k{font-size:13px; font-weight:700; color:var(--accent); letter-spacing:.02em;}
  .detail-grid .v{font-size:14.5px; color:var(--ink-soft); line-height:1.9;}
  @media (max-width:680px){ .detail-grid{grid-template-columns:1fr; gap:8px;} }

  .full-price-table{width:100%; border-collapse:collapse; margin-top:8px;}
  .full-price-table th{
    text-align:left; font-size:12px; color:var(--ink-soft); font-weight:700;
    padding:0 0 12px; border-bottom:1.5px solid var(--line);
  }
  .full-price-table td{
    padding:16px 0; border-bottom:1px solid var(--line); font-size:14.5px; vertical-align:top;
  }
  .full-price-table td.price{font-weight:700; text-align:right; white-space:nowrap;}
  .full-price-table td.svc{color:var(--ink-soft); font-size:13px; padding-top:4px;}

  .brand-nav{background:var(--surface-warm); padding:28px 24px;}
  .brand-nav .inner{max-width:1040px; margin:0 auto; display:flex; gap:14px; flex-wrap:wrap; align-items:center;}
  .brand-nav .label{font-size:12.5px; color:var(--ink-soft); margin-right:6px;}
  .brand-nav a.pill{
    display:inline-block; font-size:13px; font-weight:700; color:var(--primary-dark);
    background:#fff; border:1px solid var(--line); padding:8px 16px; border-radius:999px; text-decoration:none;
  }
  .brand-nav a.pill.current{background:var(--primary); color:#fff; border-color:var(--primary);}
  .brand-nav a.pill:hover{border-color:var(--primary);}

  .brand-cards a.card-link{text-decoration:none; color:inherit; display:block;}
  .brand-card .more{margin-top:16px; font-size:13px; font-weight:700; color:var(--primary);}
