.btn{--btn-h:44px;height:var(--btn-h);border-radius:var(--r-pill);font-family:var(--font-body);font-size:var(--fs-sm);letter-spacing:.01em;white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-2) var(--ease-spring), background-color var(--dur-2) var(--ease-out), box-shadow var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out), color var(--dur-2) var(--ease-out);justify-content:center;align-items:center;gap:10px;padding:0 22px;font-weight:600;display:inline-flex;position:relative}.btn:active:not(:disabled){transition-duration:80ms;transform:scale(.965)translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.45}.btn svg{flex:none}.btn--primary{background:var(--signal);color:var(--text-inverse);box-shadow:inset 0 0 0 1px #ffc77c99,0 8px 22px -10px #ff963259}.btn--primary:hover:not(:disabled){background:var(--signal-hi);box-shadow:inset 0 0 0 1px #ffd6a0cc,0 10px 26px -10px #ff96326b}.btn--ghost{color:var(--text);box-shadow:0 0 0 1px var(--line-strong) inset;-webkit-backdrop-filter:blur(var(--glass-blur));background:#e6ecf40a}.btn--ghost:hover:not(:disabled){background:#e6ecf414;box-shadow:inset 0 0 0 1px #aac4eb66}.btn--quiet{color:var(--text-2);padding:0 12px}.btn--quiet:hover:not(:disabled){color:var(--text);background:#e6ecf40d}.btn--sm{--btn-h:34px;font-size:var(--fs-xs);padding:0 14px}.btn--lg{--btn-h:52px;font-size:var(--fs-md);padding:0 28px}.btn--xl{--btn-h:64px;font-size:var(--fs-lg);padding:0 36px;font-weight:700}.btn--icon{width:var(--btn-h);padding:0}.btn--block{width:100%}.panel{border-radius:var(--r-lg);background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(140%);box-shadow:0 0 0 1px var(--line) inset, var(--shadow-1);position:relative}.panel--strong{background:var(--glass-strong)}.panel:before{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(#ffffff0b,#0000 38%);position:absolute;inset:0}.chip{border-radius:var(--r-pill);height:28px;font-size:var(--fs-xs);color:var(--text-2);box-shadow:0 0 0 1px var(--line) inset;white-space:nowrap;background:#e6ecf40a;align-items:center;gap:6px;padding:0 10px;font-weight:500;display:inline-flex}.chip--signal{color:var(--signal);background:var(--signal-wash);box-shadow:inset 0 0 0 1px #ffb45459}.chip--mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0}.live-dot{background:var(--signal);width:6px;height:6px;box-shadow:0 0 0 0 var(--signal-glow);animation:live-pulse 2.4s var(--ease-out) infinite;border-radius:50%}@keyframes live-pulse{0%{box-shadow:0 0 #ffb4548c}70%,to{box-shadow:0 0 0 8px #ffb45400}}.label{font-family:var(--font-mono);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-3);font-size:11px;font-weight:500}.skeleton{border-radius:var(--r-sm);background:linear-gradient(90deg,#e6ecf40a 0%,#e6ecf417 50%,#e6ecf40a 100%) 0 0/200% 100%;animation:1.6s linear infinite skeleton}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.toast-wrap{left:50%;bottom:max(24px, env(safe-area-inset-bottom));z-index:var(--z-toast);pointer-events:none;gap:8px;width:min(92vw,440px);display:grid;position:fixed;transform:translate(-50%)}.toast{border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text);background:var(--glass-strong);-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:0 0 0 1px var(--line-strong) inset, var(--shadow-2);padding:12px 16px}.toast--warn{box-shadow:0 0 0 1px #ffb45473 inset, var(--shadow-2)}
