.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-width:100px;height:40px;padding:0 20px;font-family:var(--font-stack);font-size:15px;font-weight:400;border:1px solid transparent;border-radius:var(--radius-btn);cursor:pointer;transition:background .2s ease-out,opacity .2s ease-out,box-shadow .2s ease-out,transform .1s ease-out;outline:none;touch-action:manipulation}.btn:focus-visible{box-shadow:0 0 0 2px var(--color-bg),0 0 0 4px var(--color-primary)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.35;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-btn-primary-bg);color:var(--color-btn-primary-text)}.btn-primary:hover:not(:disabled){filter:brightness(1.15)}.btn-primary:active:not(:disabled){filter:brightness(.85)}.btn-secondary{background:transparent;color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background:var(--color-row-hover)}.btn-secondary:active:not(:disabled){background:var(--color-primary-tint)}.btn-outline{background:transparent;border:1px solid #48484F;color:var(--color-text-secondary)}.btn-outline:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-outline:active:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-dashed{background:transparent;border:none;color:var(--color-text-secondary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect width='100%25' height='100%25' fill='none' rx='8' ry='8' stroke='%2348484F' stroke-width='2' stroke-dasharray='3%2C 1.5' stroke-dashoffset='0'/%3E%3C/svg%3E");background-size:100% 100%}.btn-dashed:hover:not(:disabled){color:var(--color-primary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect width='100%25' height='100%25' fill='none' rx='8' ry='8' stroke='%233B6FA0' stroke-width='2' stroke-dasharray='3%2C 1.5' stroke-dashoffset='0'/%3E%3C/svg%3E")}.btn-pill{background:var(--color-surface);color:var(--color-primary);height:34px;min-width:auto;padding:0 14px;font-size:13px;font-weight:600}.btn-pill:hover:not(:disabled){filter:brightness(.96)}.btn-ghost{background:transparent;color:var(--color-text-secondary);min-width:auto}.btn-ghost:hover:not(:disabled){color:var(--color-text)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.btn-danger:active:not(:disabled){filter:brightness(.85)}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.1)}.btn-success:active:not(:disabled){filter:brightness(.85)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-md);transition:border-color .2s ease-out,background .2s ease-out,box-shadow .2s ease-out}.card-dashed{border:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25'%3E%3Crect width='100%25' height='100%25' fill='none' rx='12' ry='12' stroke='%2348484F' stroke-width='2' stroke-dasharray='3%2C 1.5' stroke-dashoffset='0'/%3E%3C/svg%3E");background-size:100% 100%}.card.selectable{cursor:pointer}.card.selectable:hover{background:var(--color-card-hover);box-shadow:var(--shadow-card)}.card.selected{border:2px solid var(--color-primary)}.card-elevated{background:var(--color-input-bg);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-md);box-shadow:var(--shadow-card)}.input-brand,input[type=text].input-brand,input[type=email].input-brand,input[type=password].input-brand,select.input-brand{font-family:var(--font-stack);font-size:16px;height:40px;padding:8px 12px;background:var(--color-input-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-input);outline:none;transition:border-color .2s ease-out}.input-brand:focus,input[type=text].input-brand:focus,input[type=email].input-brand:focus,input[type=password].input-brand:focus,select.input-brand:focus{border-color:var(--color-primary);border-width:1.5px}.input-brand::placeholder,input[type=text].input-brand::placeholder,input[type=email].input-brand::placeholder{color:var(--color-text-secondary)}@keyframes umami-autofill-start{}.input-brand:-webkit-autofill,input[type=text].input-brand:-webkit-autofill,input[type=email].input-brand:-webkit-autofill,input[type=password].input-brand:-webkit-autofill{animation-name:umami-autofill-start;-webkit-text-fill-color:var(--color-text);caret-color:var(--color-text);box-shadow:0 0 0 1000px var(--color-input-bg) inset}input[type=text].input-brand.input-brand--with-leading-icon{padding-left:2.25rem}.badge{display:inline-block;padding:2px 8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;border-radius:4px;background:var(--color-surface);color:var(--color-text-secondary)}.badge-primary{background:var(--color-primary-tint);color:var(--color-primary)}.badge-success{background:var(--color-success-tint);color:var(--color-success)}.badge-warning{background:var(--color-warning-tint);color:var(--color-warning)}.badge-error{background:var(--color-error-tint);color:var(--color-error)}.alert-box{padding:var(--space-md);border-radius:var(--radius-input);border:1px solid}.alert-box.alert-primary{background:var(--color-primary-tint);border-color:var(--color-primary);color:var(--color-primary)}.alert-box.alert-success{background:var(--color-success-tint);border-color:var(--color-success);color:var(--color-success)}.alert-box.alert-warning{background:var(--color-warning-tint);border-color:var(--color-warning);color:var(--color-warning)}.alert-box.alert-error{background:var(--color-error-tint);border-color:var(--color-error);color:var(--color-error)}.data-table{width:100%;border-collapse:collapse}.data-table thead th{background:var(--color-surface);color:var(--color-text-secondary);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;text-align:left;padding:10px 12px;border-bottom:1px solid var(--color-border-header)}.data-table tbody tr{transition:background .15s ease-out}.data-table tbody tr:nth-child(2n){background:var(--color-surface-alt)}.data-table tbody tr:hover{background:var(--color-row-hover)}.data-table tbody td{padding:10px 12px;border-bottom:1px solid var(--color-border-subtle);vertical-align:middle;font-size:14px}.type-hero{font-size:36px;font-weight:700;line-height:1.2}.type-title{font-size:28px;font-weight:700;line-height:1.2}.type-subhead{font-size:22px;font-weight:600;line-height:1.2}.type-body-lg{font-size:18px;font-weight:400;line-height:1.5}.type-body{font-size:17px;font-weight:400;line-height:1.5}.type-caption{font-size:15px;font-weight:400;line-height:1.5}.type-small{font-size:13px;font-weight:400;line-height:1.5}.text-secondary{color:var(--color-text-secondary)}.text-primary-color{color:var(--color-primary)}.article-prose{color:var(--color-text);font-size:18px;line-height:1.7}.article-prose>*+*{margin-top:24px}.article-prose h2{font-size:28px;font-weight:700;line-height:1.25;letter-spacing:-.01em;margin-top:48px;color:var(--color-text)}.article-prose h3{font-size:20px;font-weight:600;line-height:1.3;margin-top:32px;color:var(--color-text)}.article-prose p{color:var(--color-text-secondary)}.article-prose strong{color:var(--color-text);font-weight:600}.article-prose em{font-style:italic}.article-prose a{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px}.article-prose a:hover{filter:brightness(1.1)}.article-prose ul,.article-prose ol{padding-left:24px;color:var(--color-text-secondary)}.article-prose ul{list-style:disc}.article-prose ol{list-style:decimal}.article-prose li{margin-top:8px}.article-prose li::marker{color:var(--color-text-secondary)}.article-prose blockquote{border-left:3px solid var(--color-primary);padding-left:16px;color:var(--color-text-secondary)}.article-prose figure{margin-top:32px}.article-prose figure img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--color-border-subtle)}.article-prose figcaption{margin-top:10px;font-size:14px;line-height:1.6;color:var(--color-text-secondary)}.article-prose .table-scroll{margin-top:32px;overflow-x:auto}.article-prose table{width:100%;min-width:30rem;border-collapse:collapse;font-size:16px}.article-prose th,.article-prose td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-secondary)}.article-prose th{color:var(--color-text);font-weight:600;white-space:nowrap}.loading-spinner{border:3px solid var(--color-border-subtle);border-top-color:var(--color-primary);border-radius:50%;width:40px;height:40px;animation:spin .8s linear infinite}.loading-spinner-sm{width:20px;height:20px;border-width:2px}.btn .loading-spinner{border-color:#ffffff4d;border-top-color:currentColor}@keyframes spin{to{transform:rotate(360deg)}}.progress-bar{background:var(--color-border-subtle);height:8px;border-radius:var(--radius-meter);overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-primary);border-radius:var(--radius-meter);transition:width .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .3s ease-out forwards}.animate-fade-in-up{animation:fadeInUp .6s ease-out}.animation-delay-200{animation-delay:.2s}.animation-delay-400{animation-delay:.4s}
