:root{
  --ink:#0a0a0a;
  --paper:#f4f0e8;
  --paper-dark:#ebe5d7;
  --gold:#a8875a;
  --gold-light:#d4a574;
  --vermillion:#b23a2e;
  --ink-soft:#2a2a2a;
  --line:rgba(10,10,10,.12);
  --muted:#6b6558;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:'Noto Sans JP',sans-serif;
  background:var(--paper);color:var(--ink);
  font-weight:300;line-height:1.75;overflow-x:hidden;
}
::selection{background:var(--ink);color:var(--gold-light)}

/* Side Rail */
.side-rail{
  position:fixed;top:0;left:0;height:100vh;width:56px;
  border-right:1px solid var(--line);background:var(--paper);z-index:90;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;
  padding:24px 0;
}
.side-rail .mark{font-family:'Shippori Mincho',serif;font-weight:800;font-size:26px;writing-mode:vertical-rl}
.side-rail .mark span{color:var(--vermillion)}
.side-rail .vlabel{writing-mode:vertical-rl;font-family:'Shippori Mincho',serif;font-size:11px;letter-spacing:.4em;color:var(--muted)}
.side-rail .year{writing-mode:vertical-rl;font-family:'Cormorant Garamond',serif;font-size:12px;letter-spacing:.3em}

/* Header */
header{
  position:fixed;top:0;left:56px;right:0;z-index:80;
  padding:22px 48px;display:flex;justify-content:space-between;align-items:center;
  background:rgba(244,240,232,.85);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.logo{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink)}
.logo-mark{
  width:44px;height:44px;position:relative;display:flex;align-items:center;justify-content:center;
  background:var(--ink);
}
.logo-mark::before{content:'';position:absolute;inset:3px;border:1px solid var(--gold-light)}
.logo-mark span{font-family:'Shippori Mincho',serif;font-size:24px;font-weight:700;color:var(--gold-light);line-height:1}
.logo-text{display:flex;flex-direction:column;line-height:1.1}
.logo-text .jp{font-family:'Shippori Mincho',serif;font-size:16px;font-weight:600;letter-spacing:.15em}
.logo-text .en{font-family:'Cormorant Garamond',serif;font-size:10px;letter-spacing:.3em;color:var(--muted);margin-top:3px}

nav ul{display:flex;gap:40px;list-style:none;align-items:center}
nav a{
  text-decoration:none;color:var(--ink);font-family:'Shippori Mincho',serif;
  font-size:13px;font-weight:500;letter-spacing:.15em;position:relative;padding:8px 0;
  transition:color .3s;
}
nav a.current{color:var(--vermillion)}
nav a.current::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:24px;height:1px;background:var(--vermillion)}
nav a:not(.current)::after{
  content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);
  width:0;height:1px;background:var(--vermillion);transition:width .4s;
}
nav a:not(.current):hover{color:var(--vermillion)}
nav a:not(.current):hover::after{width:100%}
.nav-cta{background:var(--ink);color:var(--paper)!important;padding:12px 26px!important;font-size:12px!important;border:1px solid var(--ink);transition:all .3s}
.nav-cta:hover{background:var(--vermillion);border-color:var(--vermillion)}
.nav-cta::after{display:none!important}

.menu-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px}
.menu-toggle span{display:block;width:24px;height:1.5px;background:var(--ink);margin:5px 0;transition:.3s}

main{margin-left:56px}

/* Buttons */
.btn{
  display:inline-flex;align-items:center;gap:14px;padding:18px 36px;text-decoration:none;
  font-family:'Shippori Mincho',serif;font-size:13px;letter-spacing:.2em;font-weight:500;
  transition:all .35s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;cursor:pointer;border:none;
}
.btn-primary{background:var(--ink);color:var(--paper)}
.btn-primary:hover{background:var(--vermillion);transform:translateY(-2px)}
.btn-ghost{color:var(--ink);border-bottom:1px solid var(--ink);padding:18px 4px}
.btn-ghost:hover{color:var(--vermillion);border-color:var(--vermillion)}
.btn .arrow{font-family:'Cormorant Garamond',serif;font-size:18px}

/* Section label */
.section-label{
  display:flex;align-items:center;gap:16px;font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:14px;letter-spacing:.3em;color:var(--vermillion);text-transform:uppercase;margin-bottom:28px;
}
.section-label::before{content:'';width:30px;height:1px;background:var(--vermillion)}
.section-label .num{font-family:'Shippori Mincho',serif;font-style:normal;color:var(--ink);font-weight:600}

