:root{
  --bg-page:#F2EFE6;
  --bg-card:#FBF9F3;
  --ink:#1B1B1F;
  --ink-soft:#3A382F;
  --muted:#7A7566;
  --line:#D9D3C0;
  --indigo:#2E3A8C;
  --indigo-soft:#E7E9F5;
  --gold:#C6912E;
  --gold-soft:#F5EBD3;
  --stamp:#C63D28;
  --paper-shadow: 0 1px 0 rgba(27,27,31,.06);
  --radius: 4px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--bg-page);
  background-image:
    radial-gradient(rgba(27,27,31,0.035) 1px, transparent 1px);
  background-size: 3px 3px;
  color:var(--ink);
  font-family:'Zen Kaku Gothic New', sans-serif;
  -webkit-font-smoothing:antialiased;
  line-height:1.7;
}
::selection{ background:var(--gold); color:#fff; }

h1,h2,h3,.serif{ font-family:'Shippori Mincho', serif; }
.mono{ font-family:'JetBrains Mono', monospace; letter-spacing:.02em; }

a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }

.wrap{ max-width:1120px; margin:0 auto; padding:0 28px; }

/* ---------- focus ---------- */
a:focus-visible, button:focus-visible{
  outline:2px solid var(--stamp);
  outline-offset:3px;
}

/* ---------- header ---------- */
header.site{
  position:sticky; top:0; z-index:50;
  background:rgba(242,239,230,.86);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.nav{
  display:flex; align-items:center; justify-content:space-between;
  padding:16px;
}
.logo img {
  height: 20px;
}
nav.links{ display:flex; gap:32px; font-size:14px; }
nav.links a{ color:var(--ink-soft); position:relative; padding:4px 0; }
nav.links a:hover{ color:var(--ink); }
nav.links a::after{
  content:''; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--ink); transform:scaleX(0); transform-origin:left;
  transition:transform .25s ease;
}
nav.links a:hover::after{ transform:scaleX(1); }
.nav-mobile-toggle{ display:none; }

@media (max-width: 720px){
  nav.links{ display:none; }
}

/* ---------- hero ---------- */
.hero{ padding:88px 28px 64px; }
.hero-eyebrow{
  display:flex; align-items:center; gap:10px;
  font-family:'JetBrains Mono', monospace;
  font-size:12px; color:var(--muted); letter-spacing:.08em;
  margin-bottom:28px;
}
.hero-eyebrow .dot{ width:6px;height:6px;border-radius:50%;background:var(--stamp); }

.hero-ticket{
  position:relative;
  background:var(--bg-card);
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow: 0 22px 44px -28px rgba(27,27,31,.35), var(--paper-shadow);
  padding:56px 56px 40px;
  overflow:hidden;
}
.hero-ticket::before, .hero-ticket::after{
  content:''; position:absolute; width:30px; height:30px;
  background:var(--bg-page); border-radius:50%; top:50%; transform:translateY(-50%);
}
.hero-ticket::before{ left:-15px; }
.hero-ticket::after{ right:-15px; }

.hero-top-row{
  display:flex; justify-content:space-between; align-items:flex-start;
  padding-bottom:28px; margin-bottom:36px;
  border-bottom:1px dashed var(--line);
}
.ticket-id{ font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--muted); }
.ticket-id b{ color:var(--ink); }
.ticket-stamp{
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.06em;
  border:1.5px solid var(--stamp); color:var(--stamp);
  padding:5px 10px; border-radius:3px; transform:rotate(3deg);
}

h1.headline{
  font-size:clamp(32px, 5.4vw, 58px);
  line-height:1.35;
  font-weight:800;
  margin:0 0 26px;
  letter-spacing:.01em;
}
h1.headline .accent{ color:var(--stamp); }

.hero-sub{
  max-width:800px; color:var(--ink-soft); font-size:16px; margin-bottom:36px;
}

.hero-tags{ display:flex; flex-wrap:wrap; gap:10px; }
.tag{
  font-family:'JetBrains Mono',monospace; font-size:12px;
  border:1px solid var(--line); border-radius:20px;
  padding:7px 14px; color:var(--ink-soft); background:#fff;
}

@media (max-width: 720px){
  .hero-ticket{
    padding: 24px;
  }
}

