:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fffdfb;--color-surface:#fff;--color-surface-raised:#fff;--color-text:#201626;--color-text-muted:#5b5164;--color-border:#e2dce6;--color-border-strong:#c9c0cf;--color-primary:#7a2e8f;--color-primary-strong:#5e2270;--color-primary-tint:#f6ecf9;--color-on-primary:#fff;--color-accent:#e0562f;--color-accent-tint:#fdece5;--color-success:#146c43;--color-success-tint:#e7f5ec;--color-danger:#b3261e;--color-danger-tint:#fbebe9;--color-warning:#8a5a00;--color-warning-tint:#fbf1de;--color-info:#1f5fa8;--color-info-tint:#eaf2fb;--focus-ring:#1f5fa8;--focus-ring-width:3px;--space-1:.25rem;--space-2:.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2rem;--space-6:3rem;--font-sans:"Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--leading-tight:1.2;--leading-normal:1.55;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:999px;--shadow-sm:0 1px 2px #2016260f;--shadow-md:0 4px 16px #2016261a;--shadow-lg:0 12px 32px #20162629;--content-width:64rem;--content-width-narrow:40rem;--motion-fast:.12s;--motion-base:.2s;--motion-ease:cubic-bezier(.2, 0, 0, 1);font-family:var(--font-sans)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#17121c;--color-surface:#211a28;--color-surface-raised:#2a2132;--color-text:#f4eef8;--color-text-muted:#c6b9d1;--color-border:#3c3145;--color-border-strong:#4f4258;--color-primary:#c98bde;--color-primary-strong:#dda7ec;--color-primary-tint:#362a40;--color-on-primary:#201626;--color-accent:#ff9a72;--color-accent-tint:#3a271e;--color-success:#7fe0ab;--color-success-tint:#16301f;--color-danger:#ff9b93;--color-danger-tint:#3a1917;--color-warning:#f0c476;--color-warning-tint:#362a10;--color-info:#8fc0ef;--color-info-tint:#172c3f;--focus-ring:#8fc0ef;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 12px 32px #00000080}}*,:before,:after{box-sizing:border-box}html,body{width:100%;margin:0;padding:0;overflow-x:hidden}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);line-height:var(--leading-normal);font-size:var(--text-base)}h1,h2,h3{line-height:var(--leading-tight);letter-spacing:-.01em;font-weight:700}h1{font-size:var(--text-3xl);margin:0 0 var(--space-3)}h2{font-size:var(--text-xl);margin:var(--space-5) 0 var(--space-2)}h3{font-size:var(--text-lg);margin:var(--space-4) 0 var(--space-2)}p{margin:0 0 var(--space-3);max-width:70ch}a{color:var(--color-primary);text-underline-offset:.15em;text-decoration-thickness:from-font}a:hover{color:var(--color-primary-strong)}code{word-break:break-word;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875em}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}.skip-link{background:var(--color-primary);color:var(--color-on-primary);padding:var(--space-2) var(--space-3);border-radius:0 0 var(--radius-sm) 0;z-index:100;font-weight:600;position:absolute;top:0;left:-9999px}.skip-link:focus{top:0;left:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);z-index:20;flex-wrap:wrap;display:flex;position:sticky;top:0}.app-header__identity{align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.app-header__brand{color:var(--color-primary);white-space:nowrap;font-weight:800}.app-header__product{color:var(--color-text-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-nav{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.app-nav a{color:var(--color-text);padding:var(--space-2) 0;font-weight:600;text-decoration:none}.app-nav a:hover,.app-nav a:focus-visible{color:var(--color-primary)}.app-nav__user{color:var(--color-text-muted);font-weight:600}.app-nav__role{border:1px solid var(--color-primary);border-radius:var(--radius-pill);font-size:var(--text-xs);color:var(--color-primary);padding:.2rem .7rem}.app-nav__logout{min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text);font:inherit;cursor:pointer;transition:background var(--motion-fast) var(--motion-ease);background:0 0;font-weight:600}.app-nav__logout:hover{background:var(--color-primary-tint);border-color:var(--color-primary)}.app-dev-banner{max-width:none;padding:var(--space-2) var(--space-3);background:var(--color-primary);color:var(--color-on-primary);font-size:var(--text-sm);text-align:center;margin:0}.app-main{width:100%;max-width:var(--content-width);padding:var(--space-5) var(--space-4) var(--space-6);flex:1;margin:0 auto}.app-footer{padding:var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-muted)}.app-footer p{max-width:none}.app-footer nav{gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.app-footer nav a{color:var(--color-text-muted);font-weight:600}.error-boundary{padding:var(--space-5) var(--space-4);max-width:var(--content-width-narrow);margin:0 auto}.btn,button:not([class]),.artist-search button,.artist-sort~button,form:not(.admin-edit):not(.admin-reject):not(.admin-merge)>button{appearance:none;justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:.6rem var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:600;font-size:var(--text-sm);cursor:pointer;transition:background var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease);text-decoration:none;display:inline-flex}.btn:hover,button:not([class]):hover{background:var(--color-primary-tint);border-color:var(--color-primary)}.btn:disabled,button:disabled,.btn[aria-disabled=true]{cursor:not-allowed;opacity:.55}.vote-control{align-items:center;gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.vote-button{min-width:44px;min-height:44px;padding:.6rem var(--space-4);border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-primary);font:inherit;cursor:pointer;transition:background var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease);justify-content:center;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.vote-button:hover{background:var(--color-primary-strong);border-color:var(--color-primary-strong)}.vote-button:active{transform:translateY(1px)}.vote-button:disabled,.vote-button[aria-disabled=true]{cursor:not-allowed;border-color:var(--color-border-strong);color:var(--color-text-muted);opacity:1;background:0 0}.vote-button--selected{background:var(--color-surface);color:var(--color-primary);border-width:2px;font-weight:700}.vote-button--selected:hover{background:var(--color-primary-tint)}.vote-control__note{font-size:var(--text-sm);color:var(--color-text-muted)}.vote-control__error{font-size:var(--text-sm);color:var(--color-danger);font-weight:600}label{font-weight:600;font-size:var(--text-sm);margin-bottom:var(--space-1);display:block}input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;min-height:44px;padding:.55rem var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-base)}textarea{resize:vertical;min-height:6rem}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:1px;border-color:var(--focus-ring)}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--color-danger)}fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);margin:var(--space-3) 0}legend{padding:0 var(--space-2);font-weight:700}[role=alert]{color:var(--color-danger);font-size:var(--text-sm);margin-top:.2rem;font-weight:600}.alert{gap:var(--space-2);padding:var(--space-3) var(--space-4);margin:var(--space-3) 0;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);display:flex}.alert:before{font-weight:800;line-height:var(--leading-normal);flex:none}.alert__content{flex:auto;min-width:0}.alert--error{border-color:var(--color-danger);background:var(--color-danger-tint);color:var(--color-danger)}.alert--error:before{content:"⚠"}.alert--info{border-color:var(--color-info);background:var(--color-info-tint);color:var(--color-info)}.alert--info:before{content:"ℹ"}.alert p{color:var(--color-text);margin:0 0 var(--space-2)}.alert p:last-child{margin-bottom:0}.campaign-banner{padding:var(--space-3) var(--space-4);margin:var(--space-3) 0;border:1px solid var(--color-accent);background:var(--color-accent-tint);color:var(--color-text);border-radius:var(--radius-md);font-weight:600}.empty-state{padding:var(--space-5) var(--space-4);text-align:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);color:var(--color-text-muted)}.empty-state__title{font-weight:700;font-size:var(--text-lg);color:var(--color-text);margin:0 0 var(--space-2)}.loading-skeleton{gap:var(--space-2);display:grid}.loading-skeleton__row{border-radius:var(--radius-md);background:linear-gradient(90deg, var(--color-border) 25%, var(--color-surface) 37%, var(--color-border) 63%);background-size:400% 100%;height:5rem}@media (prefers-reduced-motion:no-preference){.loading-skeleton__row{animation:1.4s infinite loading-shimmer}}@keyframes loading-shimmer{0%{background-position:100%}to{background-position:0}}.artist-search{align-items:flex-end;gap:var(--space-2);margin:var(--space-4) 0 var(--space-3);flex-wrap:wrap;display:flex}.artist-search>div:first-child{flex:1;min-width:12rem}.artist-search input[type=search]{font-size:var(--text-base)}.artist-sort{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.artist-sort label{white-space:nowrap;margin-bottom:0}.artist-sort select{width:auto;min-width:10rem}.artists-budget{color:var(--color-primary);background:var(--color-primary-tint);padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);margin:var(--space-2) 0 var(--space-3);font-weight:700;display:inline-block}.artist-list{gap:var(--space-3);grid-template-columns:1fr;margin:0;padding:0;list-style:none;display:grid}@media (width>=640px){.artist-list{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.artist-list{grid-template-columns:repeat(3,1fr)}}.artist-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);overflow-wrap:break-word;box-shadow:var(--shadow-sm);transition:box-shadow var(--motion-base) var(--motion-ease);flex-direction:column;display:flex}.artist-card:hover{box-shadow:var(--shadow-md)}.artist-card__name{margin:0 0 var(--space-1);font-size:var(--text-lg)}.artist-card__votes{color:var(--color-text-muted);font-size:var(--text-sm);margin:0 0 var(--space-2);font-weight:600}.artist-card__links{gap:var(--space-2);margin:0 0 var(--space-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.platform-link{border:1px solid var(--color-border-strong);border-radius:var(--radius-pill);min-height:32px;color:var(--color-text);font-size:var(--text-xs);align-items:center;padding:.25rem .65rem;font-weight:600;text-decoration:none;display:inline-flex}.platform-link:hover{border-color:var(--color-primary);color:var(--color-primary)}.platform-link__glyph,.platform-link-input__glyph{width:1.25rem;height:1.25rem;color:var(--color-text);flex-shrink:0;justify-content:center;align-items:center;margin-right:.4rem;display:inline-flex}.platform-link-input__chips{gap:var(--space-2);margin:0 0 var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.platform-link-input__chip-row{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-wrap:wrap;padding:.4rem .6rem;display:flex}.platform-link-input__chip{font-weight:600;font-size:var(--text-xs);align-items:center;display:inline-flex}.platform-link-input__url{overflow-wrap:anywhere;color:var(--color-text-muted);font-size:var(--text-xs)}.platform-link-input__field-error{color:var(--color-danger);font-size:var(--text-xs);flex-basis:100%;margin:0}.platform-link-input__add-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.artist-card__vote-button{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-3);margin-top:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:not-allowed;background:0 0}.artist-detail__links{gap:var(--space-2);margin:var(--space-3) 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.sign-in__providers,.sign-in__dev{margin:var(--space-4) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.sign-in__dev-list{margin:var(--space-3) 0 0;gap:var(--space-2);padding:0;list-style:none;display:grid}.sign-in__dev-list li{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.auth-provider-button{min-height:48px;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.auth-provider-button:hover{border-color:var(--color-primary);background:var(--color-primary-tint)}.auth-provider-button:disabled{cursor:not-allowed;opacity:.6}.sign-in__dev-note,.sign-in__provider-note{font-size:var(--text-sm);color:var(--color-text-muted)}.sign-in__dev-description{color:var(--color-text-muted);font-size:var(--text-sm)}.activity__budget{color:var(--color-primary);font-weight:700}.activity__votes,.activity__submissions{margin:var(--space-2) 0 var(--space-4);gap:var(--space-2);padding:0;list-style:none;display:grid}.activity__votes li,.activity__submissions li{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);background:var(--color-surface)}.activity__vote{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.activity__submission-name{font-weight:700}.activity__submission-status{font-size:var(--text-sm);color:var(--color-primary);font-weight:600}.activity__submission-reason{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:.2rem;display:block}.admin h2{margin-top:var(--space-5)}.admin-campaign{border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);margin:var(--space-4) 0;background:var(--color-surface)}.admin-campaign__actions{gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.admin-campaign__exports{gap:var(--space-1) var(--space-2);flex-wrap:wrap;display:flex}.admin-summary{margin:var(--space-3) 0;gap:var(--space-2);grid-template-columns:repeat(2,1fr);padding:0;list-style:none;display:grid}@media (width>=640px){.admin-summary{grid-template-columns:repeat(4,1fr)}}.admin-summary__card{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);text-align:center;background:var(--color-surface)}.admin-summary__value{font-size:var(--text-2xl);color:var(--color-primary);font-weight:800;display:block}.admin-summary__label{font-size:var(--text-sm);color:var(--color-text-muted)}.admin-filters{align-items:flex-end;gap:var(--space-3);margin:var(--space-3) 0;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);flex-wrap:wrap;display:flex}.admin-filters__field{flex-direction:column;gap:.25rem;display:flex}.admin-filters__field select,.admin-filters__field input{min-width:9rem}.admin-filters__search{align-items:flex-end;gap:var(--space-2);flex-wrap:wrap;flex:1;min-width:14rem;display:flex}.admin-filters__search>div:first-child{flex:1;min-width:10rem}.admin-queue{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.admin-queue__row{justify-content:space-between;align-items:flex-start;gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--color-surface);flex-wrap:wrap;display:flex}.admin-queue__main{flex:1;min-width:0}.admin-queue__name{margin:0 0 var(--space-2);font-size:var(--text-lg)}.admin-queue__meta,.admin-queue__submitter,.admin-queue__counts,.admin-queue__platforms{font-size:var(--text-sm);color:var(--color-text-muted);margin:.2rem 0}.admin-queue__actions{flex:none}.status-badge{border-radius:var(--radius-pill);font-size:var(--text-xs);text-transform:capitalize;border:1.5px solid;align-items:center;padding:.15rem .6rem;font-weight:700;display:inline-flex}.status-badge[data-status=pending]{color:var(--color-warning)}.status-badge[data-status=approved]{color:var(--color-success)}.status-badge[data-status=rejected]{color:var(--color-danger)}.status-badge[data-status=merged]{color:var(--color-primary)}.status-badge[data-status=draft]{color:var(--color-text-muted)}.status-badge[data-status=open]{color:var(--color-success)}.status-badge[data-status=closed]{color:var(--color-danger)}.status-badge[data-status=archived]{color:var(--color-text-muted)}.admin-platform-badge{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-text-muted);align-items:center;margin:0 .25rem .25rem 0;padding:.1rem .5rem;display:inline-flex}.admin-platform-badge__glyph{flex-shrink:0;width:1rem;height:1rem;margin-right:.3rem;display:inline-flex}.admin-button{min-height:44px;padding:.6rem var(--space-3);border:1px solid var(--color-primary);border-radius:var(--radius-sm);color:var(--color-primary);font:inherit;font-weight:700;font-size:var(--text-sm);cursor:pointer;transition:background var(--motion-fast) var(--motion-ease);background:0 0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.admin-button:hover{background:var(--color-primary-tint)}.admin-button--primary{background:var(--color-primary);color:var(--color-on-primary)}.admin-button--primary:hover{background:var(--color-primary-strong)}.admin-button--danger{border-color:var(--color-danger);color:var(--color-danger)}.admin-button--danger:hover{background:var(--color-danger-tint)}.admin-button:disabled{cursor:not-allowed;opacity:.55}.admin-load-more{margin-top:var(--space-3);min-height:44px;padding:var(--space-2) var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;font-weight:600}.admin-load-more:hover{border-color:var(--color-primary);color:var(--color-primary)}.admin-detail__facts{gap:var(--space-2) var(--space-4);margin:var(--space-3) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:max-content 1fr;display:grid}.admin-detail__facts dt{color:var(--color-text-muted);font-weight:700}.admin-detail__facts dd{overflow-wrap:anywhere;margin:0}.admin-links,.admin-matches,.admin-history,.admin-audit{margin:var(--space-2) 0;gap:var(--space-2);padding:0;list-style:none;display:grid}.admin-links__row{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.admin-links__normalized,.admin-audit__meta{font-size:var(--text-xs);overflow-wrap:anywhere;color:var(--color-text-muted)}code.admin-audit__meta{margin-left:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-primary-tint);padding:.1rem .4rem}.admin-warning{font-size:var(--text-sm);color:var(--color-warning);font-weight:600}.admin-actions{border-top:1px solid var(--color-border);margin-top:var(--space-5);padding-top:var(--space-4)}.admin-action{margin:var(--space-3) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.admin-action h3{margin-top:0}.admin-confirm{gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-3);border:1.5px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary-tint);display:grid}.admin-confirm>div:has(button){gap:var(--space-2);flex-wrap:wrap;display:flex}.admin-edit,.admin-reject,.admin-merge{gap:var(--space-2);margin-top:var(--space-3);display:grid}.admin-edit__actions,.admin-merge__actions{gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.admin-merge__option{align-items:center;gap:var(--space-2);padding:var(--space-2) 0;font-weight:500;display:flex}.admin-merge__option input{width:auto;min-height:auto}.admin-confirm button[type=button]:not(.admin-button),.admin-edit__actions button[type=button]:not(.admin-button),.admin-merge__actions button[type=button]:not(.admin-button){min-height:44px;padding:.6rem var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font:inherit;cursor:pointer;font-weight:600}@media (width<=640px){.app-main{padding:var(--space-4) var(--space-3) var(--space-5)}h1{font-size:var(--text-2xl)}.app-header{padding:var(--space-2) var(--space-3)}.admin-filters{flex-direction:column;align-items:stretch}.admin-filters__field,.admin-filters__field select,.admin-filters__field input,.admin-filters__search{width:100%}.admin-detail__facts{grid-template-columns:1fr}.admin-detail__facts dt{margin-top:var(--space-2)}.admin-queue__row{flex-direction:column;align-items:stretch}.admin-queue__actions .admin-button{width:100%}}@media (width<=360px){h1{font-size:var(--text-xl)}}
