a[href],button,input{transition:transform .15s var(--ease),opacity .15s var(--ease)}
a[href]:hover{color:var(--accent-text)}
button:not(:disabled):hover{background:var(--accent);color:var(--card)}
.btn:not(:disabled):hover{background:var(--accent);color:var(--card)}
.text-button:not(:disabled):hover{background:transparent;color:var(--accent-text)}
input:not(:disabled):hover{box-shadow:inset 0 0 0 2px var(--hairline)}
a[href]:active,button:not(:disabled):active{transform:translateY(4px)}
input:not(:disabled):active{box-shadow:inset 0 0 0 2px var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.reveal{opacity:1;transform:none}
.motion-ready .reveal.waiting{opacity:0;transform:translateY(12px)}
.motion-ready .reveal{transition:opacity .45s var(--ease),transform .45s var(--ease);transition-delay:var(--reveal-delay,0s)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
*,*::before,*::after{transition:none!important;animation:none!important}
.motion-ready .reveal.waiting{opacity:1;transform:none}
}

/* CTA system (2026-09-14) */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:44px;
  padding:0 20px;
  border-radius:var(--r-pill);
  font-weight:600;
  letter-spacing:0.01em;
  border:1px solid transparent;
  transition:transform 180ms var(--ease),box-shadow 240ms var(--ease),background-color 200ms var(--ease),color 200ms var(--ease),border-color 200ms var(--ease);
  will-change:transform;
}
.btn-primary{
  background:var(--ink);
  color:var(--card);
  box-shadow:inset 0 1px 0 oklch(1 0 0 / 0.14),0 10px 24px -14px color-mix(in oklch, var(--accent) 70%, transparent);
}
.btn-primary:not(:disabled):hover{
  background:color-mix(in oklch, var(--ink) 85%, var(--accent));
  color:var(--card);
  transform:translateY(-1px);
  box-shadow:0 14px 30px -14px color-mix(in oklch, var(--accent) 85%, transparent);
}
.btn:not(:disabled):active,
.btn-primary:not(:disabled):active{
  transform:translateY(0) scale(0.985);
  box-shadow:0 6px 16px -12px color-mix(in oklch, var(--accent) 55%, transparent);
}
.btn-ghost{
  background:var(--card);
  color:var(--ink);
  border-color:color-mix(in oklch, var(--ink) 14%, transparent);
}
.card .btn-ghost{background:var(--page)}
.btn-ghost:not(:disabled):hover{
  background:var(--card);
  color:var(--accent);
  border-color:color-mix(in oklch, var(--accent) 60%, transparent);
  transform:translateY(-1px);
}
.card .btn-ghost:not(:disabled):hover{
  background:var(--page);
  color:var(--accent);
}
.btn:focus-visible,
.pill:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}
.btn:disabled,
.btn[disabled]{
  transform:none;
  box-shadow:none;
  cursor:not-allowed;
  will-change:auto;
}
.btn:disabled:hover,
.btn:disabled:active,
.btn[disabled]:hover,
.btn[disabled]:active{
  transform:none;
  box-shadow:none;
}
.nav .btn.nav-machine{
  min-height:40px;
  height:40px;
  padding:0 16px;
  background:var(--ink);
  color:var(--card);
  border-color:transparent;
  font-weight:600;
  box-shadow:inset 0 1px 0 oklch(1 0 0 / 0.14),0 10px 24px -14px color-mix(in oklch, var(--accent) 70%, transparent);
}
.nav .btn.btn-ghost.nav-machine:not(:disabled):hover{
  background:color-mix(in oklch, var(--ink) 85%, var(--accent));
  color:var(--card);
  border-color:transparent;
  transform:translateY(-1px);
  box-shadow:0 14px 30px -14px color-mix(in oklch, var(--accent) 85%, transparent);
}
.nav .btn.nav-machine:active{
  transform:translateY(0) scale(0.985);
  box-shadow:0 6px 16px -12px color-mix(in oklch, var(--accent) 55%, transparent);
}
@media(prefers-reduced-motion:reduce){
  .btn,
  .btn:hover,
  .btn:active,
  .btn-primary:not(:disabled):hover,
  .btn-primary:not(:disabled):active,
  .btn-ghost:not(:disabled):hover,
  .nav .btn.nav-machine,
  .nav .btn.btn-ghost.nav-machine:not(:disabled):hover,
  .nav .btn.nav-machine:active{
    transform:none;
    transition:none;
    will-change:auto;
  }
}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:44px;
  padding:0 20px;
  border-radius:var(--r-pill);
  font-weight:600;
  letter-spacing:0.01em;
  border:1px solid transparent;
  transition:transform 180ms var(--ease),box-shadow 240ms var(--ease),background-color 200ms var(--ease),color 200ms var(--ease),border-color 200ms var(--ease);
}
.btn-primary{
  background:var(--ink);
  color:var(--card);
  box-shadow:inset 0 1px 0 oklch(1 0 0 / 0.14),0 10px 24px -14px color-mix(in oklch, var(--accent) 70%, transparent);
}
.btn-primary:not(:disabled):hover{
  background:color-mix(in oklch, var(--ink) 85%, var(--accent));
  color:var(--card);
  transform:translateY(-1px);
  box-shadow:0 14px 30px -14px color-mix(in oklch, var(--accent) 85%, transparent);
}
.btn:not(:disabled):active,
.btn-primary:not(:disabled):active{
  transform:scale(0.985);
}
.btn-ghost{
  background:var(--card);
  color:var(--ink);
  border-color:color-mix(in oklch, var(--ink) 14%, transparent);
  box-shadow:none;
}
.card .btn-ghost{background:var(--page)}
.btn-ghost:not(:disabled):hover{
  background:var(--card);
  color:var(--accent);
  border-color:color-mix(in oklch, var(--accent) 60%, transparent);
  transform:translateY(-1px);
  box-shadow:none;
}
.card .btn-ghost:not(:disabled):hover{
  background:var(--page);
  color:var(--accent);
}
.btn:focus-visible,
.pill:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}
.btn:disabled,
.btn[disabled]{
  color:var(--muted);
  background:var(--band-alt);
  box-shadow:none;
  transform:none;
  cursor:not-allowed;
}
.btn:disabled:hover,
.btn:disabled:active,
.btn[disabled]:hover,
.btn[disabled]:active{
  color:var(--muted);
  transform:none;
  box-shadow:none;
}
.nav .btn.nav-machine{
  min-height:40px;
  height:40px;
  padding:0 16px;
  background:var(--ink);
  color:var(--card);
  border-color:transparent;
  font-weight:600;
  box-shadow:inset 0 1px 0 oklch(1 0 0 / 0.14),0 10px 24px -14px color-mix(in oklch, var(--accent) 70%, transparent);
}
.nav .btn.btn-ghost.nav-machine:not(:disabled):hover,
.nav .btn.nav-machine:not(:disabled):hover{
  background:color-mix(in oklch, var(--ink) 85%, var(--accent));
  color:var(--card);
  border-color:transparent;
  transform:translateY(-1px);
  box-shadow:0 14px 30px -14px color-mix(in oklch, var(--accent) 85%, transparent);
}
.nav .btn.nav-machine:not(:disabled):active{
  transform:scale(0.985);
}
@media(prefers-reduced-motion:reduce){
  .btn,
  .btn:hover,
  .btn:active,
  .btn-primary:not(:disabled):hover,
  .btn-primary:not(:disabled):active,
  .btn-ghost:not(:disabled):hover,
  .nav .btn.nav-machine,
  .nav .btn.nav-machine:not(:disabled):hover,
  .nav .btn.nav-machine:not(:disabled):active{
    transform:none;
  }
}
