@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Montserrat:wght@700;800&display=swap');
:root{--ffib-red:#D11C1C;--red-dark:#a91515;--red-light:#fcebec;--black:#171717;--text:#374151;--muted:#6b7280;--gray:#f4f5f7;--border:#e5e7eb;--white:#fff;--shadow:0 16px 45px rgba(23,23,23,.08);--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,sans-serif;color:var(--black);background:#fff}a{color:inherit;text-decoration:none}img{max-width:100%}.container{width:min(1180px,calc(100% - 40px));margin:auto}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--ffib-red);background:var(--ffib-red);color:#fff;padding:12px 20px;border-radius:10px;font:700 14px Inter;cursor:pointer;transition:.2s}.button:hover{transform:translateY(-1px);filter:brightness(.94)}.button-ghost{background:#fff;color:var(--black);border-color:var(--border)}.button-small{padding:8px 13px;font-size:12px}.button-large{padding:15px 25px}.button-full{width:100%}.eyebrow{display:block;color:var(--ffib-red);font-size:11px;font-weight:800;letter-spacing:.18em;margin-bottom:10px}.site-header{height:84px;border-bottom:1px solid rgba(229,231,235,.8);background:rgba(255,255,255,.93);backdrop-filter:blur(16px);position:sticky;top:0;z-index:30}.header-inner{height:100%;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:14px}.brand img{width:52px;height:52px;object-fit:contain}.brand strong{display:block;font-family:Montserrat;font-size:15px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.site-header nav{display:flex;align-items:center;gap:24px;font-size:14px;font-weight:600}.hero{position:relative;overflow:hidden;background:linear-gradient(125deg,#fff 0%,#fafafa 58%,var(--red-light) 100%);border-bottom:1px solid var(--border)}.hero:after{content:"";position:absolute;width:500px;height:500px;border:90px solid rgba(209,28,28,.05);border-radius:50%;right:-200px;top:-200px}.hero-grid{min-height:480px;display:grid;grid-template-columns:1.25fr .75fr;gap:60px;align-items:center;position:relative;z-index:1}.hero h1{font:800 clamp(38px,5vw,68px)/1.02 Montserrat;margin:0 0 24px;letter-spacing:-.045em}.hero h1 em{color:var(--ffib-red);font-style:normal}.hero p{font-size:18px;line-height:1.7;color:var(--text);max-width:650px}.hero-actions{display:flex;align-items:center;gap:24px;margin-top:28px}.text-link{font-weight:700;font-size:14px}.hero-panel{background:#171717;color:#fff;border-radius:28px;padding:38px;box-shadow:var(--shadow);position:relative;overflow:hidden}.hero-panel:after{content:"";position:absolute;width:180px;height:180px;background:var(--ffib-red);border-radius:50%;right:-80px;bottom:-100px}.hero-stat{padding:18px 0;border-bottom:1px solid rgba(255,255,255,.12)}.hero-stat strong{display:block;font:800 38px Montserrat}.hero-stat span{color:#c8cbd0;font-size:13px}.hero-mark{font:800 44px Montserrat;color:rgba(255,255,255,.08);margin-top:22px}.filters-section{padding:55px 0 80px}.filters-card,.panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 28px rgba(23,23,23,.04)}.filters-card{padding:28px;margin-bottom:34px}.filters-title,.panel-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.filters-title h2,.panel h2{margin:0;font:800 23px Montserrat}.filter-toggle{display:none;border:0;background:var(--gray);padding:9px 12px;border-radius:8px}.filters-grid,.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field span{font-size:12px;font-weight:700;color:#4b5563}.field input,.field select,.field textarea{width:100%;border:1px solid var(--border);border-radius:9px;padding:11px 12px;background:#fff;font:14px Inter;color:var(--black);outline:none;transition:.2s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ffib-red);box-shadow:0 0 0 3px rgba(209,28,28,.1)}.field small{color:var(--muted);font-size:11px}.field-wide{grid-column:span 2}.filter-actions,.form-actions{display:flex;align-items:center;gap:12px;margin-top:20px}.result-count{margin-left:auto;color:var(--muted);font-size:13px}.cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}.conv-card{display:grid;grid-template-columns:105px 1fr;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff;transition:.25s}.conv-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#ddd}.date-block{background:#171717;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:245px}.date-block strong{font:800 38px Montserrat}.date-block span{font-weight:800;color:#ffb2b2}.date-block small{color:#9ca3af;margin-top:4px}.conv-card-body{padding:25px}.badges{display:flex;gap:7px;flex-wrap:wrap}.badge{display:inline-flex;background:var(--gray);color:#4b5563;border-radius:999px;padding:6px 9px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.badge-red{background:var(--red-light);color:var(--ffib-red)}.badge-white{background:rgba(255,255,255,.13);color:#fff}.conv-card h3{font:800 20px/1.3 Montserrat;margin:16px 0 7px}.event-type{color:var(--ffib-red);font-weight:700;font-size:13px}.meta{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:12px;margin:16px 0}.card-link{display:flex;justify-content:space-between;padding-top:16px;border-top:1px solid var(--border);font-weight:800;font-size:13px}.card-link span{color:var(--ffib-red)}.pagination{display:flex;justify-content:center;gap:8px;margin-top:36px}.pagination a{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:9px}.pagination a.active{background:var(--ffib-red);color:#fff;border-color:var(--ffib-red)}.empty-state{text-align:center;border:1px dashed #d1d5db;border-radius:var(--radius);padding:65px 20px;color:var(--muted)}.empty-state strong,.empty-state span{display:block}.empty-state strong{color:var(--black);font-size:18px;margin-bottom:8px}.empty-state.compact{padding:35px 15px}.detail-hero{background:#171717;color:#fff;padding:42px 0 54px;position:relative;overflow:hidden}.detail-hero:after{content:"FFIB";position:absolute;right:5%;bottom:-30px;font:800 140px Montserrat;color:rgba(255,255,255,.035)}.back-link{display:inline-block;color:#cfd1d5;font-size:13px;margin-bottom:30px}.detail-head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;position:relative;z-index:1}.detail-head h1{font:800 clamp(30px,5vw,52px)/1.08 Montserrat;margin:18px 0 10px;max-width:780px}.detail-head p{color:#ffb1b1;font-weight:700}.detail-date{text-align:right;border-left:3px solid var(--ffib-red);padding-left:24px}.detail-date strong,.detail-date span{display:block}.detail-date strong{font:800 24px Montserrat}.detail-date span{color:#c8cbd0;margin-top:6px}.detail-layout{display:grid;grid-template-columns:1fr 310px;gap:28px;padding:42px 0 80px}.detail-main,.action-card,.privacy-note,.published-note{border:1px solid var(--border);border-radius:var(--radius);background:#fff}.detail-main{padding:34px}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;padding-bottom:28px;border-bottom:1px solid var(--border)}.info-grid div{background:var(--gray);padding:17px;border-radius:12px}.info-grid small,.info-grid strong{display:block}.info-grid small{font-size:9px;letter-spacing:.12em;color:var(--muted);font-weight:800;margin-bottom:7px}.description{line-height:1.7;color:var(--text)}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:36px 0 18px}.section-heading h2{font:800 24px Montserrat;margin:0}.count-pill{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:var(--ffib-red);color:#fff;font-weight:800}.players-table{border:1px solid var(--border);border-radius:12px;overflow:hidden}.players-row{display:grid;grid-template-columns:45px 1.15fr .85fr;gap:14px;padding:13px 15px;border-bottom:1px solid var(--border);align-items:center;font-size:13px}.players-row:last-child{border:0}.players-header{background:#171717;color:#fff;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.detail-aside{display:flex;flex-direction:column;gap:16px}.action-card,.privacy-note,.published-note{padding:22px}.action-card h3{margin-top:0;font:800 18px Montserrat}.action-card .button{margin-top:9px}.privacy-note{background:var(--red-light);border-color:#ffd3d3}.privacy-note p{font-size:12px;line-height:1.6;margin-bottom:0;color:#653838}.published-note{font-size:11px;color:var(--muted)}.site-footer{background:#171717;color:#aeb2b9;padding:28px 0;font-size:12px}.footer-inner{display:flex;justify-content:space-between}.alert{padding:14px 16px;border-radius:10px;margin:18px 0;font-size:13px;border:1px solid}.alert-success{background:#ecfdf3;border-color:#a7f3d0;color:#166534}.alert-warning{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.alert-danger{background:#fef2f2;border-color:#fecaca;color:#991b1b}.admin-body{background:#f5f6f8;min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:255px;background:#171717;color:#fff;padding:25px 18px;display:flex;flex-direction:column;z-index:50}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 8px 28px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:10px;padding:4px}.sidebar-brand span{font:800 14px Montserrat}.sidebar-brand small{font:500 10px Inter;color:#9ca3af}.sidebar nav{display:flex;flex-direction:column;gap:6px;margin-top:24px}.sidebar nav a{padding:12px 13px;border-radius:9px;color:#d1d5db;font-size:13px;font-weight:600}.sidebar nav a:hover{background:rgba(255,255,255,.07);color:#fff}.sidebar nav .nav-primary{background:var(--ffib-red);color:#fff;margin-bottom:7px}.sidebar-user{margin-top:auto;padding:16px 10px 0;border-top:1px solid rgba(255,255,255,.1)}.sidebar-user strong,.sidebar-user small{display:block}.sidebar-user small{color:#9ca3af;margin:4px 0 12px}.sidebar-user button{border:0;background:none;color:#fca5a5;padding:0;cursor:pointer}.admin-main{margin-left:255px;min-height:100vh}.admin-top{height:105px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 38px;gap:20px}.admin-top h1{font:800 25px Montserrat;margin:0}.admin-top p{color:var(--muted);font-size:12px;margin:4px 0 0}.admin-top .button{margin-left:auto}.menu-toggle{display:none}.admin-content{padding:32px 38px 60px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:25px}.kpi{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:23px}.kpi span,.kpi small{display:block}.kpi span{font-size:12px;font-weight:700;color:var(--muted)}.kpi strong{display:block;font:800 35px Montserrat;margin:12px 0 7px}.kpi small{font-size:11px;color:#9ca3af}.admin-grid{display:grid;grid-template-columns:1fr 330px;gap:22px}.panel{padding:26px}.panel-head a{font-size:12px;font-weight:700;color:var(--ffib-red)}.admin-list a{display:grid;grid-template-columns:12px 1fr 20px;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--border)}.admin-list a:last-child{border:0}.admin-list strong,.admin-list small{display:block}.admin-list strong{font-size:13px}.admin-list small{font-size:11px;color:var(--muted);margin-top:4px}.status-dot{width:8px;height:8px;border-radius:50%;background:#9ca3af}.status-publicada{background:#16a34a!important}.status-borrador{background:#f59e0b!important}.status-finalizada,.status-archivada{background:#6b7280!important}.quick-panel{background:linear-gradient(145deg,#171717,#2b2b2b);color:#fff}.quick-panel p{color:#c5c8cc;line-height:1.6}.admin-filters{display:grid;grid-template-columns:1.6fr repeat(3,1fr) auto;gap:12px;align-items:end;margin-bottom:25px}.table-responsive{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse}.admin-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:12px;border-bottom:2px solid var(--border)}.admin-table td{padding:14px 12px;border-bottom:1px solid var(--border);font-size:13px}.admin-table td strong,.admin-table td small{display:block}.admin-table td small{color:var(--muted);font-size:10px;margin-top:4px}.status{display:inline-flex;padding:6px 9px;border-radius:999px;font-size:10px;font-weight:800;background:var(--gray);text-transform:uppercase}.status-publicada{background:#dcfce7;color:#166534}.status-borrador{background:#fef3c7;color:#92400e}.status-finalizada,.status-archivada{background:#e5e7eb;color:#374151}.import-layout,.preview-grid,.settings-grid,.edit-layout{display:grid;grid-template-columns:1fr 350px;gap:22px}.upload-panel{padding:40px}.upload-panel>p{color:var(--muted);line-height:1.6}.upload-form{margin-top:25px}.dropzone{border:2px dashed #d1d5db;border-radius:16px;min-height:270px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;background:#fafafa;transition:.2s}.dropzone:hover{border-color:var(--ffib-red);background:var(--red-light)}.dropzone input{display:none}.drop-icon{width:54px;height:54px;border-radius:50%;background:var(--ffib-red);color:#fff;display:grid;place-items:center;font-size:26px;margin-bottom:18px}.dropzone strong{font:800 18px Montserrat}.dropzone small{color:var(--muted);margin:7px 0 18px}.dropzone em{font-style:normal;font-size:11px;color:var(--ffib-red);font-weight:700}.upload-form .button{margin-top:18px;width:100%}.check-list{padding:0;list-style:none}.check-list li{padding:10px 0 10px 25px;border-bottom:1px solid var(--border);font-size:13px;position:relative}.check-list li:before{content:'✓';position:absolute;left:0;color:var(--ffib-red);font-weight:800}.privacy-box{background:var(--red-light);border-radius:12px;padding:16px;margin-top:20px}.privacy-box p{font-size:11px;line-height:1.6;color:#6f3d3d}.confidence-panel h3{margin-top:0}.confidence-row{display:grid;grid-template-columns:90px 1fr 38px;gap:8px;align-items:center;margin:13px 0;font-size:11px}.confidence-row>div{height:6px;border-radius:5px;background:#eee;overflow:hidden}.confidence-row i{display:block;height:100%;background:var(--ffib-red)}.confidence-row strong{text-align:right}.confidence-panel>small{display:block;color:var(--muted);margin-top:20px}.confidence{font-size:9px;padding:3px 5px;border-radius:5px}.c-high{background:#dcfce7;color:#166534}.c-low{background:#fee2e2;color:#991b1b}.players-editor{margin-top:22px}.privacy-tag{font-size:10px;background:var(--red-light);color:var(--ffib-red);padding:7px 10px;border-radius:8px}.editable-table input{min-width:130px;border:1px solid var(--border);border-radius:7px;padding:8px;font:12px Inter}.editable-table td:nth-child(2) input{min-width:250px}.editable-table td:nth-child(3) input{min-width:280px}.sticky-actions{position:sticky;bottom:0;background:rgba(245,246,248,.92);backdrop-filter:blur(10px);padding:16px 0;display:flex;justify-content:flex-end;gap:10px;z-index:20}.summary-list div{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border);font-size:12px}.danger-zone{margin-top:20px;text-align:right}.danger-button{border:0;background:none;color:#b91c1c;font-weight:700;cursor:pointer}.settings-grid .current-logo{display:flex;align-items:center;gap:15px;background:var(--gray);padding:14px;border-radius:12px}.current-logo img{width:70px;height:70px;object-fit:contain}.auth-body,.install-body{min-height:100vh;background:linear-gradient(145deg,#171717 0%,#262626 55%,#531111 100%);display:grid;place-items:center;padding:30px}.auth-shell{width:min(440px,100%)}.auth-logo{display:block;text-align:center;margin-bottom:20px}.auth-logo img{width:80px;height:80px;object-fit:contain;background:#fff;padding:8px;border-radius:16px}.auth-card,.install-card{background:#fff;border-radius:24px;padding:38px;box-shadow:0 30px 80px rgba(0,0,0,.25)}.auth-card h1{font:800 30px Montserrat;margin:0 0 10px}.auth-card>p{color:var(--muted);line-height:1.6}.stack-form{display:flex;flex-direction:column;gap:17px}.back-auth{display:block;text-align:center;color:var(--muted);font-size:12px;margin-top:20px}.install-shell{width:min(900px,100%)}.install-head{display:flex;align-items:center;gap:20px;margin-bottom:25px}.logo-placeholder{width:74px;height:74px;display:grid;place-items:center;background:var(--ffib-red);color:#fff;border-radius:16px;font:800 21px Montserrat}.install-head h1{font:800 28px Montserrat;margin:0}.install-head p{color:var(--muted);margin:6px 0}.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:25px}.check-row{display:flex;align-items:center;gap:9px;padding:9px 12px;border-radius:8px;background:var(--gray);font-size:11px}.check-row.ok span{color:#16a34a}.check-row.fail{background:#fee2e2;color:#991b1b}.form-section{border-top:1px solid var(--border);padding-top:20px}.form-section h2{font:800 17px Montserrat}.error-page{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.error-page>span{font:800 90px Montserrat;color:var(--red-light)}.error-page h1{font:800 30px Montserrat;margin:0}.error-page p{color:var(--muted)}
@media(max-width:1000px){.hero-grid{grid-template-columns:1fr;padding:65px 0}.hero-panel{display:grid;grid-template-columns:1fr 1fr}.hero-mark{display:none}.filters-grid,.form-grid{grid-template-columns:repeat(2,1fr)}.cards-grid{grid-template-columns:1fr}.detail-layout,.admin-grid,.import-layout,.preview-grid,.settings-grid,.edit-layout{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)}.admin-filters{grid-template-columns:repeat(2,1fr)}.admin-filters .button{align-self:end}.detail-aside{display:grid;grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.container{width:min(100% - 24px,1180px)}.site-header{height:72px}.brand img{width:42px;height:42px}.brand small{display:none}.site-header nav>a:first-child{display:none}.hero-grid{min-height:auto;padding:55px 0}.hero h1{font-size:38px}.hero p{font-size:15px}.hero-actions{align-items:flex-start;flex-direction:column}.hero-panel{padding:24px}.filters-section{padding-top:25px}.filters-card{padding:18px}.filter-toggle{display:block}.filters-grid{display:none;grid-template-columns:1fr}.filters-grid.open{display:grid}.field-wide{grid-column:span 1}.filter-actions{flex-wrap:wrap}.result-count{width:100%;margin-left:0}.conv-card{grid-template-columns:76px 1fr}.date-block{min-height:270px}.conv-card-body{padding:20px}.detail-head{align-items:flex-start;flex-direction:column}.detail-date{text-align:left}.detail-layout{padding-top:20px}.detail-main{padding:20px}.info-grid{grid-template-columns:1fr}.players-row{grid-template-columns:32px 1fr}.players-row span:last-child{grid-column:2;color:var(--muted);font-size:11px}.players-header span:last-child{display:none}.detail-aside{grid-template-columns:1fr}.footer-inner{flex-direction:column;gap:8px}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar-open .sidebar{transform:translateX(0)}.admin-main{margin-left:0}.admin-top{height:auto;padding:18px;position:sticky;top:0;z-index:40}.admin-top h1{font-size:19px}.admin-top p{display:none}.admin-top .button{display:none}.menu-toggle{display:block;border:0;background:var(--gray);font-size:20px;padding:8px 10px;border-radius:8px}.admin-content{padding:18px}.kpi-grid{grid-template-columns:1fr 1fr;gap:10px}.kpi{padding:16px}.kpi strong{font-size:27px}.admin-filters{grid-template-columns:1fr}.panel{padding:18px}.upload-panel{padding:22px}.dropzone{min-height:220px}.preview-grid,.settings-grid,.edit-layout{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.players-editor{padding:12px}.sticky-actions{flex-wrap:wrap}.auth-card,.install-card{padding:24px}.checks{grid-template-columns:1fr}.install-head{align-items:flex-start}.install-head h1{font-size:21px}}
@media print{.site-header,.site-footer,.detail-aside,.back-link{display:none!important}.detail-hero{background:#fff;color:#000;padding:15px 0;border-bottom:3px solid var(--ffib-red)}.detail-hero:after{display:none}.detail-layout{display:block;padding:15px 0}.detail-main{border:0;padding:0}.badge{border:1px solid #ccc;color:#000;background:#fff}.players-row{page-break-inside:avoid}body{font-size:11px}}
.check-option{display:flex;align-items:flex-start;gap:11px;border:1px solid var(--border);border-radius:11px;padding:14px;cursor:pointer}.check-option input{margin-top:3px;accent-color:var(--ffib-red)}.check-option strong,.check-option small{display:block}.check-option small{color:var(--muted);font-size:11px;margin-top:4px;line-height:1.5}

/* v1.4 · Importación completa y arrastrar/soltar */
.dropzone.is-dragging{border-color:var(--ffib-red);background:var(--red-light);transform:scale(1.01);box-shadow:0 0 0 5px rgba(209,28,28,.08)}
.dropzone.has-file{border-style:solid;border-color:#16a34a;background:#f0fdf4}
.dropzone.has-file .drop-icon{background:#16a34a}
.dropzone.has-error{border-color:#dc2626;background:#fef2f2}
.selected-file{display:flex;align-items:center;gap:14px;border:1px solid #bbf7d0;background:#f0fdf4;border-radius:12px;padding:14px 16px;margin-top:14px}
.selected-file[hidden]{display:none}
.selected-file-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:10px;background:#15803d;color:#fff;font-size:10px;font-weight:800;letter-spacing:.06em}
.selected-file>div{min-width:0;flex:1}.selected-file strong,.selected-file small{display:block}.selected-file strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.selected-file small{margin-top:4px;color:var(--muted);font-size:11px}.remove-file{border:0;background:transparent;color:#991b1b;font-size:25px;cursor:pointer;line-height:1}.upload-error{margin:12px 0 0;padding:11px 13px;border-radius:9px;background:#fee2e2;color:#991b1b;font-size:12px;font-weight:700}.upload-error[hidden]{display:none}.upload-limits{margin-top:20px;border-top:1px solid var(--border);padding-top:18px}.upload-limits strong,.upload-limits span,.upload-limits small{display:block}.upload-limits strong{font-size:12px}.upload-limits span{font-size:12px;color:var(--text);margin-top:6px}.upload-limits small{color:var(--muted);margin-top:4px}.button:disabled{cursor:wait;opacity:.75;transform:none}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.preview-form{display:block}.alert strong{font-weight:800}.alert-warning{background:#fffbeb;color:#92400e;border:1px solid #fde68a}.alert-danger{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.confidence-legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px;padding-top:16px;border-top:1px solid var(--border);font-size:10px;color:var(--muted)}.confidence-legend span{display:flex;align-items:center;gap:5px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot-high{background:#16a34a}.dot-medium{background:#f59e0b}.dot-low{background:#dc2626}.icon-button{width:32px;height:32px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font-size:19px;line-height:1}.danger-text{color:#b91c1c}.add-player-button{margin-top:16px}.inner-player-panel{border-top:1px solid var(--border);padding-top:24px}.compact-player-table td:nth-child(2) input{min-width:260px}.danger-zone-panel{margin-top:20px}.danger-zone-panel p{font-size:12px;line-height:1.6;color:var(--muted)}.check-option{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:10px;background:var(--gray)}.check-option input{margin-top:3px}.check-option strong,.check-option small{display:block}.check-option small{color:var(--muted);margin-top:4px;line-height:1.4}
@media(max-width:760px){.selected-file{align-items:flex-start}.preview-form .sticky-actions .button{flex:1;min-width:145px}.confidence-panel{order:-1}.privacy-tag{white-space:nowrap}.players-editor .panel-head{align-items:flex-start;flex-direction:column}.editable-table{min-width:980px}.compact-player-table{min-width:720px}}

/* FFIB Convocatorias v1.5 — cabecera deportiva y portada pública */
.hero-sports{
    min-height:500px;
    background-color:#fff;
    background-image:var(--hero-image);
    background-repeat:no-repeat;
    background-position:center;
    background-size:cover;
    border-bottom:1px solid var(--border);
    isolation:isolate;
}
.hero-sports:before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(90deg,rgba(255,255,255,.98) 0%,rgba(255,255,255,.96) 30%,rgba(255,255,255,.60) 46%,rgba(255,255,255,0) 67%);
    pointer-events:none;
}
.hero-sports:after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    height:5px;
    background:linear-gradient(90deg,var(--ffib-red),#ef4444,var(--ffib-red));
    opacity:.9;
}
.hero-sports-inner{min-height:500px;display:flex;align-items:center;position:relative;z-index:2}
.hero-sports-copy{width:min(610px,52%);padding:56px 0}
.hero-sports .eyebrow{font-size:12px;margin-bottom:15px}
.hero-sports h1{font:800 clamp(40px,4.4vw,66px)/1.03 Montserrat;margin:0;letter-spacing:-.045em;color:var(--black)}
.hero-sports h1 em{color:var(--ffib-red);font-style:normal}
.hero-kicker{font-size:20px!important;font-weight:700;color:#5b6472!important;margin:22px 0 0!important}
.hero-description{font-size:16px!important;line-height:1.65!important;color:var(--text)!important;max-width:560px!important;margin:10px 0 0!important}
.hero-sports .hero-actions{margin-top:25px;gap:12px}
.hero-summary{display:flex;gap:24px;margin-top:25px;color:var(--muted);font-size:12px}
.hero-summary span{display:flex;align-items:baseline;gap:6px}
.hero-summary strong{font:800 22px Montserrat;color:var(--black)}
.convocatorias-section{padding:38px 0 82px;scroll-margin-top:100px}
.section-heading-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}
.section-heading{display:flex;align-items:center;gap:15px}
.section-heading h2{font:800 clamp(24px,3vw,32px) Montserrat;margin:0 0 5px;letter-spacing:-.025em}
.section-heading p{margin:0;color:var(--muted);font-size:13px}
.section-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:13px;background:var(--red-light);color:var(--ffib-red);font-size:22px;font-weight:900}
.public-filters{padding:20px 22px;margin-bottom:28px;box-shadow:0 8px 24px rgba(23,23,23,.035)}
.public-filters .filters-grid{margin-top:0}
.cards-grid-featured{gap:20px}
.cards-grid-featured .conv-card{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.cards-grid-featured .conv-card:hover{transform:translateY(-3px);box-shadow:0 16px 38px rgba(23,23,23,.09);border-color:rgba(209,28,28,.20)}
.cards-grid-featured .date-block{background:linear-gradient(180deg,#fff 0%,#fafafa 100%)}
.cards-grid-featured .date-block span{display:block;background:var(--ffib-red);color:#fff;margin:-1px -1px 10px;padding:9px 4px;border-radius:15px 0 0 0;font-size:11px;font-weight:800;text-transform:uppercase}
.cards-grid-featured .date-block strong{font-size:34px;line-height:1}
.cards-grid-featured .date-block small{margin-top:6px}
.cards-grid-featured .date-block em{margin-top:auto;color:var(--ffib-red);font-size:9px;font-style:normal;font-weight:800;letter-spacing:.04em}
.badge-status{background:#ecfdf3;color:#167a45;border-color:#bbf7d0}
.cards-grid-featured .meta b{color:var(--black);font-weight:600}
.cards-grid-featured .card-link{border-radius:9px;text-align:center;justify-content:center;background:var(--ffib-red);color:#fff;padding:11px 14px;margin-top:18px}
.cards-grid-featured .card-link:hover{filter:brightness(.94)}
@media(max-width:1000px){
    .hero-sports{background-position:62% center}
    .hero-sports:before{background:linear-gradient(90deg,rgba(255,255,255,.98) 0%,rgba(255,255,255,.94) 42%,rgba(255,255,255,.25) 72%,rgba(255,255,255,.05) 100%)}
    .hero-sports-copy{width:min(650px,68%)}
}
@media(max-width:760px){
    .hero-sports{min-height:560px;background-position:66% center;background-size:auto 100%}
    .hero-sports:before{background:linear-gradient(180deg,rgba(255,255,255,.96) 0%,rgba(255,255,255,.91) 58%,rgba(255,255,255,.62) 100%)}
    .hero-sports-inner{min-height:560px;align-items:flex-start}
    .hero-sports-copy{width:100%;padding:52px 0 34px}
    .hero-sports h1{font-size:39px}
    .hero-kicker{font-size:18px!important}
    .hero-sports .hero-actions{flex-direction:column;align-items:stretch;max-width:340px}
    .hero-summary{background:rgba(255,255,255,.84);backdrop-filter:blur(6px);padding:12px 14px;border-radius:12px;width:max-content;max-width:100%}
    .section-heading-row{align-items:flex-start}
    .section-heading p{display:none}
    .section-icon{width:42px;height:42px}
    .public-filters .filters-grid{display:none}
    .public-filters .filters-grid.open{display:grid}
}

/* v1.5.1: aviso cuando no existen convocatorias futuras */
.public-fallback-notice{display:flex;align-items:center;gap:10px;margin:0 0 18px}
.public-fallback-notice strong{white-space:nowrap}
.public-fallback-notice span{color:inherit;opacity:.9}
@media (max-width:720px){.public-fallback-notice{align-items:flex-start;flex-direction:column;gap:4px}.public-fallback-notice strong{white-space:normal}}

/* v1.5.2 · tarjetas equilibradas y botones alineados */
.cards-grid-featured{
    align-items:stretch;
    grid-auto-rows:1fr;
}
.cards-grid-featured .conv-card{
    height:100%;
    min-height:305px;
}
.cards-grid-featured .conv-card-body{
    min-width:0;
    height:100%;
    display:flex;
    flex-direction:column;
}
.cards-grid-featured .conv-card h3{
    min-height:2.6em;
}
.cards-grid-featured .meta{
    flex:1 1 auto;
}
.cards-grid-featured .card-link{
    flex:0 0 auto;
    min-height:42px;
    margin-top:auto;
    padding:11px 14px;
    align-items:center;
}
@media(max-width:760px){
    .cards-grid-featured .conv-card{min-height:0}
    .cards-grid-featured .conv-card h3{min-height:0}
}

/* v1.6 · estadísticas privadas de jugadores/as */
.stats-intro{display:flex;align-items:center;justify-content:space-between;gap:28px;margin-bottom:24px;background:linear-gradient(135deg,#fff 0%,#fff 70%,var(--red-light) 100%)}
.stats-intro h2{font:800 27px Montserrat;margin:0 0 9px}.stats-intro p{margin:0;max-width:760px;color:var(--muted);font-size:13px;line-height:1.65}
.stats-kpi-grid .kpi{position:relative;overflow:hidden}.stats-kpi-grid .kpi:after{content:"";position:absolute;width:70px;height:70px;border:14px solid rgba(209,28,28,.05);border-radius:50%;right:-24px;bottom:-24px}.stats-kpi-grid .kpi small{line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stats-filter-panel,.stats-ranking-panel,.player-history-panel{margin-top:22px}.stats-results-count{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:var(--gray);color:var(--muted);font-size:11px;font-weight:800}.stats-filters-grid{grid-template-columns:repeat(4,1fr)}
.table-wrap{width:100%;overflow-x:auto}.stats-table{min-width:1080px}.stats-table td{vertical-align:middle}.stats-table td:nth-child(2){min-width:240px}.stats-table td:nth-child(5){max-width:250px}.player-name-link:hover{color:var(--ffib-red)}.ranking-number{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--gray);font-weight:800;font-size:11px}.ranking-number.ranking-top{background:var(--ffib-red);color:#fff}.stats-count-cell{min-width:145px}.stats-count-cell>strong{font:800 22px Montserrat;color:var(--black)}.mini-progress{display:block;width:100px;height:5px;background:#eceff2;border-radius:999px;overflow:hidden;margin-top:7px}.mini-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--ffib-red),#ef4444);border-radius:999px}.table-clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35}.ambiguity-badge{display:inline-flex;margin-top:6px;padding:4px 7px;background:#fff7ed;color:#9a3412;border:1px solid #fed7aa;border-radius:999px;font-size:9px;font-weight:800}.privacy-stats-note{margin-top:18px;padding:14px 17px;border-radius:11px;background:var(--red-light);border:1px solid #ffd7d7;color:#6f3d3d;font-size:11px}.privacy-stats-note strong{color:var(--ffib-red)}
.admin-back-link{display:inline-block;margin-bottom:18px;color:var(--muted);font-size:12px;font-weight:700}.admin-back-link:hover{color:var(--ffib-red)}.player-profile-head{display:grid;grid-template-columns:76px 1fr auto;gap:20px;align-items:center;background:linear-gradient(135deg,#fff 0%,#fff 70%,var(--red-light) 100%)}.player-avatar{width:76px;height:76px;border-radius:20px;display:grid;place-items:center;background:#171717;color:#fff;font:800 31px Montserrat;border-bottom:5px solid var(--ffib-red)}.player-profile-copy h2{font:800 29px Montserrat;margin:0 0 7px}.player-profile-copy p{margin:0 0 13px;color:var(--muted);font-size:13px}.player-total-box{text-align:center;border-left:1px solid var(--border);padding-left:28px;min-width:150px}.player-total-box strong,.player-total-box span{display:block}.player-total-box strong{font:800 46px Montserrat;color:var(--ffib-red);line-height:1}.player-total-box span{margin-top:7px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.player-kpis{margin-top:22px}.kpi .kpi-date{font-size:24px}.stats-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:22px}.distribution-list{display:flex;flex-direction:column;gap:14px}.distribution-row{display:grid;grid-template-columns:minmax(100px,1.1fr) 1fr 30px;gap:12px;align-items:center;font-size:12px}.distribution-row>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.distribution-row>div{height:8px;background:#eef0f2;border-radius:999px;overflow:hidden}.distribution-row i{display:block;height:100%;background:linear-gradient(90deg,var(--ffib-red),#ef4444);border-radius:999px}.distribution-row strong{text-align:right}.stats-history-table{min-width:1000px}.stats-history-table .status-pill{display:inline-flex;padding:6px 8px;border-radius:999px;background:var(--gray);font-size:9px;font-weight:800;text-transform:uppercase}.stats-history-table .status-publicada{background:#dcfce7;color:#166534}.stats-history-table .status-borrador{background:#fef3c7;color:#92400e}.stats-history-table .status-finalizada,.stats-history-table .status-archivada{background:#e5e7eb;color:#374151}
@media(max-width:1100px){.stats-filters-grid{grid-template-columns:repeat(2,1fr)}.stats-detail-grid{grid-template-columns:1fr}.player-profile-head{grid-template-columns:66px 1fr}.player-total-box{grid-column:1/-1;border-left:0;border-top:1px solid var(--border);padding:18px 0 0;text-align:left}.player-total-box strong,.player-total-box span{display:inline-block}.player-total-box span{margin:0 0 0 8px}}
@media(max-width:760px){.stats-intro{align-items:flex-start;flex-direction:column}.stats-intro .button{width:100%}.stats-filters-grid{grid-template-columns:1fr}.stats-filters-grid .field-wide{grid-column:span 1}.player-profile-head{grid-template-columns:54px 1fr;gap:14px}.player-avatar{width:54px;height:54px;border-radius:14px;font-size:23px}.player-profile-copy h2{font-size:21px}.player-profile-copy p{font-size:11px}.distribution-row{grid-template-columns:90px 1fr 24px}.stats-ranking-panel,.stats-filter-panel,.player-history-panel{padding:16px}}

/* Fecha completa visible en las tarjetas de portada */
.event-date{margin:.35rem 0 .75rem;color:#3f3f46;font-size:.95rem}.event-date strong{color:#18181b}