.big-title{font-family:'Shippori Mincho',serif;font-weight:500;font-size:56px;line-height:1.2;letter-spacing:-.01em;margin-bottom:30px}
.big-title em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--vermillion);font-weight:400}

/* Page Hero */
.page-hero{
  position:relative;padding:180px 48px 100px;overflow:hidden;
  background:linear-gradient(to bottom,var(--paper-dark) 0%,var(--paper) 100%);
  border-bottom:1px solid var(--line);
}
.page-hero-kanji{
  position:absolute;top:-80px;right:-60px;font-family:'Shippori Mincho',serif;
  font-size:36vw;line-height:.85;color:rgba(10,10,10,.04);font-weight:800;
  pointer-events:none;user-select:none;
}
.page-hero-inner{max-width:960px;position:relative;z-index:2}
.breadcrumb{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12px;
  letter-spacing:.3em;color:var(--muted);margin-bottom:40px;
  display:flex;align-items:center;gap:14px;text-transform:uppercase;
}
.breadcrumb a{color:var(--muted);text-decoration:none;transition:color .3s}
.breadcrumb a:hover{color:var(--vermillion)}
.breadcrumb .c{color:var(--ink)}
.page-title{
  font-family:'Shippori Mincho',serif;font-weight:500;
  font-size:clamp(44px,6vw,88px);line-height:1.1;letter-spacing:-.02em;margin-bottom:32px;
}
.page-title em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--vermillion);font-weight:400}
.page-title .en-top{
  display:block;font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:16px;color:var(--muted);letter-spacing:.3em;margin-bottom:20px;font-weight:400;
}
.page-lead{font-size:17px;color:var(--ink-soft);line-height:2;max-width:720px}

/* =========== ABOUT =========== */
.story{
  padding:140px 48px;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;
}
.story-img{position:relative;height:640px}
.story-img img{width:100%;height:100%;object-fit:cover;box-shadow:0 30px 60px rgba(10,10,10,.2)}
.story-img-tag{
  position:absolute;bottom:30px;left:30px;background:var(--paper);padding:14px 20px;
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12px;letter-spacing:.3em;
  border-left:3px solid var(--vermillion);
}
.story-text h2{font-family:'Shippori Mincho',serif;font-weight:500;font-size:56px;line-height:1.2;margin-bottom:30px}
.story-text h2 em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--vermillion);font-weight:400}
.story-text p{font-size:15.5px;color:var(--ink-soft);line-height:2;margin-bottom:22px}

.mission{padding:0 48px 140px}
.mission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--line);border:1px solid var(--line)}
.mission-card{
  background:var(--paper);padding:56px 44px;transition:background .4s;position:relative;
}
.mission-card:hover{background:var(--paper-dark)}
.mission-kanji{
  font-family:'Shippori Mincho',serif;font-size:90px;font-weight:700;color:var(--vermillion);
  line-height:1;margin-bottom:20px;
}
.mission-en{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;
  color:var(--muted);letter-spacing:.3em;margin-bottom:10px;
}
.mission-card h3{font-family:'Shippori Mincho',serif;font-size:26px;font-weight:600;margin-bottom:18px}
.mission-card p{font-size:14.5px;color:var(--ink-soft);line-height:1.95}

/* Timeline */
.timeline-section{padding:140px 48px;background:var(--paper-dark)}
.timeline{max-width:900px;margin:60px auto 0;position:relative}
.timeline::before{
  content:'';position:absolute;left:130px;top:0;bottom:0;width:1px;background:var(--line);
}
.t-item{
  display:grid;grid-template-columns:130px 1fr;gap:40px;
  padding:32px 0;position:relative;align-items:start;
}
.t-item::before{
  content:'';position:absolute;left:125px;top:42px;width:11px;height:11px;border-radius:50%;
  background:var(--paper-dark);border:2px solid var(--vermillion);
}
.t-year{
  font-family:'Cormorant Garamond',serif;font-size:32px;color:var(--vermillion);
  font-weight:500;line-height:1;padding-top:32px;
}
.t-body{padding:30px 0 30px 40px;border-bottom:1px solid var(--line)}
.t-body h4{font-family:'Shippori Mincho',serif;font-size:20px;font-weight:600;margin-bottom:10px}
.t-body p{font-size:14px;color:var(--ink-soft);line-height:1.95}

