.tactile-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-target);padding:0 var(--space-4);border-radius:var(--radius-control);white-space:nowrap;position:relative;isolation:isolate;margin:0;border:1px solid rgba(0,0,0,0);background:rgba(0,0,0,0);font-weight:500;color:var(--ink-heading);cursor:pointer;touch-action:manipulation;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:transform var(--duration-release) var(--ease-spring)}.tactile-button:after,.tactile-button:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;transition:opacity var(--duration-ui) var(--ease-out)}.tactile-button:after{opacity:0}.tactile-button[data-pressed]{transform:translateY(var(--press-sink)) scale(var(--press-scale));transition:transform var(--duration-press) var(--ease-out)}.tactile-button[data-pressed]:after,.tactile-button[data-pressed]:before{transition:none}.tactile-button[data-pressed]:after{opacity:1}@media(prefers-reduced-motion:reduce){.tactile-button[data-pressed]{transform:none}}.tactile-button:disabled{cursor:not-allowed;opacity:var(--opacity-disabled)}.tactile-button[aria-disabled=true]{cursor:progress}.tactile-button .lucide{flex-shrink:0;stroke-width:2.3px}.tactile-button:after,.tactile-button:before{border-radius:calc(var(--radius-control) - 1px)}.tactile-button[data-variant=solid]{background:linear-gradient(180deg,var(--satin-top) 0,var(--satin-mid) 22%,var(--satin-bottom) 100%);border-color:var(--satin-border);box-shadow:var(--shadow-tactile);color:var(--satin-ink)}.tactile-button[data-variant=solid]:before{box-shadow:var(--shadow-satin-sheen)}.tactile-button[data-variant=solid]:after{box-shadow:var(--shadow-satin-pressed)}.tactile-button[data-variant=solid][data-pressed]{box-shadow:none}.tactile-button[data-variant=solid][data-pressed]:before{opacity:0}.tactile-button[data-variant=outline]{border-color:var(--line-border);background:var(--surface-raised);box-shadow:var(--shadow-tactile)}.tactile-button[data-variant=outline][data-pressed]{box-shadow:none}.tactile-button[data-variant=ghost]:before{background:var(--surface-hover);opacity:0}.tactile-button[data-variant=ghost]:after{background:var(--surface-fill-strong)}@media(hover:hover)and (pointer:fine){.tactile-button[data-variant=ghost]:hover:not(:disabled,[aria-disabled=true]):before{opacity:1}}.tactile-button[data-variant=spotlight]{background:linear-gradient(180deg,var(--spotlight-top) 0,var(--spotlight-mid) 22%,var(--spotlight-bottom) 100%);background-origin:border-box;color:var(--spotlight-ink)}.tactile-button[data-variant=spotlight]:before{box-shadow:var(--shadow-satin-sheen)}.tactile-button[data-variant=spotlight]:after{box-shadow:var(--shadow-spotlight-pressed)}.tactile-button[data-variant=spotlight][data-pressed]{box-shadow:none}.tactile-button[data-variant=spotlight][data-pressed]:before{opacity:0}.tactile-button-icon,.tactile-button-label{transition:opacity var(--duration-ui) var(--ease-out)}.tactile-button[data-loading]>.tactile-button-icon,.tactile-button[data-loading]>.tactile-button-label{opacity:0}.tactile-button-spinner{position:absolute;inset:0;margin:auto;animation:tactile-button-fade-in var(--duration-ui) var(--ease-out),tactile-button-spin .8s linear infinite}@media(prefers-reduced-motion:reduce){.tactile-button-spinner{animation:tactile-button-pulse 1.2s ease-in-out infinite}}@keyframes tactile-button-fade-in{0%{opacity:0}}@keyframes tactile-button-spin{to{transform:rotate(1turn)}}@keyframes tactile-button-pulse{50%{opacity:var(--opacity-disabled)}}.tactile-button-glow{position:absolute;inset:-1px;z-index:-1;border-radius:inherit;box-shadow:var(--shadow-spotlight-glow);pointer-events:none;animation:tactile-button-breathe 3.6s ease-in-out infinite}:disabled>.tactile-button-glow,[aria-disabled=true]>.tactile-button-glow{animation:none}@media(prefers-reduced-motion:reduce){.tactile-button-glow{animation:none}}@keyframes tactile-button-breathe{0%,to{opacity:.65}50%{opacity:1}}.tactile-button-sparks{position:absolute;inset:-1px;z-index:-1;overflow:hidden;border-radius:inherit;pointer-events:none}:disabled>.tactile-button-sparks,[aria-disabled=true]>.tactile-button-sparks{display:none}@media(prefers-reduced-motion:reduce){.tactile-button-sparks{display:none}}.tactile-button-spark{position:absolute;top:50%;bottom:6px;opacity:0;animation-name:tactile-button-spark;animation-timing-function:cubic-bezier(.3,.6,.5,1);animation-iteration-count:infinite}.tactile-button-spark:before{content:"";position:absolute;bottom:0;left:0;width:100%;aspect-ratio:1;border-radius:50%;background:var(--spotlight-spark);box-shadow:var(--shadow-spotlight-spark)}@keyframes tactile-button-spark{0%{transform:translateY(0);opacity:0}20%{opacity:1}to{transform:translateY(-100%);opacity:0}}.tactile-icon-button{display:inline-grid;place-items:center;flex-shrink:0;padding:0;border-radius:50%;position:relative;isolation:isolate;margin:0;border:1px solid rgba(0,0,0,0);background:rgba(0,0,0,0);font-weight:500;color:var(--ink-heading);cursor:pointer;touch-action:manipulation;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:transform var(--duration-release) var(--ease-spring)}.tactile-icon-button:after,.tactile-icon-button:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;transition:opacity var(--duration-ui) var(--ease-out)}.tactile-icon-button:after{opacity:0}.tactile-icon-button[data-pressed]{transform:translateY(var(--press-sink)) scale(var(--press-scale));transition:transform var(--duration-press) var(--ease-out)}.tactile-icon-button[data-pressed]:after,.tactile-icon-button[data-pressed]:before{transition:none}.tactile-icon-button[data-pressed]:after{opacity:1}@media(prefers-reduced-motion:reduce){.tactile-icon-button[data-pressed]{transform:none}}.tactile-icon-button:disabled{cursor:not-allowed;opacity:var(--opacity-disabled)}.tactile-icon-button[aria-disabled=true]{cursor:progress}.tactile-icon-button .lucide{flex-shrink:0;stroke-width:2.3px}.tactile-icon-button:after,.tactile-icon-button:before{border-radius:50%}.tactile-icon-button[data-variant=raised]{width:var(--tap-target);height:var(--tap-target);border-color:var(--line-border);background:var(--surface-raised);box-shadow:var(--shadow-tactile)}.tactile-icon-button[data-variant=raised]:after{background:var(--surface-hover)}.tactile-icon-button[data-variant=raised][data-pressed]{box-shadow:none}.tactile-icon-button[data-variant=ghost]{--ghost-inset:calc((var(--tap-target) - var(--icon-button-size)) / 2);width:var(--tap-target);height:var(--tap-target);color:var(--ink-muted);outline-offset:calc(var(--focus-ring-offset) - var(--ghost-inset))}.tactile-icon-button[data-variant=ghost]:before{background:var(--surface-hover);opacity:0}.tactile-icon-button[data-variant=ghost]:after{background:var(--surface-fill-strong)}@media(hover:hover)and (pointer:fine){.tactile-icon-button[data-variant=ghost]:hover:not(:disabled,[aria-disabled=true]):before{opacity:1}}.tactile-icon-button[data-variant=ghost]:after,.tactile-icon-button[data-variant=ghost]:before{inset:var(--ghost-inset)}@media(hover:hover)and (pointer:fine){.tactile-icon-button[data-variant=ghost]:hover:not(:disabled,[aria-disabled=true]){color:var(--ink-heading)}}