/* RINX app.css — built 2026-06-14T06:22:34.461Z */
/* --- tailwind.css --- */
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-6{bottom:1.5rem}.left-1\/2{left:50%}.top-0{top:0}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[120\]{z-index:120}.z-\[130\]{z-index:130}.z-\[140\]{z-index:140}.col-span-full{grid-column:1/-1}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.\!grid{display:grid!important}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-16{height:4rem}.h-48{height:12rem}.h-64{height:16rem}.h-\[500px\]{height:500px}.h-full{height:100%}.max-h-32{max-height:8rem}.max-h-48{max-height:12rem}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[min\(92dvh\2c 100\%\)\]{max-height:min(92dvh,100%)}.min-h-0{min-height:0}.min-h-11{min-height:2.75rem}.min-h-\[28px\]{min-height:28px}.w-10{width:2.5rem}.w-16{width:4rem}.w-36{width:9rem}.w-40{width:10rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-11{min-width:2.75rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[280px\]{min-width:280px}.min-w-\[2ch\]{min-width:2ch}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[280px\]{max-width:280px}.max-w-\[520px\]{max-width:520px}.max-w-\[540px\]{max-width:540px}.max-w-\[90vw\]{max-width:90vw}.max-w-lg{max-width:32rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-manipulation{touch-action:manipulation}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-start{scroll-snap-align:start}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid-cols-none{grid-template-columns:none}.grid-cols-subgrid{grid-template-columns:subgrid}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[\#2f2f2f\]{--tw-border-opacity:1;border-color:rgb(47 47 47/var(--tw-border-opacity,1))}.border-\[\#c8102e\]{--tw-border-opacity:1;border-color:rgb(200 16 46/var(--tw-border-opacity,1))}.bg-\[\#0f0f0f\]{--tw-bg-opacity:1;background-color:rgb(15 15 15/var(--tw-bg-opacity,1))}.bg-\[\#111\]{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity,1))}.bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.bg-\[\#2a1520\]{--tw-bg-opacity:1;background-color:rgb(42 21 32/var(--tw-bg-opacity,1))}.bg-\[\#c8102e\]{--tw-bg-opacity:1;background-color:rgb(200 16 46/var(--tw-bg-opacity,1))}.bg-black\/70{background-color:rgba(0,0,0,.7)}.bg-black\/85{background-color:rgba(0,0,0,.85)}.bg-transparent{background-color:transparent}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pb-20{padding-bottom:5rem}.pb-24{padding-bottom:6rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[15px\]{font-size:15px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-\[\#00AEF3\]{--tw-text-opacity:1;color:rgb(0 174 243/var(--tw-text-opacity,1))}.text-\[\#c8102e\]{--tw-text-opacity:1;color:rgb(200 16 46/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.accent-\[\#c8102e\]{accent-color:#c8102e}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.last\:border-0:last-child{border-width:0}.hover\:border-\[\#c8102e\]:hover{--tw-border-opacity:1;border-color:rgb(200 16 46/var(--tw-border-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}@media (min-width:640px){.sm\:mx-4{margin-left:1rem;margin-right:1rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-6{margin-top:1.5rem}.sm\:inline{display:inline}.sm\:max-h-40{max-height:10rem}.sm\:w-auto{width:auto}.sm\:max-w-\[560px\]{max-width:560px}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-6{gap:1.5rem}.sm\:rounded-2xl{border-radius:1rem}.sm\:border-0{border-width:0}.sm\:p-8{padding:2rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-6{padding-bottom:1.5rem}.sm\:pt-6{padding-top:1.5rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width:768px){.md\:col-span-3{grid-column:span 3/span 3}.md\:ml-auto{margin-left:auto}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:hidden{display:none}.md\:w-48{width:12rem}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:text-7xl{font-size:4.5rem;line-height:1}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* --- styles.css --- */
/* ============================================
   RINX PAC - Base Styles & Polish Layer
   ============================================ */

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

::selection {
  background-color: rgba(200, 16, 46, 0.35);
  color: var(--text-primary, #fff);
}

:focus {
  outline: none;
}

:focus-visible {
  outline: 2px solid var(--focus-ring-color, rgba(200, 16, 46, 0.5));
  outline-offset: 2px;
}

.skip-link {
  position: absolute;
  top: -100%;
  left: 1rem;
  z-index: 200;
  padding: 0.75rem 1.25rem;
  background: var(--color-primary, #c8102e);
  color: white;
  font-weight: 600;
  border-radius: 0.5rem;
  text-decoration: none;
  transition: top var(--transition-fast, 150ms ease);
}

.skip-link:focus {
  top: 1rem;
}

.section-header {
  font-size: 2.4rem;
  line-height: 1.05;
  font-weight: 800;
  letter-spacing: -0.04em;
}

.mobile-tap {
  touch-action: manipulation;
  min-height: 68px;
}

/* ============================================
   Buttons & Interactive Elements
   ============================================ */

button,
a[role="button"],
[role="button"] {
  -webkit-tap-highlight-color: transparent;
}

/* Quick amount selector */
.quick-amount-btn {
  transition:
    background-color var(--transition-base, 200ms ease),
    border-color var(--transition-base, 200ms ease),
    color var(--transition-base, 200ms ease),
    transform var(--transition-fast, 150ms ease);
}

.quick-amount-btn:hover:not(.active) {
  border-color: var(--color-primary) !important;
  background-color: var(--color-primary-muted, rgba(200, 16, 46, 0.12));
}

.quick-amount-btn.active {
  background-color: var(--color-primary-muted, rgba(200, 16, 46, 0.12));
}

.quick-amount-btn:active {
  transform: scale(0.97);
}

/* Donate tier cards */
.donate-card {
  border: 1px solid var(--border-accent, #c8102e);
  color: var(--text-primary, #fff);
  transition:
    background-color var(--transition-base, 200ms ease),
    border-color var(--transition-base, 200ms ease),
    color var(--transition-base, 200ms ease),
    transform var(--transition-fast, 150ms ease),
    box-shadow var(--transition-base, 200ms ease);
}

.donate-card.bg-surface:hover {
  background-color: var(--color-primary) !important;
}

.donate-card:hover {
  color: white !important;
  box-shadow: var(--shadow-brand, 0 4px 20px rgba(200, 16, 46, 0.25));
}

.donate-card:active {
  transform: scale(0.985);
}

/* Strike list action bar */
#strike-list-summary button {
  transition:
    background-color var(--transition-base, 200ms ease),
    border-color var(--transition-base, 200ms ease),
    color var(--transition-base, 200ms ease);
}

#strike-list-summary button.border-default:hover,
#strike-list-summary .btn-outline:hover {
  background-color: var(--bg-surface-hover, #221a1a);
  border-color: var(--color-primary);
}

#strike-list-summary button.bg-primary:hover {
  box-shadow: var(--shadow-brand, 0 4px 20px rgba(200, 16, 46, 0.25));
}

/* Filter trigger */
button[onclick="showFilterModal()"]:hover {
  border-color: var(--color-primary) !important;
  background-color: var(--color-primary-muted, rgba(200, 16, 46, 0.12)) !important;
}

/* Table rows */
table tbody tr {
  transition: background-color var(--transition-fast, 150ms ease);
}

table tbody tr:hover {
  background-color: var(--bg-surface-hover, #221a1a) !important;
}

/* Compact action buttons in tables */
.btn-xs-primary {
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  border-radius: 0.375rem;
  background-color: var(--color-primary);
  color: white;
  border: none;
  cursor: pointer;
  transition: background-color var(--transition-fast, 150ms ease), transform var(--transition-fast, 150ms ease);
}

.btn-xs-primary:hover:not(:disabled) {
  background-color: var(--color-primary-hover);
}

.btn-xs-primary:active:not(:disabled) {
  transform: scale(0.97);
}

.btn-xs-outline {
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  border-radius: 0.375rem;
  background-color: transparent;
  color: var(--text-primary);
  border: 1px solid var(--border-default);
  text-decoration: none;
  transition:
    background-color var(--transition-fast, 150ms ease),
    border-color var(--transition-fast, 150ms ease);
}

.btn-xs-outline:hover {
  background-color: var(--bg-surface-hover);
  border-color: var(--color-primary);
}

/* ============================================
   Cards & Modals
   ============================================ */

.endorse-card {
  transition:
    transform var(--transition-base, 200ms ease),
    border-color var(--transition-base, 200ms ease),
    box-shadow var(--transition-base, 200ms ease);
}

.endorse-card:hover {
  transform: translateY(-3px);
  border-color: var(--color-primary) !important;
  box-shadow: 0 8px 24px rgba(200, 16, 46, 0.15);
}

.rino-card {
  transition:
    border-color var(--transition-base, 200ms ease),
    background-color var(--transition-base, 200ms ease),
    box-shadow var(--transition-base, 200ms ease),
    transform var(--transition-fast, 150ms ease);
}

.rino-card:hover:not(.rino-card--active) {
  border-color: var(--color-primary);
  background-color: var(--bg-elevated, #222);
  box-shadow: 0 0 0 1px rgba(200, 16, 46, 0.18);
}

.rino-card--active {
  border-color: var(--color-primary) !important;
  background: linear-gradient(135deg, rgba(200, 16, 46, 0.14) 0%, var(--bg-elevated, #222) 55%);
  box-shadow:
    0 0 0 2px rgba(200, 16, 46, 0.35),
    inset 4px 0 0 var(--color-primary);
}

.rino-card--active:hover {
  box-shadow:
    0 0 0 2px rgba(200, 16, 46, 0.5),
    inset 4px 0 0 var(--color-primary);
}

.rino-card:active {
  transform: scale(0.995);
}

.modal {
  animation: fadeIn 0.2s ease;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

#filter-modal,
#candidate-modal,
#endorse-modal {
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}

/* Filter modal — mobile bottom sheet with sticky footer */
#filter-modal.filter-modal-overlay {
  background-color: rgba(0, 0, 0, 0.85) !important;
}

.filter-modal-panel {
  max-height: min(92dvh, 100%);
}

.filter-modal-footer {
  padding-bottom: max(1rem, env(safe-area-inset-bottom, 0px));
}

.filter-modal-header {
  padding-top: max(1rem, env(safe-area-inset-top, 0px));
}

@media (max-width: 767px) {
  .filter-states-list {
    max-height: 6.5rem;
  }
}

/* Modal footer buttons without explicit classes */
#filter-modal button.border-default:hover,
#candidate-modal a.border-default:hover,
#endorse-modal button.border-accent:hover {
  background-color: var(--bg-surface-hover);
  border-color: var(--color-primary);
}

/* ============================================
   Navigation
   ============================================ */

nav a:not(.bg-primary):not(.btn-primary) {
  transition: color var(--transition-fast, 150ms ease);
}

nav button {
  transition:
    border-color var(--transition-base, 200ms ease),
    background-color var(--transition-base, 200ms ease),
    transform var(--transition-fast, 150ms ease);
}

nav button.border-default:hover,
nav .btn-icon:hover {
  border-color: var(--color-primary) !important;
  background-color: var(--color-primary-muted, rgba(200, 16, 46, 0.12));
}

nav a.bg-primary:hover,
nav .btn-primary:hover {
  box-shadow: var(--shadow-brand, 0 4px 20px rgba(200, 16, 46, 0.25));
}

#mobile-menu a {
  transition: color var(--transition-fast, 150ms ease), padding-left var(--transition-fast, 150ms ease);
}

#mobile-menu a:hover,
#mobile-menu a:focus-visible {
  color: var(--color-primary) !important;
  padding-left: 0.25rem;
}

/* Footer links */
footer a,
.text-secondary.hover\:text-primary {
  transition: color var(--transition-fast, 150ms ease);
}

footer a:hover,
a.hover\:text-primary:hover {
  color: var(--color-primary) !important;
}

/* ============================================
   Toast & Feedback
   ============================================ */

#toast {
  animation: toastIn 0.25s ease, toastOut 0.25s ease 2.75s forwards;
  box-shadow: var(--shadow-brand, 0 4px 20px rgba(200, 16, 46, 0.25));
}

@keyframes toastIn {
  from {
    opacity: 0;
    transform: translate(-50%, 1rem);
  }
  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

@keyframes toastOut {
  to {
    opacity: 0;
    transform: translate(-50%, 0.5rem);
  }
}

.boost-flash {
  animation: boostPulse 1.2s ease forwards;
}

@keyframes boostPulse {
  0% { opacity: 0; transform: scale(0.9); }
  20% { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.05); }
}

/* ============================================
   Layout & Background
   ============================================ */

body {
  background-image:
    linear-gradient(rgba(200, 16, 46, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(200, 16, 46, 0.06) 1px, transparent 1px);
  background-size: 28px 28px;
}

body[data-theme="light"] {
  background-image:
    linear-gradient(rgba(200, 16, 46, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(200, 16, 46, 0.04) 1px, transparent 1px);
}

/* Scrollbar (webkit) */
.scrollbar-hide {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.scrollbar-hide::-webkit-scrollbar {
  display: none;
}

/* Metric numbers */
.metric-number {
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.metric-number--lg {
  font-size: clamp(2rem, 4.5vw, 3.25rem);
  font-weight: 900;
  line-height: 1.05;
}

.metric-label {
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.metric-sublabel {
  font-size: 0.8rem;
}

#impact .metric-number {
  font-size: clamp(2.25rem, 5vw, 3.5rem);
  font-weight: 900;
}

/* Legal / policy pages using theme */
.policy-page nav a:hover {
  color: var(--color-primary) !important;
}

.policy-page .btn-donate {
  background-color: var(--color-primary);
  color: white;
  transition: background-color var(--transition-base, 200ms ease), transform var(--transition-fast, 150ms ease);
}

.policy-page .btn-donate:hover {
  background-color: var(--color-primary-hover);
}

.policy-page .btn-donate:active {
  transform: scale(0.985);
}

/* ============================================
   Congressional District Battle Map
   ============================================ */

.cd-map-container {
  width: 100%;
  height: 420px;
  border-radius: 1rem;
  border: 1px solid var(--border-accent, #c8102e);
  overflow: hidden;
  background: var(--bg-surface, #1a1a1a);
  box-shadow: 0 8px 32px rgba(200, 16, 46, 0.12);
}

.cd-map-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  height: 100%;
  padding: 2rem;
  text-align: center;
  color: var(--text-secondary, #a1a1a8);
  font-size: 0.9rem;
}

.cd-map-skeleton {
  width: min(100%, 520px);
  height: 280px;
  border-radius: 0.75rem;
  background: linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0.04) 75%);
  background-size: 200% 100%;
  animation: cdMapShimmer 1.4s ease-in-out infinite;
}

@keyframes cdMapShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.map-legend-dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
  border: 1px solid rgba(255, 255, 255, 0.15);
}

.map-legend-risk {
  background: #22c55e;
  box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.35);
}

.map-legend-secured {
  background: #22c55e;
  box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.35);
}

.map-legend-target {
  background: #fbbf24;
  box-shadow: 0 0 0 2px rgba(251, 191, 36, 0.35);
}

.map-legend-segment-incumbent {
  background: #c8102e;
  box-shadow: 0 0 0 2px rgba(200, 16, 46, 0.35);
}

.map-legend-segment-challenger {
  background: #c2410c;
  box-shadow: 0 0 0 2px rgba(194, 65, 12, 0.35);
}

.cd-segment-armed {
  filter: saturate(0.92);
}

.cd-segment-incumbent {
  filter: saturate(0.95);
}

.cd-segment-challenger {
  filter: saturate(0.95);
}

.targeting-progress {
  height: 4px;
  border-radius: 2px;
  background: var(--border-default, #2f2f2f);
  overflow: hidden;
}

.targeting-progress::after {
  content: '';
  display: block;
  height: 100%;
  width: 40%;
  background: var(--border-accent, #c8102e);
  border-radius: 2px;
  animation: targeting-progress-slide 1.2s ease-in-out infinite;
}

@keyframes targeting-progress-slide {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(350%); }
}

.hit-badge {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.hit-hot {
  color: #fecaca;
  background: rgba(200, 16, 46, 0.35);
  border: 1px solid rgba(252, 165, 165, 0.45);
}

.hit-warm {
  color: #fde68a;
  background: rgba(251, 191, 36, 0.28);
  border: 1px solid rgba(252, 211, 77, 0.4);
}

.hit-cold {
  color: #cbd5e1;
  background: rgba(100, 116, 139, 0.28);
  border: 1px solid rgba(148, 163, 184, 0.35);
}

.map-hit-legend .hit-badge {
  font-size: 0.6rem;
  padding: 0.1rem 0.35rem;
}

.leaflet-popup-content .hit-badge {
  font-size: 0.65rem;
  vertical-align: middle;
}

.mw-candidate-photo {
  aspect-ratio: 1;
  object-fit: cover;
}

.demo-badge {
  display: inline-block;
  margin-bottom: 0.5rem;
  padding: 0.2rem 0.55rem;
  border-radius: 0.375rem;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #fcd34d;
  background: rgba(251, 191, 36, 0.12);
  border: 1px solid rgba(251, 191, 36, 0.35);
}

.live-badge {
  display: inline-block;
  margin-bottom: 0.5rem;
  margin-right: 0.35rem;
  padding: 0.2rem 0.55rem;
  border-radius: 0.375rem;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #86efac;
  background: rgba(34, 197, 94, 0.12);
  border: 1px solid rgba(34, 197, 94, 0.35);
}

.targeting-tune summary {
  list-style: none;
}

.targeting-tune summary::-webkit-details-marker {
  display: none;
}

.targeting-tune summary::before {
  content: '▸ ';
  display: inline-block;
  transition: transform 0.15s;
}

.targeting-tune[open] summary::before {
  transform: rotate(90deg);
}

.map-live-status {
  font-size: 0.7rem;
  letter-spacing: 0.02em;
}

.map-live-status.map-live-error {
  color: #f87171;
}

.map-live-status.map-live-pulse::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 6px;
  border-radius: 50%;
  background: #22c55e;
  animation: map-pulse 2s ease-in-out infinite;
  vertical-align: middle;
}

@keyframes map-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

.map-tool-btn {
  padding: 0.35rem 0.65rem;
  border-radius: 0.5rem;
  border: 1px solid var(--border-default, #2f2f2f);
  background: var(--bg-surface, #1a1a1a);
  color: var(--text-secondary, #a1a1a8);
  font-size: 0.7rem;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.map-tool-btn:hover,
.map-tool-btn[aria-pressed="true"] {
  border-color: var(--border-accent, #c8102e);
  color: var(--text-primary, #fff);
}

.leaflet-container {
  font-family: inherit;
  background: var(--bg-base, #0f0f0f);
}

.leaflet-popup-content-wrapper {
  background: var(--bg-surface, #1a1a1a);
  color: var(--text-primary, #fff);
  border: 1px solid var(--border-accent, #c8102e);
  border-radius: 0.5rem;
}

.leaflet-popup-tip {
  background: var(--bg-surface, #1a1a1a);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.primary-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.2rem 0.45rem;
  border-radius: 999px;
  border: 1px solid var(--border-default, #2f2f2f);
  color: var(--text-secondary, #a1a1a8);
  white-space: nowrap;
}

.primary-badge--soon {
  border-color: var(--border-accent, #c8102e);
  color: var(--color-primary, #c8102e);
  background: rgba(200, 16, 46, 0.1);
}

.primary-badge--past {
  opacity: 0.55;
}

.candidate-photo-fallback,
.mw-candidate-photo.candidate-photo-fallback {
  object-fit: contain !important;
  aspect-ratio: 4 / 3;
  background: var(--bg-elevated, #222);
  padding: 4px;
}

.toast-undo-btn {
  margin-left: 0.5rem;
  padding: 0.25rem 0.65rem;
  border-radius: 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.5);
  background: transparent;
  color: white;
  font-size: 0.75rem;
  font-weight: 700;
  cursor: pointer;
}

.toast-undo-btn:hover {
  background: rgba(255, 255, 255, 0.15);
}

.pvi-override-tip {
  color: #fbbf24;
  font-size: 0.85em;
  cursor: help;
}

@media (prefers-reduced-motion: reduce) {
  .map-live-status.map-live-pulse::before {
    animation: none;
  }

  .targeting-progress::after {
    animation: none;
    width: 100%;
  }

  .cd-map-container .leaflet-zoom-animated {
    transition: none !important;
  }
}

@media (max-width: 767px) {
  body {
    transform: none;
  }

  .section-header {
    font-size: 2rem;
  }

  .cd-map-container {
    height: 300px;
  }

  #battle-rinos {
    display: flex;
    flex-direction: row;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    gap: 1rem;
    padding-bottom: 0.5rem;
    -webkit-overflow-scrolling: touch;
  }

  #battle-rinos .rino-card {
    min-width: min(85vw, 320px);
    flex: 0 0 min(85vw, 320px);
    scroll-snap-align: center;
  }

  #most-wanted,
  #battle-map,
  #targeting-engine,
  #donate {
    content-visibility: auto;
    contain-intrinsic-size: auto 480px;
  }
}

/* Hero background video — poster always visible; playback is a subtle upgrade */
.hero-bg-video {
  opacity: 0.1;
}

.hero-bg-video--ready {
  opacity: 0.1;
}

@media (prefers-reduced-motion: reduce) {
  .hero-bg-video,
  .hero-bg-video--ready {
    opacity: 0.1;
  }
}
/* --- theme.css --- */
/* ============================================
   RINX PAC - Theme System (Priority Fixed)
   ============================================ */

:root {
  --color-primary: #c8102e;
  --color-primary-hover: #9f0f24;
  --color-primary-light: #D9586D;
  --color-primary-muted: rgba(200, 16, 46, 0.12);

  --color-secondary: #003487;
  --color-secondary-hover: #4D71AB;

  --color-accent-sky: #00AEF3;

  --bg-base: #0f0f0f;
  --bg-surface: #1a1a1a;
  --bg-elevated: #111111;
  --bg-surface-hover: #221a1a;

  --border-default: #2f2f2f;
  --border-accent: #c8102e;

  --text-primary: #ffffff;
  --text-secondary: #a1a1a8;
  --text-muted: #6b7280;

  --focus-ring-color: rgba(200, 16, 46, 0.5);
  --shadow-brand: 0 4px 20px rgba(200, 16, 46, 0.25);
  --transition-fast: 150ms ease;
  --transition-base: 200ms ease;
  --transition-slow: 300ms ease;

  color-scheme: dark;
}

/* Theme Definitions */
body[data-theme="dark-cool"] {
  --bg-base: #0A0A0A;
  --bg-surface: #1A1A1C;
  --bg-elevated: #111113;
  --bg-surface-hover: #1E1E22;
  --border-default: #2C2C30;
  --text-primary: #F5F5F7;
  --text-secondary: #A1A1A8;
  --text-muted: #6B7280;
}

body[data-theme="dark-warm"] {
  --bg-base: #14100B;
  --bg-surface: #211B15;
  --bg-elevated: #1A1611;
  --bg-surface-hover: #2A221A;
  --border-default: #36302A;
  --text-primary: #F8F2E8;
  --text-secondary: #C5B8A8;
  --text-muted: #7A6F5F;
}

body[data-theme="light"] {
  --bg-base: #F9F8F5;
  --bg-surface: #FFFFFF;
  --bg-elevated: #F5F4F0;
  --bg-surface-hover: #EEECE6;
  --border-default: #E5E3DB;
  --text-primary: #11110F;
  --text-secondary: #55534B;
  --text-muted: #7A766A;
  --color-primary-muted: rgba(200, 16, 46, 0.08);
  color-scheme: light;
}

/* ============================================
   Global Application
   ============================================ */
body {
  background-color: var(--bg-base) !important;
  color: var(--text-primary) !important;
}

/* Semantic Classes */
.bg-base       { background-color: var(--bg-base) !important; }
.bg-surface    { background-color: var(--bg-surface) !important; }
.bg-elevated   { background-color: var(--bg-elevated) !important; }

.border-default { border-color: var(--border-default) !important; }
.border-accent  { border-color: var(--border-accent) !important; }

.text-primary   { color: var(--text-primary) !important; }
.text-secondary { color: var(--text-secondary) !important; }
.text-muted     { color: var(--text-muted) !important; }

/* ============================================
   Primary Brand Color (Highest Priority)
   ============================================ */

.text-primary-brand,
span.text-primary-brand,
h1 .text-primary-brand,
h2 .text-primary-brand {
  color: var(--color-primary) !important;
}

.bg-primary {
  background-color: var(--color-primary) !important;
  color: white !important;
}

.bg-primary,
.bg-primary:hover,
.bg-primary:focus-visible {
  color: white !important;
}

/* Automatic primary hover for all interactive elements */
a.bg-primary:hover,
button.bg-primary:hover:not(:disabled),
input[type="submit"].bg-primary:hover,
.bg-primary.btn-interactive:hover {
  background-color: var(--color-primary-hover) !important;
}

button.bg-primary:active:not(:disabled),
a.bg-primary:active,
.bg-primary.btn-interactive:active {
  transform: scale(0.985);
}

button.bg-primary:disabled,
.bg-primary:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none !important;
}

/* Secondary blue CTA (endorsements hero) */
.bg-secondary-brand {
  background-color: var(--color-secondary) !important;
  color: white !important;
}

.bg-secondary-brand:hover {
  background-color: var(--color-secondary-hover) !important;
  color: white !important;
}

/* Legacy Tailwind arbitrary hover classes → theme variables */
.hover\:bg-\[\#9f0f24\]:hover,
.hover\:bg-\[\#D9586D\]:hover {
  background-color: var(--color-primary-hover) !important;
}

.hover\:bg-\[\#4D71AB\]:hover {
  background-color: var(--color-secondary-hover) !important;
}

.hover\:bg-\[\#2a1a1a\]:hover,
.hover\:bg-\[\#2A1A1A\]:hover {
  background-color: var(--bg-surface-hover) !important;
}

.hover\:bg-\[\#c8102e\]:hover {
  background-color: var(--color-primary) !important;
  color: white !important;
}

/* ============================================
   Interactive Button System
   ============================================ */

.btn-primary,
.btn-secondary,
.btn-outline,
.btn-ghost,
.btn-icon,
.btn-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.375rem;
  cursor: pointer;
  text-decoration: none;
  font-weight: 600;
  border-radius: 0.75rem;
  transition:
    background-color var(--transition-base),
    border-color var(--transition-base),
    color var(--transition-base),
    box-shadow var(--transition-base),
    transform var(--transition-fast);
  -webkit-tap-highlight-color: transparent;
}

.btn-primary {
  background-color: var(--color-primary) !important;
  color: white !important;
  border: 1px solid transparent;
}

.btn-primary:hover:not(:disabled) {
  background-color: var(--color-primary-hover) !important;
  box-shadow: var(--shadow-brand);
}

.btn-primary:active:not(:disabled) {
  transform: scale(0.985);
}

.btn-secondary {
  background-color: var(--color-secondary) !important;
  color: white !important;
  border: 1px solid transparent;
}

.btn-secondary:hover {
  background-color: var(--color-secondary-hover) !important;
}

.btn-outline {
  background-color: transparent;
  color: var(--text-primary);
  border: 1px solid var(--border-default);
}

.btn-outline:hover:not(:disabled) {
  background-color: var(--bg-surface-hover);
  border-color: var(--color-primary);
  color: var(--text-primary);
}

.btn-ghost {
  background-color: transparent;
  border: 1px solid transparent;
  color: var(--text-secondary);
}

.btn-ghost:hover:not(:disabled) {
  color: var(--color-primary);
  background-color: var(--color-primary-muted);
}

.btn-icon {
  background-color: transparent;
  border: 1px solid var(--border-default);
  color: var(--text-primary);
  padding: 0.5rem 0.75rem;
}

.btn-icon:hover:not(:disabled) {
  border-color: var(--color-primary);
  background-color: var(--color-primary-muted);
}

.btn-close {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  padding: 0.25rem;
  line-height: 1;
}

.btn-close:hover {
  color: var(--color-primary);
}

/* Nav links */
.nav-link {
  color: var(--text-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.nav-link:hover,
.nav-link:focus-visible {
  color: var(--color-primary) !important;
}

/* Surface hover utility */
.hover-surface:hover {
  background-color: var(--bg-surface-hover) !important;
}

/* ============================================
   Protective Overrides
   ============================================ */

.text-white:not(.text-primary-brand):not(.bg-primary):not(.btn-primary):not(.btn-secondary) {
  color: var(--text-primary) !important;
}

.bg-\[\#0f0f0f\],
.bg-\[\#1a1a1a\] {
  background-color: var(--bg-surface) !important;
}

.bg-\[\#003487\] {
  background-color: var(--color-secondary) !important;
}

.border-\[\#2f2f2f\] {
  border-color: var(--border-default) !important;
}

.text-gray-400,
.text-gray-300 {
  color: var(--text-secondary) !important;
}

.text-gray-500 {
  color: var(--text-muted) !important;
}

/* Modal & Card protection */
.filter-modal-panel,
#candidate-modal > div,
#endorse-modal > div,
.endorse-card {
  background-color: var(--bg-surface) !important;
  border-color: var(--border-accent) !important;
}

/* Form controls */
select,
input[type="range"],
input[type="checkbox"] {
  accent-color: var(--color-primary);
}

select:focus-visible,
input[type="range"]:focus-visible {
  outline: 2px solid var(--focus-ring-color);
  outline-offset: 2px;
}