:root {
  --paper:#f9f8f5;
  --ink:#191c1b;
  --muted:#59605f;
  --line:#d4d6d2;
  --accent:#ed282c;
  --secondary:#2364e8;
  --cream:#eae6dc;
  --font:'IBM Plex Sans JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:24px
}
body {
  margin:0;
  background:radial-gradient(ellipse at 60% 25%,#fff 0,transparent 60%),var(--paper);
  color:var(--ink);
  font:400 15px/1.8 var(--font);
  -webkit-font-smoothing:antialiased
}
a {
  color:inherit
}
button,input {
  font:inherit;
  color:inherit
}
button,a,input,.dial {
  -webkit-tap-highlight-color:transparent
}
button {
  cursor:pointer
}
button:disabled {
  cursor:default
}
a {
  text-underline-offset:5px
}
h1,h2,h3,h4,p {
  margin:0
}
button {
  border:0
}
svg {
  display:block
}
canvas {
  display:none
}
html.enhanced canvas {
  display:block
}
.enhanced .screen-fallback,.enhanced .paper-fallback {
  display:none
}
::selection {
  background:#dce6ef
}
:focus-visible {
  outline:3px solid #2954a1;
  outline-offset:5px
}
.wrap {
  width:calc(100% - 36px);
  max-width:1580px;
  margin-inline:auto
}
.sr-only,.skip {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip-path:inset(50%)
}
.skip:focus {
  width:auto;
  height:auto;
  clip-path:none;
  top:8px;
  left:8px;
  background:white;
  padding:12px;
  z-index:99
}
.site-header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  padding-block:24px 20px
}
.brand {
  display:flex;
  flex-shrink:0;
  align-items:center;
  min-height:44px
}
.brand img {
  width:126px;
  height:auto
}
.site-header nav {
  display:flex;
  align-items:center;
  gap:16px;
  font-size:11px;
  font-weight:500
}
.site-header nav a {
  display:flex;
  align-items:center;
  min-height:44px;
  text-decoration:none
}
.site-header nav a:hover,.site-header nav a[aria-current] {
  text-decoration:underline
}
.hero {
  padding-block:25px 22px
}
.eyebrow {
  font-size:11px;
  letter-spacing:.17em;
  margin-bottom:18px;
  color:var(--muted)
}
h1 {
  font-size:clamp(52px,10vw,80px);
  font-weight:700;
  letter-spacing:-.075em;
  line-height:1.14
}
.tagline {
  font-weight:600;
  font-size:15px;
  letter-spacing:-.025em;
  margin-block:21px 25px
}
.cta {
  background:#df252a;
  color:white;
  text-decoration:none;
  display:inline-flex;
  gap:20px;
  align-items:center;
  border-radius:50px;
  padding:14px 24px;
  font-size:14px;
  font-weight:600;
  box-shadow:inset 0 1px 1px #ffffff55;
  transition:background .2s,transform .2s
}
.cta:hover {
  background:#c61920;
  transform:translateY(-2px)
}
.cta span {
  font-size:24px;
  line-height:1
}
.intro {
  margin-top:25px;
  font-size:13px;
  color:var(--muted);
  line-height:1.9
}
.machine-stage {
  position:relative;
  margin-top:65px;
  padding:0 3px 0 0;
  isolation:isolate
}
.cable {
  position:absolute;
  left:-10px;
  top:-40px;
  width:100%;
  height:80%;
  z-index:-1;
  overflow:visible;
  pointer-events:none
}
.cable path {
  fill:none;
  stroke:var(--accent);
  stroke-width:14;
  stroke-linecap:round;
  filter:drop-shadow(0 3px 1px #6f181540);
  transition:stroke .35s
}
.machine {
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  background:linear-gradient(105deg,#f5f2e9,#e7e3d8 48%,#eeeae1);
  border:2px solid #b5b0a3;
  border-radius:19px;
  padding:23px 13px 25px;
  box-shadow:inset 0 4px 2px #ffffff,inset 0 -5px 2px #c3bdb1,inset -5px 0 2px #cbc5b9,4px 6px 0 #b7b1a5,6px 10px 0 #d0cbc0,9px 17px 15px #33302225,2px 28px 30px -17px #302b29aa;
  gap:0;
  z-index:1
}
.machine::before {
  content:'';
  position:absolute;
  inset:9px;
  border:1px solid #bcb6a9;
  border-radius:12px;
  box-shadow:0 -1px 0 white;
  pointer-events:none
}
.machine::after {
  content:'';
  position:absolute;
  bottom:-15px;
  left:26px;
  right:26px;
  height:10px;
  border-left:28px solid #494740;
  border-right:28px solid #494740;
  border-radius:3px;
  z-index:-1
}
.beacon {
  position:absolute;
  right:33px;
  top:-27px;
  width:37px;
  height:27px;
  background:radial-gradient(circle at 32% 24%,#fff 0 8%,#ffb4ae 14%,var(--accent) 48%,#a82d2b 100%);
  border-radius:50% 50% 10% 10%;
  border-bottom:7px solid #9c9789;
  box-shadow:0 3px 0 #fff8,0 -1px 0 #fff9
}
.handle {
  position:absolute;
  right:-13px;
  top:65px;
  width:15px;
  height:150px;
  border:5px solid #a09c92;
  border-left:0;
  border-radius:0 15px 15px 0;
  box-shadow:2px 1px 1px #756f63,inset -2px 1px 1px #fff
}
.screw {
  position:absolute;
  width:11px;
  height:11px;
  background:radial-gradient(circle,#716956 0 25%,#222 28% 40%,#c0b39a 45%,#eee5d5 65%,#948673 70%);
  border-radius:50%;
  box-shadow:0 1px 1px #fff
}
.screw::after {
  content:'';
  position:absolute;
  top:5px;
  left:3px;
  width:5px;
  border-top:1px solid #d2c6a9;
  transform:rotate(-40deg)
}
.tl {
  top:13px;
  left:13px
}
.tr {
  top:13px;
  right:13px
}
.bl {
  bottom:13px;
  left:13px
}
.br {
  bottom:13px;
  right:13px
}
.panel {
  position:relative;
  min-width:0
}
.printer-panel {
  grid-column:1/-1;
  grid-row:3;
  display:flex;
  align-items:center;
  border-top:1px solid #bfb9ad;
  margin-top:21px;
  padding:24px 11px 0;
  min-height:170px;
  gap:30px
}
.machine-brand {
  font-size:21px;
  font-weight:600;
  line-height:1.3;
  letter-spacing:-.04em
}
.machine-brand span {
  display:block;
  font-size:11px;
  line-height:1.9;
  letter-spacing:0;
  margin-top:12px;
  font-weight:400
}
.printer {
  width:128px;
  height:130px;
  position:relative;
  flex-shrink:0
}
.slot {
  position:absolute;
  left:-7px;
  right:-7px;
  top:0;
  height:23px;
  border:4px solid #c2bcaf;
  border-radius:8px;
  background:linear-gradient(#252620,#11130f);
  box-shadow:inset 0 2px 5px #000,0 1px 1px #fff
}
.receipt {
  position:absolute;
  left:0;
  right:0;
  top:15px;
  min-height:154px;
  background:linear-gradient(100deg,#fffefa,#fff 75%,#eeeae1);
  padding:12px 10px 14px;
  transform:rotate(3deg);
  transform-origin:top center;
  box-shadow:0 7px 8px #322b2720,0 1px 2px #3332;
  clip-path:polygon(0 0,100% 0,100% 98%,97% 100%,94% 98%,91% 100%,88% 98%,85% 100%,82% 98%,79% 100%,76% 98%,73% 100%,70% 98%,67% 100%,64% 98%,61% 100%,58% 98%,55% 100%,52% 98%,49% 100%,46% 98%,43% 100%,40% 98%,37% 100%,34% 98%,31% 100%,28% 98%,25% 100%,22% 98%,19% 100%,16% 98%,13% 100%,10% 98%,7% 100%,4% 98%,0 100%)
}
.receipt canvas,.receipt svg {
  width:100%;
  height:auto
}
.receipt p {
  font-family:'Yu Mincho',serif;
  font-size:15px;
  font-weight:600;
  line-height:1.5;
  letter-spacing:.12em;
  margin:4px 5px
}
.receipt small {
  font-size:8px;
  color:#67716b;
  margin-left:5px
}
.receipt.printing {
  animation:print-paper .65s ease-out
}
.scenery-panel {
  grid-row:2;
  padding:15px 4px 0;
  border-right:1px solid #bfb9ad
}
.dial-group {
  text-align:center
}
.control-label {
  display:block;
  font-size:12px;
  font-weight:500;
  line-height:1.4
}
.dial {
  position:relative;
  width:58px;
  height:58px;
  margin:0 auto 7px;
  touch-action:none;
  cursor:ns-resize;
  user-select:none;
  border-radius:50%;
  --angle:-125deg
}
.dial[aria-disabled=true] {
  cursor:default
}
.dial-ticks {
  position:absolute;
  inset:-6px;
  border-radius:50%;
  background:repeating-conic-gradient(from 223deg,#5f5b50 0deg 1deg,transparent 1deg 35deg);
  mask:radial-gradient(transparent 65%,#000 66% 69%,transparent 70%);
  -webkit-mask:radial-gradient(transparent 65%,#000 66% 69%,transparent 70%)
}
.dial-cap {
  position:absolute;
  inset:5px;
  border-radius:50%;
  background:linear-gradient(120deg,#fffef8,#e6e0d3 65%,#c8c1b1);
  box-shadow:inset 2px 3px 2px #fff,inset -2px -2px 2px #bcb5a5,1px 2px 0 #827b6b,3px 5px 6px #27271950;
  transform:rotate(var(--angle));
  transition:transform .12s
}
.dial-cap::after {
  content:'';
  position:absolute;
  height:28%;
  width:3px;
  border-radius:2px;
  top:8%;
  left:calc(50% - 1px);
  background:var(--accent);
  box-shadow:0 1px #fff
}
.dial:active .dial-cap {
  box-shadow:inset 1px 1px 3px #b2ac9e,1px 2px 0 #827b6b,1px 3px 4px #27271950
}
.large .dial {
  width:89px;
  height:89px;
  margin:16px auto 9px
}
.large .dial-cap::after {
  width:3px
}
.scene-options {
  display:flex;
  justify-content:center;
  gap:12px;
  font-size:10px;
  color:#5e5b54
}
.scene-options .selected {
  color:#171a19;
  text-decoration:underline;
  text-underline-offset:4px
}
.palettes {
  display:grid;
  grid-template-columns:repeat(3,44px);
  gap:1px 0;
  justify-content:center;
  border:0;
  margin:17px 0 0;
  padding:0
}
.palettes legend {
  font-size:11px;
  margin:0 0 4px;
  padding:0 7px
}
.palette {
  padding:7px;
  width:44px;
  height:44px;
  background:transparent;
  border-radius:50%
}
.palette span {
  display:block;
  width:30px;
  height:30px;
  border-radius:50%;
  background:linear-gradient(90deg,var(--a) 50%,var(--b) 50%);
  border:1px solid #766e5c;
  box-shadow:inset 1px 2px 2px #fff9,inset -1px -2px 2px #0003,1px 2px 2px #28272055;
  transition:transform .12s
}
.palette[aria-pressed=true] span {
  outline:1.5px solid #383c37;
  outline-offset:3px
}
.palette:hover span {
  transform:translateY(-1px)
}
.palette:active span {
  transform:translateY(2px);
  box-shadow:inset 1px 2px 3px #0005
}
.palette.demo-push span {
  animation:demo-press .65s ease-in-out;
}
@keyframes demo-press {
  0%,100% {transform:translateY(0)}
  40% {transform:translateY(2px);box-shadow:inset 1px 2px 3px #0005}
}
.sliders-panel {
  grid-row:2;
  padding:15px 4px 0 10px
}
.faders {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:0
}
.faders label {
  display:flex;
  flex-direction:column;
  align-items:center;
  min-width:0;
  font-size:10px;
  white-space:nowrap
}
.faders input {
  writing-mode:vertical-lr;
  direction:rtl;
  appearance:none;
  -webkit-appearance:none;
  width:44px;
  height:155px;
  margin:14px 0 5px;
  background:transparent;
  cursor:ns-resize;
  touch-action:none
}
.faders input::-webkit-slider-runnable-track {
  background:linear-gradient(90deg,#918b7e,#1e211a 35%,#1d1f18 75%,#666457);
  border-radius:5px;
  width:7px;
  height:100%;
  box-shadow:1px 0 1px #fff
}
.faders input::-webkit-slider-thumb {
  appearance:none;
  -webkit-appearance:none;
  width:25px;
  height:33px;
  margin-left:-9px;
  border:1px solid #b7ae9c;
  border-radius:3px;
  background:repeating-linear-gradient(0deg,transparent 0 8px,#bab4a6 9px,#fffdf6 10px,transparent 11px),linear-gradient(110deg,#fffef7,#dfd8c7);
  box-shadow:inset 2px 1px 1px #fff,2px 3px 3px #26241e60
}
.faders input::-moz-range-track {
  background:#282a22;
  border-radius:5px;
  width:7px
}
.faders input::-moz-range-thumb {
  width:25px;
  height:33px;
  border:1px solid #b7ae9c;
  border-radius:3px;
  background:repeating-linear-gradient(0deg,#ebe5d8 0 8px,#c1b9ab 9px,#fff 10px);
  box-shadow:2px 3px 3px #26241e60
}
.faders output {
  font:9px/1.5 ui-monospace,monospace;
  color:#5d5d52
}
.small-dials {
  display:flex;
  justify-content:space-around;
  gap:6px;
  margin-top:22px
}
.output-panel {
  grid-row:1;
  grid-column:1/-1;
  padding:10px 11px 21px;
  border-bottom:1px solid #bfb9ad
}
.screen-bezel {
  padding:7px;
  background:linear-gradient(125deg,#bcb7a9,#f8f6eb 45%,#aaa493);
  border-radius:9px;
  box-shadow:0 1px 0 #fff,inset 0 1px 3px #5e584d55
}
.screen {
  background:radial-gradient(ellipse,#263a35,#0d1714);
  position:relative;
  aspect-ratio:1.92;
  border-radius:4px;
  box-shadow:inset 0 1px 6px #000;
  overflow:hidden
}
.screen::after {
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:repeating-linear-gradient(0deg,#0002 0 1px,transparent 1px 3px),linear-gradient(120deg,#fff1,transparent 35%)
}
.screen canvas,.screen-fallback {
  width:100%;
  height:100%;
  image-rendering:pixelated
}
.screen-meta {
  display:flex;
  position:absolute;
  left:11px;
  right:11px;
  top:6px;
  justify-content:space-between;
  color:#b3c7b7;
  font:9px/1.5 ui-monospace,monospace;
  letter-spacing:.1em;
  pointer-events:none
}
.main-keys {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  padding:12px 8px 6px;
  gap:12px;
  border:1px solid #c3bdae;
  border-radius:9px;
  margin-top:13px;
  box-shadow:inset 0 1px 3px #8c826c30,0 1px #fff
}
.key-link {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:9px;
  text-decoration:none;
  font-size:12px;
  font-weight:500;
  min-width:0;
  border-radius:4px
}
.square-key {
  width:58px;
  aspect-ratio:1;
  border-radius:5px;
  border:1px solid #827d70;
  box-shadow:inset 2px 3px 2px #fff9,inset -2px -2px 2px #0003,0 3px 0 #8b8577,2px 5px 4px #29271955;
  transition:transform .14s,box-shadow .14s;
  position:relative
}
.square-key::before {
  content:'';
  position:absolute;
  inset:4px;
  border:1px solid #fff2;
  border-radius:2px
}
.read-key {
  background:linear-gradient(120deg,#fffef8,#e5e0d3)
}
.play-key {
  background:linear-gradient(125deg,#ffffff35,transparent 50%),var(--accent)
}
.try-key {
  background:linear-gradient(125deg,#ffffff35,transparent 50%),var(--secondary)
}
.key-link:hover .square-key,.key-link.linked .square-key {
  transform:translateY(-3px);
  box-shadow:inset 2px 3px 2px #fffa,inset -2px -2px 2px #0003,0 5px 0 #8b8577,2px 8px 8px #29271955
}
.key-link:active .square-key {
  transform:translateY(3px);
  box-shadow:inset 1px 1px 3px #0004,0 1px 0 #8b8577
}
.action-keys {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:12px;
  padding:18px 8px 0
}
.action-keys button {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  padding:0;
  background:transparent;
  font-size:11px;
  white-space:nowrap;
  border-radius:4px
}
.round-key {
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  border:1px solid #8e8675;
  border-radius:50%;
  background:linear-gradient(125deg,#fffef7,#ebe5d9 60%,#c9c1af);
  box-shadow:inset 2px 2px 2px #fff,inset -1px -2px 2px #b9b09f,1px 3px 0 #aaa18e,2px 5px 5px #28272055;
  transition:transform .12s
}
.round-key svg {
  width:23px;
  height:23px
}
.round-key .pause-icon {
  display:none
}
.action-keys button[aria-pressed=true] .play-icon {
  display:none
}
.action-keys button[aria-pressed=true] .pause-icon {
  display:block
}
.action-keys button:active .round-key,.action-keys button[aria-pressed=true] .round-key {
  transform:translateY(2px);
  box-shadow:inset 1px 2px 3px #b9b09f,0 1px 1px #847b66
}
.machine-caption {
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:31px 5px 0;
  font-size:12px;
  color:var(--muted)
}
.machine-caption p:first-child {
  font-size:13px;
  font-weight:500;
  color:#363b36
}
.machine-caption span {
  font-size:20px;
  margin-right:7px
}
.machine-caption #hint {
  font-size:11px
}
.nojs-note {
  font-size:12px;
  margin-top:14px
}
html:not(.enhanced) .machine-caption {
  display:none;
}
.works {
  border-top:1px solid var(--line);
  padding-block:28px 38px;
  scroll-margin-top:18px
}
.section-heading {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:14px;
  margin-bottom:22px
}
.section-heading h2 {
  font-size:26px;
  letter-spacing:-.05em
}
.section-heading>span {
  display:none;
  font-size:11px;
  color:var(--muted)
}
.work-grid {
  display:grid;
  gap:15px
}
.work-card {
  position:relative;
  border:1px solid #d4dadc;
  border-radius:10px;
  padding:24px 20px 150px;
  min-height:310px;
  overflow:hidden;
  background:linear-gradient(125deg,#fff,#faf9f6);
  transition:border-color .2s,background .2s;
  scroll-margin-top:35px
}
.work-card:hover,.work-card:focus-within {
  border-color:#9aa7a8;
  background:#fff
}
.card-heading {
  display:flex;
  align-items:center;
  gap:11px;
  margin-bottom:16px;
  position:relative;
  z-index:1
}
.card-heading h3 {
  font-size:28px;
  letter-spacing:-.045em;
  line-height:1.3
}
.mini-key {
  width:25px;
  height:25px;
  display:inline-block;
  flex-shrink:0;
  border-radius:4px;
  border:1px solid #a29c8f;
  box-shadow:inset 1px 2px 1px #fff9,inset -1px -1px 1px #0002,0 2px 0 #aba595,1px 3px 3px #3332;
  transition:transform .15s
}
.work-card:hover .mini-key {
  transform:translateY(-2px)
}
.badge {
  font-size:10px;
  font-weight:500;
  background:#e7eef0;
  color:#425c68;
  border:1px solid #cbd9de;
  border-radius:20px;
  padding:3px 9px;
  white-space:nowrap
}
.work-card h4 {
  font-size:15px;
  margin-bottom:12px;
  font-weight:600;
  position:relative;
  z-index:1
}
.work-card>p {
  font-size:12px;
  color:#535f65;
  line-height:1.9;
  position:relative;
  z-index:1
}
.work-card .byline {
  font-size:11px;
  margin-top:10px
}
.work-card .availability {
  font-weight:500;
  color:#2a353c;
  font-size:12px;
  margin-top:14px
}
.card-object {
  position:absolute;
  bottom:18px;
  right:26px;
  pointer-events:none
}
.notebook {
  width:100px;
  height:122px;
  transform:rotate(12deg);
  background:linear-gradient(100deg,#e0dbce,#fffef6 7%,#f0ebdc 96%,#d2c8b7);
  border-radius:3px 5px 5px 3px;
  border:1px solid #d2c8b7;
  box-shadow:2px 3px 0 #c7c4b5,3px 5px 0 #fff,4px 7px 0 #b8b4a6,5px 13px 14px #40383130
}
.notebook::before {
  content:'';
  position:absolute;
  left:10px;
  top:0;
  bottom:0;
  border-left:1px solid #d9d0bf
}
.notebook span {
  display:block;
  font-family:serif;
  font-size:9px;
  color:#413e32;
  margin:24px 12px;
  letter-spacing:.15em;
  transform:rotate(-4deg)
}
.notebook b {
  position:absolute;
  left:-19px;
  right:-17px;
  bottom:38px;
  height:8px;
  background:linear-gradient(#8b9a8e,#244f55 45%,#122c32);
  transform:rotate(-39deg);
  border-radius:0 3px 3px 0;
  box-shadow:1px 3px 3px #3334
}
.notebook b::before {
  content:'';
  position:absolute;
  left:-13px;
  border-right:14px solid #baa17d;
  border-block:4px solid transparent
}
.handheld {
  width:105px;
  height:130px;
  transform:rotate(13deg);
  border-radius:12px 12px 22px 12px;
  background:linear-gradient(110deg,#f8f5e9,#c9c6b7);
  border:1px solid #b7b2a3;
  box-shadow:inset 2px 2px 2px white,3px 5px 0 #a8a598,7px 13px 13px #39372833;
  padding:13px
}
.handheld>div {
  height:64px;
  background:linear-gradient(125deg,#19362e,#0c1915);
  color:#d4e6db;
  border:5px solid #a7a89a;
  border-radius:3px;
  text-align:center;
  font:15px/1.3 monospace;
  padding-top:5px;
  letter-spacing:3px;
  box-shadow:0 1px white
}
.handheld i {
  position:absolute;
  width:27px;
  height:9px;
  bottom:24px;
  left:15px;
  background:#33372f;
  border-radius:2px;
  box-shadow:1px 2px 1px #888
}
.handheld i::after {
  content:'';
  position:absolute;
  left:9px;
  top:-9px;
  width:9px;
  height:27px;
  background:#33372f;
  border-radius:2px
}
.handheld b {
  position:absolute;
  right:14px;
  bottom:21px;
  width:17px;
  height:17px;
  background:var(--accent);
  border-radius:50%;
  box-shadow:inset 1px 2px 2px #fff8,1px 2px 1px #6a403c
}
.flask {
  width:110px;
  height:146px;
  right:23px;
  filter:drop-shadow(7px 9px 6px #5552)
}
.flask>div {
  position:absolute;
  bottom:0;
  width:108px;
  height:140px;
  background:linear-gradient(90deg,#dce1de66,#fff8 20%,#eceee833 30% 70%,#fff9 87%,#bcc8c46b);
  clip-path:polygon(35% 0,65% 0,65% 40%,99% 90%,100% 96%,93% 100%,7% 100%,0 96%,1% 90%,35% 40%)
}
.flask i {
  position:absolute;
  bottom:5px;
  left:5px;
  right:5px;
  height:58px;
  border-radius:50% 50% 13% 13% / 17% 17% 9% 9%;
  background:linear-gradient(95deg,#fff6,transparent 25% 77%,#fff5),var(--accent);
  box-shadow:inset 0 3px 0 #ffffff88
}
.flask>span {
  position:absolute;
  top:2px;
  left:34px;
  right:34px;
  height:6px;
  border:2px solid #b6c5c299;
  border-radius:50%;
  box-shadow:0 1px 0 #fff
}
.site-footer {
  border-top:1px solid var(--line);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:18px 24px;
  padding-block:26px 35px;
  font-size:12px
}
.site-footer>div {
  flex-basis:100%
}
.site-footer p {
  font-weight:500
}
.site-footer small {
  font-size:10px;
  color:var(--muted)
}
.site-footer a {
  display:inline-flex;
  align-items:center;
  min-height:44px;
  gap:15px;
  text-decoration:none
}
.site-footer a:hover {
  text-decoration:underline
}
.site-footer>small {
  margin-left:auto
}
.about {
  max-width:900px;
  padding-block:50px 80px
}
.about h1 {
  font-size:clamp(42px,6vw,74px);
  line-height:1.3
}
.about-lead {
  font-size:22px;
  line-height:1.8;
  margin:35px 0 20px;
  font-weight:500
}
.about>p:not(.eyebrow) {
  max-width:40em
}
.about-section {
  margin-top:60px;
  border-top:1px solid var(--line);
  padding-top:28px
}
.about-section h2 {
  font-size:24px;
  margin-bottom:26px
}
.about-activity {
  display:flex;
  gap:20px;
  padding:23px 0;
  border-bottom:1px solid #ddd
}
.about-activity .mini-key {
  margin-top:6px
}
.about-activity h3 {
  font-size:20px;
  margin-bottom:8px
}
.about-activity p {
  color:var(--muted);
  font-size:14px
}
.company {
  margin:0
}
.company>div {
  display:grid;
  grid-template-columns:90px 1fr;
  padding:20px 0;
  border-bottom:1px solid #ddd;
  gap:20px
}
.company dt {
  font-size:13px;
  color:var(--muted)
}
.company dd {
  margin:0;
  font-size:14px
}
.back-link {
  display:inline-block;
  margin-top:50px;
  padding-block:12px;
  text-decoration:none
}
.back-link:hover {
  text-decoration:underline
}
@keyframes print-paper {
  from {
    transform:translateY(-24px) rotate(3deg);
    opacity:.35
  }
  to {
    transform:translateY(0) rotate(3deg);
    opacity:1
  }
}
@media(min-width:700px) {
  .wrap {
    width:calc(100% - 64px)
  }
  .site-header {
    padding-block:25px
  }
  .brand img {
    width:150px
  }
  .site-header nav {
    font-size:13px;
    gap:30px
  }
  .hero-copy {
    max-width:600px
  }
  .hero-copy h1 {
    font-size:78px
  }
  .hero {
    padding-top:34px
  }
  .machine-stage {
    margin-top:80px
  }
  .machine {
    grid-template-columns:18% 22% 24% 36%;
    padding:27px 19px 30px;
    min-height:338px;
    border-radius:23px
  }
  .printer-panel {
    display:block;
    grid-column:auto;
    grid-row:auto;
    border:0;
    border-right:1px solid #bfb9ad;
    margin:0;
    padding:18px 13px 0 8px;
    min-height:0
  }
  .machine-brand {
    font-size:19px
  }
  .machine-brand span {
    font-size:10px
  }
  .printer {
    width:calc(100% - 7px);
    max-width:145px;
    margin-top:56px;
    height:70px
  }
  .receipt {
    padding:10px 8px;
    min-height:143px
  }
  .receipt p {
    font-size:13px
  }
  .receipt small {
    font-size:7px
  }
  .scenery-panel {
    grid-row:auto;
    padding:8px 6px 0
  }
  .large .dial {
    width:82px;
    height:82px;
    margin-block:18px 11px
  }
  .scene-options {
    font-size:9px;
    gap:9px
  }
  .palettes {
    margin-top:20px
  }
  .sliders-panel {
    grid-row:auto;
    padding:8px 10px 0;
    border-right:1px solid #bfb9ad
  }
  .faders input {
    height:140px
  }
  .faders label {
    font-size:10px
  }
  .small-dials {
    margin-top:28px
  }
  .output-panel {
    grid-row:auto;
    grid-column:auto;
    border:0;
    padding:5px 0 0 14px
  }
  .screen {
    aspect-ratio:1.75
  }
  .square-key {
    width:48px
  }
  .main-keys {
    gap:8px;
    padding-inline:7px;
    margin-top:13px
  }
  .key-link {
    font-size:11px
  }
  .action-keys {
    padding-inline:7px;
    gap:8px;
    padding-top:17px
  }
  .action-keys button {
    font-size:10px
  }
  .round-key {
    width:44px;
    height:44px
  }
  .dial {
    width:54px;
    height:54px
  }
  .machine-caption {
    flex-direction:row;
    justify-content:space-between;
    align-items:center;
    padding-top:38px
  }
  .cable {
    top:-49px;
    left:-32px;
    height:calc(100% + 15px);
    width:calc(100% + 30px)
  }
  .section-heading>span {
    display:block
  }
  .works {
    padding-top:34px
  }
  .section-heading h2 {
    font-size:30px
  }
  .work-grid {
    grid-template-columns:repeat(3,1fr);
    gap:15px
  }
  .work-card {
    padding:23px 18px 155px;
    min-height:375px
  }
  .card-heading {
    gap:8px;
    flex-wrap:wrap
  }
  .card-heading h3 {
    font-size:25px
  }
  .badge {
    font-size:9px;
    padding:2px 8px
  }
  .mini-key {
    width:22px;
    height:22px
  }
  .work-card h4 {
    font-size:14px
  }
  .work-card>p {
    font-size:12px
  }
  .site-footer>div {
    flex:1
  }
  .site-footer>small {
    margin-left:8px
  }
}
@media(min-width:1200px) {
  .wrap {
    width:calc(100% - 90px)
  }
  .hero {
    display:grid;
    grid-template-columns:31% 69%;
    align-items:center;
    padding-block:30px 55px;
    min-height:610px
  }
  .hero-copy {
    padding-bottom:10px;
    position:relative;
    z-index:2;
    pointer-events:none
  }
  .hero-copy a {
    pointer-events:auto
  }
  .hero-copy h1 {
    font-size:clamp(64px,5.7vw,91px)
  }
  .eyebrow {
    font-size:10px;
    margin-bottom:20px
  }
  .tagline {
    font-size:clamp(15px,1.4vw,21px);
    white-space:nowrap;
    margin-block:24px 26px
  }
  .cta {
    font-size:14px;
    padding:14px 24px
  }
  .intro {
    font-size:12px;
    line-height:1.95;
    margin-top:28px
  }
  .machine-stage {
    margin-top:20px;
    margin-left:13px;
    padding-left:16px
  }
  .machine {
    min-height:358px;
    transform:perspective(2000px) rotateY(-2deg);
    transform-origin:right center
  }
  .machine-brand {
    font-size:20px
  }
  .printer {
    margin-top:63px
  }
  .large .dial {
    width:90px;
    height:90px
  }
  .scene-options {
    font-size:10px;
    gap:12px
  }
  .palettes {
    margin-top:26px
  }
  .faders input {
    height:154px
  }
  .small-dials {
    margin-top:26px
  }
  .output-panel {
    padding-left:16px
  }
  .screen {
    aspect-ratio:1.8
  }
  .square-key {
    width:clamp(48px,4.1vw,67px)
  }
  .action-keys button {
    font-size:11px
  }
  .round-key {
    width:48px;
    height:48px
  }
  .dial {
    width:58px;
    height:58px
  }
  .main-keys {
    padding-top:13px
  }
  .machine-caption {
    padding-top:35px;
    margin-left:10px;
    font-size:11px
  }
  .machine-caption p:first-child {
    font-size:12px
  }
  .cable {
    left:-44px;
    width:calc(100% + 45px);
    top:-47px
  }
  .works {
    padding-block:30px 45px
  }
  .work-card {
    min-height:320px;
    padding-bottom:120px
  }
  .card-heading h3 {
    font-size:29px
  }
  .card-heading {
    gap:10px;
    flex-wrap:nowrap
  }
  .badge {
    font-size:10px
  }
  .work-card h4 {
    font-size:15px
  }
  .work-card>p {
    font-size:12px;
    max-width:85%
  }
  .card-object {
    transform:scale(.8) rotate(12deg);
    transform-origin:bottom right;
    bottom:16px;
    right:20px
  }
  .notebook {
    right:23px
  }
  .flask {
    transform:scale(.84)
  }
  .site-footer {
    padding-block:27px 40px
  }
  .site-footer small {
    font-size:11px
  }
}
@media(min-width:1400px) {
  .machine {
    padding-block:32px 32px;
    min-height:388px
  }
  .machine-brand {
    font-size:23px
  }
  .machine-brand span {
    font-size:11px
  }
  .printer {
    margin-top:72px
  }
  .receipt p {
    font-size:16px
  }
  .large .dial {
    width:100px;
    height:100px
  }
  .palettes {
    margin-top:22px
  }
  .faders input {
    height:172px
  }
  .faders label {
    font-size:11px
  }
  .square-key {
    width:63px
  }
  .screen {
    aspect-ratio:1.85
  }
  .main-keys {
    margin-top:15px
  }
  .action-keys {
    padding-top:20px
  }
  .work-card {
    padding:25px 24px 100px;
    min-height:300px
  }
  .work-card>p {
    max-width:74%
  }
  .card-object {
    transform:rotate(12deg)
  }
  .flask {
    transform:none
  }
  .cta {
    font-size:16px
  }
  .intro {
    font-size:13px
  }
}
/* Keep the three deliberate headline lines at every viewport. */
.hero-copy h1 {
  white-space:nowrap
}
@media(max-width:699px) {
  .site-header {
    gap:10px
  }
  .brand img {
    width:110px
  }
  .site-header nav {
    gap:12px;
    font-size:10px;
    white-space:nowrap
  }
}
.faders input {
  width:46px
}
@media(min-width:1200px) {
  .hero-copy h1 {
    font-size:clamp(58px,5.05vw,82px)
  }
}
@media(min-width:900px) {
  .palettes {
    grid-template-columns:repeat(3,46px)
  }
  .palette {
    width:46px;
    height:46px;
    padding:8px
  }
}
@media(min-width:700px) and (max-width:899px) {
  .machine {
    grid-template-columns:1fr 1fr;
    padding:25px 20px
  }
  .output-panel {
    grid-row:1;
    grid-column:1/-1;
    padding:10px 15px 22px;
    border-bottom:1px solid #bfb9ad
  }
  .screen {
    aspect-ratio:2.3
  }
  .square-key {
    width:65px
  }
  .scenery-panel {
    grid-row:2;
    padding:25px 10px 0
  }
  .sliders-panel {
    grid-row:2;
    padding:25px 15px 0;
    border-right:0
  }
  .printer-panel {
    grid-row:3;
    grid-column:1/-1;
    display:flex;
    align-items:center;
    gap:45px;
    border:0;
    border-top:1px solid #bfb9ad;
    margin-top:25px;
    padding:25px 20px 10px;
    min-height:180px
  }
  .printer {
    width:130px;
    height:120px;
    margin-top:0
  }
  .large .dial {
    width:100px;
    height:100px
  }
  .palettes {
    grid-template-columns:repeat(3,46px)
  }
  .palette {
    width:46px;
    height:46px;
    padding:8px
  }
  .round-key {
    width:48px;
    height:48px
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important
  }
}

/* The instrument is the homepage; each coloured key opens its own page. */
.home {min-height:100svh;display:flex;flex-direction:column}
.home main {flex:1;display:flex;align-items:center}
.home .hero {min-height:0;padding-block:20px}
.home .site-footer {padding-block:12px;font-size:11px;min-height:44px}
.navigation-panel {padding-top:16px;text-align:center}
.navigation-panel .control-label {font-size:11px}
.navigation-panel .main-keys {padding:14px 4px 9px;gap:5px;margin-top:15px}
.navigation-panel .square-key {width:46px}
.navigation-panel .key-link {font-size:11px}
.navigation-panel .palettes {margin-top:34px;text-align:left}
.game-message {position:absolute;top:24%;left:0;right:0;text-align:center;font-size:12px;color:#e1f0da;pointer-events:none}
.game-controls {display:flex;align-items:center;justify-content:center;gap:18px;margin-top:17px}
.jump-button {display:flex;flex-direction:column;align-items:center;gap:8px;background:transparent;font-size:12px;padding:0;border-radius:5px;touch-action:manipulation}
.jump-button .square-key {display:grid;place-items:center;width:60px}
.jump-button svg {width:30px;height:30px}
.jump-button:active .square-key {transform:translateY(3px);box-shadow:inset 1px 1px 3px #0004,0 1px 0 #8b8577}
#jump-help {font-size:11px;line-height:1.9}
#jump-help span {font-size:9px;color:#535a50}
.category-page {max-width:1000px;padding-block:65px 80px}
.category-heading {display:flex;align-items:center;gap:12px;font-size:18px;font-weight:600;margin-bottom:26px}
.category-page h1 {font-size:clamp(33px,5.5vw,67px);line-height:1.3;letter-spacing:-.04em}
.category-lead {font-size:17px;line-height:1.9;margin-top:30px}
.category-notice {position:relative;margin-top:45px;padding:35px 180px 35px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);min-height:220px;font-size:14px;color:var(--muted)}
.category-notice .availability {font-size:12px;color:var(--ink);margin-top:20px}
.external-link {display:inline-flex;align-items:center;gap:10px;margin-top:22px;min-height:44px;padding:0 22px;border-radius:50px;background:var(--ink);color:var(--paper);font-size:14px;font-weight:600;text-decoration:none;transition:transform .2s,background .2s}
.external-link:hover {background:#000;transform:translateY(-2px)}
.not-found {max-width:700px;padding-block:80px 100px}
.not-found h1 {font-size:clamp(36px,6vw,64px);line-height:1.3}
.not-found p {margin-top:24px;color:var(--muted)}
@media(min-width:900px){
  .home .machine {grid-template-columns:17% 25% 23% 35%}
  .home .machine-stage {margin-top:24px}
  .home .navigation-panel .main-keys {margin-top:24px}
}
@media(min-width:1200px){
  .home .intro {margin-top:22px}
  .home .machine {min-height:390px}
}
@media(max-width:899px){
  .home .site-header {padding-block:9px 5px}
  .home .hero {padding-block:5px 10px;display:block}
  .home .hero-copy h1 {font-size:clamp(28px,6vw,38px);line-height:1.14}
  .home .hero-copy h1 br {display:none}
  .home .hero-copy h1 {white-space:normal;letter-spacing:-.075em}
  .home .tagline {font-size:11px;margin:6px 0 0}
  .home .intro {display:none}
  .home .machine-stage {margin:35px auto 0;padding:0 3px 0 0;max-width:580px}
  .home .machine {grid-template-columns:1fr 1fr;padding:20px 12px 17px;gap:12px 0}
  .home .navigation-panel {grid-column:1/-1;grid-row:1;display:grid;grid-template-columns:1fr 132px;padding:5px 0 15px;border:0;border-bottom:1px solid #bfb9ad}
  .home .navigation-panel>.control-label {grid-column:1;grid-row:1;font-size:10px}
  .home .navigation-panel .main-keys {grid-column:1;grid-row:2;border:0;box-shadow:none;margin:0;padding:10px 2px 0;gap:2px;align-self:start}
  .home .navigation-panel .square-key {width:44px}
  .home .navigation-panel .key-link {font-size:10px;gap:6px}
  .home .navigation-panel .palettes {grid-column:2;grid-row:1/3;margin:0;grid-template-columns:repeat(3,44px);align-self:start}
  .home .palette {width:44px;height:44px;padding:9px}
  .home .palette span {width:26px;height:26px}
  .home .sliders-panel {grid-column:1;grid-row:2;padding:9px 4px 0 0;border:0;border-right:1px solid #bfb9ad}
  .home .faders input {height:95px;margin-top:9px}
  .home .faders label {font-size:9px}
  .home .small-dials {margin-top:14px;gap:0}
  .home .dial {width:48px;height:48px;margin-bottom:5px}
  .home .control-label {font-size:10px}
  .home .output-panel {grid-column:2;grid-row:2;padding:4px 0 0 10px;border:0}
  .home .screen {aspect-ratio:1.8}
  .home .screen-bezel {padding:4px}
  .home .screen-meta {font-size:7px;top:3px;left:5px;right:5px}
  .home .game-message {font-size:9px;top:24%}
  .home .game-controls {gap:9px;margin-top:12px}
  .home .jump-button {font-size:10px;gap:6px}
  .home .jump-button .square-key {width:46px}
  .home .jump-button svg {width:24px;height:24px}
  .home #jump-help {font-size:9px;max-width:64px;line-height:1.6}
  .home #jump-help span {display:none}
  .home .action-keys {padding:13px 0 0;gap:2px}
  .home .action-keys button {font-size:8px;gap:6px;min-width:44px}
  .home .round-key {width:44px;height:44px}
  .home .printer-panel {grid-row:3;grid-column:1/-1;min-height:85px;padding:12px 10px 0;margin-top:7px;border:0;border-top:1px solid #bfb9ad;gap:16px;display:flex;justify-content:space-between;align-items:flex-start}
  .home .machine-brand {font-size:18px}
  .home .machine-brand span {font-size:9px;margin-top:7px}
  .home .printer {width:148px;height:72px;margin-top:0;margin-right:5px}
  .home .receipt {min-height:82px;display:grid;grid-template-columns:70px 1fr;align-items:center;padding:8px 6px;gap:0 6px}
  .home .receipt p {font-size:10px;margin:0}
  .home .receipt small {grid-column:1/-1;font-size:7px;margin-left:2px}
  .home .machine-caption {padding-top:23px;display:block}
  .home .machine-caption p:first-child {font-size:11px}
  .home .machine-caption #hint {display:none}
  .home .machine::after {bottom:-12px}
  .home .cable {height:100%;top:-26px;left:-5px}
  .home .handle {height:110px;top:145px}
  .home .beacon {width:29px;height:23px;top:-22px}
  .home .site-footer {min-height:36px;padding-block:7px;margin-top:8px;font-size:10px}
  .category-page {padding-block:30px 40px}
  .category-lead {font-size:14px}
  .category-notice {padding:25px 0 150px;font-size:13px}
  .site-header nav {gap:11px}
}
@media(max-width:899px) and (max-height:880px){
  .home .site-header {padding-block:2px}
  .home .hero-copy h1 {font-size:22px;line-height:1.15}
  .home .tagline {margin-top:4px}
  .home .machine-stage {margin-top:25px}
  .home .machine {padding-block:14px 12px;row-gap:8px}
  .home .navigation-panel {padding-block:0 8px}
  .home .palettes legend {line-height:1;margin-bottom:2px;font-size:10px}
  .home .navigation-panel .main-keys {padding-top:6px}
  .home .sliders-panel {padding-top:4px}
  .home .faders input {height:78px;margin-top:5px}
  .home .small-dials {margin-top:7px}
  .home .dial {width:44px;height:44px;margin-bottom:3px}
  .home .game-controls {margin-top:9px}
  .home .jump-button {flex-direction:row;gap:8px}
  .home #jump-help {display:none}
  .home .action-keys {padding-top:10px}
  .home .action-keys button {line-height:1.4;gap:4px}
  .home .printer-panel {min-height:61px;padding-top:8px;margin-top:0}
  .home .printer {height:49px}
  .home .receipt {min-height:58px;grid-template-columns:54px 1fr;padding:4px 6px}
  .home .machine-brand span {font-size:8px;line-height:1.5;margin-top:3px}
  .home .machine-caption {display:none}
  .home .site-footer {min-height:30px;padding-block:4px;margin-top:8px}
}
@media(min-width:900px) and (max-width:1199px){
  .home .site-header {padding-block:14px}
  .home .hero {padding-block:10px}
  .home .hero-copy h1 {font-size:36px;line-height:1.2}
  .home .hero-copy h1 br {display:none}
  .home .tagline {margin-block:8px 0}
  .home .intro {display:none}
  .home .machine-stage {margin-top:45px}
  .home .machine-caption {padding-top:23px}
}

/* v4: 専用ページ・ABOUT・404をPCでは1画面に収める（スマホはスクロール可） */
body {min-height:100svh;display:flex;flex-direction:column}
body>main {flex:1;min-height:0}
body>.site-header,body>.site-footer {flex:none}
@media(min-width:900px){
  .site-header {padding-block:16px 8px}
  .site-footer {padding-block:12px 14px;gap:14px 24px}
  .site-footer>div {flex-basis:auto;display:flex;align-items:baseline;gap:14px}
  .category-page {padding-block:24px 16px;display:flex;flex-direction:column;justify-content:center}
  .category-heading {margin-bottom:12px}
  .category-page h1 {font-size:clamp(33px,4.6vw,58px)}
  .category-lead {margin-top:14px}
  .category-notice {margin-top:22px;padding-block:22px;min-height:0}
  .category-notice .availability {margin-top:12px}
  .external-link {margin-top:14px}
  .back-link {margin-top:18px;padding-block:8px}
  .not-found {padding-block:40px;display:flex;flex-direction:column;justify-content:center}
  .about {max-width:1180px;padding-block:20px 12px;display:grid;grid-template-columns:1.05fr 1fr;column-gap:56px;grid-template-areas:"eye sec1" "h1 sec1" "lead sec2" "p sec2" "back sec2";align-content:center}
  .about .eyebrow {grid-area:eye;margin-bottom:10px}
  .about h1 {grid-area:h1;font-size:clamp(34px,3.8vw,54px)}
  .about>p:not(.eyebrow) {grid-area:p}
  .about-lead {grid-area:lead;font-size:18px;margin:16px 0 10px}
  .about-section {margin-top:0;padding-top:0;border-top:0}
  .about-section:nth-of-type(1) {grid-area:sec1}
  .about-section:nth-of-type(2) {grid-area:sec2;margin-top:18px}
  .about-section h2 {font-size:18px;margin-bottom:6px}
  .about-activity {padding:9px 0;gap:14px}
  .about-activity .mini-key {margin-top:4px}
  .about-activity h3 {font-size:16px;margin-bottom:2px}
  .about-activity p {font-size:13px;line-height:1.6}
  .company>div {padding:8px 0;gap:14px}
  .back-link {grid-area:back;align-self:end;justify-self:start}
}
@media(min-width:900px) and (max-height:700px){
  .site-header {padding-block:10px 6px}
  .site-footer {padding-block:8px 10px}
  .about {padding-block:10px 6px}
  .about h1 {font-size:clamp(30px,3.2vw,44px)}
  .about-lead {font-size:16px;margin:10px 0 6px}
  .about-activity {padding:6px 0}
  .about-activity p {line-height:1.5}
  .company>div {padding:6px 0}
  .category-page h1 {font-size:clamp(30px,4vw,48px)}
  .category-notice {margin-top:14px;padding-block:16px}
}