/* Team */
.team-section{padding:140px 48px}
.team-header{display:grid;grid-template-columns:1.2fr 1fr;gap:60px;margin-bottom:70px;align-items:end}
.team-header p{font-size:15px;color:var(--ink-soft);line-height:2}
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.team-card{background:var(--paper);transition:transform .4s}
.team-card:hover{transform:translateY(-6px)}
.team-ph{height:340px;overflow:hidden;background:#222}
.team-ph img{width:100%;height:100%;object-fit:cover;transition:transform 1s}
.team-card:hover .team-ph img{transform:scale(1.05)}
.team-info{padding:28px 8px 0}
.team-role{font-family:'Shippori Mincho',serif;font-size:11px;letter-spacing:.2em;color:var(--vermillion);margin-bottom:10px}
.team-info h4{font-family:'Shippori Mincho',serif;font-size:22px;font-weight:600;margin-bottom:4px}
.team-en{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;color:var(--muted);letter-spacing:.15em;margin-bottom:14px}
.team-info p{font-size:13px;color:var(--ink-soft);line-height:1.85}

/* Office */
.office{padding:140px 48px;background:var(--ink);color:var(--paper)}
.office-inner{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.office .section-label{color:var(--gold-light)}
.office .section-label::before{background:var(--gold-light)}
.office .section-label .num{color:var(--paper)}
.office h2{font-family:'Shippori Mincho',serif;font-size:56px;font-weight:500;line-height:1.2;margin-bottom:30px}
.office p{font-size:15px;color:rgba(244,240,232,.75);line-height:2;margin-bottom:18px}
.office .btn-primary{background:var(--paper);color:var(--ink);margin-top:20px}
.office .btn-primary:hover{background:var(--vermillion);color:var(--paper)}
.office-gallery{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px;height:540px}
.office-gallery>div{overflow:hidden}
.office-gallery img{width:100%;height:100%;object-fit:cover;transition:transform 1s}
.office-gallery>div:hover img{transform:scale(1.05)}
.og-1{grid-column:span 2}

/* Company Info */
.company-info{padding:140px 48px}
.ci-header{text-align:center;margin-bottom:70px}
.ci-header .section-label{justify-content:center}
.ci-table{max-width:900px;margin:0 auto;border-top:1px solid var(--ink)}
.ci-row{
  display:grid;grid-template-columns:240px 1fr;gap:40px;padding:28px 0;
  border-bottom:1px solid var(--line);align-items:start;
}
.ci-label{
  font-family:'Shippori Mincho',serif;font-size:14px;font-weight:600;
  letter-spacing:.15em;color:var(--vermillion);
}
.ci-val{font-size:15px;color:var(--ink);line-height:1.8}
.ci-val .en{
  display:block;font-family:'Cormorant Garamond',serif;font-style:italic;
  font-size:13px;color:var(--muted);margin-top:4px;letter-spacing:.15em;
}

/* =========== SERVICES =========== */
.svc-approach{padding:140px 48px}
.svc-approach-inner{display:grid;grid-template-columns:1fr 1fr;gap:100px;align-items:center}
.svc-steps{display:flex;flex-direction:column;gap:0}
.svc-step{
  display:grid;grid-template-columns:60px 1fr;gap:30px;
  padding:32px 0;border-bottom:1px solid var(--line);align-items:start;
}
.svc-step:last-child{border-bottom:none}
.svc-step .step-n{
  font-family:'Cormorant Garamond',serif;font-size:28px;font-weight:500;
  color:var(--vermillion);line-height:1;padding-top:6px;
}
.svc-step h4{font-family:'Shippori Mincho',serif;font-size:22px;font-weight:600;margin-bottom:8px}
.svc-step .step-en{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12px;color:var(--muted);letter-spacing:.2em;margin-bottom:14px}
.svc-step p{font-size:14px;color:var(--ink-soft);line-height:1.9}

.svc-detail{padding:0 48px 140px}
.svc-block{
  display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center;
  padding:80px 0;border-top:1px solid var(--line);
}
.svc-block:nth-child(even){grid-template-columns:1fr 1fr}
.svc-block:nth-child(even) .svc-img{order:-1}
.svc-img{height:520px;overflow:hidden;position:relative}
.svc-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s}
.svc-img:hover img{transform:scale(1.06)}
.svc-img .tag{
  position:absolute;top:24px;left:24px;background:var(--paper);padding:8px 16px;
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:11px;
  letter-spacing:.3em;text-transform:uppercase;
}
.svc-info .num-big{
  font-family:'Cormorant Garamond',serif;font-size:80px;color:var(--gold);
  line-height:1;font-weight:500;margin-bottom:10px;
}
.svc-info h3{font-family:'Shippori Mincho',serif;font-size:40px;font-weight:600;margin-bottom:8px;line-height:1.2}
.svc-info .en-label{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--muted);letter-spacing:.25em;margin-bottom:28px}
.svc-info p{font-size:15px;color:var(--ink-soft);line-height:2;margin-bottom:20px}
.svc-features{
  margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:16px 32px;
  padding:24px 0 0;border-top:1px solid var(--line);
}
.svc-feature{
  font-family:'Shippori Mincho',serif;font-size:13px;display:flex;align-items:center;gap:10px;
  color:var(--ink);
}
.svc-feature::before{content:'●';color:var(--vermillion);font-size:9px}

