.button{border-radius:var(--radius-sm);font-size:var(--font-size-md);font-weight:var(--font-weight-medium);transition:background var(--transition-fast);padding:8px 16px;line-height:1.2}.button--default{border:var(--border-width) solid transparent;background:var(--color-tile)}.button--default:hover{background:var(--color-tile-hover)}.button--ghost{border:var(--border-width) solid transparent;background:0 0}.button--ghost:hover{background:var(--color-nav-hover)}.button--primary{border:var(--border-width) solid transparent;background:var(--color-accent);color:var(--color-on-accent)}.button--primary:hover{background:var(--color-accent-hover)}.button:disabled{opacity:var(--opacity-past);cursor:default}.button--icon{font-size:var(--font-size-lg);padding:8px 13px;line-height:1}a.button{color:inherit;text-decoration:none;display:inline-block}a.button--primary{color:var(--color-on-accent)}.modal{width:min(var(--modal-width), calc(100vw - 2 * var(--space-4)));border-radius:var(--radius-lg);background:var(--color-surface);max-width:none;color:var(--color-text);box-shadow:var(--shadow-modal);animation:modal-enter var(--duration-enter) var(--ease-spring);border:0;padding:0}.modal::backdrop{background:var(--color-backdrop);animation:modal-fade var(--duration-enter) ease}.modal__box{gap:var(--space-3);padding:var(--space-5);flex-direction:column;display:flex}.modal__icon{width:var(--modal-icon-size);height:var(--modal-icon-size);border-radius:var(--radius-pill);background:var(--color-accent-soft);color:var(--color-accent);place-items:center;display:grid}.modal__icon svg{width:var(--modal-icon-glyph);height:var(--modal-icon-glyph)}.modal__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);margin:0;line-height:1.2}.modal__body{gap:var(--space-3);color:var(--color-text-muted);font-size:var(--font-size-sm);flex-direction:column;display:flex}.modal__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}@keyframes modal-enter{0%{opacity:0;transform:scale(.96)}}@keyframes modal-fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.modal,.modal::backdrop{animation:none}}
