/*
 * yunohata theme — main stylesheet
 * Ported from the CodePen mock (dist/style.css). Google Fonts are
 * enqueued separately in functions.php instead of @import for performance.
 * SPA-only rules (.page / .is-active / fade keyframes) were dropped since
 * each "page" is now a real WordPress template/URL instead of a JS route.
 */

:root{
  --bg:#f5f0e9;
  --bg-soft:#fcf8f3;
  --paper:rgba(255,253,249,.92);
  --paper-solid:#fffdf9;
  --text:#2f2a26;
  --muted:#6d655d;
  --line:#dbd0c2;
  --line-soft:rgba(90,76,61,.12);
  --accent:#5b4b3c;
  --accent-deep:#3f342b;
  --gold:#9d825d;
  --white:#ffffff;
  --shadow:0 18px 42px rgba(42,34,28,.05);
  --shadow-soft:0 8px 20px rgba(42,34,28,.035);
  --radius:22px;
  --container:1180px;
  --header-height:88px;
}

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

html,
body{
  margin:0;
  padding:0;
}

html{
  scroll-behavior:smooth;
}

body{
  font-family:"Manrope","Noto Sans JP",sans-serif;
  color:var(--text);
  background:
    linear-gradient(180deg, rgba(255,255,255,.24), rgba(255,255,255,0)),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-soft) 100%);
  line-height:1.9;
  letter-spacing:.01em;
  overflow-x:hidden;
}

a{
  color:inherit;
  text-decoration:none;
}

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

button,
input,
textarea,
select{
  font:inherit;
}

.container{
  width:min(calc(100% - 32px), var(--container));
  margin:0 auto;
}

.header{
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:100;
  height:var(--header-height);
  background:rgba(252,248,243,.88);
  backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(91,75,60,.08);
}

.header-inner{
  min-height:var(--header-height);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}

.brand{
  display:flex;
  align-items:center;
  flex-shrink:0;
}

.brand-logo{
  height:44px;
  width:auto;
}

.global-nav{
  display:flex;
  align-items:center;
  gap:8px;
}

.global-nav a{
  padding:10px 14px;
  border-radius:999px;
  color:var(--muted);
  font-size:14px;
  transition:.25s ease;
}

.global-nav a:hover,
.global-nav a.is-current{
  color:var(--accent-deep);
  background:rgba(91,75,60,.06);
}

/* Recruitment link: bordered + tinted so it stands out from the rest of the nav. */
.global-nav a.nav-highlight{
  border:1.5px solid var(--gold);
  color:var(--accent-deep);
  font-weight:700;
  background:rgba(157,130,93,.12);
}

.global-nav a.nav-highlight:hover,
.global-nav a.nav-highlight.is-current{
  background:var(--gold);
  color:#fff;
}

.menu-toggle{
  display:none;
  border:1px solid rgba(91,75,60,.14);
  background:#fff;
  color:var(--accent-deep);
  border-radius:10px;
  padding:10px 12px;
  font-weight:700;
  cursor:pointer;
}

.main{
  padding-top:var(--header-height);
}

.hero{
  padding:56px 0 30px;
}

.hero-layout,
.image-copy-layout{
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:40px;
  align-items:center;
}

.image-copy-layout.reverse{
  grid-template-columns:.95fr 1.05fr;
}

.hero-copy{
  padding:18px 0;
}

/* Mobile-only full-bleed FV with the catch copy overlaid on the photo;
   swapped in for .hero-layout below the 760px breakpoint. Hidden by
   default so desktop/tablet keep the side-by-side layout above. The
   CTA button sits below the photo instead (.hero-mobile-actions),
   also hidden until that breakpoint. */
.hero-mobile,
.hero-mobile-actions{
  display:none;
}

.hero h1,
.page-hero h1,
.section-title-block h2,
.section-head h2,
.image-copy h2,
.cta-content h2,
.info-card h3,
.feature-body h3,
.news-content h3,
.contact-card h3,
.footer h2{
  font-family:"Noto Serif JP",serif;
  font-weight:600;
  color:var(--accent-deep);
  letter-spacing:.03em;
  line-height:1.35;
}