.svc-cta{
  padding:100px 48px;background:var(--ink);color:var(--paper);text-align:center;
}
.svc-cta h2{font-family:'Shippori Mincho',serif;font-size:52px;font-weight:500;line-height:1.2;margin-bottom:20px}
.svc-cta h2 em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--gold-light);font-weight:400}
.svc-cta p{font-size:16px;color:rgba(244,240,232,.7);line-height:1.9;max-width:600px;margin:0 auto 40px}
.svc-cta .btn-primary{background:var(--paper);color:var(--ink)}
.svc-cta .btn-primary:hover{background:var(--vermillion);color:var(--paper)}

/* =========== WORKS =========== */
.works-filter-bar{
  padding:40px 48px;background:var(--paper-dark);border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:40px;flex-wrap:wrap;
}
.works-filter-bar .count{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--muted);letter-spacing:.2em;
}
.works-filter-bar .filters{display:flex;gap:32px;flex-wrap:wrap}
.works-filter-bar button{
  background:none;border:none;cursor:pointer;padding:6px 0;
  font-family:'Shippori Mincho',serif;font-size:13px;letter-spacing:.2em;color:var(--muted);
  border-bottom:1px solid transparent;transition:all .3s;
}
.works-filter-bar button.active,.works-filter-bar button:hover{color:var(--ink);border-color:var(--vermillion)}

.works-grid-section{padding:80px 48px}
.works-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:60px 40px}
.works-grid.featured{grid-template-columns:repeat(12,1fr)}
.w-card{position:relative;cursor:pointer;transition:transform .5s}
.w-card:hover{transform:translateY(-8px)}
.w-card .w-img{overflow:hidden;background:#2a2a2a;position:relative;margin-bottom:24px;aspect-ratio:4/3}
.w-card .w-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s}
.w-card:hover .w-img img{transform:scale(1.07)}
.w-card .w-num{
  position:absolute;top:20px;left:20px;
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;
  color:var(--paper);letter-spacing:.3em;background:rgba(10,10,10,.7);padding:4px 10px;
}
.w-card .w-cat{
  position:absolute;top:20px;right:20px;
  font-family:'Shippori Mincho',serif;font-size:11px;letter-spacing:.2em;
  color:var(--ink);background:var(--paper);padding:5px 12px;
}
.w-card .w-meta-top{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;
  color:var(--muted);letter-spacing:.2em;margin-bottom:10px;
}
.w-card h3{font-family:'Shippori Mincho',serif;font-size:28px;font-weight:600;margin-bottom:6px;line-height:1.3}
.w-card .w-en{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--muted);letter-spacing:.15em;margin-bottom:14px}
.w-card .w-tags{display:flex;gap:10px;flex-wrap:wrap}
.w-card .w-tags span{
  font-size:11px;font-family:'Shippori Mincho',serif;letter-spacing:.15em;
  color:var(--ink);padding:4px 10px;border:1px solid var(--line);
}

.w-card.featured-big{grid-column:span 12}
.w-card.featured-big .w-img{aspect-ratio:21/9}
.w-card.featured-half{grid-column:span 6}
.w-card.featured-half .w-img{aspect-ratio:4/3}

