/* FUGA Portal 3.0 — Bold Editorial / Atlantic. Pure presentation, existing PHP/API/HTMX intact. */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;650;700;800;900&display=swap');
:root{color-scheme:light;color:#0a0a0a;background:#fff;--rp-bg:#fff;--rp-paper:#fff;--rp-ink:#0a0a0a;--rp-subtle:#626262;--rp-line:rgba(0,0,0,.12);--rp-lime:#0b587c;--fuga-bg:#fff;--fuga-panel:#0a0a0a;--fuga-surface:#fff;--fuga-elevated:#f7f8f9;--fuga-border:rgba(0,0,0,.13);--fuga-text:#0b0b0b;--fuga-secondary:#525252;--fuga-muted:#737373;--fuga-cyan:#0b5779;--fuga-gold:#0b5779;font-family:Inter,Arial,sans-serif;letter-spacing:-.02em}
html,body{font-family:Inter,Arial,sans-serif}body.portal-app,body.portal-guest{background:#fff;color:#0a0a0a}body.portal-app .page{color:#090909}body.portal-app h1,body.portal-app h2,body.portal-app h3,body.portal-app h4,body.portal-app strong:not(.rp-race-count),body.portal-guest h1,body.portal-guest h2,body.portal-guest h3{color:#090909;font-family:Inter,Arial,sans-serif;letter-spacing:-.05em}body.portal-app .page-head h1{font-size:clamp(2rem,4.2vw,3.7rem);font-weight:800;line-height:1;letter-spacing:-.075em;margin:0 0 9px;background:linear-gradient(105deg,#050505 10%,#103c55 67%,#0e668d);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}body.portal-app .page-head p,body.portal-app .muted,body.portal-app .rp-dashboard-row small,body.portal-app .rp-list-copy small,body.portal-app .rp-race-pricing-note,body.portal-app .rp-race-header p{color:#626262}body.portal-app .page-head .eyebrow,body.portal-app .eyebrow,body.portal-guest .eyebrow{color:#555;font-size:.69rem;letter-spacing:.13em;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}body.portal-app .footer{color:#737373;border:0;border-top:1px solid rgba(0,0,0,.13);background:#fff}body.portal-app .footer a{color:#0e5478!important}
/* Fixed sidebar: deliberate dark brand anchor against a white content canvas. */
body.portal-app .topbar{background:#0a0a0a;border:0;border-right:1px solid #262626;box-shadow:none}body.portal-app .topbar-in{gap:20px}body.portal-app .brand{color:#fff;font-weight:850;font-size:1rem;letter-spacing:-.065em}body.portal-app .brand-word,body.portal-app .brand-word strong{color:#fff}body.portal-app .fuga-portal-highlight{color:#b3d4e4}body.portal-app .brand-mark,body.portal-guest .brand-mark{background:linear-gradient(145deg,#0a496c,#0f729b);color:white;border:0;box-shadow:none;transform:none;border-radius:5px}body.portal-app .brand-word small{color:#b8b8b8}body.portal-app .navigation a{color:#c9c9c9;border:1px solid transparent;background:transparent;border-radius:4px;font-weight:650;transition:color .55s cubic-bezier(.16,1,.3,1),background .55s cubic-bezier(.16,1,.3,1)}body.portal-app .navigation a:hover{background:#262626;color:#fff;border-color:#303030}body.portal-app .navigation a[aria-current=page]{background:#f6f6f6;color:#070707;border-color:#f6f6f6;box-shadow:inset 3px 0 #0c6289}body.portal-app .rp-nav-icon{color:#b7c5ce}body.portal-app .navigation a[aria-current=page] .rp-nav-icon{color:#0b5b7e}body.portal-app .rp-nav-bottom{border-color:#373737}body.portal-app .rp-account{color:#fff}body.portal-app .rp-account b{color:#fff}body.portal-app .rp-account-avatar{background:#fff;color:#111;border-radius:4px}body.portal-app .logout button,body.portal-app .rp-install-trigger{background:transparent;color:#dedede;border:1px solid #555;border-radius:4px}body.portal-app .logout button:hover{background:#272727}body.portal-app .topbar,body.portal-app .topbar-in,body.portal-app .navigation{scrollbar-width:none}body.portal-app .navigation::-webkit-scrollbar,body.portal-app .topbar::-webkit-scrollbar{display:none}
/* Clear compact editorial surfaces. 1px borders, no generic shadows. */
body.portal-app .card,body.portal-app .auth,body.portal-app .member,body.portal-app .rp-race-group,body.portal-app .rp-product,body.portal-app .rp-split-card,body.portal-app .rp-podium-card,body.portal-app .cup-card,body.portal-app .result-card,body.portal-guest .auth{background:#fff;border:1px solid rgba(0,0,0,.13);border-radius:5px;box-shadow:none;color:#111}body.portal-app .card:hover{border-color:#777}body.portal-app .card h2{font-size:clamp(1.25rem,2vw,1.6rem);font-weight:750}body.portal-app .rp-metric,body.portal-app .stat,body.portal-app .radio-pill,body.portal-app .relay-section,body.portal-app .price-tag,body.portal-app .rp-live-price,body.portal-app .rp-chip-mini,body.portal-app .rp-payment-metrics>div{background:#f8f9fa;border:1px solid rgba(0,0,0,.12);border-radius:5px;color:#101010;box-shadow:none}body.portal-app .rp-metric{border-top:1px solid #d9d9d9;padding:15px 20px}body.portal-app .rp-metric:first-child,body.portal-app .rp-metric-paid,body.portal-app .rp-metric-results{border-top:1px solid #d9d9d9}body.portal-app .rp-metric small,body.portal-app .stat small,body.portal-app .result-card small,body.portal-app .rp-payment-metrics small{color:#666;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.69rem;letter-spacing:.06em;text-transform:uppercase}body.portal-app .rp-metric strong,body.portal-app .rp-metric-paid strong,body.portal-app .rp-metric-results strong,body.portal-app .stat strong,body.portal-app .result-card strong,body.portal-app .rp-payment-metrics strong{font-family:Inter,Arial,sans-serif;color:#0a0a0a;font-weight:800;letter-spacing:-.055em}body.portal-app .rp-dashboard-row,body.portal-app .rp-race-header,body.portal-app .rp-variant,body.portal-app .rp-podium-card li,body.portal-app .rp-published-race{border-color:#dedede}body.portal-app .rp-published-race{color:#121212}body.portal-app .rp-published-race small{color:#666}body.portal-app .rp-list-icon,body.portal-app .rp-race-emblem{background:#eff2f4;color:#0c5477;border-radius:4px}body.portal-app .rp-race-group{margin:16px 0;padding:22px}body.portal-app .rp-variant h4{color:#0b0b0b}body.portal-app .rp-variant-price,body.portal-app .rp-price-regular{color:#0c0c0c}body.portal-app .rp-price-stack strong,body.portal-app .rp-live-price strong{color:#0b5578}body.portal-app .rp-price-saving{color:#0a577a}body.portal-app .rp-price-stack del{color:#737373}body.portal-app .rp-chip-mini strong{color:#111}body.portal-app .rp-chip-mini small{color:#626262}body.portal-app .rp-chip-mini-active .rp-chip-mini-dot{background:#0b5779;border-color:#0b5779;box-shadow:none}
/* Actions and fields: black primary, ocean used sparingly. */
body.portal-app .btn,body.portal-guest .btn{border-radius:4px;font-weight:750;transition:background .55s cubic-bezier(.16,1,.3,1),color .55s cubic-bezier(.16,1,.3,1),border-color .55s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1);box-shadow:none}body.portal-app .btn.primary,body.portal-guest .btn.primary{background:#0a0a0a;color:#fff;border-color:#0a0a0a;box-shadow:none}body.portal-app .btn.primary:hover,body.portal-guest .btn.primary:hover{background:#0a5579;color:#fff;border-color:#0a5579}body.portal-app .btn.secondary,body.portal-app .btn.subtle,body.portal-guest .btn.secondary{background:white;color:#111;border:1px solid #bcbcbc}body.portal-app .btn.secondary:hover,body.portal-app .btn.subtle:hover{background:#0a0a0a;color:#fff;border-color:#0a0a0a}body.portal-app a:not(.btn):not(.brand):not(.navigation a):not(.rp-bottom-tab),body.portal-guest a:not(.btn):not(.brand){color:#0b5578}body.portal-app a:hover{color:#0b5578}body.portal-app input,body.portal-app select,body.portal-app textarea,body.portal-guest input,body.portal-guest select,body.portal-guest textarea{background:#fff!important;color:#111!important;border:1px solid #bbb!important;border-radius:4px;box-shadow:none!important;color-scheme:light}body.portal-app input::placeholder,body.portal-app textarea::placeholder,body.portal-guest input::placeholder{color:#777}body.portal-app label,body.portal-guest label{color:#333}body.portal-app a:focus-visible,body.portal-app button:focus-visible,body.portal-app summary:focus-visible,body.portal-app input:focus-visible,body.portal-guest a:focus-visible,body.portal-guest button:focus-visible{outline:2px solid #0b6086;outline-offset:3px}
/* Tables and results */
body.portal-app .table-wrap,body.portal-app .rp-result-scroll{background:#fff;border-color:#d8d8d8;border-radius:5px}body.portal-app table{color:#202020}body.portal-app th,body.portal-app .rp-result-scroll thead th{background:#f4f4f4;color:#525252;border-color:#dedede;font-family:ui-monospace,Consolas,monospace;letter-spacing:.06em}body.portal-app td{background:transparent;color:#222;border-color:#e3e3e3}body.portal-app .rp-results-table tbody tr:nth-child(even):not(.my-result){background:#fafafa}body.portal-app .rp-results-table tbody tr.my-result{background:#e9f1f5}body.portal-app .rp-results-table tbody tr:hover{box-shadow:inset 0 0 0 9999px rgba(10,85,121,.055)}body.portal-app .rp-scroll-top{background:#eee}body.portal-app .rp-podium-card li small{color:#666}body.portal-app .rp-medal{background:#ebebeb;color:#1a1a1a;border-radius:4px}body.portal-app .rp-extra-fields summary{background:#f3f5f6;color:#222}body.portal-app .rp-year-title small,body.portal-app .rp-year-count,body.portal-app .rp-year-hint{color:#666}
/* Segments / season tabs */
body.portal-app .rp-segment,body.portal-app .rp-catalog-switch{background:#f3f3f3;border:1px solid #dedede;border-radius:5px;box-shadow:none}body.portal-app .rp-segment button,body.portal-app .rp-catalog-switch button{color:#363636;border-radius:4px}body.portal-app .rp-segment button.rp-seg-active,body.portal-app .rp-catalog-switch button.rp-seg-active{color:#fff;background:#0a0a0a;box-shadow:none}body.portal-app .rp-year-tab{background:#fff;color:#242424;border:1px solid #d4d4d4;border-radius:4px}body.portal-app .rp-year-tab[aria-selected=true]{background:#0a0a0a;color:#fff;border-color:#0a0a0a}body.portal-app .rp-year-tab span{color:inherit}body.portal-app .rp-year-tabs{scrollbar-width:none}body.portal-app .rp-cup-banner{background:linear-gradient(120deg,#080808 48%,#183d55);border:1px solid #121212;border-radius:5px;color:#fff}body.portal-app .rp-cup-banner h2,body.portal-app .rp-cup-banner h3,body.portal-app .rp-cup-banner h4,body.portal-app .rp-cup-banner strong{color:#fff}body.portal-app .rp-cup-banner p,body.portal-app .rp-cup-banner small{color:#e0e0e0}body.portal-app .rp-cup-icon{background:rgba(255,255,255,.12);border-radius:4px;color:#fff}body.portal-app .rp-race-count,body.portal-app .rp-event-meta{color:#777}
/* Status semantic stays readable without loud neon. */
body.portal-app .badge.paid{background:#e4f0f5;color:#084e71;border:1px solid #bdd8e4}body.portal-app .badge.unpaid{background:#f0f0f0;color:#222;border:1px solid #c3c3c3}body.portal-app .chip{background:#ebf1f4;color:#0a5274}body.portal-app .rp-chip-checkout-note{background:#f4f8fa;color:#111;border-color:#ccdae0;border-radius:5px}body.portal-app .rp-chip-checkout-note>span,body.portal-app .rp-chip-checkout-note strong{color:#0a567a}body.portal-app .rp-chip-checkout-note small,body.portal-app .rp-chip-checkout-note del{color:#666}body.portal-app .notice{background:#f7f7f7;color:#333;border:1px solid #c6c6c6;border-radius:4px}body.portal-app .notice.success{background:#edf4f7;color:#0a496a;border-color:#b4d2df}
/* Login / dialogs */
body.portal-guest .topbar{background:#fff;border-bottom:1px solid #dedede}body.portal-guest .brand{color:#0a0a0a}body.portal-guest .fuga-portal-highlight{color:#0b5779}body.portal-guest .auth{margin-top:clamp(40px,8vh,100px);padding:clamp(24px,4vw,44px)}body.portal-guest .page-head h1{color:#0a0a0a;font-size:clamp(2rem,4vw,3.1rem);letter-spacing:-.07em}body.portal-app .rp-install-dialog{background:white;color:#111;border-radius:5px;border-color:#ddd}body.portal-app .rp-install-dialog h2{color:#111}
/* Optional editorial motion; no content is hidden until the observer exists. */
.rp-ed-ready [data-rp-reveal]{opacity:0;transform:translateY(22px)}.rp-ed-ready [data-rp-reveal].rp-ed-visible{opacity:1;transform:translateY(0);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}.ft-editorial-cursor{position:fixed;pointer-events:none;z-index:9999;width:32px;height:32px;left:0;top:0;border:1px solid #fff;border-radius:50%;background:#fff;mix-blend-mode:difference;opacity:0;transition:width .55s cubic-bezier(.16,1,.3,1),height .55s cubic-bezier(.16,1,.3,1),opacity .2s;transform:translate3d(-100px,-100px,0)}.ft-editorial-cursor.is-hovering{width:80px;height:80px}@media(hover:hover) and (pointer:fine){.rp-ed-cursor-ready,.rp-ed-cursor-ready a,.rp-ed-cursor-ready button,.rp-ed-cursor-ready summary{cursor:none}}
/* Mobile: preserve fixed tab dock and accessible modal navigation. */
@media(max-width:850px){body.portal-app .topbar{background:#0a0a0a;border-color:#2e2e2e}body.portal-app .brand{color:#fff}body.portal-app .rp-bottom-tabs{background:rgba(9,9,9,.96);border-top:1px solid #444;box-shadow:none}body.portal-app .rp-bottom-tab{color:#c6c6c6;border-radius:4px}body.portal-app .rp-bottom-tab[aria-current=page],body.portal-app .rp-bottom-menu-trigger[aria-expanded=true]{color:#fff!important;background:#293640}body.portal-app .rp-bottom-tab[aria-current=page]::before{background:#6fa7c0}body.portal-app .rp-mobile-menu-dialog,body.portal-app .rp-mobile-menu-dialog .rp-mobile-sheet{background:#101010;color:#fff}body.portal-app .rp-mobile-menu-dialog h2,body.portal-app .rp-mobile-menu-dialog h3,body.portal-app .rp-mobile-menu-dialog strong{color:#fff}body.portal-app .rp-mobile-menu-account,body.portal-app .rp-mobile-menu-grid .rp-mobile-menu-tile,body.portal-app .rp-mobile-menu-extra a{background:#1e1e1e;border:1px solid #343434;color:#f6f6f6!important}body.portal-app .rp-mobile-menu-grid .rp-mobile-menu-tile[aria-current=page],body.portal-app .rp-mobile-menu-extra a[aria-current=page]{background:#25465b;color:#fff!important}body.portal-app .rp-mobile-menu-avatar{background:#e6e6e6;color:#111}body.portal-app .rp-mobile-sheet-eyebrow,body.portal-app .rp-mobile-menu-tile-icon,body.portal-app .rp-mobile-menu-extra-icon{color:#a4c9d9}body.portal-app .rp-mobile-menu-close{color:#fff}body.portal-app .page{background:#fff}body.portal-app .page-head h1{font-size:clamp(1.9rem,8vw,3rem)}body.portal-app .rp-race-group{padding:16px}body.portal-app .rp-cup-banner h2{color:#fff}}
@media(max-width:600px){body.portal-app .rp-dashboard-metrics{gap:7px}body.portal-app .rp-metric{padding:14px 9px}body.portal-app .rp-metric strong{font-size:clamp(1.22rem,5.5vw,1.9rem)}body.portal-app .rp-metric small{font-size:.56rem}body.portal-app .card{padding:17px}body.portal-app .rp-cup-banner{padding:17px}}
@media(prefers-reduced-motion:reduce){.rp-ed-ready [data-rp-reveal]{opacity:1!important;transform:none!important}.ft-editorial-cursor{display:none!important}*,*::before,*::after{transition-duration:0s!important}}
/* The same year-by-year charts used on the public website. */
body.portal-app .fuga-stats-source{background:#fff;color:#111;border:1px solid #dedede;border-radius:5px}
body.portal-app .fuga-stats-source h3{color:#111}body.portal-app .fuga-stats-heading a{color:#0a5578}
body.portal-app .fuga-stat-summary>div{background:#f7f7f7;border:1px solid #dedede;border-radius:4px}
body.portal-app .fuga-stat-summary small{color:#666}body.portal-app .fuga-stat-summary strong{color:#111}
body.portal-app .fuga-year-card{background:#fff;border:1px solid #dedede;border-radius:4px}
body.portal-app .fuga-year-header strong{color:#111}body.portal-app .fuga-year-header span,body.portal-app .fuga-year-card label,body.portal-app .fuga-year-caption{color:#666}body.portal-app .fuga-year-card summary{color:#0a5578}
body.portal-app .fuga-year-card meter{accent-color:#0a5578}body.portal-app .fuga-year-card meter::-webkit-meter-optimum-value{background:#0a5578}
body.portal-app .rp-product-photo{filter:grayscale(1);transition:filter .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}body.portal-app .rp-product:hover .rp-product-photo{filter:grayscale(0);transform:scale(1.04)}