/* ---------- section shell ---------- */
section{ padding:88px 0; }
.eyebrow{
  font-family:'JetBrains Mono', monospace; font-size:12px; color:var(--muted);
  letter-spacing:.1em; margin-bottom:14px; display:block;
}
h2.section-title{
  font-size:clamp(24px, 3.4vw, 36px); font-weight:800; margin:0 0 20px;
}
.section-lead{ max-width:640px; color:var(--ink-soft); font-size:16px; }

/* ---------- mission ---------- */
.mission{ 
  padding: 60px 28px;
  border-top: 1px solid var(--line);
}
.mission-grid{
  display:grid; grid-template-columns:1.1fr .9fr; gap:64px; align-items:start;
  margin-top:48px;
}
@media (max-width:840px){ .mission-grid{ grid-template-columns:1fr; gap:36px; } }

.approach-list{ display:flex; flex-direction:column; gap:0; }
.approach-item{
  display:grid; grid-template-columns:64px 1fr; gap:18px;
  padding:22px 0; border-top:1px solid var(--line);
}
.approach-item:last-child{ border-bottom:1px solid var(--line); }
.approach-num{ font-family:'JetBrains Mono',monospace; color:var(--muted); font-size:13px; padding-top:2px; }
.approach-item h3{ margin:0 0 8px; font-size:17px; font-weight:700; font-family:'Zen Kaku Gothic New'; }
.approach-item p{ margin:0; color:var(--ink-soft); font-size:14.5px; }

/* ---------- products ---------- */
.products{
  padding: 60px 28px;
  border-top:1px solid var(--line);
}
.ticket-card{
  position:relative;
  display:grid; grid-template-columns:150px 1fr;
  background:var(--bg-card);
  border:1px solid var(--line); border-radius:14px;
  box-shadow: 0 18px 38px -30px rgba(27,27,31,.4), var(--paper-shadow);
  margin-top:40px; overflow:hidden;
}
.ticket-card::before, .ticket-card::after{
  content:''; position:absolute; width:26px; height:26px;
  background:var(--bg-page); border-radius:50%; top:50%; transform:translateY(-50%); z-index:2;
}
.ticket-card::before{ left:134px; margin-left:-13px; }
.ticket-card::after{ display:none; }

@media (max-width:720px){
  .ticket-card{ grid-template-columns:1fr; }
  .ticket-card::before{ display:none; }
  .ticket-stub{ flex-direction:row !important; border-right:none !important; border-bottom:1px dashed var(--line); padding:20px 24px !important; }
}

.ticket-stub{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:14px; padding:28px 12px;
  border-right:1px dashed var(--line);
  text-align:center;
}
.stub-mono{
  font-family:'Shippori Mincho', serif; font-weight:800; font-size:26px;
}
.stub-no{ font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--muted); }
.stub-swatch{ width:34px; height:34px; border-radius:50%; }

.ticket-body{ padding:32px 40px 32px 48px; }
@media (max-width:720px){ .ticket-body{ padding:24px; } }

.product-kicker{
  display:flex; align-items:center; gap:10px; margin-bottom:10px;
  font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--muted);
}
.status-dot{ width:7px; height:7px; border-radius:50%; }

h3.product-title{ font-size:clamp(22px,2.6vw,30px); font-weight:800; margin:0 0 12px; }
.product-copy{ color:var(--ink-soft); font-size:15px; margin-bottom:20px; max-width:520px; }
.product-copy .catch{
  display:block; font-family:'Shippori Mincho', serif; font-weight:600; font-size:17px;
  color:var(--ink); margin-bottom:10px; line-height:1.9;
}

.rule-list{ list-style:none; margin:0 0 26px; padding:0; display:flex; flex-direction:column; gap:9px; }
.rule-list li{
  font-size:14px; color:var(--ink-soft); display:flex; gap:10px; align-items:flex-start;
}
.rule-list li::before{ content:'―'; color:var(--muted); flex:none; }

.flow-steps{ display:flex; flex-wrap:wrap; gap:0; margin:0 0 26px; }
.flow-step{
  flex:1 1 130px; padding:14px 16px; border:1px solid var(--line); background:#fff;
  position:relative;
}
.flow-step + .flow-step{ border-left:none; }
.flow-step .fn{ font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--muted); display:block; margin-bottom:6px; }
.flow-step .ft{ font-size:13.5px; font-weight:700; }
@media (max-width:560px){
  .flow-step{ flex:1 1 45%; border-left:1px solid var(--line) !important; border-top:none; }
  .flow-step:nth-child(-n+2){ border-top:1px solid var(--line); }
}