.hero h1{
  margin:0 0 18px;
  /* Fluid so the longest manually broken line ("静かに、ていねいに支
     える。", 13 characters) always fits its container width, instead
     of a few fixed breakpoint sizes that leave gaps at in-between
     viewport widths. */
  font-size:clamp(22px, 7.14vw - 2.3px, 38px);
  line-height:1.24;
}

.lead{
  margin:0;
  color:var(--muted);
  font-size:16px;
}

.hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin-top:28px;
}

.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
  padding:14px 24px;
  border-radius:999px;
  border:1px solid transparent;
  font-weight:700;
  transition:.25s ease;
  cursor:pointer;
}

.button-primary{
  background:linear-gradient(180deg, #5b4b3c 0%, #483b2f 100%);
  color:#fff;
  box-shadow:0 12px 24px rgba(63,52,43,.12);
}

.button-primary:hover{
  transform:translateY(-1px);
}

.button-secondary{
  background:transparent;
  color:var(--accent-deep);
  border-color:rgba(63,52,43,.18);
}

.button-secondary:hover{
  background:rgba(91,75,60,.05);
}

.button-white{
  background:#fff;
  color:var(--accent-deep);
}

.button-white-outline{
  background:transparent;
  color:#fff;
  border-color:rgba(255,255,255,.38);
}

.button-white-outline:hover{
  background:rgba(255,255,255,.08);
}

.photo-frame{
  background:var(--paper);
  border:1px solid var(--line-soft);
  border-radius:var(--radius);
  padding:16px;
  box-shadow:var(--shadow-soft);
}

.photo-frame img{
  border-radius:14px;
  width:100%;
}

/* Real photos come in mixed aspect ratios; force a uniform crop so grids
   of them (home page's 3-up strip, facility's 6-up gallery) line up at
   the same height instead of each column sizing to its own photo. */
.gallery-grid .photo-frame img{
  aspect-ratio:3 / 2;
  object-fit:cover;
}

.large-frame{
  padding:18px;
}

.placeholder{
  border-radius:18px;
  min-height:220px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  color:#666;
  font-weight:700;
  letter-spacing:.08em;
  padding:24px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,0)),
    repeating-linear-gradient(135deg, #d9d9d9 0 18px, #c9c9c9 18px 36px);
}

.placeholder.tall{
  min-height:540px;
}

.placeholder.medium{
  min-height:250px;
}

.summary-strip{
  padding:18px 0 0;
}

.summary-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}

.summary-item{
  padding:24px 18px;
  text-align:center;
  position:relative;
}

.summary-item:not(:last-child)::after{
  content:"";
  position:absolute;
  top:22px;
  right:0;
  bottom:22px;
  width:1px;
  background:var(--line);
}

.summary-item strong{
  display:block;
  font-family:"Noto Serif JP",serif;
  font-size:26px;
  color:var(--accent-deep);
  margin-bottom:6px;
}

.summary-item span{
  display:block;
  color:var(--muted);
  font-size:13px;
}

.section{
  padding:38px 0 82px;
}

.section-soft{
  background:rgba(255,255,255,.3);
  border-top:1px solid rgba(91,75,60,.06);
  border-bottom:1px solid rgba(91,75,60,.06);
}

/* Text-beside-text layout (heading block + copy block): always 1 column. */
.intro-layout{
  display:grid;
  grid-template-columns:1fr;
  gap:24px;
  align-items:start;
}

.section-title-block h2,
.section-head h2,
.cta-content h2{
  margin:0 0 14px;
  font-size:40px;
}

/* .image-copy sits in a narrower ~541px column (still 2-column at
   desktop), so its longest manually-broken line ("ゆっくりと時間が流
   れる場所。", 14 characters) needs a smaller size to fit without
   wrapping again before its <br>. */
.image-copy h2{
  margin:0 0 14px;
  font-size:34px;
}

.section-label{
  display:inline-flex;
  align-items:center;
  padding:7px 13px;
  border-radius:999px;
  background:rgba(157,130,93,.1);
  color:var(--gold);
  font-size:12px;
  font-weight:700;
  letter-spacing:.08em;
  margin-bottom:14px;
}

