:root{--ink:#111;--paper:#f7f6f2;--white:#fff;--red:#c9182b;--line:#d8d6cf;--muted:#6e6d68;--max:1440px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Inter","Noto Sans JP",sans-serif;line-height:1.7;letter-spacing:.02em}a{color:inherit;text-decoration:none}button{font:inherit}.site-header{position:fixed;z-index:20;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;padding:20px 32px;border-bottom:1px solid rgba(17,17,17,.12);background:rgba(247,246,242,.88);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:44px;height:44px;color:#111}.brand-mark .accent,.brand-mark .leaf{fill:var(--red)}.brand-copy{display:flex;flex-direction:column;line-height:1.1}.brand-copy strong{font-size:14px;letter-spacing:.22em}.brand-copy small{font-size:10px;margin-top:5px}.main-nav{display:flex;gap:30px;font-size:11px;letter-spacing:.18em}.main-nav a{position:relative}.main-nav a:after{content:"";position:absolute;left:0;bottom:-7px;width:0;height:1px;background:var(--red);transition:.3s}.main-nav a:hover:after{width:100%}.menu-toggle{display:none;background:none;border:0;font-size:11px;letter-spacing:.18em}.section-grid{display:grid;grid-template-columns:80px minmax(0,1.05fr) minmax(320px,.95fr);gap:48px;max-width:var(--max);margin:auto;padding-left:48px;padding-right:48px}.hero{min-height:100vh;padding-top:150px;padding-bottom:80px;align-items:center}.hero-copy{grid-column:1/3}.eyebrow{font-size:11px;letter-spacing:.24em;font-weight:600;color:var(--red);margin:0 0 24px}.hero h1{font-size:clamp(54px,7vw,112px);line-height:1.05;letter-spacing:-.045em;margin:0 0 40px;font-weight:500}.hero-lead{font-size:16px;max-width:680px;color:#353535}.hero-actions{display:flex;align-items:center;gap:32px;margin-top:42px}.button{display:inline-flex;justify-content:center;align-items:center;min-height:52px;padding:0 24px;border:1px solid var(--ink);font-size:13px;letter-spacing:.08em}.button.primary{background:var(--ink);color:#fff;transition:.25s}.button.primary:hover{background:var(--red);border-color:var(--red)}.text-link{font-size:13px;border-bottom:1px solid var(--ink)}.hero-art{position:relative;display:flex;min-height:540px;align-items:center;justify-content:center;border-left:1px solid var(--line)}.dot-grid-large{position:relative;display:grid;grid-template-columns:repeat(3,58px);gap:42px}.dot-grid-large i{width:58px;height:58px;background:#111;border-radius:50%;display:block}.dot-grid-large i.apple-dot{background:var(--red)}.apple-leaf{position:absolute;width:55px;height:28px;background:var(--red);border-radius:100% 0 100% 0;top:-44px;left:100px;transform:rotate(-16deg)}.hero-caption{position:absolute;right:-18px;bottom:0;writing-mode:vertical-rl;font-size:10px;letter-spacing:.2em}.section-index{font-size:12px;color:var(--muted);padding-top:6px}.intro{padding-top:140px;padding-bottom:160px;border-top:1px solid var(--line)}h2{font-size:clamp(34px,4vw,64px);line-height:1.25;letter-spacing:-.035em;font-weight:500;margin:0}.intro-copy{font-size:17px}.intro-copy p{margin:0 0 24px}.brands{padding:140px 0;background:#111;color:#fff}.section-head{align-items:end}.section-note{max-width:440px;color:#aaa;margin:0}.brand-grid{display:grid;grid-template-columns:repeat(3,1fr);max-width:var(--max);margin:90px auto 0;padding:0 48px;border-top:1px solid #333;border-left:1px solid #333}.brand-card{position:relative;min-height:270px;padding:44px;border-right:1px solid #333;border-bottom:1px solid #333;transition:.35s}.brand-card:before{content:attr(data-code);position:absolute;right:24px;top:20px;font-size:10px;color:#666}.brand-card:hover{background:#1a1a1a;transform:translateY(-4px)}.brand-dot{display:block;width:18px;height:18px;border-radius:50%;margin-bottom:40px}.red{background:#c9182b}.ochre{background:#c89c3d}.green{background:#2f7d4a}.purple{background:#7556a6}.matcha{background:#7f9227}.gray{background:#8b8179}.brand-card h3{font-size:23px;letter-spacing:.12em;font-weight:500;margin:0 0 14px}.brand-card p{font-size:15px;margin:0 0 50px}.brand-card small{font-size:10px;letter-spacing:.16em;color:#999}.services{padding-top:150px;padding-bottom:150px}.services-intro{padding-right:20px}.service-list{border-top:1px solid var(--ink)}.service-list article{display:grid;grid-template-columns:70px 1fr;gap:25px;padding:28px 0;border-bottom:1px solid var(--line)}.service-list span{font-size:11px;color:var(--red)}.service-list h3{font-size:20px;margin:0 0 8px;font-weight:500}.service-list p{margin:0;color:#555}.works{padding:140px 0;border-top:1px solid var(--line)}.works-grid{max-width:var(--max);margin:80px auto 0;padding:0 48px;display:grid;grid-template-columns:1.2fr .8fr;grid-auto-rows:360px;gap:18px}.work-card{position:relative;overflow:hidden;padding:38px;background:#ddd;display:flex;align-items:flex-end}.work-card:before{content:"";position:absolute;inset:0;transition:.5s}.work-card:hover:before{transform:scale(1.04)}.work-card div{position:relative;z-index:2}.work-card span{font-size:10px;letter-spacing:.18em}.work-card h3{font-size:30px;line-height:1.25;font-weight:500;margin:14px 0 0}.work-01{grid-row:span 2;color:white}.work-01:before{background:linear-gradient(145deg,#c9182b 0%,#76101b 100%)}.work-02:before{background:linear-gradient(135deg,#e7e2d4,#bdb5a3)}.work-03:before{background:repeating-linear-gradient(90deg,#111 0,#111 8px,#f7f6f2 8px,#f7f6f2 16px)}.work-03 div{background:var(--paper);padding:20px}.manifesto{max-width:var(--max);margin:auto;padding:130px 48px;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:80px;background:#e9e5dd}.manifesto-mark{display:flex;justify-content:center}.dot-grid-small{position:relative;display:grid;grid-template-columns:repeat(3,28px);gap:20px}.dot-grid-small i{width:28px;height:28px;background:#111;border-radius:50%}.dot-grid-small .apple-dot{background:var(--red)}.dot-grid-small span{position:absolute;width:30px;height:15px;background:var(--red);border-radius:100% 0 100% 0;top:-25px;left:49px}.manifesto blockquote{font-size:clamp(38px,5vw,70px);line-height:1.25;letter-spacing:-.04em;margin:0 0 36px}.manifesto p:last-child{max-width:600px}.contact{padding-top:150px;padding-bottom:150px}.contact-box{padding-top:20px}.contact-box p{font-size:16px;margin:0 0 30px}.contact-box small{display:block;margin-top:22px;color:#666}.site-footer{display:flex;justify-content:space-between;align-items:flex-end;padding:42px 48px;background:#111;color:#fff;font-size:11px;letter-spacing:.15em}.site-footer div{display:flex;flex-direction:column}.site-footer span{color:#777;margin-top:5px}.cursor-dot{position:fixed;z-index:99;width:8px;height:8px;background:var(--red);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .2s}
@media(max-width:900px){.site-header{padding:16px 20px}.main-nav{position:absolute;top:76px;left:0;width:100%;display:none;flex-direction:column;background:var(--paper);padding:28px 20px;border-bottom:1px solid var(--line)}.main-nav.open{display:flex}.menu-toggle{display:block}.section-grid{grid-template-columns:42px 1fr;padding-left:20px;padding-right:20px;gap:22px}.hero{padding-top:130px}.hero-copy{grid-column:1/3}.hero-art{grid-column:1/3;border-left:0;border-top:1px solid var(--line);min-height:400px}.intro>div:last-child,.section-head>.section-note,.services>.service-list,.contact>.contact-box{grid-column:2}.brand-grid{grid-template-columns:1fr 1fr;padding:0 20px}.works-grid{padding:0 20px;grid-template-columns:1fr;grid-auto-rows:320px}.work-01{grid-row:auto}.manifesto{margin:0 20px;padding:80px 28px;grid-template-columns:1fr}.site-footer{padding:30px 20px;gap:20px;align-items:flex-start;flex-direction:column}.cursor-dot{display:none}}
@media(max-width:560px){.brand-copy small{display:none}.hero h1{font-size:50px}.hero-lead br{display:none}.hero-actions{align-items:flex-start;flex-direction:column}.dot-grid-large{grid-template-columns:repeat(3,38px);gap:26px}.dot-grid-large i{width:38px;height:38px}.apple-leaf{width:38px;height:20px;left:67px;top:-32px}.brand-grid{grid-template-columns:1fr}.brand-card{min-height:220px}.intro,.services,.works,.contact{padding-top:100px;padding-bottom:100px}.section-grid{grid-template-columns:28px 1fr}.manifesto{margin:0}.site-footer a{display:none}}
.main-nav .lang-link{margin-left:10px;padding-left:20px;border-left:1px solid var(--line);color:var(--red);font-weight:600}
.main-nav .lang-link:after{display:none}
@media(max-width:900px){.main-nav .lang-link{margin-left:0;padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:18px}}

/* multilingual switch */
.language-switch{display:flex;align-items:center;gap:10px;margin-left:8px;padding-left:18px;border-left:1px solid var(--line)}
.language-switch a{font-size:10px;letter-spacing:.08em;color:var(--muted);white-space:nowrap}
.language-switch a.active{color:var(--red);font-weight:600}
.language-switch a:after{display:none!important}
html[lang="th"] body{font-family:"Noto Sans Thai","Inter",sans-serif}
html[lang="ko"] body{font-family:"Noto Sans KR","Inter",sans-serif}
html[lang="zh-CN"] body{font-family:"Noto Sans SC","Inter",sans-serif}
@media(max-width:1120px) and (min-width:901px){.main-nav{gap:16px}.language-switch{gap:7px;padding-left:12px}}
@media(max-width:900px){.language-switch{margin-left:0;padding:18px 0 0;border-left:0;border-top:1px solid var(--line);flex-wrap:wrap;gap:16px}}

/* Japanese headline line-break control */
.jp-hero-title span,.jp-service-title span{display:block;white-space:nowrap}
.jp-hero-title{font-size:clamp(50px,6.5vw,104px)}
.jp-service-title{font-size:clamp(32px,3.55vw,58px)}
@media(max-width:1100px) and (min-width:901px){
  .jp-hero-title{font-size:clamp(48px,6vw,76px)}
  .jp-service-title{font-size:clamp(30px,3.3vw,46px)}
}
@media(max-width:560px){
  .jp-hero-title{font-size:clamp(42px,13vw,58px)}
  .jp-service-title{font-size:clamp(28px,8.7vw,40px)}
  .jp-hero-title span,.jp-service-title span{white-space:normal}
}

/* Japanese desktop headline line-break fixes */
.jp-about-title span,.jp-brand-title span{display:block;white-space:nowrap}
.jp-about-title,.jp-brand-title{font-size:clamp(32px,3.45vw,56px)}
@media(max-width:1180px) and (min-width:901px){
  .jp-about-title,.jp-brand-title{font-size:clamp(29px,3vw,42px)}
}
@media(max-width:560px){
  .jp-about-title,.jp-brand-title{font-size:clamp(28px,8.2vw,40px)}
  .jp-about-title span,.jp-brand-title span{white-space:normal}
}


/* RINGO story and market process */
.why-ringo{padding:140px 0;background:#e9e5dd;border-top:1px solid var(--line)}
.why-grid{align-items:center}.why-copy h2{margin-bottom:34px}.why-lead{font-size:21px;line-height:1.5;margin:0 0 20px}.why-copy>p:last-child{max-width:680px;color:#45443f}
.growth-story{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:42px 30px;background:var(--paper);border:1px solid var(--line)}
.growth-item{flex:1;min-width:0;text-align:center}.growth-item strong,.growth-item small{display:block}.growth-item strong{font-size:11px;letter-spacing:.18em;margin-top:18px}.growth-item small{font-size:11px;color:var(--muted);margin-top:7px}.growth-arrow{font-size:20px;color:var(--red)}
.seed-mark,.sprout-mark,.fruit-mark{position:relative;display:block;margin:auto;width:54px;height:54px}
.seed-mark:before{content:"";position:absolute;width:18px;height:28px;left:18px;top:15px;border-radius:60% 40% 60% 40%;background:var(--ink);transform:rotate(28deg)}
.sprout-mark:before{content:"";position:absolute;width:3px;height:34px;background:var(--ink);left:26px;top:18px}.sprout-mark:after{content:"";position:absolute;width:23px;height:13px;background:var(--red);border-radius:100% 0 100% 0;left:27px;top:9px;transform:rotate(-16deg);box-shadow:-20px 12px 0 -2px var(--ink)}
.fruit-mark:before{content:"";position:absolute;width:44px;height:42px;border-radius:48% 48% 52% 52%;background:var(--red);left:5px;top:10px}.fruit-mark:after{content:"";position:absolute;width:20px;height:10px;background:var(--ink);border-radius:100% 0 100% 0;left:29px;top:0;transform:rotate(-18deg)}
.process{padding:140px 0;background:#111;color:#fff}.process .section-note{color:#999}.process-track{max-width:var(--max);margin:80px auto 0;padding:0 48px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #333;border-left:1px solid #333}.process-track article{min-height:280px;padding:38px;border-right:1px solid #333;border-bottom:1px solid #333}.process-track article>span{font-size:11px;color:var(--red)}.process-track h3{font-size:26px;font-weight:500;margin:72px 0 16px}.process-track p{margin:0;color:#aaa;font-size:14px}
@media(max-width:900px){.why-ringo{padding:100px 0}.why-copy{grid-column:2}.growth-story{grid-column:2;flex-direction:column;margin-top:24px}.growth-arrow{transform:rotate(90deg)}.process{padding:100px 0}.process-track{grid-template-columns:1fr 1fr;padding:0 20px}.process-track article{min-height:240px}}
@media(max-width:560px){.why-lead{font-size:18px}.process-track{grid-template-columns:1fr}.process-track article{min-height:auto}.process-track h3{margin-top:40px}}


/* 2026-07 layout stabilization */
.site-header{gap:24px}
.brand{flex:0 0 auto}
.main-nav{align-items:center;gap:22px;white-space:nowrap}
.language-switch{flex:0 0 auto}

.intro{align-items:start}
.intro-copy{max-width:720px;font-size:16px}
.intro-copy p{margin-bottom:22px}

.why-grid{align-items:start}
.why-copy{grid-column:2 / 4;max-width:860px}
.why-lead{font-size:20px;margin-top:28px}
.growth-story{grid-column:2 / 4;width:100%;margin-top:48px;padding:44px 48px;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:24px;border:1px solid var(--line);background:rgba(255,255,255,.35)}
.growth-item{min-width:0;text-align:center}
.growth-item strong,.growth-item small{display:block}
.growth-item strong{margin-top:18px;font-size:14px;letter-spacing:.16em}
.growth-item small{margin-top:6px;color:var(--muted)}
.growth-arrow{font-size:22px;color:var(--red)}

.process-track{position:relative;border:0;gap:46px;padding:0 48px}
.process-track:before{content:"";position:absolute;left:7%;right:7%;top:58px;height:1px;background:#3a3a3a}
.process-track article{position:relative;min-height:auto;padding:0;border:0}
.process-track article>span{position:relative;z-index:1;display:flex;width:42px;height:42px;align-items:center;justify-content:center;border-radius:50%;background:var(--red);color:#fff}
.process-track h3{margin:34px 0 14px}

@media(max-width:1100px){
  .menu-toggle{display:block}
  .main-nav{position:absolute;top:76px;left:0;width:100%;display:none;flex-direction:column;align-items:flex-start;gap:22px;background:var(--paper);padding:28px 24px;border-bottom:1px solid var(--line);box-shadow:0 16px 30px rgba(0,0,0,.06)}
  .main-nav.open{display:flex}
  .language-switch{width:100%;margin-left:0;padding:18px 0 0;border-left:0;border-top:1px solid var(--line);flex-wrap:wrap;gap:16px}
}

@media(max-width:900px){
  .why-copy,.growth-story{grid-column:2}
  .growth-story{padding:34px 28px;grid-template-columns:1fr;gap:18px}
  .growth-arrow{transform:rotate(90deg)}
  .process-track{grid-template-columns:1fr 1fr;gap:42px 28px;padding:0 20px}
  .process-track:before{display:none}
  .process-track article{padding-top:0}
}

@media(max-width:560px){
  .growth-story{padding:30px 20px}
  .process-track{grid-template-columns:1fr}
  .process-track h3{margin-top:22px}
}


/* Brand architecture anchor navigation */
.brand-card{display:block;color:inherit;text-decoration:none;cursor:pointer}
.brand-card-arrow{position:absolute;right:24px;bottom:22px;font-size:18px;color:#777;transition:transform .25s,color .25s}
.brand-card:hover .brand-card-arrow{transform:translate(4px,4px);color:#fff}
.brand-details{padding:140px 0;background:var(--paper);scroll-margin-top:90px}
.brand-detail-list{max-width:var(--max);margin:80px auto 0;padding:0 48px;border-top:1px solid var(--ink)}
.brand-detail{display:grid;grid-template-columns:80px minmax(240px,.75fr) minmax(320px,1.25fr);gap:48px;padding:64px 0;border-bottom:1px solid var(--line);scroll-margin-top:105px}
.brand-detail-number{font-size:11px;color:var(--red);padding-top:7px}
.brand-detail-title{position:relative}
.brand-detail-title .brand-dot{margin:0 0 24px}
.brand-detail-title small{display:block;margin-bottom:10px;font-size:10px;letter-spacing:.16em;color:var(--muted)}
.brand-detail-title h3{margin:0;font-size:clamp(25px,3vw,42px);font-weight:500;letter-spacing:.04em;line-height:1.2}
.brand-detail-copy{padding-top:4px}
.brand-detail-copy strong{display:block;margin-bottom:14px;font-size:18px;font-weight:500}
.brand-detail-copy p{margin:0;max-width:650px;color:#555}
.back-to-brands{display:inline-block;margin-top:28px;padding-bottom:4px;border-bottom:1px solid var(--ink);font-size:10px;letter-spacing:.14em}
@media(max-width:900px){.brand-detail-list{padding:0 20px}.brand-detail{grid-template-columns:42px 1fr;gap:22px}.brand-detail-copy{grid-column:2}.brand-details{padding:100px 0}.brand-card-arrow{right:20px;bottom:18px}}
@media(max-width:560px){.brand-detail{grid-template-columns:28px 1fr;padding:44px 0}.brand-detail-title h3{font-size:27px}.brand-detail-copy strong{font-size:16px}}

/* Mobile growth-story connector fix: keep arrows between, never over, the icons */
@media (max-width: 900px){
  .growth-story{
    row-gap:0;
  }
  .growth-item{
    position:relative;
    z-index:2;
    width:100%;
    padding:10px 0 18px;
  }
  .growth-arrow{
    position:relative;
    z-index:1;
    display:block;
    width:24px;
    height:54px;
    margin:0 auto;
    font-size:0;
    line-height:0;
    color:transparent;
    transform:none;
  }
  .growth-arrow::before{
    content:"";
    position:absolute;
    left:50%;
    top:5px;
    width:2px;
    height:34px;
    background:var(--red);
    transform:translateX(-50%);
  }
  .growth-arrow::after{
    content:"";
    position:absolute;
    left:50%;
    bottom:7px;
    width:9px;
    height:9px;
    border-right:2px solid var(--red);
    border-bottom:2px solid var(--red);
    transform:translateX(-50%) rotate(45deg);
  }
}
@media (max-width:560px){
  .growth-item{padding:8px 0 16px}
  .growth-arrow{height:48px}
  .growth-arrow::before{height:29px}
}


/* =========================================================
   Definitive RINGO growth flow
   - Actual SVG connectors, not rotated text or pseudo-elements
   - Unique rw-flow-* classes avoid all legacy growth rules
   ========================================================= */
.rw-flow{
  grid-column:2 / 4;
  width:100%;
  min-width:0;
  margin:48px 0 0;
  padding:46px 48px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr) 72px minmax(0,1fr);
  align-items:center;
  justify-items:stretch;
  column-gap:0;
  border:1px solid var(--line);
  background:rgba(255,255,255,.42);
}
.rw-flow-step{
  min-width:0;
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:8px 12px;
}
.rw-flow-step strong,
.rw-flow-step small{display:block}
.rw-flow-step strong{
  margin-top:18px;
  font-size:14px;
  line-height:1.35;
  letter-spacing:.16em;
  white-space:nowrap;
}
.rw-flow-step small{
  margin-top:7px;
  color:var(--muted);
  font-size:12px;
  line-height:1.55;
}
.rw-flow-connector{
  width:72px;
  height:40px;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:visible;
}
.rw-flow-connector svg{display:block;overflow:visible}
.rw-flow-arrow-desktop{width:54px;height:20px}
.rw-flow-arrow-mobile{display:none}
.rw-flow-connector line,
.rw-flow-connector polyline{
  fill:none;
  stroke:var(--red);
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
@media(max-width:900px){
  .rw-flow{
    grid-column:2;
    width:100%;
    margin-top:28px;
    padding:40px 26px;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto 64px auto 64px auto;
    align-items:center;
    justify-items:center;
    row-gap:0;
  }
  .rw-flow-step{
    width:100%;
    max-width:420px;
    padding:12px 8px;
  }
  .rw-flow-step strong{font-size:14px}
  .rw-flow-step small{font-size:12px}
  .rw-flow-connector{
    width:100%;
    height:64px;
    min-height:64px;
  }
  .rw-flow-arrow-desktop{display:none}
  .rw-flow-arrow-mobile{display:block;width:20px;height:48px}
}
@media(max-width:560px){
  .rw-flow{
    grid-column:1 / -1;
    width:100%;
    margin-top:24px;
    padding:34px 20px;
  }
  .rw-flow-step{max-width:none;padding:10px 4px}
  .rw-flow-connector{height:58px;min-height:58px}
  .rw-flow-arrow-mobile{width:18px;height:44px}
}

/* =========================================================
   RINGO opening sequence — black terminal + dot / leaf / enso
   ========================================================= */
html.rw-opening-active,
html.rw-opening-active body{overflow:hidden!important}
.rw-opening{
  position:fixed;inset:0;z-index:99999;background:#050505;color:#fff;
  display:grid;place-items:center;overflow:hidden;opacity:1;visibility:visible;
  transition:opacity .85s cubic-bezier(.22,.61,.36,1),visibility .85s;
}
.rw-opening.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.rw-opening-skip{
  position:absolute;top:28px;right:30px;padding:8px 0;border:0;border-bottom:1px solid rgba(255,255,255,.45);
  background:transparent;color:#fff;font:500 10px/1 Inter,sans-serif;letter-spacing:.22em;cursor:pointer;z-index:3
}
.rw-opening-visual{position:absolute;left:50%;top:35%;width:180px;height:180px;transform:translate(-50%,-50%)}
.rw-opening-dot{position:absolute;left:50%;top:50%;width:18px;height:18px;border-radius:50%;background:var(--red,#c9182b);transform:translate(-50%,-50%) scale(0);opacity:0}
.rw-opening-leaf{position:absolute;left:calc(50% + 3px);top:calc(50% - 25px);width:30px;height:16px;background:#fff;border-radius:100% 0 100% 0;transform:rotate(-24deg) scale(0);transform-origin:left bottom;opacity:0}
.rw-opening-enso{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:0;transform:rotate(-9deg)}
.rw-opening-enso path{fill:none;stroke:#fff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:530;stroke-dashoffset:530;filter:url(#none)}
.rw-opening-brand{position:absolute;left:50%;top:54%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0}
.rw-opening-brand span{font-family:"Noto Sans JP",sans-serif;font-size:22px;letter-spacing:.18em}
.rw-opening-brand strong{font:500 12px/1 Inter,sans-serif;letter-spacing:.42em;white-space:nowrap}
.rw-opening-terminal{position:absolute;left:6vw;right:6vw;top:64%;display:flex;align-items:baseline;gap:.55em;font:400 clamp(17px,2.15vw,34px)/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;letter-spacing:.015em;opacity:0}
.rw-opening-prompt{color:var(--red,#c9182b)}
.rw-opening-text{white-space:pre-wrap;word-break:keep-all}
.rw-opening-caret{animation:rwCaret .68s steps(1,end) infinite}
.rw-opening.phase-dot .rw-opening-dot{animation:rwDot .55s cubic-bezier(.34,1.56,.64,1) forwards}
.rw-opening.phase-leaf .rw-opening-leaf{animation:rwLeaf .55s cubic-bezier(.34,1.56,.64,1) forwards}
.rw-opening.phase-enso .rw-opening-enso{opacity:1}.rw-opening.phase-enso .rw-opening-enso path{animation:rwEnso 1.15s cubic-bezier(.65,0,.35,1) forwards}
.rw-opening.phase-brand .rw-opening-brand{animation:rwFadeUp .55s ease forwards}
.rw-opening.phase-terminal .rw-opening-terminal{animation:rwFadeUp .4s ease forwards}
@keyframes rwDot{to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes rwLeaf{to{opacity:1;transform:rotate(-24deg) scale(1)}}
@keyframes rwEnso{to{stroke-dashoffset:0}}
@keyframes rwFadeUp{from{opacity:0;transform:translate(-50%,calc(-50% + 12px))}to{opacity:1;transform:translate(-50%,-50%)}}
@keyframes rwCaret{0%,48%{opacity:1}49%,100%{opacity:0}}
@media(max-width:700px){
  .rw-opening-skip{top:20px;right:20px}
  .rw-opening-visual{top:31%;width:144px;height:144px}
  .rw-opening-brand{top:49%}
  .rw-opening-terminal{left:22px;right:22px;top:61%;font-size:clamp(15px,4.8vw,22px);line-height:1.55}
  .rw-opening-text{word-break:normal}
}
@media(prefers-reduced-motion:reduce){
  .rw-opening{display:none!important}
}

/* =========================================================
   Opening terminal layout stabilization v1.1
   - Keeps every typed statement visible on desktop
   - Centers the text block reliably on mobile
   ========================================================= */
.rw-opening-terminal{
  left:50%;
  right:auto;
  top:62%;
  width:min(88vw,1180px);
  transform:translateX(-50%);
  display:block;
  opacity:0;
}
.rw-opening-terminal-inner{
  width:100%;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:start;
  column-gap:.55em;
  font:400 clamp(16px,1.55vw,25px)/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  letter-spacing:.015em;
}
.rw-opening-lines{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.22em;
}
.rw-opening-line{
  display:block;
  min-height:1.5em;
  white-space:pre-wrap;
  word-break:keep-all;
  overflow-wrap:normal;
}
.rw-opening-line.is-complete{color:rgba(255,255,255,.72)}
.rw-opening-line.is-current{color:#fff}
.rw-opening-caret{align-self:end;margin-bottom:.08em}
.rw-opening.phase-terminal .rw-opening-terminal{animation:rwTerminalFade .4s ease forwards}
@keyframes rwTerminalFade{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@media(max-width:700px){
  .rw-opening-visual{top:29%;}
  .rw-opening-brand{top:46%;}
  .rw-opening-terminal{
    left:50%;
    right:auto;
    top:58%;
    width:min(calc(100vw - 48px),520px);
    transform:translateX(-50%);
  }
  .rw-opening-terminal-inner{
    grid-template-columns:auto minmax(0,1fr) auto;
    column-gap:.45em;
    font-size:clamp(14px,4.15vw,19px);
    line-height:1.55;
  }
  .rw-opening-lines{gap:.4em}
  .rw-opening-line{
    word-break:normal;
    overflow-wrap:anywhere;
  }
}
@media(max-width:390px){
  .rw-opening-terminal{width:calc(100vw - 36px)}
  .rw-opening-terminal-inner{font-size:14px;column-gap:.35em}
}


/* =========================================================
   Opening typography v1.2 — English typewriter treatment
   ========================================================= */
.rw-opening-skip,
.rw-opening-brand span,
.rw-opening-brand strong,
.rw-opening-terminal,
.rw-opening-terminal-inner,
.rw-opening-prompt,
.rw-opening-line,
.rw-opening-caret{
  font-family:"Courier Prime","Courier New",Courier,monospace !important;
}
.rw-opening-brand span{
  font-size:24px;
  font-weight:700;
  letter-spacing:.16em;
}
.rw-opening-brand strong{
  font-size:12px;
  font-weight:400;
  letter-spacing:.34em;
}
.rw-opening-terminal-inner{
  font-weight:400;
  letter-spacing:.01em;
}
.rw-opening-line{
  text-rendering:geometricPrecision;
  font-variant-ligatures:none;
}
.rw-opening-line.is-complete{
  color:rgba(255,255,255,.76);
}
@media(max-width:700px){
  .rw-opening-brand span{font-size:21px}
  .rw-opening-brand strong{font-size:11px;letter-spacing:.28em}
  .rw-opening-terminal{
    width:min(calc(100vw - 40px),540px);
  }
  .rw-opening-terminal-inner{
    font-size:clamp(14px,4vw,18px);
  }
}

/* =========================================================
   RINGO WORKS opening v2.0
   dot → leaf → enso → 林檎 → terminal → final lockup
   ========================================================= */
.rw-opening-skip,
.rw-opening-terminal,
.rw-opening-terminal-inner,
.rw-opening-line,
.rw-opening-caret,
.rw-opening-lockup{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,"Liberation Mono",monospace !important;
}
.rw-opening-visual{top:30%;}
.rw-opening-kanji{
  position:absolute;
  left:50%;
  top:49%;
  transform:translate(-50%,calc(-50% + 12px));
  opacity:0;
  color:#fff;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,"Liberation Mono","Noto Sans JP",monospace !important;
  font-size:clamp(30px,3.2vw,48px);
  font-weight:500;
  line-height:1;
  letter-spacing:.2em;
  padding-left:.2em;
  white-space:nowrap;
}
.rw-opening.phase-kanji .rw-opening-kanji{
  animation:rwKanjiIn .7s cubic-bezier(.22,.61,.36,1) forwards;
}
.rw-opening.phase-kanji-out .rw-opening-kanji{
  animation:rwKanjiOut .45s ease forwards;
}
.rw-opening-terminal{
  left:50%;
  right:auto;
  top:55%;
  width:min(82vw,980px);
  transform:translate(-50%,12px);
  display:block;
  opacity:0;
}
.rw-opening-terminal-inner{
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  column-gap:.45em;
  font-size:clamp(17px,1.65vw,27px);
  font-weight:400;
  line-height:1.55;
  letter-spacing:.005em;
}
.rw-opening-lines{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.28em;
}
.rw-opening-line{
  display:block;
  min-height:1.55em;
  white-space:pre-wrap;
  word-break:keep-all;
  overflow-wrap:normal;
  color:#fff;
  font-variant-ligatures:none;
}
.rw-opening-line::before{
  content:"> ";
  color:var(--red,#c9182b);
}
.rw-opening-line.is-complete{color:rgba(255,255,255,.76)}
.rw-opening-caret{align-self:end;margin-bottom:.12em;color:#fff}
.rw-opening.phase-terminal .rw-opening-terminal{
  animation:rwTerminalFade .42s ease forwards;
}
.rw-opening.phase-terminal-out .rw-opening-terminal{
  animation:rwTerminalOut .48s ease forwards;
}
.rw-opening-lockup{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,calc(-50% + 14px));
  opacity:0;
  width:min(86vw,900px);
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
}
.rw-opening-lockup strong{
  color:#fff;
  font-size:clamp(25px,3.15vw,52px);
  font-weight:500;
  line-height:1;
  letter-spacing:.28em;
  padding-left:.28em;
  white-space:nowrap;
}
.rw-opening-lockup span{
  color:rgba(255,255,255,.72);
  font-size:clamp(12px,1vw,16px);
  font-weight:400;
  line-height:1.5;
  letter-spacing:.08em;
}
.rw-opening.phase-lockup .rw-opening-lockup{
  animation:rwLockupIn .75s cubic-bezier(.22,.61,.36,1) forwards;
}
.rw-opening.phase-lockup .rw-opening-visual{
  animation:rwVisualOut .55s ease forwards;
}
@keyframes rwKanjiIn{
  from{opacity:0;transform:translate(-50%,calc(-50% + 12px));filter:blur(3px)}
  to{opacity:1;transform:translate(-50%,-50%);filter:blur(0)}
}
@keyframes rwKanjiOut{
  from{opacity:1;transform:translate(-50%,-50%)}
  to{opacity:0;transform:translate(-50%,calc(-50% - 8px))}
}
@keyframes rwTerminalOut{
  from{opacity:1;transform:translate(-50%,0)}
  to{opacity:0;transform:translate(-50%,-10px)}
}
@keyframes rwLockupIn{
  from{opacity:0;transform:translate(-50%,calc(-50% + 14px));filter:blur(3px)}
  to{opacity:1;transform:translate(-50%,-50%);filter:blur(0)}
}
@keyframes rwVisualOut{
  from{opacity:1}
  to{opacity:0}
}
@media(max-width:700px){
  .rw-opening-visual{top:27%;width:138px;height:138px}
  .rw-opening-kanji{top:43%;font-size:31px}
  .rw-opening-terminal{
    top:53%;
    width:min(calc(100vw - 44px),540px);
  }
  .rw-opening-terminal-inner{
    font-size:clamp(14px,4vw,18px);
    line-height:1.6;
    column-gap:.3em;
  }
  .rw-opening-lines{gap:.45em}
  .rw-opening-line{
    word-break:normal;
    overflow-wrap:anywhere;
  }
  .rw-opening-lockup{width:calc(100vw - 38px);gap:12px}
  .rw-opening-lockup strong{
    font-size:clamp(22px,7vw,34px);
    letter-spacing:.18em;
    padding-left:.18em;
  }
  .rw-opening-lockup span{font-size:12px;letter-spacing:.04em}
}
@media(max-width:390px){
  .rw-opening-terminal{width:calc(100vw - 30px)}
  .rw-opening-terminal-inner{font-size:13.5px}
  .rw-opening-line::before{content:"> ";}
  .rw-opening-lockup strong{font-size:21px}
}

/* =========================================================
   RINGO WORKS v3.0 — refined compact opening typography
   Keeps the full opening sequence while reducing visual scale.
   ========================================================= */
.rw-opening-kanji{
  font-family:"IBM Plex Mono","Noto Sans JP","SFMono-Regular",Consolas,"Liberation Mono",monospace !important;
  font-size:clamp(26px,2.65vw,40px) !important;
  font-weight:500;
  letter-spacing:.16em;
  padding-left:.16em;
}
.rw-opening-terminal{
  width:min(78vw,900px);
}
.rw-opening-terminal-inner{
  font-size:clamp(15px,1.38vw,23px) !important;
  line-height:1.58;
}
.rw-opening-lines{
  gap:.24em;
}
.rw-opening-lockup{
  gap:12px;
}
.rw-opening-lockup strong{
  font-size:clamp(22px,2.65vw,44px) !important;
  letter-spacing:.25em;
  padding-left:.25em;
}
.rw-opening-lockup span{
  font-size:clamp(11px,.88vw,14px) !important;
  letter-spacing:.075em;
}
.rw-opening-skip{
  font-size:10px;
  letter-spacing:.18em;
}
@media(max-width:700px){
  .rw-opening-kanji{
    font-size:clamp(24px,7.2vw,32px) !important;
    letter-spacing:.14em;
    padding-left:.14em;
  }
  .rw-opening-terminal{
    width:min(calc(100vw - 48px),500px);
  }
  .rw-opening-terminal-inner{
    font-size:clamp(12px,3.55vw,16px) !important;
    line-height:1.62;
  }
  .rw-opening-lines{gap:.32em}
  .rw-opening-lockup strong{
    font-size:clamp(20px,6.4vw,30px) !important;
    letter-spacing:.2em;
    padding-left:.2em;
  }
  .rw-opening-lockup span{
    font-size:clamp(10px,3vw,12px) !important;
    letter-spacing:.05em;
  }
}
@media(max-width:390px){
  .rw-opening-terminal{width:calc(100vw - 38px)}
  .rw-opening-terminal-inner{font-size:12px !important}
  .rw-opening-lockup strong{font-size:19px !important}
}

/* =========================================================
   RINGO WORKS v3.1 — opening sequence matched to storyboard
   Home page styles remain unchanged.
   ========================================================= */
.rw-opening-brandstage{
  position:absolute;
  left:50%;
  top:calc(50% + 92px);
  transform:translate(-50%,10px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  width:min(90vw,720px);
  opacity:0;
  pointer-events:none;
}
.rw-opening-brandstage .rw-opening-kanji{
  position:static !important;
  inset:auto !important;
  transform:none !important;
  opacity:1 !important;
  font-family:"IBM Plex Mono","Noto Sans JP","SFMono-Regular",Consolas,monospace !important;
  font-size:clamp(25px,2.2vw,36px) !important;
  font-weight:400;
  line-height:1;
  letter-spacing:.12em;
  padding-left:.12em;
  color:#fff;
}
.rw-opening-brandname{
  color:#fff;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:clamp(13px,1.05vw,17px);
  font-weight:500;
  line-height:1;
  letter-spacing:.42em;
  padding-left:.42em;
  white-space:nowrap;
}
.rw-opening.phase-brand .rw-opening-brandstage{
  animation:rwBrandStageIn .62s cubic-bezier(.22,.61,.36,1) forwards;
}
.rw-opening.phase-brand .rw-opening-visual{
  animation:rwVisualCompact .72s cubic-bezier(.22,.61,.36,1) forwards;
}
.rw-opening.phase-brand-out .rw-opening-brandstage{
  animation:rwBrandStageOut .38s ease forwards;
}
.rw-opening.phase-brand-out .rw-opening-visual{
  animation:rwVisualHide .38s ease forwards;
}
.rw-opening.phase-brand-return .rw-opening-brandstage{
  animation:rwBrandReturn .58s ease forwards;
}
.rw-opening.phase-brand-return .rw-opening-visual{
  animation:rwVisualReturn .58s ease forwards;
}
.rw-opening.phase-return-out .rw-opening-brandstage,
.rw-opening.phase-return-out .rw-opening-visual{
  animation:rwReturnOut .42s ease forwards;
}
.rw-opening-enter{
  position:absolute;
  inset:0;
  z-index:10;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:14px;
  background:#f7f5f1;
  color:#111;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.rw-opening-enter span{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:clamp(12px,1vw,15px);
  font-weight:500;
  letter-spacing:.16em;
}
.rw-opening-enter i{
  display:block;
  width:46px;
  height:1px;
  background:#111;
  transform:scaleX(0);
  transform-origin:left center;
}
.rw-opening.phase-enter .rw-opening-enter{
  visibility:visible;
  animation:rwEnterIn .62s ease forwards;
}
.rw-opening.phase-enter .rw-opening-enter i{
  animation:rwEnterLine .72s .35s ease forwards;
}
.rw-opening.phase-lockup .rw-opening-lockup{
  animation:rwLockupIn .68s cubic-bezier(.22,.61,.36,1) forwards;
}
.rw-opening.phase-lockup .rw-opening-visual{
  opacity:0 !important;
  animation:none !important;
}
@keyframes rwBrandStageIn{
  from{opacity:0;transform:translate(-50%,18px);filter:blur(3px)}
  to{opacity:1;transform:translate(-50%,0);filter:blur(0)}
}
@keyframes rwVisualCompact{
  from{top:50%;width:clamp(170px,22vw,300px);height:clamp(170px,22vw,300px)}
  to{top:37%;width:clamp(112px,12vw,162px);height:clamp(112px,12vw,162px)}
}
@keyframes rwBrandStageOut{
  from{opacity:1;transform:translate(-50%,0)}
  to{opacity:0;transform:translate(-50%,-7px)}
}
@keyframes rwVisualHide{from{opacity:1}to{opacity:0}}
@keyframes rwBrandReturn{
  from{opacity:0;transform:translate(-50%,6px)}
  to{opacity:.42;transform:translate(-50%,0)}
}
@keyframes rwVisualReturn{from{opacity:0}to{opacity:.42}}
@keyframes rwReturnOut{from{opacity:.42}to{opacity:0}}
@keyframes rwEnterIn{from{opacity:0}to{opacity:1}}
@keyframes rwEnterLine{from{transform:scaleX(0)}to{transform:scaleX(1)}}

@media(max-width:700px){
  .rw-opening-brandstage{top:calc(50% + 72px);gap:11px}
  .rw-opening-brandstage .rw-opening-kanji{font-size:25px !important}
  .rw-opening-brandname{font-size:12px;letter-spacing:.34em;padding-left:.34em}
  @keyframes rwVisualCompact{
    from{top:47%;width:138px;height:138px}
    to{top:35%;width:108px;height:108px}
  }
}

/* =========================================================
   RINGO WORKS v4.0 — device-consistent opening, no Enso
   Opening only. Homepage styles above remain unchanged.
   ========================================================= */
.rw-opening{
  --rw-symbol-size:clamp(112px,18vw,176px);
  --rw-symbol-compact:clamp(66px,9vw,88px);
  background:#050505;
}
.rw-opening-enso{display:none !important}
.rw-opening-visual{
  top:50% !important;
  width:var(--rw-symbol-size) !important;
  height:var(--rw-symbol-size) !important;
  transform:translate(-50%,-50%) !important;
  opacity:1;
}
.rw-opening-dot{
  width:clamp(20px,3vw,28px) !important;
  height:clamp(20px,3vw,28px) !important;
  left:50% !important;
  top:57% !important;
  transform:translate(-50%,-50%) scale(0) !important;
  background:#d71935 !important;
  box-shadow:0 0 0 0 rgba(215,25,53,.28);
}
.rw-opening-leaf{
  width:clamp(24px,3.8vw,36px) !important;
  height:clamp(12px,1.9vw,18px) !important;
  left:56% !important;
  top:38% !important;
  transform:translate(-50%,-50%) rotate(-42deg) scale(0) !important;
  transform-origin:20% 80% !important;
  background:#fff !important;
  border-radius:100% 0 100% 0 !important;
}
.rw-opening.phase-dot .rw-opening-dot{
  animation:rwV4DotIn .58s cubic-bezier(.16,1,.3,1) forwards !important;
}
.rw-opening.phase-leaf .rw-opening-leaf{
  animation:rwV4LeafIn .62s cubic-bezier(.16,1,.3,1) forwards !important;
}
.rw-opening.phase-symbol .rw-opening-dot{
  animation:rwV4DotPulse .72s ease both !important;
}
.rw-opening.phase-symbol .rw-opening-leaf{
  animation:rwV4LeafSettle .72s ease both !important;
}
.rw-opening-brandstage{
  top:calc(50% + clamp(72px,11vw,112px)) !important;
  gap:8px !important;
}
.rw-opening-brandstage .rw-opening-kanji{
  font-size:clamp(22px,2.8vw,30px) !important;
  letter-spacing:.1em !important;
  padding-left:.1em !important;
}
.rw-opening-brandname{
  font-size:clamp(11px,1.35vw,14px) !important;
  letter-spacing:.36em !important;
  padding-left:.36em !important;
}
.rw-opening.phase-brand .rw-opening-visual{
  animation:rwV4SymbolCompact .72s cubic-bezier(.16,1,.3,1) forwards !important;
}
.rw-opening.phase-brand .rw-opening-brandstage{
  animation:rwBrandStageIn .62s .08s cubic-bezier(.22,.61,.36,1) forwards !important;
}
.rw-opening.phase-brand-out .rw-opening-visual,
.rw-opening.phase-brand-out .rw-opening-brandstage{
  animation:rwV4FadeOut .42s ease forwards !important;
}
.rw-opening.phase-terminal .rw-opening-terminal{animation:rwV4FadeIn .52s ease forwards !important}
.rw-opening.phase-terminal-out .rw-opening-terminal{animation:rwV4FadeOut .42s ease forwards !important}
.rw-opening.phase-lockup .rw-opening-lockup{animation:rwV4LockupIn .72s cubic-bezier(.16,1,.3,1) forwards !important}
.rw-opening-lockup{gap:10px !important}
.rw-opening-lockup strong{font-size:clamp(21px,3vw,38px) !important}
.rw-opening-lockup span{font-size:clamp(10px,1.1vw,13px) !important}
.rw-opening-terminal{width:min(84vw,680px) !important}
.rw-opening-terminal-inner{font-size:clamp(13px,1.55vw,19px) !important;line-height:1.66 !important}

@keyframes rwV4DotIn{
  0%{transform:translate(-50%,-50%) scale(0);opacity:0}
  70%{transform:translate(-50%,-50%) scale(1.12);opacity:1}
  100%{transform:translate(-50%,-50%) scale(1);opacity:1}
}
@keyframes rwV4LeafIn{
  0%{transform:translate(-50%,-50%) rotate(-70deg) scale(0);opacity:0}
  70%{transform:translate(-50%,-50%) rotate(-36deg) scale(1.08);opacity:1}
  100%{transform:translate(-50%,-50%) rotate(-42deg) scale(1);opacity:1}
}
@keyframes rwV4DotPulse{
  0%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 0 rgba(215,25,53,.28)}
  50%{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 0 0 16px rgba(215,25,53,0)}
  100%{transform:translate(-50%,-50%) scale(1);box-shadow:0 0 0 0 rgba(215,25,53,0)}
}
@keyframes rwV4LeafSettle{
  0%,100%{transform:translate(-50%,-50%) rotate(-42deg) scale(1)}
  50%{transform:translate(-50%,-50%) rotate(-34deg) scale(1.04)}
}
@keyframes rwV4SymbolCompact{
  from{top:50%;width:var(--rw-symbol-size);height:var(--rw-symbol-size);transform:translate(-50%,-50%)}
  to{top:38%;width:var(--rw-symbol-compact);height:var(--rw-symbol-compact);transform:translate(-50%,-50%)}
}
@keyframes rwV4FadeIn{from{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur(0)}}
@keyframes rwV4FadeOut{from{opacity:1}to{opacity:0}}
@keyframes rwV4LockupIn{
  from{opacity:0;transform:translate(-50%,-44%);filter:blur(4px)}
  to{opacity:1;transform:translate(-50%,-50%);filter:blur(0)}
}
@media(max-width:700px){
  .rw-opening{--rw-symbol-size:132px;--rw-symbol-compact:76px}
  .rw-opening-brandstage{top:calc(50% + 78px) !important;gap:7px !important}
  .rw-opening-brandstage .rw-opening-kanji{font-size:23px !important}
  .rw-opening-brandname{font-size:11px !important;letter-spacing:.32em !important;padding-left:.32em !important}
  .rw-opening-terminal{width:calc(100vw - 44px) !important}
  .rw-opening-terminal-inner{font-size:12.5px !important}
  .rw-opening-lockup strong{font-size:21px !important;letter-spacing:.22em !important;padding-left:.22em !important}
  .rw-opening-lockup span{font-size:10px !important}
  @keyframes rwV4SymbolCompact{
    from{top:50%;width:132px;height:132px;transform:translate(-50%,-50%)}
    to{top:38%;width:76px;height:76px;transform:translate(-50%,-50%)}
  }
}
@media(prefers-reduced-motion:reduce){
  .rw-opening *{animation-duration:.01ms !important;animation-delay:0ms !important}
}


/* =========================================================
   RINGO WORKS Opening v4.1 — isolated, cross-device build
   No SVG, no inherited opening selectors, no keyframe dependency.
   ========================================================= */
html.rw5-active,html.rw5-active body{overflow:hidden!important}
.rw5-opening,.rw5-opening *{box-sizing:border-box}
.rw5-opening{position:fixed;inset:0;z-index:2147483000;background:#050505;color:#fff;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;opacity:1;visibility:visible;transition:opacity .7s ease,visibility .7s ease}
.rw5-opening.rw5-leaving{opacity:0;visibility:hidden;pointer-events:none}
.rw5-skip{position:absolute;z-index:5;top:max(18px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));padding:8px;border:0;background:transparent;color:rgba(255,255,255,.58);font:500 10px/1 "IBM Plex Mono",monospace;letter-spacing:.18em;cursor:pointer}
.rw5-stage{position:absolute;left:50%;top:40%;width:240px;height:240px;transform:translate(-50%,-50%)}
.rw5-symbol{position:absolute;left:50%;top:50%;width:112px;height:112px;transform:translate(-50%,-50%);transition:transform .75s cubic-bezier(.16,1,.3,1),top .75s cubic-bezier(.16,1,.3,1)}
.rw5-fruit{position:absolute;left:50%;top:54%;display:block;width:72px;height:72px;border-radius:48% 48% 52% 52%;background:#d3192c;opacity:0;transform:translate(-50%,-50%) scale(.08);transition:opacity .18s linear,transform .58s cubic-bezier(.22,1.5,.4,1)}
.rw5-leaf{position:absolute;left:58%;top:17%;display:block;width:31px;height:17px;border-radius:100% 0 100% 0;background:#fff;opacity:0;transform:rotate(-30deg) scale(.15);transform-origin:0 100%;transition:opacity .18s linear,transform .55s cubic-bezier(.22,1.5,.4,1)}
.rw5-opening[data-step="dot"] .rw5-fruit,.rw5-opening[data-step="leaf"] .rw5-fruit,.rw5-opening[data-step="symbol"] .rw5-fruit,.rw5-opening[data-step="brand"] .rw5-fruit{opacity:1;transform:translate(-50%,-50%) scale(.23)}
.rw5-opening[data-step="leaf"] .rw5-leaf,.rw5-opening[data-step="symbol"] .rw5-leaf,.rw5-opening[data-step="brand"] .rw5-leaf{opacity:1;transform:rotate(-30deg) scale(1)}
.rw5-opening[data-step="symbol"] .rw5-fruit,.rw5-opening[data-step="brand"] .rw5-fruit{transform:translate(-50%,-50%) scale(1)}
.rw5-opening[data-step="brand"] .rw5-symbol{top:28%;transform:translate(-50%,-50%) scale(.58)}
.rw5-brand{position:absolute;left:50%;top:67%;width:100%;text-align:center;opacity:0;transform:translate(-50%,12px);transition:opacity .5s ease,transform .5s ease}
.rw5-opening[data-step="brand"] .rw5-brand{opacity:1;transform:translate(-50%,0)}
.rw5-kanji{font-family:"Noto Serif JP","Yu Mincho",serif;font-size:25px;line-height:1.2;letter-spacing:.14em;padding-left:.14em}
.rw5-name{margin-top:8px;font-size:11px;line-height:1;letter-spacing:.34em;padding-left:.34em;white-space:nowrap}
.rw5-terminal{position:absolute;left:50%;top:52%;display:flex;width:min(680px,calc(100vw - 44px));transform:translate(-50%,-50%);opacity:0;transition:opacity .42s ease;font-size:clamp(13px,1.5vw,19px);line-height:1.65}
.rw5-opening[data-step="terminal"] .rw5-terminal{opacity:1}
.rw5-lines{display:flex;flex-direction:column;gap:.28em;min-width:0}.rw5-line{display:block;white-space:nowrap}.rw5-line::before{content:"> ";color:#d3192c}.rw5-line.done{color:rgba(255,255,255,.72)}
.rw5-caret{margin-left:.15em;animation:rw5blink .7s steps(1,end) infinite}@keyframes rw5blink{50%{opacity:0}}
.rw5-lockup{position:absolute;left:50%;top:50%;display:flex;flex-direction:column;align-items:center;gap:11px;width:calc(100vw - 40px);transform:translate(-50%,-44%);opacity:0;transition:opacity .65s ease,transform .65s cubic-bezier(.16,1,.3,1);text-align:center}
.rw5-opening[data-step="lockup"] .rw5-lockup{opacity:1;transform:translate(-50%,-50%)}
.rw5-lockup strong{font-size:clamp(22px,3vw,38px);font-weight:500;letter-spacing:.23em;padding-left:.23em}.rw5-lockup span{font-size:clamp(10px,1.1vw,13px);letter-spacing:.04em;color:rgba(255,255,255,.7)}
.rw5-enter{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#fff;color:#111;opacity:0;visibility:hidden;transition:opacity .48s ease,visibility .48s ease}.rw5-opening[data-step="enter"] .rw5-enter{opacity:1;visibility:visible}.rw5-enter span{font-size:11px;letter-spacing:.28em;padding-left:.28em}.rw5-enter i{display:block;width:1px;height:28px;background:#111;transform-origin:top;animation:rw5line 1s ease-in-out infinite}@keyframes rw5line{0%,100%{transform:scaleY(.35);opacity:.35}50%{transform:scaleY(1);opacity:1}}
@media(max-width:600px){.rw5-stage{top:39%;width:200px;height:210px}.rw5-symbol{width:104px;height:104px}.rw5-brand{top:69%}.rw5-kanji{font-size:23px}.rw5-name{font-size:10.5px}.rw5-terminal{top:51%;font-size:12.5px;line-height:1.7}.rw5-line{white-space:normal}.rw5-lockup strong{font-size:21px}.rw5-lockup span{font-size:10px}}
@media(prefers-reduced-motion:reduce){.rw5-opening *{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Keyboard access for the enhanced static pages. */
:focus-visible{outline:2px solid var(--red);outline-offset:4px}
.skip-link{
  position:fixed;
  z-index:2000;
  top:12px;
  left:12px;
  padding:10px 14px;
  background:var(--ink);
  color:#fff;
  font-size:12px;
  transform:translateY(-180%);
  transition:transform .2s ease;
}
.skip-link:focus{transform:translateY(0)}
main:focus{outline:none}
