:root{--bni-red: #e31937;--bni-red-dark: #b8122c;--bni-navy: #0b1b3f;--bni-navy-soft: #14275c;--bni-gold: #f0b429;--bg: #f7f8fa;--surface: #ffffff;--border: #e3e6ec;--border-strong: #ccd1db;--text: #12172b;--text-muted: #5d6478;--text-faint: #8b91a3;--green: #0e8a4f;--green-bg: #e8f6ee;--red-bg: #fdecef;--amber-bg: #fff6e5;--amber-text: #8a5a00;--radius: 8px;--radius-sm: 6px;--shadow: 0 1px 2px rgba(18, 23, 43, .04);--shadow-lg: 0 8px 28px rgba(18, 23, 43, .14)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0}button{font:inherit}a{color:inherit;text-decoration:none}.app-shell{display:flex;flex-direction:column;min-height:100%}.app-shell>.page,.app-shell>.login-shell{flex:1}.page{max-width:1280px;width:100%;margin:0 auto;padding:28px 20px 56px}.page-title{font-size:32px;font-weight:800;letter-spacing:-.02em;margin-bottom:22px}.grid-2{display:grid;grid-template-columns:1.6fr 1fr;gap:22px;align-items:start}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}.stack{display:flex;flex-direction:column;gap:22px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.nav{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:40}.nav-inner{max-width:1280px;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:28px;height:62px}.nav-brand{display:flex;align-items:center;gap:12px;font-size:17px;font-weight:800;letter-spacing:-.01em;white-space:nowrap}.nav-brand-text{padding-left:12px;border-left:1px solid var(--border)}@media (max-width: 700px){.nav-brand-text{display:none}}.nav-links{display:flex;align-items:center;gap:4px;overflow-x:auto;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-link{position:relative;padding:20px 12px;font-size:14.5px;color:var(--text-muted);white-space:nowrap;border-bottom:3px solid transparent;transition:color .12s ease}.nav-link:hover{color:var(--text)}.nav-link.active{color:var(--bni-red);font-weight:600;border-bottom-color:var(--bni-red)}.nav-action{display:flex;align-items:center;gap:7px;font-size:14.5px;color:var(--text-muted);background:none;border:0;cursor:pointer;padding:8px 4px}.nav-action:hover{color:var(--bni-red)}.hero{background:linear-gradient(115deg,var(--bni-navy) 0%,var(--bni-navy-soft) 100%);border-radius:var(--radius);padding:30px 32px;color:#fff;display:flex;align-items:center;gap:24px;flex-wrap:wrap}.hero-logo{flex-shrink:0;padding-right:22px;border-right:1px solid rgba(255,255,255,.18)}@media (max-width: 720px){.hero-logo{padding-right:0;border-right:0}}.hero-eyebrow{font-size:12px;font-weight:800;letter-spacing:.14em;color:var(--bni-red);margin-bottom:6px}.hero-title{font-size:40px;font-weight:800;letter-spacing:-.02em;line-height:1.05;margin-bottom:8px}.hero-sub{font-size:14.5px;color:var(--bni-gold)}@media (max-width: 720px){.hero-title{font-size:28px}}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}@media (max-width: 1080px){.stats{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.stats{grid-template-columns:1fr}}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}.stat-value{font-size:30px;font-weight:800;letter-spacing:-.02em;line-height:1.15}.stat-value.sm{font-size:17px;font-weight:700}.stat-label{margin-top:4px;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-head{padding:18px 22px;border-bottom:1px solid var(--border)}.card-title{font-size:13px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--amber-text)}.card-title.plain{color:var(--text);font-size:15px;letter-spacing:0;text-transform:none}.card-sub{margin-top:3px;font-size:13px;color:var(--text-muted)}.card-body{padding:20px 22px}.goal-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.goal-label{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.goal-numbers{font-size:15px}.goal-numbers strong{font-size:19px;color:var(--bni-navy)}.goal-track{height:12px;border-radius:999px;background:#e9ecf1;overflow:hidden}.goal-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--bni-red),#ff5c73);min-width:3px}.goal-fill.reached{background:linear-gradient(90deg,var(--green),#35c07d)}.goal-foot{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:8px;font-size:13px}.goal-pct{font-weight:800;color:var(--bni-red)}.goal-fill.reached~.goal-foot .goal-pct{color:var(--green)}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.score-table{width:100%;border-collapse:collapse;font-size:13px;min-width:900px}.score-table thead th{background:var(--bni-navy);color:#fff;font-weight:700;padding:9px 10px;text-align:center;white-space:nowrap}.score-table thead tr.group-band th{background:var(--bni-navy-soft);font-size:11px;letter-spacing:.09em;text-transform:uppercase;border-left:1px solid rgba(255,255,255,.14)}.score-table thead tr.group-band th:first-child{border-left:0}.score-table th.col-team,.score-table td.col-team{text-align:left;padding-left:16px;position:sticky;left:0;z-index:2}.score-table thead th.col-team{background:var(--bni-navy);z-index:3}.score-table thead tr.group-band th.col-team{background:var(--bni-navy-soft)}.score-table th.col-team:after,.score-table td.col-team:after{content:"";position:absolute;top:0;right:0;bottom:0;width:6px;transform:translate(100%);background:linear-gradient(90deg,rgba(0,0,0,.16),transparent);pointer-events:none}.score-table tbody td{padding:11px 10px;text-align:center;color:#fff;border-top:1px solid rgba(255,255,255,.16);white-space:nowrap}.score-table tbody tr{background:var(--bni-navy-soft)}.cell-points{font-weight:700;font-size:14px}.cell-count{font-size:11px;opacity:.85}.cell-total{font-weight:800;font-size:15px}.rank-badge{display:inline-flex;align-items:center;gap:5px;font-weight:700}.empty-table{padding:40px 20px;text-align:center;color:var(--text-muted);background:var(--surface)}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{text-align:left;padding:13px 16px;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table td.right,.data-table th.right{text-align:right}.row-inactive{opacity:.55}.team-pill{display:inline-block;padding:4px 11px;border-radius:999px;font-size:12.5px;font-weight:700;color:#fff;white-space:nowrap}.badge{display:inline-block;padding:3px 9px;border-radius:4px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.badge-admin{background:var(--bni-red);color:#fff}.badge-user,.badge-inactive{background:var(--border);color:var(--text-muted)}.badge-import{background:#e8eeff;color:#1d3fb8}.field{margin-bottom:16px}.field:last-child{margin-bottom:0}.label{display:block;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px}.label-hint{text-transform:none;letter-spacing:0;font-weight:400;color:var(--text-faint)}.input,.select,.textarea{width:100%;padding:10px 12px;font-size:15px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);transition:border-color .12s ease,box-shadow .12s ease}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--bni-red);box-shadow:0 0 0 3px #e319371f}.textarea{resize:vertical;min-height:78px}.input[type=color]{padding:3px;width:54px;height:40px;cursor:pointer}.input[type=file]{padding:8px 10px;background:var(--bg);cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;font-size:14.5px;font-weight:700;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--bni-red);color:#fff}.btn-primary:hover:not(:disabled){background:var(--bni-red-dark)}.btn-ghost{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn-ghost:hover:not(:disabled){border-color:var(--text-faint)}.btn-dark{background:#ffffff1f;border-color:#ffffff47;color:#fff}.btn-dark:hover:not(:disabled){background:#ffffff38}.btn-danger{background:var(--bni-red);color:#fff}.btn-danger:hover:not(:disabled){background:var(--bni-red-dark)}.btn-block{width:100%}.btn-sm{padding:7px 12px;font-size:13px}.icon-btn{background:none;border:0;padding:6px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);line-height:0}.icon-btn:hover{background:var(--bg);color:var(--text)}.icon-btn.danger:hover{background:var(--red-bg);color:var(--bni-red)}.alert{padding:12px 15px;border-radius:var(--radius-sm);font-size:14px;border:1px solid transparent}.alert-error{background:var(--red-bg);border-color:#f6c2cc;color:#97102a}.alert-success{background:var(--green-bg);border-color:#b9e2cb;color:#14663c}.alert-warn{background:var(--amber-bg);border-color:#ffe0a3;color:var(--amber-text)}.alert-info{background:#eef2fb;border-color:#cfd9f2;color:#24407f}.feed-item{display:flex;align-items:flex-start;gap:12px;padding:14px 22px;border-bottom:1px solid var(--border)}.feed-item:last-child{border-bottom:0}.feed-main{flex:1;min-width:0}.feed-title{font-size:14px;font-weight:600}.feed-meta{font-size:12.5px;color:var(--text-muted);margin-top:2px}.feed-note{font-size:12.5px;color:var(--text-faint);font-style:italic;margin-top:2px;overflow-wrap:anywhere}.empty{padding:40px 20px;text-align:center;color:var(--text-muted);font-size:14px}.point-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 32px}@media (max-width: 620px){.point-grid{grid-template-columns:1fr}}.point-row{display:flex;align-items:baseline;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.point-name{flex:1;font-size:14px}.point-value{font-weight:700;font-size:14px}.rules-list{margin:0;padding-left:20px;color:var(--text)}.rules-list li{padding:5px 0;font-size:14px}.login-shell{min-height:100%;display:flex;align-items:center;justify-content:center;padding:40px 16px;background:linear-gradient(150deg,var(--bni-navy) 0%,var(--bni-navy-soft) 100%)}.login-card{width:100%;max-width:400px;background:var(--surface);border-radius:12px;padding:32px;box-shadow:var(--shadow-lg)}.login-logo{display:flex;justify-content:center;margin-bottom:18px}.login-credit{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);text-align:center;font-size:12.5px;color:var(--text-faint)}.login-credit a{color:var(--bni-red);font-weight:700}.login-credit a:hover{text-decoration:underline}.login-brand{font-size:12px;font-weight:800;letter-spacing:.14em;color:var(--bni-red);margin-bottom:8px}.login-title{font-size:25px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px}.login-sub{font-size:14px;color:var(--text-muted);margin-bottom:24px}.login-back{display:block;text-align:center;margin-top:18px;font-size:13.5px;color:var(--text-muted)}.login-back:hover{color:var(--bni-red)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1b3f8c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal{width:100%;max-width:460px;background:var(--surface);border-radius:10px;box-shadow:var(--shadow-lg);overflow:hidden}.modal-head{padding:20px 22px 0}.modal-title{font-size:17px;font-weight:700}.modal-body{padding:14px 22px 20px;font-size:14px;color:var(--text-muted)}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:0 22px 20px}.logo-fallback{display:inline-flex;align-items:center;gap:6px;font-weight:800;letter-spacing:.02em;white-space:nowrap}.logo-fallback strong{font-size:1.15em;letter-spacing:-.01em}.logo-fallback span{font-size:.72em;font-weight:700;letter-spacing:.13em}.footer{border-top:1px solid var(--border);background:var(--surface);margin-top:auto}.footer-inner{max-width:1280px;margin:0 auto;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--text-muted)}.footer-credit a{color:var(--bni-red);font-weight:700}.footer-credit a:hover{text-decoration:underline}@media (max-width: 560px){.footer-inner{justify-content:center;text-align:center}}.loading{padding:60px 20px;text-align:center;color:var(--text-muted)}.muted{color:var(--text-muted)}.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:13px}.nowrap{white-space:nowrap}.chip-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;padding:3px 10px;font-size:12.5px}:root{--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .14s;--dur-mid: .26s;--dur-slow: .42s}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@keyframes slide-in-right{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@keyframes shimmer{0%{background-position:-300px 0}to{background-position:300px 0}}@keyframes soft-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.85}}@keyframes grow-width{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.page>*{animation:fade-up var(--dur-slow) var(--ease-out) both}.page>*:nth-child(1){animation-delay:0ms}.page>*:nth-child(2){animation-delay:45ms}.page>*:nth-child(3){animation-delay:90ms}.page>*:nth-child(4){animation-delay:135ms}.page>*:nth-child(5){animation-delay:.18s}.page>*:nth-child(n+6){animation-delay:.21s}.hero{animation:scale-in var(--dur-slow) var(--ease-out) both}.card,.stat{transition:transform var(--dur-mid) var(--ease-out),box-shadow var(--dur-mid) var(--ease-out),border-color var(--dur-mid) var(--ease-out)}.stat:hover{transform:translateY(-3px);box-shadow:0 10px 28px #12172b1a;border-color:var(--border-strong)}.btn{transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary:hover:not(:disabled),.btn-danger:hover:not(:disabled){box-shadow:0 6px 18px #e3193752}.btn:active:not(:disabled){transform:translateY(0) scale(.985);transition-duration:60ms}.icon-btn{transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.icon-btn:hover{transform:scale(1.12)}.icon-btn:active{transform:scale(.94)}.nav-link:after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:3px;background:var(--bni-red);transform:scaleX(0);transform-origin:center;transition:transform var(--dur-mid) var(--ease-out)}.nav-link:hover:after{transform:scaleX(.45)}.nav-link.active:after{transform:scaleX(1)}.nav-link,.nav-link.active{border-bottom-color:transparent}.score-table tbody tr{animation:fade-up var(--dur-mid) var(--ease-out) both;transition:filter var(--dur-fast) var(--ease-out)}.score-table tbody tr:nth-child(1){animation-delay:60ms}.score-table tbody tr:nth-child(2){animation-delay:.11s}.score-table tbody tr:nth-child(3){animation-delay:.16s}.score-table tbody tr:nth-child(4){animation-delay:.21s}.score-table tbody tr:nth-child(5){animation-delay:.26s}.score-table tbody tr:nth-child(n+6){animation-delay:.3s}.score-table tbody tr:hover{filter:brightness(1.09)}.data-table tbody tr{transition:background var(--dur-fast) var(--ease-out)}.data-table tbody tr:hover{background:var(--bg)}.feed-item{animation:slide-in-right var(--dur-mid) var(--ease-out) both;transition:background var(--dur-fast) var(--ease-out)}.feed-item:hover{background:var(--bg)}.crown{display:inline-block;animation:soft-pulse 2.6s ease-in-out infinite}.modal-backdrop{animation:fade-in var(--dur-fast) var(--ease-out) both;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{animation:scale-in var(--dur-mid) var(--ease-spring) both}.alert{animation:fade-up var(--dur-mid) var(--ease-out) both}.input,.select,.textarea{transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.skeleton{background:linear-gradient(90deg,#e9ecf1 25%,#f3f5f8,#e9ecf1 75%);background-size:600px 100%;animation:shimmer 1.4s linear infinite;border-radius:5px}.skeleton-text{height:12px;margin-bottom:8px}.skeleton-title{height:26px;width:45%;margin-bottom:14px}.goal-fill{transform-origin:left center;animation:grow-width 1s var(--ease-out) both;animation-delay:.25s}.btn:focus-visible,.icon-btn:focus-visible,.nav-link:focus-visible,.input:focus-visible,.select:focus-visible,.textarea:focus-visible,a:focus-visible{outline:2px solid var(--bni-red);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.btn:hover:not(:disabled),.stat:hover,.icon-btn:hover{transform:none}.skeleton{animation:none;background:#e9ecf1}}