.section-label.light{
  background:rgba(255,255,255,.12);
  color:rgba(255,255,255,.82);
}

.section-text-block p,
.image-copy p,
.cta-content p,
.info-card p,
.feature-body p,
.news-content p,
.article-card p,
.contact-card p{
  margin:0 0 14px;
  color:var(--muted);
}

.section-head{
  margin-bottom:28px;
}

.section-head.center{
  text-align:center;
}

/* text-align only centers inline content; the heading's own box (capped
   by the max-width rule above) needs auto margins to sit centered too,
   otherwise it hugs the left edge and wraps lopsidedly. */
.section-head.center h1,
.section-head.center h2,
.section-head.center h3{
  margin-left:auto;
  margin-right:auto;
}

.service-panels{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
}

.service-panel{
  background:var(--paper);
  border:1px solid var(--line-soft);
  border-radius:22px;
  padding:30px 26px;
  box-shadow:var(--shadow-soft);
}

.service-panel h3{
  margin:0 0 12px;
  font-size:30px;
  font-family:"Noto Serif JP",serif;
  color:var(--accent-deep);
}

.service-panel p{
  margin:0;
  color:var(--muted);
}

.feature-list{
  display:flex;
  flex-direction:column;
  border-top:1px solid var(--line);
}

.feature-row{
  display:grid;
  grid-template-columns:72px 1fr;
  gap:22px;
  padding:24px 0;
  border-bottom:1px solid var(--line);
}

.feature-no{
  font-family:"Noto Serif JP",serif;
  font-size:28px;
  color:var(--gold);
  line-height:1.1;
}

.feature-body h3{
  margin:0 0 10px;
  font-size:28px;
}

.feature-body p{
  margin:0;
}

.cta-band{
  background:linear-gradient(135deg, #3f342b 0%, #544536 55%, #705c47 100%);
  color:#fff;
  border-radius:28px;
  padding:40px;
  box-shadow:0 20px 44px rgba(42,34,28,.12);
}

.cta-content h2{
  color:#fff;
}

.cta-content p{
  color:rgba(255,255,255,.88);
}

.page-hero{
  padding:54px 0 20px;
}

.page-hero h1{
  margin:0 0 14px;
  font-size:48px;
}

.narrow{
  max-width:920px;
}

/* Card-beside-card layout (text content cards): always 1 column. */
.card-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:22px;
}

.gallery-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
}

.info-card,
.table-card,
.article-card,
.contact-card,
.news-block{
  background:var(--paper);
  border:1px solid var(--line-soft);
  border-radius:22px;
  box-shadow:var(--shadow-soft);
}

.info-card,
.table-card,
.article-card,
.contact-card{
  padding:30px;
}

.info-card h3,
.news-content h3,
.contact-card h3{
  margin:0 0 12px;
  font-size:28px;
}

.mini-list{
  margin:16px 0 0;
  padding-left:18px;
  color:var(--muted);
}

.mini-list.vertical{
  margin-top:18px;
}

.table-card.small{
  height:100%;
}

.table-card h3{
  margin:0;
  font-size:30px;
}

.pdf-card{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:18px;
  margin-top:20px;
  padding:20px;
  border-radius:18px;
  background:rgba(255,255,255,.6);
  border:1px solid var(--line-soft);
}

.pdf-card-icon{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  width:56px;
  height:56px;
  border-radius:14px;
  background:var(--accent-deep);
  color:#fff;
  font-family:"Noto Serif JP",serif;
  font-weight:700;
  font-size:14px;
  letter-spacing:.04em;
}

.pdf-card-body{
  flex:1 1 200px;
}

.pdf-card-title{
  margin:0;
  font-weight:700;
  color:var(--accent-deep);
}

.pdf-card-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.pdf-card-actions .button{
  min-height:auto;
  padding:10px 18px;
  font-size:13px;
}

.pdf-card-empty{
  color:var(--muted);
  font-size:14px;
}

.note{
  margin-top:16px;
  color:var(--muted);
  font-size:14px;
}

