:root{
  --vino:#8c0f28;
  --vino-oscuro:#5b0719;
  --gris:#6f7377;
  --gris-oscuro:#2f3336;
  --plata:#c9cdd0;
  --crema:#fbfaf7;
  --blanco:#ffffff;
  --dorado:#d69a21;
  --verde:#0f6b45;
  --azul:#0b3767;
  --rojo:#8c0f28;
  --tinta:#171a20;
  --muted:#6b7280;
  --line:#e7e2dc;
  --shadow:0 24px 65px rgba(28,20,16,.12);
  --radius:24px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--tinta);background:
  radial-gradient(circle at 10% 0%,rgba(140,15,40,.08),transparent 28%),
  radial-gradient(circle at 92% 8%,rgba(111,115,119,.16),transparent 26%),
  linear-gradient(135deg,#fff 0%,#fbfaf7 45%,#f2f0ec 100%);min-height:100vh;}
body::before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(135deg,rgba(140,15,40,.045) 25%,transparent 25%),linear-gradient(225deg,rgba(47,51,54,.04) 25%,transparent 25%);background-size:42px 42px;opacity:.55;z-index:-1}
a{color:inherit;text-decoration:none}.page{width:min(1220px,calc(100% - 30px));margin:0 auto;padding:28px 0 48px}.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 24px;background:rgba(255,255,255,.88);border-bottom:1px solid rgba(140,15,40,.16);backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.05)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-logo{width:56px;height:56px;object-fit:contain;border-radius:14px;background:#fff;box-shadow:0 8px 20px rgba(140,15,40,.10)}.brand strong{display:block;letter-spacing:.02em;text-transform:uppercase;color:var(--vino);font-weight:900}.brand span{font-size:12px;color:var(--muted);font-weight:700}.nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nav a{padding:10px 13px;border-radius:999px;font-weight:900;font-size:14px;color:var(--gris-oscuro)}.nav a:hover,.nav .login-link{background:var(--vino);color:#fff}.nav .logout{background:#1f2327;color:#fff}.flash{margin:0 0 18px;padding:14px 18px;border-radius:18px;font-weight:900}.flash.success{background:#e9f8f0;color:#0f6b45}.flash.error{background:#fdecec;color:#9f1239}.flash.warning{background:#fff7e6;color:#9a6500}.eyebrow{margin:0 0 8px;color:var(--vino);font-size:13px;text-transform:uppercase;font-weight:1000;letter-spacing:.18em}.muted{color:var(--muted);line-height:1.6}.public-hero,.hero{position:relative;overflow:hidden;border-radius:34px;padding:44px;background:linear-gradient(135deg,#fff 0%,#fff 50%,#f2f2f2 100%);box-shadow:var(--shadow);border:1px solid rgba(140,15,40,.12)}.public-hero::before,.hero::before,.card::before{content:"";position:absolute;inset:auto -5% -26px -5%;height:58px;background:linear-gradient(90deg,transparent,rgba(140,15,40,.9),transparent);transform:rotate(-1deg);opacity:.9}.adapted-hero{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);align-items:center;min-height:520px;background:linear-gradient(130deg,#fff 0%,#fff 58%,#f4f0ec 100%)}.adapted-hero::after{content:"";position:absolute;right:-55px;top:-80px;width:380px;height:380px;background:conic-gradient(from 30deg,var(--vino),#b92744,var(--plata),var(--gris),var(--vino));border-radius:50%;opacity:.14}.hero-content{position:relative;z-index:2}.hero h1,.public-hero h1{font-size:clamp(42px,7vw,86px);line-height:.93;margin:0 0 22px;text-transform:uppercase;letter-spacing:-.05em;color:var(--vino-oscuro);text-shadow:0 3px 0 rgba(140,15,40,.10)}.hero-content p{max-width:680px;font-size:19px;line-height:1.7;font-weight:700;color:#34383d}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:13px 20px;font-weight:1000;cursor:pointer;transition:.18s ease;font-size:15px;box-shadow:0 12px 22px rgba(0,0,0,.08)}.btn.primary{background:linear-gradient(135deg,var(--vino),#b51c3d);color:#fff}.btn.secondary{background:#fff;color:var(--vino);border:2px solid rgba(140,15,40,.18)}.btn:hover{transform:translateY(-2px);box-shadow:0 18px 30px rgba(140,15,40,.18)}.btn.mini{padding:8px 12px;font-size:12px}.values-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.values-row span{background:#fff;border:1px solid rgba(140,15,40,.18);color:var(--vino);border-radius:999px;padding:8px 14px;text-transform:uppercase;font-weight:1000;font-size:12px;letter-spacing:.08em}.hero-mascot-wrap{position:relative;z-index:2;display:flex;justify-content:center;align-items:end}.hero-mascot{max-width:min(360px,100%);filter:drop-shadow(0 28px 28px rgba(0,0,0,.18));animation:floatMascot 5.2s ease-in-out infinite}@keyframes floatMascot{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-12px) rotate(1deg)}}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:22px 0}.stat-card{position:relative;overflow:hidden;background:#fff;border-radius:24px;padding:24px;border:1px solid rgba(140,15,40,.12);box-shadow:0 15px 36px rgba(0,0,0,.07);animation:riseIn .55s ease both}.stat-card::after{content:"";position:absolute;right:-25px;bottom:-25px;width:92px;height:92px;border:18px solid rgba(140,15,40,.10);border-radius:50%}.stat-card span{display:block;color:var(--muted);font-weight:900;text-transform:uppercase;font-size:12px;letter-spacing:.1em}.stat-card strong{display:block;margin-top:8px;font-size:40px;color:var(--vino)}@keyframes riseIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:22px 0}.card{position:relative;overflow:hidden;background:rgba(255,255,255,.95);border:1px solid rgba(140,15,40,.12);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow)}.card::before{height:12px;top:0;bottom:auto;left:0;right:0;transform:none;background:linear-gradient(90deg,var(--vino),var(--gris),var(--vino));opacity:1}.card h1,.card h2{margin:8px 0 12px;color:var(--gris-oscuro)}.poster-card{display:grid;grid-template-columns:1fr 260px;gap:18px;align-items:center}.poster-card img{width:100%;border-radius:20px;border:5px solid #fff;box-shadow:0 12px 24px rgba(0,0,0,.12)}.venue-list{display:grid;gap:10px}.venue-list div{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:16px;background:#f7f3ef;border-left:8px solid var(--vino);font-weight:900}.venue-list div:nth-child(1){border-color:#0f6b45}.venue-list div:nth-child(2){border-color:#c38a14}.venue-list div:nth-child(3){border-color:#0b3767}.venue-list div:nth-child(4){border-color:#8c0f28}.venue-list span{color:var(--muted)}.category-grid,.discipline-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.category-grid span,.discipline-card{display:flex;align-items:center;justify-content:center;min-height:62px;border-radius:18px;background:linear-gradient(135deg,var(--vino),#a91f3b);color:#fff;font-weight:1000;text-align:center;text-transform:uppercase;box-shadow:0 12px 24px rgba(140,15,40,.18);position:relative;overflow:hidden}.discipline-card:nth-child(2n){background:linear-gradient(135deg,var(--gris-oscuro),var(--gris))}.discipline-card:nth-child(3n){background:linear-gradient(135deg,#bd8214,var(--dorado))}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}.enhanced-head{align-items:center}.filter{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.filter input,.filter select,.form input,.form select{width:100%;border:2px solid #e4ded6;border-radius:18px;padding:14px 16px;font-size:15px;background:#fff;color:var(--tinta);outline:none;font-weight:700}.filter input:focus,.filter select:focus,.form input:focus,.form select:focus{border-color:var(--vino);box-shadow:0 0 0 5px rgba(140,15,40,.08)}.filter input{min-width:260px;flex:1}.filter select{min-width:170px;flex:1}.form-shell{width:min(920px,calc(100% - 30px));margin:28px auto}.form-card h1{font-size:clamp(34px,5vw,58px);margin:4px 0 10px;color:var(--vino-oscuro);text-transform:uppercase}.form{display:grid;gap:16px}.form.two-cols{grid-template-columns:1fr 1fr}.form .full{grid-column:1/-1}.form label{display:block;margin:0 0 7px;font-size:13px;text-transform:uppercase;font-weight:1000;color:var(--gris-oscuro);letter-spacing:.08em}.form-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.category-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-radius:18px;border:2px dashed rgba(140,15,40,.35);background:#fff8f9}.category-preview span{font-weight:1000;text-transform:uppercase;color:var(--muted);font-size:12px;letter-spacing:.1em}.category-preview strong{color:var(--vino);font-size:18px}.category-preview.ready{border-style:solid;background:#fff}.table-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0}.live-search{display:flex;align-items:center;gap:10px;background:#fff;border:2px solid #e4ded6;border-radius:999px;padding:8px 14px;min-width:280px}.live-search.wide{flex:1}.live-search input{border:0;outline:0;width:100%;font-size:15px;background:transparent;font-weight:700}.counter-badge{background:var(--vino);color:#fff;border-radius:999px;padding:10px 14px;font-weight:1000}.table-wrap{width:100%;overflow:auto;border-radius:22px;border:1px solid #e8e0d8;background:#fff}.table-wrap.small{max-height:440px}.smart-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1000px}.smart-table th{position:sticky;top:0;z-index:2;background:var(--gris-oscuro);color:#fff;text-align:left;padding:16px 14px;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.smart-table th:first-child{border-top-left-radius:20px}.smart-table th:last-child{border-top-right-radius:20px}.smart-table td{padding:14px;border-bottom:1px solid #ece6df;vertical-align:middle;font-weight:700}.smart-table tr:hover td{background:#fff9f9}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:8px 12px;background:#f1eef0;color:var(--gris-oscuro);font-size:12px;font-weight:1000;text-transform:uppercase;white-space:nowrap}.pill.ok{background:#eaf7f0;color:#0f6b45}.pill.bad{background:#fdecef;color:#991b1b}.sport-pill{background:#f9ecf0;color:var(--vino)}.gender-pill{background:#f0f2f4;color:#2f3336}.category-pill{background:#fff2d6;color:#8a5a06}.condition-pill{background:#eef0f2;color:#4b5563}.qr-thumb{width:64px;height:64px;object-fit:cover;background:#fff;border:5px solid #fff;border-radius:14px;box-shadow:0 8px 20px rgba(0,0,0,.10)}.qr-thumb.tiny{width:50px;height:50px}.qr-mini-cell{display:flex;align-items:center;gap:10px}.attendance-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.mini-stat{background:#fff;border-radius:18px;padding:16px;border:1px solid rgba(140,15,40,.12)}.mini-stat span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;font-weight:1000}.mini-stat strong{font-size:30px;color:var(--vino)}.mini-stat.ok strong{color:#0f6b45}.mini-stat.warn strong{color:#b7791f}.progress-shell{height:14px;border-radius:999px;background:#eee5de;overflow:hidden;margin-top:16px}.progress-shell i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--vino),var(--dorado));transition:width .4s}.bulk-bar{position:sticky;top:84px;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;padding:12px 14px;background:var(--gris-oscuro);border-radius:18px;color:#fff}.row-present td{background:#f2fbf6}.row-subtitle{display:block;color:var(--muted);margin-top:4px}.check-col{width:42px}.qr-result,.qr-success{display:flex;justify-content:center;padding:32px 0}.qr-card,.qr-ticket{width:min(620px,100%);text-align:center}.pass-brand img,.qr-result-logo{width:92px;height:92px;object-fit:contain;margin:0 auto 10px;display:block}.qr-card h1,.qr-ticket h1{color:var(--vino-oscuro);font-size:36px;text-transform:uppercase}.legend{font-weight:900;color:#4b5563}.qr-box{display:grid;place-items:center;background:#fff;border:6px solid var(--vino);border-radius:24px;width:min(330px,100%);margin:20px auto;padding:18px;box-shadow:0 20px 45px rgba(140,15,40,.16)}.qr-box.big{width:min(380px,100%)}.qr-box img{max-width:100%;height:auto}.details,.ticket-data{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left;margin:20px 0}.details div,.ticket-data span,.ticket-data strong{background:#f7f3ef;border-radius:14px;padding:12px}.details dt{font-weight:1000;text-transform:uppercase;color:var(--vino);font-size:12px}.details dd{margin:4px 0 0;font-weight:900}.ticket-data span{font-size:12px;text-transform:uppercase;font-weight:1000;color:var(--muted)}.ticket-data strong{color:var(--vino-oscuro)}.public-qr-page{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(135deg,#fff,#f7f3ef)}.public-qr-card{text-align:center;width:min(560px,100%);background:#fff;border-radius:32px;padding:36px;box-shadow:var(--shadow);border:2px solid rgba(140,15,40,.14)}.scan-ring{width:90px;height:90px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px;background:linear-gradient(135deg,var(--vino),#c42a48);color:#fff;font-size:48px;font-weight:1000}.participant-confirm-box{display:grid;gap:8px;margin:18px 0;padding:18px;border-radius:20px;background:#f8f3ef}.participant-confirm-box strong{font-size:23px;color:var(--vino)}.auth-body{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,var(--vino-oscuro),var(--vino))}.auth-body .page{width:auto}.auth-card{width:min(440px,calc(100vw - 30px));background:#fff;border-radius:28px;padding:32px;box-shadow:0 24px 60px rgba(0,0,0,.25)}.auth-card h1{color:var(--vino);text-transform:uppercase}.bars{display:grid;gap:12px}.bar-row{display:grid;grid-template-columns:140px 1fr 44px;gap:10px;align-items:center}.bar-row span,.bar-row b{font-weight:1000}.bar-row div{height:14px;border-radius:999px;background:#eee5de;overflow:hidden}.bar-row i{display:block;height:100%;background:linear-gradient(90deg,var(--vino),var(--dorado))}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{display:inline-flex;gap:8px;align-items:center;border-radius:999px;background:#f4f0ec;color:var(--vino);padding:10px 13px;font-weight:1000}.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:22px 0}.action-card{position:relative;overflow:hidden;background:var(--gris-oscuro);color:#fff;border-radius:22px;padding:22px;font-weight:1000;box-shadow:var(--shadow)}.action-card span{float:right;color:var(--dorado);font-size:28px}.panel-logo{width:110px;height:110px;object-fit:contain}.no-print{}@media (max-width:980px){.adapted-hero,.grid-2,.poster-card{grid-template-columns:1fr}.stats-grid,.attendance-stats{grid-template-columns:repeat(2,1fr)}.section-head,.enhanced-head{display:block}.filter{margin-top:14px}.form.two-cols{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.nav{width:100%}.nav a{flex:1;text-align:center}.hero-mascot{max-width:260px}.smart-table{min-width:900px}}@media (max-width:620px){.page{width:min(100% - 20px,1220px);padding-top:14px}.public-hero,.hero,.card{border-radius:22px;padding:20px}.hero h1,.public-hero h1{font-size:38px}.stats-grid,.attendance-stats{grid-template-columns:1fr}.details,.ticket-data{grid-template-columns:1fr}.bar-row{grid-template-columns:1fr}.brand-logo{width:46px;height:46px}.filter input,.filter select{min-width:100%}.live-search{min-width:100%}.table-tools{display:grid}}@media print{.topbar,.form-actions,.no-print,.btn{display:none!important}body{background:#fff}.page{width:100%;padding:0}.card,.qr-card,.qr-ticket{box-shadow:none;border:1px solid #ccc}.qr-box{box-shadow:none}}

/* Market ready refinements */
.market-form-card{border-top:0;background:linear-gradient(180deg,#fff 0%,#fffaf7 100%)}
.market-form-card .section-head{border-bottom:1px solid rgba(140,15,40,.12);padding-bottom:16px;margin-bottom:22px}
.btn.warning{background:linear-gradient(135deg,#d69a21,#b7791f);color:#fff;border-color:transparent;box-shadow:0 10px 18px rgba(183,121,31,.20)}
.btn.warning:hover{transform:translateY(-1px);filter:saturate(1.05)}
.smart-table td .btn.mini.warning{font-size:12px;padding:9px 12px;white-space:nowrap}
.admin-action-cell{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.form-card input[readonly],.form-card input:disabled{background:#f7f3ef;color:#6b7280}
.public-hero .hero-actions .btn.primary{box-shadow:0 14px 32px rgba(140,15,40,.26)}
.adapted-topbar .login-link{background:linear-gradient(135deg,var(--vino),#b51f3c);color:#fff}
.category-preview.ready strong{letter-spacing:.02em}
@media print{.btn.warning{display:none!important}}

/* Ajustes market-ready: subcategorías de atletismo */
.small-eyebrow{font-size:11px;letter-spacing:.16em}.muted.compact{margin-top:-4px;margin-bottom:14px}.atletismo-panel{display:none;border:2px solid rgba(124,16,36,.16);background:linear-gradient(135deg,#fff,#f7f3ef);border-radius:24px;padding:20px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65)}.atletismo-panel.is-visible{display:block;animation:riseIn .25s ease both}.athletics-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:6px}.athletics-head h3{margin:0;color:var(--vino-oscuro);font-size:24px;text-transform:uppercase}.mini-badge{display:inline-flex;align-items:center;border-radius:999px;background:var(--vino);color:#fff;padding:8px 12px;font-weight:1000;font-size:12px;text-transform:uppercase;white-space:nowrap}.athletics-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.athletics-type{background:#fff;border-radius:20px;border:1px solid rgba(124,16,36,.14);padding:16px;box-shadow:0 10px 24px rgba(0,0,0,.05)}.athletics-type h4{margin:0 0 14px;font-size:20px;text-transform:uppercase;color:#fff;background:linear-gradient(90deg,var(--vino),#1f2327);padding:10px 14px;border-radius:14px}.field-type h4{background:linear-gradient(90deg,#1f2327,var(--gris))}.athletics-group{margin-bottom:14px}.athletics-group>strong{display:block;margin:0 0 8px;color:var(--vino);text-transform:uppercase;font-size:13px;letter-spacing:.08em}.athletics-options{display:grid;gap:8px}.athletics-option{display:grid;grid-template-columns:minmax(130px,1fr) 120px;gap:8px;align-items:center;background:#f8f4f0;border:1px solid #ece0d6;border-radius:16px;padding:10px}.athletics-option:hover{border-color:rgba(124,16,36,.35);background:#fff}.checkline{display:flex;align-items:center;gap:8px;font-weight:900;color:#20252b}.checkline input{width:auto!important}.mark-input{border-radius:12px!important;padding:10px 11px!important;font-size:13px!important}.events-cell{max-width:260px;font-size:13px;line-height:1.45;color:#34383d}.full-detail{grid-column:1/-1}.event-list-pass{list-style:none;margin:0;padding:0;display:grid;gap:8px}.event-list-pass li{display:flex;align-items:center;gap:8px;justify-content:space-between;background:#fff;border:1px solid #ece0d6;border-radius:14px;padding:9px 11px}.event-list-pass b{color:var(--vino)}.event-list-pass span{color:var(--muted);font-size:12px}.event-list-pass em{font-style:normal;font-weight:1000;background:#f7e7ec;color:var(--vino);border-radius:999px;padding:6px 10px}.clean-chips .chip{background:#fff;border:1px solid rgba(124,16,36,.18)}.clean-poster img{max-height:360px;object-fit:cover;object-position:left center}@media(max-width:980px){.athletics-grid{grid-template-columns:1fr}.athletics-option{grid-template-columns:1fr}.mini-badge{white-space:normal}.clean-poster img{max-height:none}}@media print{.atletismo-panel{display:none!important}}

/* =========================================================
   UI 8.0 - Juegos Deportivos Adaptados | estilo deportivo premium
   Mejora visual: poster deportivo, profundidad, animaciones y microinteracciones
   ========================================================= */
:root{
  --vino:#7f1026;
  --vino-2:#a91332;
  --vino-3:#c51f42;
  --carbon:#181a1f;
  --grafito:#2d3036;
  --gris:#687078;
  --humo:#f4f1ed;
  --crema:#fffaf2;
  --oro:#d7a13b;
  --oro-2:#f3c866;
  --verde:#167346;
  --azul:#193d6f;
  --tinta:#141824;
  --muted:#69717c;
  --line:rgba(22,24,32,.10);
  --shadow:0 26px 70px rgba(20,24,36,.14);
  --shadow-soft:0 18px 45px rgba(20,24,36,.10);
  --radius:26px;
  --track:linear-gradient(90deg,#7f1026,#a91332,#d7a13b,#2d3036);
}

@keyframes bgDrift{0%{background-position:0 0,0 0,0 0}100%{background-position:120px 0,-120px 70px,0 0}}
@keyframes sheen{0%{transform:translateX(-130%) skewX(-20deg)}100%{transform:translateX(150%) skewX(-20deg)}}
@keyframes floatUp{0%{opacity:0;transform:translateY(28px) scale(.98)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 rgba(127,16,38,0)}50%{box-shadow:0 0 38px rgba(127,16,38,.24)}}
@keyframes laneMove{0%{background-position:0 0}100%{background-position:260px 0}}
@keyframes badgePop{0%{transform:scale(.92);opacity:.5}60%{transform:scale(1.04)}100%{transform:scale(1);opacity:1}}
@keyframes mascotFloat{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-16px) rotate(1deg)}}
@keyframes qrScan{0%{transform:translateY(-38px);opacity:.1}15%{opacity:1}85%{opacity:1}100%{transform:translateY(38px);opacity:.1}}

body{
  font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  background:
    radial-gradient(circle at 12% 8%, rgba(127,16,38,.18), transparent 26%),
    radial-gradient(circle at 92% 2%, rgba(215,161,59,.18), transparent 24%),
    linear-gradient(120deg,#f9f5ee 0%,#ffffff 45%,#ede7dd 100%);
  animation:bgDrift 20s linear infinite;
}
body::before{
  background:
    linear-gradient(90deg,rgba(127,16,38,.04) 1px,transparent 1px),
    linear-gradient(0deg,rgba(45,48,54,.035) 1px,transparent 1px),
    repeating-linear-gradient(135deg,rgba(127,16,38,.025) 0 12px,transparent 12px 24px);
  background-size:62px 62px,62px 62px,220px 220px;
  opacity:.85;
}
body::after{
  content:"";position:fixed;left:-10%;right:-10%;bottom:-58px;height:135px;pointer-events:none;z-index:-1;
  background:repeating-linear-gradient(90deg,transparent 0 42px,rgba(127,16,38,.13) 42px 48px),linear-gradient(180deg,transparent,rgba(45,48,54,.10));
  transform:skewY(-2deg);
}

.topbar.adapted-topbar{
  padding:12px 28px;
  background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(255,250,242,.91));
  border-bottom:1px solid rgba(127,16,38,.16);
  box-shadow:0 16px 42px rgba(20,24,36,.10);
}
.brand-logo{border:3px solid rgba(127,16,38,.15);box-shadow:0 12px 28px rgba(127,16,38,.16)}
.brand strong{font-size:14px;letter-spacing:.11em;color:var(--vino);}
.brand span{color:#555e68;letter-spacing:.03em}
.nav a{position:relative;overflow:hidden;border:1px solid transparent;transition:transform .2s ease,background .2s ease,color .2s ease,border-color .2s ease;}
.nav a::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.36) 46%,transparent 70%);transform:translateX(-130%) skewX(-20deg)}
.nav a:hover::after,.nav .login-link::after{animation:sheen .9s ease}
.nav a:hover{transform:translateY(-2px);border-color:rgba(127,16,38,.16)}
.nav .login-link,.nav a:hover{background:linear-gradient(135deg,var(--vino),var(--vino-3));}
.nav .logout{background:linear-gradient(135deg,#20242d,#424852)}

.page{padding-top:34px}.public-hero,.hero,.card,.auth-card{animation:floatUp .55s cubic-bezier(.2,.8,.2,1) both;}
.public-hero,.hero{
  border:1px solid rgba(127,16,38,.15);
  background:
    linear-gradient(100deg,rgba(255,255,255,.98) 0%,rgba(255,250,242,.94) 58%,rgba(127,16,38,.08) 100%),
    radial-gradient(circle at 95% 10%,rgba(215,161,59,.22),transparent 30%);
  box-shadow:0 34px 90px rgba(20,24,36,.15);
}
.public-hero::before,.hero::before{height:20px;background:var(--track);filter:saturate(1.1);}
.adapted-hero{min-height:560px;}
.adapted-hero::after{opacity:.20;filter:blur(.2px)}
.hero h1,.public-hero h1{color:var(--vino);letter-spacing:-.065em;text-shadow:0 5px 0 rgba(215,161,59,.18),0 18px 38px rgba(127,16,38,.14)}
.hero-content p{font-size:20px;color:#313743}.hero-mascot{animation:mascotFloat 4.7s ease-in-out infinite;filter:drop-shadow(0 30px 34px rgba(20,24,36,.22))}
.values-row span{position:relative;overflow:hidden;background:rgba(255,255,255,.92);box-shadow:0 10px 24px rgba(20,24,36,.07);}
.values-row span:nth-child(odd){border-color:rgba(127,16,38,.28)}.values-row span:nth-child(even){border-color:rgba(215,161,59,.42);color:#7b4e0a}
.values-row span::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,rgba(215,161,59,.2),transparent);transform:translateX(-120%)}
.values-row span:hover::after{animation:sheen .85s ease}.values-row span:hover{transform:translateY(-2px)}

.btn{position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.04em;border:1px solid rgba(255,255,255,.18);}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 0%,rgba(255,255,255,.34) 45%,transparent 72%);transform:translateX(-125%) skewX(-18deg)}
.btn:hover::after{animation:sheen .8s ease}.btn.primary{background:linear-gradient(135deg,var(--vino),var(--vino-3));box-shadow:0 16px 36px rgba(127,16,38,.30)}
.btn.secondary{background:linear-gradient(135deg,#fff,#fff8ee);border-color:rgba(127,16,38,.18);box-shadow:0 12px 28px rgba(20,24,36,.08)}
.btn.warning{background:linear-gradient(135deg,#be7b10,var(--oro),#f2c463);color:#2d1b05}
.btn:hover{transform:translateY(-3px) scale(1.01)}.btn:active{transform:translateY(0) scale(.99)}

.card{background:rgba(255,255,255,.96);border-color:rgba(127,16,38,.14);box-shadow:var(--shadow-soft);transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;}
.card:hover{transform:translateY(-3px);box-shadow:0 30px 80px rgba(20,24,36,.15);border-color:rgba(127,16,38,.25)}
.card::before{height:14px;background:linear-gradient(90deg,var(--vino),var(--vino-3),var(--oro),var(--grafito));background-size:180% 100%;animation:laneMove 9s linear infinite;}
.card h1,.card h2{letter-spacing:-.035em}.eyebrow{color:var(--vino);font-weight:1000}.muted{color:#626a75}

.stats-grid{gap:18px}.stat-card{background:linear-gradient(180deg,#fff 0%,#fffaf4 100%);border:1px solid rgba(127,16,38,.14);transition:transform .24s ease, box-shadow .24s ease;}
.stat-card:hover{transform:translateY(-6px) rotate(-.4deg);box-shadow:0 28px 64px rgba(127,16,38,.16)}
.stat-card strong{background:linear-gradient(135deg,var(--vino),var(--vino-3),var(--oro));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:8px;background:linear-gradient(180deg,var(--vino),var(--oro));}
.stat-card::after{border-color:rgba(215,161,59,.15)}

.category-grid span,.discipline-card{border:1px solid rgba(255,255,255,.28);box-shadow:0 16px 32px rgba(127,16,38,.20);transition:transform .22s ease, filter .22s ease;}
.category-grid span:hover,.discipline-card:hover{transform:translateY(-5px) scale(1.025);filter:saturate(1.12)}
.discipline-card::before,.category-grid span::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.20),transparent);transform:translateX(-120%) skewX(-18deg)}
.discipline-card:hover::before,.category-grid span:hover::before{animation:sheen .8s ease}

.poster-card img{border-radius:24px;border:8px solid #fff;box-shadow:0 24px 55px rgba(20,24,36,.18);transition:transform .25s ease, filter .25s ease;}
.poster-card img:hover{transform:scale(1.018);filter:saturate(1.08) contrast(1.04)}
.venue-list div{transition:.22s ease;box-shadow:0 8px 20px rgba(20,24,36,.055)}
.venue-list div:hover{transform:translateX(6px);background:#fff;box-shadow:0 14px 28px rgba(20,24,36,.09)}

.form input,.form select,.filter input,.filter select,.live-search{background:linear-gradient(180deg,#fff,#fffaf3);border:1px solid rgba(20,24,36,.14);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 8px 20px rgba(20,24,36,.04);transition:border-color .2s ease, box-shadow .2s ease, transform .2s ease;}
.form input:hover,.form select:hover,.filter input:hover,.filter select:hover,.live-search:hover{transform:translateY(-1px);border-color:rgba(127,16,38,.28)}
.form input:focus,.form select:focus,.filter input:focus,.filter select:focus,.live-search:focus{border-color:var(--vino);box-shadow:0 0 0 5px rgba(127,16,38,.10),0 14px 26px rgba(20,24,36,.08)}
.category-preview{position:relative;overflow:hidden;border:1px solid rgba(127,16,38,.18);background:linear-gradient(135deg,#fff,#fff4e3);}
.category-preview.ready{animation:pulseGlow 1.7s ease-in-out infinite}.category-preview strong{color:var(--vino)}

.table-wrap{border-radius:26px;box-shadow:0 24px 58px rgba(20,24,36,.10);border:1px solid rgba(127,16,38,.11);}
.smart-table{border-collapse:separate;border-spacing:0;background:#fff}.smart-table th{background:linear-gradient(135deg,#171a20,#2c3038 50%,#7f1026);letter-spacing:.055em;position:relative;}
.smart-table th::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--vino-3),var(--oro),transparent)}
.smart-table td{transition:background .18s ease, transform .18s ease}.smart-table tbody tr{transition:transform .18s ease, box-shadow .18s ease}.smart-table tbody tr:hover{transform:scale(1.004)}
.smart-table tbody tr:hover td{background:#fff8ef}.smart-table tbody tr:hover td:first-child{box-shadow:inset 5px 0 0 var(--vino)}
.pill,.chip{animation:badgePop .32s ease both;box-shadow:0 7px 16px rgba(20,24,36,.06)}
.sport-pill{background:linear-gradient(135deg,#ffe9ef,#fff);color:var(--vino);border:1px solid rgba(127,16,38,.12)}
.category-pill{background:linear-gradient(135deg,#fff2d7,#fff);color:#8a5604;border:1px solid rgba(215,161,59,.24)}
.condition-pill{background:linear-gradient(135deg,#eef1f4,#fff);border:1px solid rgba(20,24,36,.10)}
.gender-pill{background:linear-gradient(135deg,#f2f2f4,#fff)}
.qr-thumb{border-radius:18px;border:7px solid #fff;box-shadow:0 14px 28px rgba(20,24,36,.14);transition:transform .22s ease, box-shadow .22s ease;}
.qr-thumb:hover{transform:scale(1.12) rotate(-1deg);box-shadow:0 22px 44px rgba(127,16,38,.18)}

.attendance-stats .mini-stat{position:relative;overflow:hidden;background:linear-gradient(180deg,#fff,#fff9f0);transition:transform .22s ease}.attendance-stats .mini-stat:hover{transform:translateY(-4px)}
.mini-stat strong{letter-spacing:-.04em}.progress-shell{height:16px;background:#e8ded3;border:1px solid rgba(127,16,38,.08)}.progress-shell i{background:linear-gradient(90deg,var(--vino),var(--vino-3),var(--oro));background-size:220% 100%;animation:laneMove 5s linear infinite}
.bulk-bar{background:linear-gradient(135deg,#171a20,#2d3036,#7f1026);box-shadow:0 20px 45px rgba(20,24,36,.20)}
.row-present td{background:linear-gradient(90deg,#effaf3,#fff)}.row-present td:first-child{box-shadow:inset 5px 0 0 var(--verde)}

.atletismo-panel{background:linear-gradient(135deg,#fff,#fff7ec);border-color:rgba(127,16,38,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.65),0 20px 42px rgba(20,24,36,.08)}
.atletismo-panel.is-visible{animation:floatUp .32s cubic-bezier(.2,.8,.2,1) both}.athletics-head h3{color:var(--vino);letter-spacing:-.04em}.mini-badge{background:linear-gradient(135deg,var(--vino),var(--vino-3));box-shadow:0 10px 22px rgba(127,16,38,.20)}
.athletics-type{border-color:rgba(127,16,38,.16);box-shadow:0 16px 36px rgba(20,24,36,.08);transition:transform .22s ease}.athletics-type:hover{transform:translateY(-4px)}
.athletics-type h4{background:linear-gradient(90deg,var(--vino),var(--vino-3),#292d35);position:relative;overflow:hidden}.athletics-type h4::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.24),transparent);transform:translateX(-120%)}.athletics-type:hover h4::after{animation:sheen .9s ease}
.athletics-option{transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;background:linear-gradient(180deg,#fffaf4,#fff)}.athletics-option:hover{transform:translateX(4px);box-shadow:0 12px 22px rgba(127,16,38,.08)}
.checkline input[type="checkbox"]{accent-color:var(--vino);transform:scale(1.12)}
.mark-input{background:#fff!important}

.qr-box{position:relative;overflow:hidden;border-color:var(--vino);box-shadow:0 24px 58px rgba(127,16,38,.18)}
.qr-box::after{content:"";position:absolute;left:12px;right:12px;height:4px;top:50%;background:linear-gradient(90deg,transparent,var(--vino-3),var(--oro),transparent);filter:drop-shadow(0 0 8px rgba(127,16,38,.5));animation:qrScan 2.2s ease-in-out infinite;pointer-events:none}.qr-box img{position:relative;z-index:2}
.public-qr-card{position:relative;overflow:hidden;border-color:rgba(127,16,38,.18);box-shadow:0 32px 84px rgba(20,24,36,.16)}.public-qr-card::before{content:"";position:absolute;left:0;right:0;top:0;height:12px;background:var(--track);background-size:180% 100%;animation:laneMove 8s linear infinite}.scan-ring{animation:pulseGlow 1.6s ease-in-out infinite;background:linear-gradient(135deg,var(--vino),var(--vino-3),var(--oro))}
.participant-confirm-box{background:linear-gradient(135deg,#fff7ec,#fff);border:1px solid rgba(127,16,38,.12)}
.auth-body{background:radial-gradient(circle at 20% 10%,rgba(215,161,59,.24),transparent 28%),linear-gradient(135deg,#3c0713,#7f1026 50%,#171a20)}
.auth-card{border:1px solid rgba(255,255,255,.35);box-shadow:0 34px 90px rgba(0,0,0,.34)}.auth-card .qr-result-logo{filter:drop-shadow(0 12px 20px rgba(127,16,38,.16))}
.footer{opacity:.92}.footer::before{content:"";display:block;height:4px;width:80px;margin:0 auto 12px;border-radius:999px;background:linear-gradient(90deg,var(--vino),var(--oro))}

/* Scroll reveal helper injected by app.js */
.reveal-ready{opacity:0;transform:translateY(22px);transition:opacity .55s ease,transform .55s ease}.reveal-ready.is-visible{opacity:1;transform:translateY(0)}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal-ready{opacity:1!important;transform:none!important}}
@media (max-width:980px){.topbar.adapted-topbar{padding:12px 16px}.public-hero,.hero{min-height:auto}.nav a{padding:10px 11px}.smart-table tbody tr:hover{transform:none}}
@media (max-width:620px){body::after{display:none}.hero-content p{font-size:16px}.btn{width:100%}.values-row span{width:100%;justify-content:center;text-align:center}.card:hover{transform:none}.qr-thumb:hover{transform:none}}

/* =========================================================
   Sección de escaneo QR por navegador
   ========================================================= */
.qr-scanner-hero {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 24px;
    align-items: center;
    background:
        radial-gradient(circle at 90% 12%, rgba(255,255,255,.16), transparent 32%),
        linear-gradient(135deg, #7b1022 0%, #4f0b18 46%, #171b25 100%);
    color: #fff;
    border: 0;
}
.qr-scanner-hero::after {
    content: '';
    position: absolute;
    inset: auto -8% -32% 20%;
    height: 160px;
    background: repeating-linear-gradient(90deg, rgba(255,255,255,.10) 0 2px, transparent 2px 36px);
    transform: rotate(-3deg);
    opacity: .65;
}
.qr-scanner-hero .eyebrow,
.qr-scanner-hero .muted { color: rgba(255,255,255,.82); }
.qr-scanner-hero h1 { color: #fff; margin-bottom: 12px; }
.scanner-steps {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 22px;
}
.scanner-steps span {
    display: inline-flex;
    align-items: center;
    border: 1px solid rgba(255,255,255,.28);
    color: #fff;
    padding: 9px 13px;
    border-radius: 999px;
    background: rgba(255,255,255,.10);
    backdrop-filter: blur(8px);
    font-weight: 800;
    font-size: .86rem;
}
.scanner-badge {
    position: relative;
    z-index: 1;
    width: 150px;
    height: 150px;
    border-radius: 28px;
    background: #f7efe2;
    color: #7b1022;
    display: grid;
    place-items: center;
    text-align: center;
    box-shadow: 0 20px 50px rgba(0,0,0,.25), inset 0 0 0 8px rgba(123,16,34,.10);
    transform: rotate(3deg);
    animation: scannerBadgeFloat 3.6s ease-in-out infinite;
}
.scanner-badge span {
    display: block;
    font-size: 3rem;
    font-weight: 1000;
    letter-spacing: -2px;
    line-height: 1;
}
.scanner-badge small {
    display: block;
    max-width: 100px;
    color: #252936;
    font-weight: 900;
    text-transform: uppercase;
    font-size: .72rem;
    letter-spacing: .08em;
}
@keyframes scannerBadgeFloat {
    0%, 100% { transform: rotate(3deg) translateY(0); }
    50% { transform: rotate(-2deg) translateY(-8px); }
}
.browser-scanner-card { padding: 0; overflow: hidden; }
.scanner-layout {
    display: grid;
    grid-template-columns: minmax(320px, 1.05fr) minmax(280px, .95fr);
    gap: 0;
}
.scanner-preview {
    position: relative;
    min-height: 520px;
    background:
        radial-gradient(circle at center, rgba(255,255,255,.09), transparent 34%),
        linear-gradient(135deg, #0e1420 0%, #171b25 100%);
    display: grid;
    place-items: center;
    overflow: hidden;
}
.scanner-preview::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
        linear-gradient(0deg, rgba(255,255,255,.035) 1px, transparent 1px);
    background-size: 34px 34px;
    mask-image: radial-gradient(circle at center, #000 0%, transparent 75%);
}
#scannerVideo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: none;
    position: absolute;
    inset: 0;
}
#scannerVideo.is-active { display: block; }
.scanner-frame {
    position: relative;
    width: min(72vw, 330px);
    aspect-ratio: 1;
    border-radius: 24px;
    z-index: 2;
    box-shadow: 0 0 0 999px rgba(0,0,0,.28);
}
.scanner-frame i {
    position: absolute;
    width: 72px;
    height: 72px;
    border-color: #f7efe2;
    border-style: solid;
    filter: drop-shadow(0 0 12px rgba(255,255,255,.35));
}
.scanner-frame i:nth-child(1) { top: 0; left: 0; border-width: 6px 0 0 6px; border-radius: 22px 0 0 0; }
.scanner-frame i:nth-child(2) { top: 0; right: 0; border-width: 6px 6px 0 0; border-radius: 0 22px 0 0; }
.scanner-frame i:nth-child(3) { bottom: 0; left: 0; border-width: 0 0 6px 6px; border-radius: 0 0 0 22px; }
.scanner-frame i:nth-child(4) { bottom: 0; right: 0; border-width: 0 6px 6px 0; border-radius: 0 0 22px 0; }
.scan-line {
    position: absolute;
    left: 16px;
    right: 16px;
    height: 4px;
    border-radius: 999px;
    background: linear-gradient(90deg, transparent, #f6c65b, #fff, #f6c65b, transparent);
    box-shadow: 0 0 24px rgba(246,198,91,.8);
    animation: qrScanLine 1.8s ease-in-out infinite;
}
@keyframes qrScanLine {
    0%, 100% { top: 22px; opacity: .35; }
    50% { top: calc(100% - 26px); opacity: 1; }
}
.scanner-status {
    position: absolute;
    left: 24px;
    right: 24px;
    bottom: 22px;
    z-index: 3;
    border-radius: 18px;
    background: rgba(247,239,226,.94);
    color: #171b25;
    padding: 14px 16px;
    font-weight: 900;
    text-align: center;
    box-shadow: 0 12px 32px rgba(0,0,0,.22);
}
.scanner-status.working { background: #fff3cf; color: #6e4400; }
.scanner-status.success { background: #dcfce7; color: #14532d; }
.scanner-status.error { background: #fee2e2; color: #7f1d1d; }
.scanner-controls {
    padding: clamp(24px, 4vw, 46px);
    display: flex;
    flex-direction: column;
    justify-content: center;
    background:
        linear-gradient(135deg, rgba(247,239,226,.96), rgba(255,255,255,.92)),
        repeating-linear-gradient(-45deg, rgba(123,16,34,.06) 0 3px, transparent 3px 16px);
}
.scanner-controls h2 { margin-top: 0; }
.manual-token-box {
    margin-top: 26px;
    padding: 20px;
    border-radius: 24px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(123,16,34,.14);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.5);
}
.mini-title {
    margin: 0 0 12px;
    font-weight: 1000;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #7b1022;
    font-size: .78rem;
}
.qr-help-card .tips-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}
.qr-help-card .tips-grid div {
    padding: 18px;
    border-radius: 20px;
    background: linear-gradient(135deg, #fff, #f7efe2);
    border: 1px solid rgba(23,27,37,.08);
}
.qr-help-card .tips-grid strong,
.qr-help-card .tips-grid span { display: block; }
.qr-help-card .tips-grid strong { color: #7b1022; margin-bottom: 5px; }
.qr-help-card .tips-grid span { color: #4b5563; }
@media (max-width: 860px) {
    .qr-scanner-hero,
    .scanner-layout { grid-template-columns: 1fr; }
    .scanner-badge { width: 120px; height: 120px; }
    .scanner-preview { min-height: 420px; }
    .qr-help-card .tips-grid { grid-template-columns: 1fr; }
    .stacked-mobile { flex-direction: column; align-items: stretch; }
}

/* Condición y apoyos */
.support-block{border:2px solid rgba(124,16,36,.14);background:linear-gradient(135deg,#fffaf4,#fff);border-radius:24px;padding:20px;box-shadow:0 16px 36px rgba(20,24,36,.07)}
.support-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.support-head h3{margin:0;color:var(--vino);font-size:22px;text-transform:uppercase;letter-spacing:-.03em}.muted-badge{background:#2f3336;color:#fff}.support-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.support-detail{display:none;grid-column:1/-1}.support-detail.is-visible{display:block;animation:floatUp .24s ease both}.support-detail textarea{width:100%;resize:vertical;min-height:86px;border-radius:18px;border:1px solid rgba(124,16,36,.16);padding:14px 16px;font:inherit;background:#fff;color:#171b22;box-shadow:inset 0 2px 8px rgba(20,24,36,.04)}.support-status{display:grid;gap:4px;font-size:13px}.support-status strong{color:var(--vino)}.support-status span{color:var(--muted)}@media(max-width:980px){.support-grid{grid-template-columns:1fr}.support-head{display:block}.support-head .mini-badge{margin-top:8px}}

/* Sección de instituciones */
.institutions-table td:nth-child(4){font-weight:800;color:var(--ink)}
.compact-copy{display:flex;gap:.45rem;align-items:center;min-width:220px}
.compact-copy input{font-size:.82rem;padding:.62rem .7rem;border-radius:14px;background:#fffdf8;border:1px solid rgba(124,16,36,.16)}
.institution-lock{background:linear-gradient(135deg,rgba(124,16,36,.08),rgba(215,174,83,.16));border:1px dashed rgba(124,16,36,.35);border-radius:22px;padding:1rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)}
.institution-lock input,.locked-input{background:#f5efe4!important;color:#5a1021!important;font-weight:800;border-color:rgba(124,16,36,.24)!important}
.institution-lock small{display:block;margin-top:.45rem;color:#6e6b66;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.institutions-table tr{transition:transform .18s ease, box-shadow .18s ease, background .18s ease}
.institutions-table tbody tr:hover{background:linear-gradient(90deg,rgba(124,16,36,.07),rgba(215,174,83,.08));transform:translateX(3px)}
@media(max-width:900px){.compact-copy{min-width:180px}.institutions-table{min-width:980px}}

/* Disciplinas como acceso controlado */
.discipline-actions .discipline-button {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: .55rem;
    min-height: 118px;
    text-decoration: none;
    cursor: pointer;
    overflow: hidden;
    isolation: isolate;
    border: 2px solid rgba(124,16,36,.12);
    background:
        linear-gradient(135deg, rgba(255,255,255,.96), rgba(247,239,226,.92)),
        radial-gradient(circle at 18% 10%, rgba(215,174,83,.20), transparent 38%);
    box-shadow: 0 14px 34px rgba(20,24,36,.08);
    transition: transform .24s ease, box-shadow .24s ease, border-color .24s ease, background .24s ease;
}
.discipline-actions .discipline-button::before {
    content: '';
    position: absolute;
    inset: auto -35% -50% -35%;
    height: 76%;
    background: repeating-linear-gradient(90deg, rgba(124,16,36,.10) 0 2px, transparent 2px 16px);
    transform: rotate(-7deg);
    z-index: -1;
    opacity: .55;
    transition: opacity .25s ease, transform .25s ease;
}
.discipline-actions .discipline-button::after {
    content: '›';
    position: absolute;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--vino), #a7263f);
    color: #fff;
    font-size: 28px;
    font-weight: 900;
    box-shadow: 0 12px 24px rgba(124,16,36,.22);
    opacity: .95;
}
.discipline-actions .discipline-button span {
    max-width: calc(100% - 52px);
    font-weight: 1000;
    color: var(--ink);
}
.discipline-actions .discipline-button small {
    display: inline-flex;
    align-items: center;
    width: max-content;
    max-width: 100%;
    padding: .42rem .68rem;
    border-radius: 999px;
    background: rgba(124,16,36,.09);
    color: var(--vino);
    font-size: .73rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .055em;
}
.discipline-actions.is-authenticated .discipline-button:hover {
    transform: translateY(-6px) scale(1.015);
    border-color: rgba(124,16,36,.34);
    box-shadow: 0 24px 52px rgba(20,24,36,.16);
    background:
        linear-gradient(135deg, rgba(255,255,255,1), rgba(250,242,226,.96)),
        radial-gradient(circle at 20% 8%, rgba(215,174,83,.35), transparent 42%);
}
.discipline-actions.is-authenticated .discipline-button:hover::before {
    opacity: .85;
    transform: rotate(-7deg) translateY(-6px);
}
.discipline-actions .discipline-button.locked {
    cursor: not-allowed;
    filter: grayscale(.18);
    opacity: .72;
    background: linear-gradient(135deg, rgba(245,239,228,.92), rgba(255,255,255,.86));
}
.discipline-actions .discipline-button.locked::after {
    content: '🔒';
    font-size: 17px;
    background: linear-gradient(135deg, #434343, #777);
}
.locked-note {
    margin: 1rem 0 0;
    padding: .95rem 1.1rem;
    border-radius: 18px;
    background: rgba(124,16,36,.06);
    border: 1px dashed rgba(124,16,36,.18);
    font-weight: 750;
}
.discipline-detail-card {
    position: relative;
    overflow: hidden;
}
.discipline-detail-card::before {
    content: '';
    position: absolute;
    inset: 0 0 auto;
    height: 7px;
    background: linear-gradient(90deg, var(--vino), var(--gold), var(--vino));
}
.discipline-detail-head .head-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem;
    justify-content: flex-end;
}
.discipline-stats { margin: 1rem 0 1.2rem; }
.category-summary-strip {
    display: flex;
    gap: .7rem;
    flex-wrap: wrap;
    margin: 0 0 1.2rem;
}
.category-summary-strip span {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .68rem .9rem;
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(124,16,36,.09), rgba(215,174,83,.16));
    border: 1px solid rgba(124,16,36,.13);
    font-weight: 900;
    color: var(--ink);
}
.category-summary-strip strong { color: var(--vino); }
.discipline-table-wrap { margin-top: 1rem; }
.empty-state {
    text-align: center;
    padding: 2rem!important;
    color: var(--muted);
    font-weight: 900;
}
@media(max-width: 860px) {
    .discipline-detail-head .head-actions { justify-content: stretch; }
    .discipline-detail-head .head-actions .btn { width: 100%; }
    .discipline-actions .discipline-button { min-height: 106px; }
}


/* =========================================================
   Mejora visual: disciplinas con iconos y modo público limpio
   ========================================================= */
.disciplines-section .section-head{
    align-items:center;
}
.discipline-actions{
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
    gap:1.05rem;
}
.discipline-actions .discipline-button,
.discipline-actions .discipline-info{
    min-height:150px;
    padding:1.15rem;
    justify-content:flex-start;
    align-items:flex-start;
    text-align:left;
    border:1px solid rgba(124,16,36,.18);
    border-radius:26px;
    background:
        radial-gradient(circle at 85% 18%, rgba(124,16,36,.12), transparent 26%),
        linear-gradient(145deg,#fff 0%,#fbf6ee 58%,#f0e4d4 100%);
    color:#292d32;
    box-shadow:0 18px 42px rgba(44,37,31,.10);
    transform:translateY(0);
}
.discipline-actions .discipline-button::before,
.discipline-actions .discipline-info::before{
    opacity:.5;
    background:
        repeating-linear-gradient(90deg,rgba(124,16,36,.08) 0 2px,transparent 2px 16px),
        linear-gradient(90deg,transparent,rgba(215,174,83,.22),transparent);
}
.discipline-actions .discipline-button::after{
    top:auto;
    right:1rem;
    bottom:1rem;
    width:42px;
    height:42px;
    font-size:30px;
    background:linear-gradient(135deg,var(--vino),#b82845);
}
.discipline-actions.is-public .discipline-info::after{
    content:'';
    display:none;
}
.discipline-icon{
    width:58px;
    height:58px;
    display:grid;
    place-items:center;
    margin-bottom:.8rem;
    border-radius:20px;
    background:linear-gradient(135deg,#7c1024,#b52642);
    color:#fff;
    font-size:2rem;
    line-height:1;
    box-shadow:0 14px 30px rgba(124,16,36,.22);
    transform:rotate(-3deg);
    transition:transform .24s ease, box-shadow .24s ease;
}
.discipline-actions .discipline-name{
    max-width:calc(100% - 55px);
    color:#22272d !important;
    text-shadow:none;
    font-size:1.05rem;
    line-height:1.15;
    letter-spacing:.03em;
    font-weight:1000;
}
.discipline-actions .discipline-button small,
.discipline-actions .discipline-info small{
    margin-top:auto;
    background:rgba(124,16,36,.08);
    color:#7c1024;
    border:1px solid rgba(124,16,36,.10);
}
.discipline-actions.is-authenticated .discipline-button:hover .discipline-icon{
    transform:rotate(0deg) scale(1.08);
    box-shadow:0 20px 38px rgba(124,16,36,.30);
}
.discipline-actions.is-authenticated .discipline-button:hover{
    transform:translateY(-7px);
    border-color:rgba(124,16,36,.35);
    box-shadow:0 28px 62px rgba(44,37,31,.16);
}
.discipline-actions.is-public .discipline-info{
    cursor:default;
    opacity:1;
    filter:none;
}
.discipline-actions.is-public .discipline-info:hover{
    transform:translateY(-3px);
    box-shadow:0 22px 50px rgba(44,37,31,.13);
}
.discipline-actions.is-public .discipline-info:hover .discipline-icon{
    transform:rotate(0deg) scale(1.04);
}
.discipline-actions.is-public .discipline-info small{
    background:rgba(64,64,64,.08);
    color:#5a5550;
}
.locked-note{display:none!important;}
@media(max-width:620px){
    .discipline-actions{grid-template-columns:1fr 1fr;gap:.75rem;}
    .discipline-actions .discipline-button,
    .discipline-actions .discipline-info{min-height:140px;padding:.95rem;border-radius:22px;}
    .discipline-icon{width:48px;height:48px;font-size:1.65rem;border-radius:17px;}
    .discipline-actions .discipline-name{font-size:.92rem;max-width:100%;}
    .discipline-actions .discipline-button small,
    .discipline-actions .discipline-info small{font-size:.65rem;padding:.35rem .5rem;}
}

.table-note{display:block;margin-top:6px;font-size:12px;line-height:1.25;color:#6b5960;font-weight:700;max-width:240px}
.condition-detail textarea{width:100%;resize:vertical;min-height:86px;border-radius:18px;border:1px solid rgba(124,16,36,.16);padding:14px 16px;font:inherit;background:#fff;color:#171b22;box-shadow:inset 0 2px 8px rgba(20,24,36,.04)}
.condition-detail.is-visible{display:block;animation:floatUp .24s ease both}