/* =========== CONTACT =========== */
.contact-layout{padding:80px 48px 120px}
.contact-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:80px;
  max-width:1300px;margin:0 auto;
}
.contact-form-wrap{
  background:var(--paper-dark);padding:60px 50px;position:relative;
}
.contact-form-wrap::before{
  content:'問';position:absolute;top:20px;right:30px;
  font-family:'Shippori Mincho',serif;font-size:140px;font-weight:800;
  color:rgba(10,10,10,.04);line-height:.8;pointer-events:none;
}
.contact-form{display:flex;flex-direction:column;gap:24px;position:relative}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.f-field{display:flex;flex-direction:column;gap:10px}
.f-field label{
  font-family:'Shippori Mincho',serif;font-size:12px;font-weight:600;
  letter-spacing:.2em;color:var(--ink);
}
.f-field label .req{color:var(--vermillion);margin-left:4px}
.f-field label .en{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:11px;
  color:var(--muted);letter-spacing:.2em;margin-left:10px;font-weight:400;
}
.f-field input,.f-field select,.f-field textarea{
  background:var(--paper);border:1px solid transparent;padding:16px 18px;
  font-family:'Noto Sans JP',sans-serif;font-size:14px;color:var(--ink);
  transition:border .3s;font-weight:400;
}
.f-field input:focus,.f-field select:focus,.f-field textarea:focus{
  outline:none;border-color:var(--vermillion);
}
.f-field textarea{min-height:160px;resize:vertical;line-height:1.7}
.f-checks{display:flex;flex-direction:column;gap:12px}
.f-check{display:flex;align-items:center;gap:12px;cursor:pointer;font-size:13px;color:var(--ink-soft)}
.f-check input{width:auto;cursor:pointer;accent-color:var(--vermillion)}
.contact-form .btn{margin-top:10px;align-self:flex-start;padding:20px 44px}

.contact-info .section-label{margin-bottom:24px}
.contact-info h2{font-family:'Shippori Mincho',serif;font-size:48px;font-weight:500;line-height:1.2;margin-bottom:26px}
.contact-info h2 em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--vermillion);font-weight:400}
.contact-info>p{font-size:15px;color:var(--ink-soft);line-height:2;margin-bottom:40px}
.contact-cards{display:flex;flex-direction:column;gap:18px}
.contact-card{
  display:grid;grid-template-columns:70px 1fr;gap:22px;align-items:center;
  padding:24px;background:var(--paper-dark);border-left:3px solid var(--vermillion);
  transition:transform .3s;
}
.contact-card:hover{transform:translateX(6px)}
.contact-card .ic{
  width:60px;height:60px;background:var(--ink);color:var(--gold-light);
  display:flex;align-items:center;justify-content:center;
  font-family:'Shippori Mincho',serif;font-size:24px;
}
.contact-card .ct strong{
  display:block;font-family:'Shippori Mincho',serif;font-size:13px;font-weight:600;
  letter-spacing:.15em;color:var(--vermillion);margin-bottom:6px;
}
.contact-card .ct span{font-size:15px;line-height:1.7;color:var(--ink);display:block}
.contact-card .ct .sub{font-size:12px;color:var(--muted);margin-top:4px}

.contact-hours{
  margin-top:24px;padding:24px;background:var(--ink);color:var(--paper);
}
.contact-hours h4{font-family:'Shippori Mincho',serif;font-size:15px;font-weight:600;letter-spacing:.15em;margin-bottom:14px;color:var(--gold-light)}
.contact-hours .row{display:flex;justify-content:space-between;font-size:13px;padding:6px 0;color:rgba(244,240,232,.85)}

/* Map */
.contact-map{
  padding:0 48px 120px;
}
.contact-map-inner{
  display:grid;grid-template-columns:1.3fr 1fr;gap:0;
  max-width:1400px;margin:0 auto;border:1px solid var(--line);
}
.contact-map .mp{
  height:520px;background:var(--paper-dark);position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.contact-map .mp iframe{width:100%;height:100%;border:none}
.contact-map .addr{
  padding:60px 50px;background:var(--paper);display:flex;flex-direction:column;justify-content:center;
}
.contact-map .addr h3{font-family:'Shippori Mincho',serif;font-size:32px;font-weight:600;margin-bottom:12px}
.contact-map .addr .en-label{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--muted);margin-bottom:30px;letter-spacing:.2em}
.contact-map .addr p{font-size:15px;line-height:2;color:var(--ink-soft);margin-bottom:20px}
.contact-map .addr .line{padding:18px 0;border-top:1px solid var(--line);font-size:13px}
.contact-map .addr .line strong{display:block;font-family:'Shippori Mincho',serif;color:var(--vermillion);margin-bottom:4px;letter-spacing:.15em}

