@charset "utf-8";
/* Roman Road LLC — site styles */
:root{
  --bg:#fbfbf9; --ink:#14100f; --sub:#4a4442; --mute:#8a8480;
  --line:#e4e2dd; --note:#a3675f; --edge:clamp(20px,5vw,40px); --maxw:1200px; --header-h:78px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Zen Old Mincho",serif;-webkit-font-smoothing:antialiased;text-wrap:pretty}
img{max-width:100%;height:auto}
a{color:var(--ink);text-decoration:none;transition:color .3s ease}
a:hover{color:var(--mute)}
a:focus-visible,input:focus-visible,textarea:focus-visible,button:focus-visible{outline:1px solid var(--ink);outline-offset:3px}
.en{font-family:"Jost","Zen Old Mincho",sans-serif}

/* header */
.site-header{padding:26px var(--edge);position:sticky;top:0;background:rgba(251,251,249,.9);backdrop-filter:blur(10px);z-index:30}
.header-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:28px}
.site-header .logo{display:flex;align-items:center;margin-right:auto}
.site-header .logo img{height:26px;width:auto;mix-blend-mode:multiply}
.gnav{display:flex;gap:clamp(18px,2.4vw,34px);font-size:12.5px;font-weight:300;letter-spacing:.22em;text-transform:uppercase;flex-wrap:wrap}
.gnav a[aria-current="page"]{color:var(--mute)}

/* hero */
.hero{position:relative;overflow:hidden;height:90vh;min-height:520px;display:flex;align-items:center;padding:calc(var(--header-h) + clamp(24px,4vh,56px)) var(--edge) clamp(48px,8vh,96px)}
.hero-bg{position:absolute;inset:0}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.hero-veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,16,15,.42) 0%,rgba(20,16,15,.22) 45%,rgba(20,16,15,.5) 100%);pointer-events:none}
.hero-inner{position:relative;width:100%;max-width:var(--maxw);margin:0 auto}
.hero-veil{background:linear-gradient(180deg,rgba(20,16,15,.42) 0%,rgba(20,16,15,.22) 45%,rgba(20,16,15,.5) 100%)}
.hero-kicker{margin:0 0 40px;font-size:12px;font-weight:300;letter-spacing:.36em;text-transform:uppercase;color:#f8f4f4}
.hero h1{margin:0;font-family:"Poppins","Jost",sans-serif;font-weight:200;font-size:clamp(44px,8.4vw,128px);line-height:1.02;letter-spacing:-.01em;color:#fff}
.hero h1 span{display:block}
.hero h1 span+span{padding-left:.12em}
.hero-copy{margin:52px 0 0;font-size:clamp(15px,1.4vw,18px);line-height:2.3;letter-spacing:.1em;max-width:24em;color:#f8f4f4}

/* sections */
.section{padding:clamp(88px,14vh,168px) var(--edge)}
.section--tight{padding:clamp(64px,12vh,128px) var(--edge) clamp(56px,8vh,96px)}
.section--flush{padding-top:0}
.section--line{border-top:1px solid var(--line)}
.wrap{max-width:var(--maxw);margin:0 auto}
.wrap--narrow{max-width:var(--maxw);margin:0 auto}
.kicker{margin:0 0 56px;font-size:12px;font-weight:300;letter-spacing:.36em;text-transform:uppercase;color:var(--mute)}
.kicker--lg{font-size:25px}
.kicker--sm{margin:0;font-size:12px;letter-spacing:.24em}
.page-title{margin:0;font-weight:200;font-size:clamp(40px,7vw,104px);line-height:1.04;letter-spacing:-.01em}
.lead{margin:0;font-size:clamp(18px,2.2vw,27px);line-height:2.1;letter-spacing:.08em;max-width:30em}
.lead--sm{font-size:clamp(16px,1.6vw,20px);line-height:2.2;max-width:28em}
.body{margin:26px 0 0;font-size:14.5px;line-height:2.3;letter-spacing:.06em;color:var(--sub)}
.body--wide{max-width:42em}
.note{margin:20px 0 0;font-size:12.5px;line-height:2;letter-spacing:.06em;color:var(--note)}
.more{margin:26px 0 0;font-size:13px;letter-spacing:.12em}
h2.h2{margin:20px 0 0;font-size:clamp(21px,2vw,26px);font-weight:500;letter-spacing:.1em;line-height:1.8}
.brand-mark{height:32px;width:auto;mix-blend-mode:multiply;display:block;margin:26px 0 0}
.brand-mark--lg{height:44px;margin:28px 0 0}

/* grids */
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:clamp(56px,7vw,112px)}
.grid-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(48px,6vw,104px);align-items:start}
.photo{position:relative;width:100%;background:#efeee9}
.photo img{width:100%;height:100%;object-fit:cover;display:block}
.photo--portrait{aspect-ratio:4/5}
.photo--landscape{aspect-ratio:4/3}

/* definition rows */
.dl{display:grid}
.dl--ruled{border-top:1px solid var(--ink)}
.dl p{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0;padding:18px 0;border-bottom:1px solid var(--line);font-size:14.5px;line-height:2;letter-spacing:.06em}
.dl--lg p{padding:20px 0;font-size:15px;gap:8px 32px}
.dl-key{min-width:6.5em;font-size:12px;letter-spacing:.2em;color:var(--mute);padding-top:.3em}
.dl--lg .dl-key{min-width:8em;padding-top:.35em}
.dl .todo{color:var(--note)}

/* contact form */
.form{display:grid;gap:26px;max-width:34em}
.form label{display:grid;gap:10px}
.form-key{font-size:12px;letter-spacing:.2em;color:var(--mute)}
.form input,.form textarea{border:0;border-bottom:1px solid var(--ink);background:transparent;font-family:inherit;font-size:15px;padding:10px 2px;color:var(--ink)}
.form textarea{resize:vertical}
.btn{border:1px solid var(--ink);background:var(--ink);color:var(--bg);font-family:"Jost",sans-serif;font-size:12.5px;letter-spacing:.24em;text-transform:uppercase;padding:16px 42px;cursor:pointer;transition:opacity .3s ease}
.btn:hover{opacity:.78}

/* contact block on home */
.contact-title{margin:0;font-weight:200;font-size:clamp(38px,6.4vw,92px);line-height:1.06;letter-spacing:-.01em}

/* footer */
.site-footer{padding:44px var(--edge);border-top:1px solid var(--line)}
.footer-inner{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:20px 40px}
.site-footer img{height:20px;width:auto;mix-blend-mode:multiply;margin-right:auto}
.site-footer p{margin:0;font-size:11.5px;font-weight:300;letter-spacing:.2em;color:var(--mute)}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity 1s cubic-bezier(.22,.61,.36,1),transform 1s cubic-bezier(.22,.61,.36,1)}
[data-reveal].is-in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}}