.news-stack{
  display:flex;
  flex-direction:column;
  gap:22px;
}

.news-block{
  display:grid;
  grid-template-columns:320px 1fr;
  gap:24px;
  align-items:center;
  padding:18px;
}

.news-content{
  padding-right:8px;
}

.news-meta{
  margin-bottom:10px;
  color:var(--gold);
  font-size:13px;
  font-weight:700;
  letter-spacing:.06em;
}

.text-link{
  display:inline-block;
  margin-top:8px;
  color:var(--accent-deep);
  font-weight:700;
  border-bottom:1px solid rgba(91,75,60,.24);
}

.form-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:18px;
}

.field{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.field.full{
  grid-column:1 / -1;
}

.form-notice{
  margin:0 0 20px;
  padding:14px 18px;
  border-radius:14px;
  font-size:14px;
  font-weight:700;
}

.form-notice.success{
  background:rgba(93,138,93,.12);
  color:#3c6b3c;
}

.form-notice.error{
  background:rgba(178,86,73,.12);
  color:#a4402f;
}

label{
  font-size:14px;
  font-weight:700;
  color:var(--accent-deep);
}

input,
textarea,
select{
  width:100%;
  padding:14px 16px;
  border-radius:16px;
  border:1px solid rgba(91,75,60,.12);
  background:rgba(255,255,255,.92);
  color:var(--text);
  outline:none;
  transition:.2s ease;
}

input:focus,
textarea:focus,
select:focus{
  border-color:rgba(157,130,93,.8);
  box-shadow:0 0 0 4px rgba(157,130,93,.12);
}

textarea{
  min-height:180px;
  resize:vertical;
}

.mt24{
  margin-top:24px;
}

/* Contact Form 7 markup: our .field/.form-grid wrapping divs sit around
   CF7's own tags, so the shared input/textarea/select rules above already
   style the controls — this only covers CF7's own wrapper/response elements. */
.wpcf7-form-control-wrap{
  display:block;
}

.wpcf7-response-output{
  margin:0 0 20px;
  padding:14px 18px;
  border-radius:14px;
  font-size:14px;
  font-weight:700;
  border:none !important;
}

.wpcf7-form.sent .wpcf7-response-output{
  background:rgba(93,138,93,.12);
  color:#3c6b3c;
}

.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output,
.wpcf7-form.aborted .wpcf7-response-output,
.wpcf7-form.spam .wpcf7-response-output{
  background:rgba(178,86,73,.12);
  color:#a4402f;
}

.wpcf7-not-valid-tip{
  display:block;
  margin-top:6px;
  color:#a4402f;
  font-size:12px;
  font-weight:700;
}

.footer{
  margin-top:34px;
  padding:52px 0;
  background:linear-gradient(180deg, #2f2822 0%, #26201b 100%);
  color:rgba(255,255,255,.86);
}

.footer-grid{
  display:grid;
  grid-template-columns:1.1fr .9fr .8fr;
  gap:28px;
}

.footer-sub{
  margin:0 0 8px;
  font-size:11px;
  letter-spacing:.16em;
  color:#d2c0a6;
}

.footer h2{
  margin:0 0 12px;
  font-size:38px;
  color:#fff;
}

.footer h3{
  margin:0 0 12px;
  font-size:20px;
  font-family:"Noto Serif JP",serif;
  color:#fff;
}

.footer p{
  margin:0 0 8px;
}

.footer a{
  color:rgba(255,255,255,.86);
}

.footer-map{
  margin-top:40px;
  border-radius:22px;
  overflow:hidden;
  box-shadow:0 12px 28px rgba(0,0,0,.25);
}

.footer-map iframe{
  display:block;
  width:100%;
  height:320px;
  border:0;
}

@media (max-width: 1100px){
  .hero-layout,
  .image-copy-layout{
    grid-template-columns:1fr;
  }

  .hero-visual{
    order:-1;
  }

  .service-panels,
  .gallery-grid{
    grid-template-columns:1fr 1fr;
  }

  .summary-grid{
    grid-template-columns:1fr 1fr;
  }

  .summary-item:nth-child(2)::after{
    display:none;
  }

  .news-block{
    grid-template-columns:1fr;
  }

  .footer-grid{
    grid-template-columns:1fr 1fr;
  }
}

@media (max-width: 760px){
  .hero{
    padding:0;
  }

  .hero-layout{
    display:none;
  }

  .hero-mobile{
    display:block;
    position:relative;
    width:100vw;
    margin-left:calc(50% - 50vw);
  }

  .hero-mobile-img{
    display:block;
    width:100%;
    height:auto;
  }

  .hero-mobile-copy{
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    padding:24px 20px 32px;
    background:linear-gradient(to top, rgba(20,15,10,.82) 0%, rgba(20,15,10,.6) 45%, rgba(20,15,10,.2) 80%, rgba(20,15,10,0) 100%);
  }

  .hero-mobile-copy h1{
    color:#fff;
  }

  .hero-mobile-copy .lead{
    color:rgba(255,255,255,.92);
  }

  .hero-mobile-actions{
    display:block;
    padding:24px 0 8px;
  }

  .menu-toggle{
    display:inline-flex;
  }

  .global-nav{
    position:absolute;
    top:var(--header-height);
    left:0;
    right:0;
    display:none;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    background:rgba(252,248,243,.98);
    border-bottom:1px solid rgba(91,75,60,.08);
    padding:12px 16px 18px;
  }

  .global-nav.is-open{
    display:flex;
  }

  .global-nav a{
    width:100%;
    padding:12px 14px;
  }

  .page-hero h1,
  .section-title-block h2,
  .section-head h2{
    font-size:32px;
  }

  .image-copy h2{
    font-size:30px;
  }

  /* .cta-band keeps its own padding regardless of viewport, so its
     heading needs a smaller size than the page-level ones above to
     fit long manually-broken lines (e.g. pricing's 15-character
     second line) inside that narrower, padded box. */
  .cta-content h2{
    font-size:24px;
  }

  .service-panels,
  .gallery-grid,
  .form-grid,
  .summary-grid{
    grid-template-columns:1fr;
  }

  .feature-row{
    grid-template-columns:56px 1fr;
  }

  .summary-item::after{
    display:none !important;
  }

  .placeholder.tall{
    min-height:380px;
  }

  .info-card,
  .table-card,
  .article-card,
  .contact-card,
  .cta-band{
    padding:24px;
  }

  .footer-grid{
    grid-template-columns:1fr;
  }

  .footer-map{
    margin-top:28px;
  }

  .footer-map iframe{
    height:240px;
  }
}

/* Additional breakpoint: the CodePen mock only handled down to ~760px.
   Small phones (< 480px) still need tighter type/spacing and full-width
   tap targets, so this project's own addition covers that gap. */
@media (max-width: 480px){
  :root{
    --header-height:72px;
  }

  .brand-logo{
    height:32px;
  }

  .hero{
    padding:36px 0 20px;
  }

  .page-hero{
    padding:40px 0 16px;
  }

  .page-hero h1{
    font-size:26px;
  }

  .section-title-block h2,
  .section-head h2{
    font-size:26px;
  }

  .image-copy h2{
    font-size:22px;
  }

  .cta-content h2{
    font-size:17px;
  }

  .lead{
    font-size:15px;
  }

  .hero-actions{
    flex-direction:column;
    align-items:stretch;
  }

  .hero-actions .button{
    width:100%;
  }

  .cta-band{
    padding:26px 20px;
  }

  .service-panel h3{
    font-size:24px;
  }

  .feature-body h3{
    font-size:22px;
  }

  .info-card h3,
  .news-content h3,
  .contact-card h3{
    font-size:22px;
  }

  .footer h2{
    font-size:30px;
  }

  .placeholder.tall{
    min-height:260px;
  }

  .placeholder.medium{
    min-height:200px;
  }

  .section{
    padding:28px 0 56px;
  }

  .pdf-card{
    flex-direction:column;
    align-items:flex-start;
  }

  .pdf-card-actions{
    width:100%;
  }

  .pdf-card-actions .button{
    flex:1 1 auto;
  }
}