/* === Contact page v2 additions === */
.form-head{margin-bottom:40px;padding-bottom:28px;border-bottom:1px solid rgba(10,10,10,.12)}
.form-head .en-top{display:block;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--gold);letter-spacing:.25em;margin-bottom:12px}
.form-head h2{font-family:'Shippori Mincho',serif;font-size:38px;font-weight:500;line-height:1.2;margin-bottom:14px;color:var(--ink)}
.form-head p{font-size:14px;color:var(--ink-soft);line-height:1.8}
.form-head p .req{color:var(--vermillion);font-weight:700}
.f-field.full{grid-column:1/-1}
.f-field.check{margin-top:4px}
.check-lbl{display:flex;gap:12px;align-items:center;cursor:pointer;font-family:'Noto Sans JP',sans-serif;font-size:13px;color:var(--ink-soft);letter-spacing:.02em}
.check-lbl input{width:18px;height:18px;accent-color:var(--vermillion);cursor:pointer}
.form-submit{
  margin-top:18px;align-self:flex-start;background:var(--ink);color:var(--paper);
  border:none;padding:22px 50px;cursor:pointer;display:inline-flex;align-items:center;gap:20px;
  font-family:'Shippori Mincho',serif;transition:all .3s;position:relative;overflow:hidden;
}
.form-submit span{font-size:15px;font-weight:600;letter-spacing:.2em}
.form-submit em{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;color:var(--gold-light);letter-spacing:.15em}
.form-submit:hover{background:var(--vermillion)}
.form-submit:hover em{color:var(--paper)}

/* New contact card variant */
.contact-card{
  display:block;grid-template-columns:none;padding:32px 30px;
  background:var(--paper-dark);border-left:3px solid var(--vermillion);
  position:relative;transition:transform .3s,background .3s;
}
.contact-card:hover{transform:translateX(6px);background:var(--ink);color:var(--paper)}
.contact-card:hover .cc-num,.contact-card:hover .cc-label{color:var(--gold-light)}
.contact-card:hover h3,.contact-card:hover .cc-big,.contact-card:hover p{color:var(--paper)}
.contact-card .cc-num{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;
  color:var(--gold);letter-spacing:.2em;margin-bottom:4px;transition:color .3s;
}
.contact-card .cc-label{
  font-family:'Shippori Mincho',serif;font-size:11px;font-weight:600;
  letter-spacing:.3em;color:var(--muted);margin-bottom:16px;transition:color .3s;
}
.contact-card h3{
  font-family:'Shippori Mincho',serif;font-size:22px;font-weight:500;
  line-height:1.4;margin-bottom:18px;color:var(--ink);transition:color .3s;
}
.contact-card .cc-big{
  font-family:'Shippori Mincho',serif;font-size:24px;font-weight:500;
  color:var(--vermillion);margin-bottom:14px;line-height:1.5;letter-spacing:.02em;
  transition:color .3s;word-break:break-word;
}
.contact-card .cc-big.cc-mail{font-size:18px}
.contact-card .cc-big.cc-addr{font-size:15px;line-height:1.8}
.contact-card p{font-size:13px;color:var(--ink-soft);line-height:1.8;transition:color .3s}

/* Hours block redesign */
.contact-hours{margin-top:20px;padding:34px 30px;background:var(--ink);color:var(--paper)}
.contact-hours .ch-label{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:13px;
  color:var(--gold-light);letter-spacing:.25em;margin-bottom:8px;
}
.contact-hours h4{
  font-family:'Shippori Mincho',serif;font-size:22px;font-weight:500;
  letter-spacing:.05em;margin-bottom:24px;color:var(--paper);
}
.contact-hours .ch-grid{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}
.contact-hours .ch-row{
  display:flex;justify-content:space-between;align-items:center;
  font-size:14px;padding:12px 0;border-bottom:1px solid rgba(244,240,232,.12);
  color:rgba(244,240,232,.85);
}
.contact-hours .ch-row span{font-family:'Shippori Mincho',serif;letter-spacing:.08em}
.contact-hours .ch-row em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--gold-light);font-size:15px}
.contact-hours .ch-row.closed em{color:var(--vermillion)}
.contact-hours .ch-note{
  font-size:12px;color:rgba(244,240,232,.55);line-height:1.7;
  font-family:'Noto Sans JP',sans-serif;
}