.ticket-link{
  display:inline-flex; align-items:center; gap:8px;
  font-family:'JetBrains Mono',monospace; font-size:13px;
  border-bottom:1px solid var(--ink); padding-bottom:2px;
}
.ticket-link:hover{ color:var(--stamp); border-color:var(--stamp); }
.ticket-link .arrow{ transition:transform .2s ease; }
.ticket-link:hover .arrow{ transform:translateX(3px); }

/* ---------- company / CTA ---------- */
.company{
  padding: 60px 28px;
  border-top:1px solid var(--line);
}
.company-panel{
  display:grid; grid-template-columns:1fr 1fr; gap:0;
  border:1px solid var(--line); border-radius:14px; overflow:hidden;
  background:var(--bg-card);
  margin-top:44px;
}
@media (max-width:800px){ .company-panel{ grid-template-columns:1fr; } }
.company-col{ padding:44px; }
.company-col + .company-col{ border-left:1px dashed var(--line); }
@media (max-width:800px){ .company-col + .company-col{ border-left:none; border-top:1px dashed var(--line); } }
.company-col h3{ font-size:15px; margin:0 0 22px; font-family:'JetBrains Mono',monospace; color:var(--muted); letter-spacing:.06em; }
dl.meta{ margin:0; display:flex; flex-direction:column; gap:16px; }
dl.meta div{ display:flex; justify-content:space-between; gap:20px; padding-bottom:14px; border-bottom:1px solid var(--line); font-size:14.5px; }
dl.meta dt{ 
  color:var(--muted);
  width: 80px;
}
dl.meta dd{ margin:0; text-align:right; }

.cta-block p{ color:var(--ink-soft); font-size:15px; margin:0 0 26px; }

.contact-form{ display:flex; flex-direction:column; gap:20px; }
.contact-form[hidden]{ display:none; }
.contact-form .honeypot{ position:absolute; left:-9999px; top:-9999px; }
.contact-form .field{ display:flex; flex-direction:column; gap:8px; }
.contact-form label{
  font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--muted);
  letter-spacing:.06em;
}
.contact-form input, .contact-form textarea{
  font-family:'Zen Kaku Gothic New', sans-serif;
  font-size:14.5px; color:var(--ink);
  background:transparent;
  border:none; border-bottom:1px solid var(--line);
  padding:8px 2px; resize:vertical;
  transition:border-color .2s ease;
}
.contact-form input:focus, .contact-form textarea:focus{
  outline:none; border-bottom-color:var(--ink);
}
.contact-form .btn-stamp{
  align-self:flex-start; border:none; cursor:pointer;
  font-family:'JetBrains Mono',monospace;
}
.form-note{
  font-size:12.5px !important; color:var(--muted) !important;
  margin:2px 0 0 !important;
}
.form-note a{ border-bottom:1px solid var(--line); }
.form-note a:hover{ color:var(--stamp); border-color:var(--stamp); }

.form-success{
  display:flex; flex-direction:column; align-items:flex-start; gap:10px;
  padding:28px 0 4px;
}
.form-success[hidden]{ display:none; }
.form-success-mark{
  width:36px; height:36px; border-radius:50%;
  border:1.5px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-size:16px; margin-bottom:6px;
}
.form-success-title{
  font-family:'Shippori Mincho', serif; font-weight:700; font-size:19px;
  margin:0;
}
.form-success-body{
  font-size:14px; color:var(--ink-soft); margin:0;
}

.btn-stamp{
  display:inline-flex; align-items:center; gap:10px;
  background:var(--ink); color:#fff; border-radius:3px;
  padding:14px 24px; font-family:'JetBrains Mono',monospace; font-size:13px;
  transition:background .2s ease;
}
.btn-stamp:hover{ background:var(--stamp); }
.btn-stamp:disabled{ background:var(--muted); cursor:default; }

@media (max-width:720px){
  .company-col{
    padding:24px;
  }
}

/* ---------- footer ---------- */
footer{ border-top:1px solid var(--line); padding:40px 0; }
.footer-row{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; }
.footer-links{ display:flex; gap:24px; font-size:13px; color:var(--muted); }
.footer-note{ font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--muted); }

/* ---------- reveal ---------- */
.reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}