.btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-weight:var(--font-weight-semibold);border-radius:var(--radius-control);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;border:none;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none!important;transform:none!important}.btn-xs{height:28px;padding:0 var(--space-2);font-size:var(--font-size-xs);border-radius:var(--radius-control)}.btn-sm{height:36px;padding:0 var(--space-3);font-size:var(--font-size-sm)}.btn-md{height:44px;padding:0 var(--space-5);font-size:var(--font-size-base)}.btn-lg{height:52px;padding:0 var(--space-8);font-size:var(--font-size-lg);border-radius:var(--radius-control)}.btn-xl{height:60px;padding:0 var(--space-10);font-size:var(--font-size-xl);border-radius:var(--radius-control)}.btn-primary{background:var(--brass-fill);color:var(--brass-on-fill)}.btn-primary .btn-label,.btn-primary .btn-icon,.btn-primary span{color:var(--brass-on-fill)}.btn-primary:hover:not(:disabled){background:var(--brass-fill-hover)}.btn-primary:active:not(:disabled){background:var(--brass-fill)}.btn-secondary{background:var(--surface-raised);color:var(--text-strong);border:1px solid var(--line)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--line-strong)}.btn-secondary:active:not(:disabled){background:var(--surface-sunken)}.btn-ghost{color:var(--text);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text-strong)}.btn-ghost:active:not(:disabled){background:var(--surface-sunken)}.btn.btn-text{color:var(--brass);padding-left:var(--space-2);padding-right:var(--space-2);background:0 0}.btn.btn-text:hover:not(:disabled){color:var(--brass-hover);background:var(--brass-wash)}.btn-accent{background:var(--brass-fill);color:var(--brass-on-fill)}.btn-accent .btn-label,.btn-accent .btn-icon,.btn-accent span{color:var(--brass-on-fill)}.btn-accent:hover:not(:disabled){background:var(--brass-fill-hover)}.btn-danger{background:var(--alert-fill);color:var(--alert-on-fill)}.btn-danger .btn-label,.btn-danger .btn-icon,.btn-danger span{color:var(--alert-on-fill)}.btn-danger:hover:not(:disabled){background:var(--alert-hover)}.btn-outline{color:var(--brass);border:1px solid var(--brass-line);background:0 0}.btn-outline:hover:not(:disabled){background:var(--brass-wash);border-color:var(--brass)}.btn-full{width:100%}.btn-loading{color:#0000!important}.btn-loading .btn-label,.btn-loading .btn-icon{visibility:hidden}.btn-spinner{justify-content:center;align-items:center;display:flex;position:absolute}.btn-spinner svg{color:currentColor;width:20px;height:20px;animation:.8s linear infinite spin}.btn-primary.btn-loading .btn-spinner,.btn-accent.btn-loading .btn-spinner{color:var(--brass-on-fill)}.btn-danger.btn-loading .btn-spinner{color:var(--alert-on-fill)}.btn-secondary.btn-loading .btn-spinner,.btn-ghost.btn-loading .btn-spinner,.btn.btn-text.btn-loading .btn-spinner,.btn-outline.btn-loading .btn-spinner{color:var(--brass)}.btn-label{justify-content:center;align-items:center;gap:var(--space-2);min-width:0;display:inline-flex}.btn-label>svg{flex-shrink:0}.btn-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.btn-icon svg{width:1.25em;height:1.25em}.btn-icon-only{aspect-ratio:1;padding:0}.btn-icon-only.btn-xs{width:28px}.btn-icon-only.btn-sm{width:36px}.btn-icon-only.btn-md{width:44px}.btn-icon-only.btn-lg{width:52px}.btn-icon-only.btn-xl{width:60px}.btn:after{content:"";opacity:.25;opacity:0;background:radial-gradient(circle,currentColor 0%,#0000 70%);transition:transform .5s,opacity .3s;position:absolute;inset:0;transform:scale(0)}.btn:active:after{opacity:1;transition:transform;transform:scale(2.5)}@media (width<=768px){.btn-icon-only.btn-xs,.btn-icon-only.btn-sm{width:44px;height:44px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.message-container{top:calc(64px + var(--space-3));z-index:var(--z-tooltip);gap:var(--space-3);pointer-events:none;max-width:500px;width:calc(100% - var(--space-8));flex-direction:column;display:flex;position:fixed;left:50%;transform:translate(-50%)}.message{align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-3) var(--space-4);background:var(--surface-raised);border-radius:var(--radius-card);box-shadow:var(--shadow-lg);pointer-events:auto;animation:toastSlideIn var(--transition-base);border-left:4px solid;display:flex}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.message-success{border-left-color:var(--ok);background:linear-gradient(var(--ok-wash), var(--ok-wash)), var(--surface-raised)}.message-success .message-icon{color:var(--ok)}.message-error{border-left-color:var(--alert);background:linear-gradient(var(--alert-wash), var(--alert-wash)), var(--surface-raised)}.message-error .message-icon{color:var(--alert)}.message-warning{border-left-color:var(--warn);background:linear-gradient(var(--warn-wash), var(--warn-wash)), var(--surface-raised)}.message-warning .message-icon{color:var(--warn)}.message-info{border-left-color:var(--info);background:linear-gradient(var(--info-wash), var(--info-wash)), var(--surface-raised)}.message-info .message-icon{color:var(--info)}.message-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.message-icon svg{width:20px;height:20px}.message-content{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-strong);line-height:var(--line-height-normal);flex:1}.message-close{border-radius:var(--radius-sm);cursor:pointer;width:24px;height:24px;color:var(--text-dim);transition:all var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.message-close:hover{background:var(--surface-hover);color:var(--text-strong)}.message-close:focus-visible{outline:2px solid var(--brass);outline-offset:1px}.message-close svg{width:12px;height:12px}@media (width<=768px){.message-container{width:calc(100% - var(--space-4))}.message{padding:var(--space-2) var(--space-3)}}