/* Map section v2 */
.contact-map{padding:40px 48px 80px}
.map-head{max-width:1300px;margin:0 auto 50px;padding-bottom:30px;border-bottom:1px solid var(--line)}
.map-head .en-top{display:block;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:14px;color:var(--gold);letter-spacing:.25em;margin-bottom:10px}
.map-head h2{font-family:'Shippori Mincho',serif;font-size:54px;font-weight:500;line-height:1.15;margin-bottom:18px;color:var(--ink)}
.map-head p{font-size:15px;color:var(--ink-soft);line-height:1.9;max-width:660px}

.contact-map-inner{
  display:block;max-width:1300px;margin:0 auto;
  border:1px solid var(--line);overflow:hidden;
}
.contact-map-inner iframe{display:block;width:100%;filter:grayscale(.2) contrast(.95)}

.access-grid{
  max-width:1300px;margin:70px auto 0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  border-top:1px solid var(--line);
}
.access-block{
  padding:44px 40px;border-right:1px solid var(--line);
  background:var(--paper);transition:background .3s;
}
.access-block:last-child{border-right:none}
.access-block:hover{background:var(--paper-dark)}
.access-block .ab-label{
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:12px;
  color:var(--vermillion);letter-spacing:.25em;margin-bottom:12px;
}
.access-block h4{font-family:'Shippori Mincho',serif;font-size:22px;font-weight:500;margin-bottom:18px;color:var(--ink);letter-spacing:.04em}
.access-block p{font-size:13px;color:var(--ink-soft);line-height:2}

/* Final CTA band */
.contact-cta{
  background:var(--ink);color:var(--paper);padding:130px 48px;
  position:relative;overflow:hidden;margin-top:40px;
}
.contact-cta .cc-kanji{
  position:absolute;right:-40px;bottom:-80px;
  font-family:'Shippori Mincho',serif;font-size:420px;font-weight:800;
  color:rgba(244,240,232,.04);line-height:.8;pointer-events:none;
}
.contact-cta .cc-inner{max-width:1000px;margin:0 auto;position:relative;z-index:1;text-align:center}
.contact-cta .en-top{display:block;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:15px;color:var(--gold-light);letter-spacing:.3em;margin-bottom:24px}
.contact-cta h2{
  font-family:'Shippori Mincho',serif;font-size:56px;font-weight:500;
  line-height:1.3;margin-bottom:30px;color:var(--paper);
}
.contact-cta h2 em{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--gold-light);font-weight:400}
.contact-cta p{
  font-size:15px;line-height:2;color:rgba(244,240,232,.7);
  max-width:720px;margin:0 auto 50px;
}
.contact-cta .cc-actions{display:flex;gap:24px;justify-content:center;flex-wrap:wrap}
.contact-cta .cta-line{
  display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px;
  padding:22px 40px;background:transparent;border:1px solid rgba(244,240,232,.3);
  color:var(--paper);text-decoration:none;transition:all .3s;
  font-family:'Shippori Mincho',serif;font-size:13px;letter-spacing:.2em;
}
.contact-cta .cta-line span{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:18px;color:var(--gold-light);letter-spacing:.05em}
.contact-cta .cta-line:hover{background:var(--vermillion);border-color:var(--vermillion)}
.contact-cta .cta-line:hover span{color:var(--paper)}