@media (max-width:640px){
  .site-header{gap:16px;padding:18px var(--edge)}
  .gnav{gap:14px;font-size:11px}
  .kicker--lg{font-size:18px}
}

/* centered blocks */
.is-center{text-align:center}
.is-center .lead,.is-center .body{margin-left:auto;margin-right:auto}
.kicker--center{text-align:center}

.wrap.grid-split{max-width:var(--maxw);margin:0 auto}

/* hamburger (mobile) */
.menu-btn{display:none}
@media (max-width:768px){
  .menu-btn{display:flex;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;padding:0;border:0;background:transparent;cursor:pointer;position:relative;z-index:60}
  .menu-btn span{display:block;width:26px;height:1px;background:var(--ink);transition:transform .35s ease,opacity .25s ease}
  .menu-btn.open span:nth-child(1){transform:translateY(3.5px) rotate(45deg)}
  .menu-btn.open span:nth-child(2){opacity:0}
  .menu-btn.open span:nth-child(3){transform:translateY(-3.5px) rotate(-45deg)}
  /* backdrop-filter は fixed の基準になってしまうため SP では解除 */
  .site-header{backdrop-filter:none;background:var(--bg)}
  .gnav{position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:38px;font-size:17px;letter-spacing:.24em;transform:translateY(-100%);transition:transform .5s cubic-bezier(.22,.61,.36,1);z-index:50;flex-wrap:nowrap}
  .gnav.open{transform:none}
  .menu-btn{margin-left:auto}
  body.nav-open{overflow:hidden}
}

/* hero — mobile framing */
@media (max-width:768px){
  :root{--header-h:70px}
  .hero{height:90vh}
  .hero-bg img{object-position:68% 50%}
}