/* Footer */
footer{background:var(--ink);color:var(--paper);padding:80px 48px 40px}
.footer-grid{
  display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:60px;
  padding-bottom:60px;border-bottom:1px solid rgba(244,240,232,.1);
}
.footer-brand{max-width:320px}
.footer-brand .logo{color:var(--paper)}
.footer-brand .logo .jp{color:var(--paper)}
.footer-brand .logo .en{color:var(--gold-light)}
.footer-brand .logo-mark{background:var(--paper)}
.footer-brand .logo-mark span{color:var(--ink)}
.footer-brand p{font-size:13px;color:rgba(244,240,232,.6);line-height:2;margin-top:20px}
.footer-col h4{
  font-family:'Shippori Mincho',serif;font-size:13px;font-weight:600;
  letter-spacing:.2em;margin-bottom:24px;color:var(--gold-light);
}
.footer-col ul{list-style:none;display:flex;flex-direction:column;gap:14px}
.footer-col a{color:rgba(244,240,232,.65);text-decoration:none;font-size:13px;transition:color .3s;display:inline-flex;align-items:center;gap:8px}
.footer-col a:hover{color:var(--gold-light)}
.footer-col .contact-line{font-size:13px;color:rgba(244,240,232,.7);line-height:1.8}
.footer-col .contact-line strong{color:var(--paper);display:block;margin-bottom:4px;font-weight:500}
.footer-bottom{padding-top:30px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px}
.footer-bottom p{font-size:11px;color:rgba(244,240,232,.4);letter-spacing:.15em;font-family:'Cormorant Garamond',serif}
.footer-bottom .jp-copy{font-family:'Shippori Mincho',serif}
.footer-bottom .socials{display:flex;gap:24px}
.footer-bottom .socials a{color:rgba(244,240,232,.5);text-decoration:none;font-size:11px;letter-spacing:.2em;transition:color .3s;font-family:'Cormorant Garamond',serif;text-transform:uppercase}
.footer-bottom .socials a:hover{color:var(--gold-light)}

/* Animations */
.reveal{opacity:0;transform:translateY(40px);transition:all 1s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:translateY(0)}

/* Responsive */
@media (max-width:1100px){
  .side-rail{display:none}
  main,header{margin-left:0;left:0}
  header{padding:18px 24px}
  nav ul{gap:24px}
  .page-hero{padding:120px 24px 60px}
  .story,.office-inner,.team-header,.contact-grid,.svc-approach-inner{grid-template-columns:1fr;gap:50px}
  .mission-grid,.team-grid,.works-grid{grid-template-columns:1fr 1fr}
  .svc-block{grid-template-columns:1fr;gap:40px;padding:60px 0}
  .svc-block:nth-child(even) .svc-img{order:0}
  .svc-img{height:400px}
  .office,.team-section,.story,.mission,.timeline-section,.company-info,.works-grid-section,.svc-approach,.svc-detail,.contact-layout,.contact-map{padding-left:24px;padding-right:24px}
  .contact-map-inner{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr;gap:40px}
  .big-title{font-size:42px}
  .timeline::before{left:60px}
  .t-item{grid-template-columns:70px 1fr;gap:20px}
  .t-item::before{left:56px}
  .t-body{padding-left:20px}
  .w-card.featured-half,.w-card.featured-big{grid-column:span 12}
  .ci-row{grid-template-columns:180px 1fr;gap:20px}
  .access-grid{grid-template-columns:1fr;border-top:none}
  .access-block{border-right:none;border-top:1px solid var(--line);padding:34px 24px}
  .map-head h2{font-size:38px}
  .contact-cta{padding:90px 24px}
  .contact-cta h2{font-size:38px}
  .contact-cta .cc-kanji{font-size:280px}
}
@media (max-width:700px){
  nav ul{display:none}
  nav ul.open{display:flex;position:absolute;top:100%;left:0;right:0;background:var(--paper);flex-direction:column;gap:0;border-bottom:1px solid var(--line);padding:20px 24px}
  nav ul.open li{padding:12px 0;border-bottom:1px solid var(--line)}
  nav ul.open li:last-child{border-bottom:none}
  .menu-toggle{display:block}
  .mission-grid,.team-grid,.works-grid,.f-row{grid-template-columns:1fr}
  .big-title,.page-title{font-size:32px!important}
  .office h2,.story-text h2,.contact-info h2{font-size:34px}
  .footer-grid{grid-template-columns:1fr;gap:32px}
  .ci-row{grid-template-columns:1fr;gap:8px;padding:20px 0}
  .contact-form-wrap{padding:40px 28px}
  .office-gallery{height:400px}
  .team-ph{height:280px}
  .svc-info h3{font-size:30px}
  .svc-info .num-big{font-size:60px}
  .svc-features{grid-template-columns:1fr}
  .form-head h2{font-size:28px}
  .contact-card .cc-big{font-size:20px}
  .contact-card .cc-big.cc-mail{font-size:15px}
  .contact-cta h2{font-size:28px}
  .contact-cta .cc-actions{flex-direction:column;align-items:stretch}
  .map-head h2{font-size:30px}
}
