
:root{
 --bg:#06101e;--panel:#11213a;--panel2:#172c4b;--line:#2c466d;
 --text:#f3f8ff;--muted:#a8bdd3;--purple:#7c3aed;--blue:#2563eb;
 --green:#16a34a;--orange:#ea580c;--red:#dc2626;--gold:#f7c948
}
*{box-sizing:border-box}
html{width:100%;height:100%;overflow-x:hidden}
body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:#ffffff;color:#0f172a;min-height:100vh}
a{color:inherit;text-decoration:none}
header{display:flex;justify-content:space-between;align-items:center;min-height:49px;padding:5px 12px;gap:10px;background:#ffffff;border-bottom:1px solid #d8e3ef;box-shadow:0 2px 12px rgba(15,23,42,.05)}
.logo{font-size:28px;font-weight:900}.logo span{color:#a78bfa}
.wrap{max-width:1640px;margin:auto;padding:18px 22px}
.grid{display:grid;gap:18px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}
.card{background:linear-gradient(180deg,#12243f,#0e1b30);border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:0 22px 55px #0005;color:#f3f8ff}
.muted{color:#64748b}
.btn{display:inline-block;border:0;border-radius:14px;padding:14px 18px;margin:4px;color:white;font-weight:800;background:linear-gradient(90deg,var(--purple),var(--blue));cursor:pointer}
.btn.green{background:linear-gradient(90deg,#15803d,#22c55e)}
.btn.orange{background:linear-gradient(90deg,#c2410c,#f97316)}
.btn.red{background:linear-gradient(90deg,#b91c1c,#ef4444)}
input,select{width:100%;padding:13px;border-radius:12px;border:1px solid var(--line);background:#071120;color:white;margin:5px 0 13px}
label{display:block;color:#334155}
.table{width:100%;border-collapse:collapse}.table th,.table td{padding:11px;border-bottom:1px solid var(--line);text-align:left}.table th{font-size:12px;text-transform:uppercase;color:#bfd0e3}
.score{background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:center}.score small{display:block;color:var(--muted)}.score b{font-size:30px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.tile{padding:14px 15px 13px;border-radius:16px;background:linear-gradient(135deg,#6d28d9,#1d4ed8);min-height:96px;box-shadow:0 12px 28px rgba(29,78,216,.18);color:#f8fbff}.tile .ico{display:block;font-size:28px;line-height:1;margin-bottom:6px}.tile .ico .menu-icon-image{width:40px;height:40px;display:block;margin:0}
.center{display:grid;place-items:center;padding:24px}.setup{width:min(540px,100%)}
.error{background:#7f1d1d;padding:12px;border-radius:10px;margin:10px 0}.success{background:#14532d;padding:12px;border-radius:10px;margin:10px 0}
.judge-pad{max-width:720px;margin:auto}.judge-input{font-size:60px;text-align:center;font-weight:900}
.nav{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}
header .nav .btn{padding:8px 13px;margin:1px;border-radius:10px;font-size:14px}
header .nav .muted{font-size:14px;white-space:nowrap}
@media(max-width:900px){
    .g2,.g3,.g5,.tiles{grid-template-columns:1fr}
    header{padding:4px 7px;gap:5px;flex-direction:row;align-items:center}
    header .header-logo{display:none}
    header .nav{gap:2px}
    header .nav .muted{display:none}
    header .nav .btn{padding:7px 9px;font-size:12px}
}

.asset-preview{width:90px;height:90px;object-fit:contain;background:#fff;border-radius:14px;padding:6px}
.control-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.public-body{position:relative;margin:0;width:100%;height:100dvh;min-height:0;overflow:hidden;background:radial-gradient(circle at 15% 0%,rgba(124,58,237,.30),transparent 35%),linear-gradient(135deg,#02050b,#09162c);color:#f5f8ff;font-family:Segoe UI,Arial,sans-serif}
.public-body.has-championship-background::before{content:"";position:fixed;inset:0;z-index:0;background-image:var(--championship-background);background-position:center;background-size:cover;background-repeat:no-repeat}
.public-body.has-championship-background::after{content:"";position:fixed;inset:0;z-index:0;background:linear-gradient(135deg,rgba(2,8,20,var(--championship-overlay)),rgba(35,12,65,var(--championship-overlay)))}
.public-body.has-championship-background .public-box{background:linear-gradient(135deg,rgba(15,38,75,.72),rgba(45,16,83,.72));backdrop-filter:blur(1.5px)}
.public-screen{position:relative;z-index:1;width:100%;height:100%;min-height:0;display:grid;place-items:center;padding:clamp(6px,1.8vh,20px);overflow:hidden}
.public-box{width:min(1700px,100%);max-height:100%;overflow:hidden;background:linear-gradient(135deg,rgba(15,38,75,.97),rgba(45,16,83,.97));border:1px solid #29466e;border-radius:clamp(15px,2.2vh,30px);padding:clamp(12px,2.5vh,30px);box-shadow:0 30px 80px #0008}
.public-name{font-size:clamp(28px,min(5vw,8vh),82px);font-weight:950;line-height:1;margin:clamp(5px,1.4vh,14px) 0}
.public-club{font-size:clamp(16px,min(2vw,3vh),31px);color:#a7bdd6}
.public-meta{font-size:clamp(17px,min(2.2vw,3.5vh),35px);color:#f7c948;font-weight:900;margin-top:clamp(4px,1.2vh,12px)}
.public-badge{display:inline-block;padding:8px 14px;border-radius:999px;background:#16a34a33;border:1px solid #22c55e88;color:#b7f7c5;font-weight:900}
.public-logo{width:clamp(82px,min(15vw,21vh),170px);height:clamp(82px,min(15vw,21vh),170px);object-fit:contain;background:#fff;border-radius:clamp(12px,2vh,25px);padding:clamp(5px,1vh,10px)}
.championship-wall-clock{position:absolute;z-index:5;top:clamp(8px,1.3vh,16px);left:50%;transform:translateX(-50%);display:none;padding:clamp(5px,.8vh,9px) clamp(14px,1.6vw,28px);border:1px solid #93c5fd88;border-radius:999px;background:#020817b8;color:#f8fafc;font-size:clamp(21px,min(2.1vw,3.5vh),38px);font-weight:950;line-height:1;letter-spacing:.08em;text-shadow:0 4px 12px #000;white-space:nowrap;backdrop-filter:blur(5px)}
.championship-wall-clock.is-visible{display:block}
.championship-poster{display:none;object-fit:contain;background:#ffffffed;border:1px solid #93c5fd88;border-radius:clamp(12px,1.4vw,20px);padding:clamp(4px,.55vw,8px);box-shadow:0 12px 35px #0008}
.championship-poster.is-visible{display:block}
.public-box:has(> .championship-wall-clock.is-visible){padding-top:clamp(48px,6vh,66px)}
.public-apparatus{width:clamp(120px,min(25vw,38vh),300px);height:clamp(120px,min(25vw,38vh),300px);object-fit:contain;filter:drop-shadow(0 18px 35px #0009)}
.next-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.85fr);gap:clamp(8px,2vw,24px);max-height:100%;overflow:hidden}
.current-card,.next-card{min-width:0;overflow:hidden;background:#09162a;border:1px solid #29466e;border-radius:clamp(14px,2vh,24px);padding:clamp(10px,2.2vh,25px)}
.current-card{display:grid;grid-template-columns:minmax(90px,180px) minmax(0,1fr);gap:clamp(9px,1.8vw,22px);align-items:center}
.next-countdown{font-size:clamp(38px,min(6vw,10vh),95px);font-weight:950;color:#a7f3d0;text-align:center;margin:clamp(5px,1.8vh,18px) 0}
.compete-grid{display:grid;grid-template-columns:minmax(90px,210px) minmax(0,1fr) minmax(120px,330px);gap:clamp(8px,2.2vw,30px);align-items:center;max-height:100%;overflow:hidden}
.public-timer{font-size:clamp(48px,min(8vw,15vh),135px);font-weight:950;line-height:1;text-align:center;background:#02050a;border:1px solid #29466e;border-radius:clamp(14px,2.5vh,25px);padding:clamp(8px,2vh,18px);margin-top:clamp(7px,2vh,22px)}
.public-timer.time-warning{color:#facc15;border-color:#ca8a04;text-shadow:0 0 22px rgba(250,204,21,.25)}
.public-timer.time-over{color:#ff4d4d;border-color:#ef4444;background:#260609;text-shadow:0 0 30px rgba(239,68,68,.45)}
.empty-asset{display:grid;place-items:center;width:100%;height:100%;color:#64748b;text-align:center}
@media(max-width:600px){
    .next-grid,.current-card,.compete-grid{grid-template-columns:1fr}
    .public-logo,.public-apparatus{margin:auto}
    .public-apparatus{width:100px;height:100px}
    .public-box{padding:10px}
}

body.fit-screen{height:100dvh;min-height:0;overflow:hidden}
body.fit-screen .wrap{height:calc(100dvh - 49px);min-height:0;overflow:hidden;padding:clamp(6px,1.5vh,16px)}
body.fit-screen .wrap>h1{font-size:clamp(16px,2.8vh,28px);line-height:1;margin:0 0 clamp(5px,1vh,10px)}
body.fit-screen .card{padding:clamp(9px,1.7vh,18px);border-radius:clamp(12px,1.8vh,20px)}
body.tablet-judge-screen .judge-pad{height:calc(100% - clamp(24px,3.8vh,38px));max-width:min(720px,100%);overflow:hidden}
body.tablet-judge-screen .judge-pad h2{font-size:clamp(20px,3.4vh,34px);margin:clamp(4px,1vh,10px) 0}
body.tablet-judge-screen .judge-pad h3{margin:clamp(4px,1vh,10px) 0}
body.tablet-judge-screen .judge-input{font-size:clamp(38px,9vh,70px);padding:clamp(6px,1.3vh,13px);margin:3px 0 clamp(5px,1vh,10px)}
.ranking-public .public-box{height:100%;display:flex;flex-direction:column;justify-content:flex-start}
.ranking-public .public-badge{align-self:flex-start}
.ranking-public h1{font-size:clamp(18px,3.5vh,38px);line-height:1;margin:clamp(5px,1.2vh,12px) 0}
.ranking-public .table{font-size:clamp(9px,1.7vh,18px)!important;table-layout:fixed}
.ranking-public .table th,.ranking-public .table td{padding:clamp(2px,.55vh,6px) clamp(3px,.55vw,9px);line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.brand-wrap{
    display:flex;
    align-items:center;
    gap:12px;
}
.header-logo{
    width:52px;
    height:52px;
    object-fit:contain;
    background:#fff;
    border-radius:12px;
    padding:4px;
}
.superior-competition-logo{
    width:68px;
    height:68px;
    object-fit:contain;
    background:#fff;
    border-radius:14px;
    padding:5px;
}

.fag-brand{
    display:flex;
    align-items:center;
    gap:12px;
}
.fag-logo{
    width:58px;
    height:58px;
    object-fit:contain;
    border-radius:10px;
    flex:0 0 auto;
}
.fag-name{
    font-size:28px;
    font-weight:950;
    letter-spacing:-0.5px;
    color:#ffffff;
    white-space:nowrap;
}
.fag-name span{
    color:#facc15;
}
header .fag-logo{
    width:38px;
    height:38px;
}
header .brand-wrap,header .fag-brand{gap:8px}
header .header-logo{width:38px;height:38px;border-radius:8px;padding:3px}
header .fag-name{font-size:21px;letter-spacing:-.3px}
.public-box .fag-logo{
    width:76px;
    height:76px;
}
.public-box .fag-name{
    font-size:38px;
}


/* GymScore Professional 3.10.29 — fondo de Administración en COMPITE y NEXT */
.championship-background-layer,
.championship-overlay-layer{
    display:none;
    position:fixed;
    inset:0;
    pointer-events:none;
}
.championship-background-layer{
    z-index:0;
    background-position:center;
    background-size:cover;
    background-repeat:no-repeat;
}
.championship-overlay-layer{z-index:0}
.public-body.has-championship-background .championship-background-layer,
.public-body.has-championship-background .championship-overlay-layer{display:block}
.public-body.has-championship-background::before,
.public-body.has-championship-background::after{content:none!important}
.public-body.has-championship-background .public-box{
    background:transparent;
    border-color:transparent;
    box-shadow:none;
    backdrop-filter:none;
}
.public-body.has-championship-background .current-card,
.public-body.has-championship-background .next-card,
.public-body.has-championship-background .compete-asset-panel{
    background:rgba(2,8,20,.72);
    backdrop-filter:blur(3px);
}
.public-body.has-championship-background.compete-wall-clock-mode .compete-box{
    background:transparent;
    border:0;
    box-shadow:none;
    backdrop-filter:none;
}
.public-body.has-championship-background.compete-wall-clock-mode .compete-wall-clock-stage{
    position:relative;
    z-index:2;
}


/* GymScore Professional 3.10.32 — cartel a pantalla completa en COMPITE y NEXT */
.public-body.showing-championship-poster .public-screen{
    padding:0;
    place-items:stretch;
}
.public-body.showing-championship-poster .public-box{
    display:none !important;
}
.public-body.showing-championship-poster .championship-poster{
    display:none !important;
}

/* Autoría del proyecto */
.gymscore-author{padding:10px 16px;text-align:center;color:#86a7d8;font-size:12px;line-height:1.2;opacity:.82}
body.fit-screen .gymscore-author,body.public-screen .gymscore-author,body.music-screen .gymscore-author{display:none}

/* GymScore Professional 4.0 — identidad visual propia */
.gymscore-full-logo{width:220px!important;height:58px!important;max-width:48vw;object-fit:contain!important;object-position:left center;border-radius:0!important;padding:0!important;background:transparent!important}
header .gymscore-full-logo{width:180px!important;height:42px!important;max-width:36vw}
.center .setup .gymscore-full-logo{width:min(310px,78vw)!important;height:auto!important;max-height:105px}

main.wrap>h1{font-size:clamp(30px,2.8vw,48px);line-height:1;margin:0 0 14px;color:#0f172a}
.card .muted,.tile p{color:#c7d7e8}
.card label{color:#c7d7e8}
.tile h2{margin:6px 0 7px;font-size:clamp(17px,1.45vw,24px);line-height:1.06}
.tile p{margin:0;font-size:clamp(12px,0.95vw,15px);line-height:1.24}
.success,.error{color:#fff}
header .nav .muted{color:#334155}

/* Cabecera global: usuario activo centrado */
.app-header{position:relative;display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(190px,1fr);align-items:center}
.header-brand{justify-self:start;min-width:0}
.header-active-user{justify-self:center;display:flex;align-items:baseline;gap:7px;max-width:min(42vw,520px);padding:5px 12px;border-radius:999px;background:#eef4fb;border:1px solid #d8e3ef;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-active-user-label{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#64748b}
.header-active-user strong{font-size:15px;overflow:hidden;text-overflow:ellipsis}
.header-actions{justify-self:end}
@media(max-width:900px){
  .app-header{grid-template-columns:auto minmax(0,1fr) auto}
  .header-active-user{max-width:30vw;padding:4px 8px}
  .header-active-user-label{display:none}
  .header-active-user strong{font-size:12px}
}
@media(max-width:650px){
  .app-header{grid-template-columns:auto 1fr;grid-template-areas:"brand actions" "user user";row-gap:3px}
  .header-brand{grid-area:brand}
  .header-actions{grid-area:actions}
  .header-active-user{grid-area:user;max-width:100%;justify-self:center;padding:2px 9px}
}

/* Acceso cloud: logo limpio, sin pastilla de fondo */
body.login-page {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 22px;
    min-height: 100vh;
    padding: 28px 20px;
}

.login-page .login-logo {
    display: flex;
    justify-content: center;
    align-items: center;
    width: min(520px, 90vw);
    min-height: 110px;
    margin: 0 auto;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
}

.login-page .login-logo img {
    display: block;
    width: min(420px, 82vw);
    height: auto;
    max-height: 135px;
    object-fit: contain;
    object-position: center;
    margin: 0 auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.login-page .setup {
    width: min(540px, 100%);
    margin: 0;
}

.login-page .setup h1 {
    margin-top: 0;
    text-align: center;
}

@media (max-height: 760px) {
    body.login-page {
        justify-content: flex-start;
        gap: 12px;
        padding-top: 18px;
    }

    .login-page .login-logo {
        min-height: 75px;
    }

    .login-page .login-logo img {
        max-height: 90px;
    }
}


/* Identidad visual ScoreGym */
.gymscore-full-logo{
    width:260px !important;
    height:72px !important;
    max-width:52vw;
    object-fit:contain !important;
    object-position:left center;
    border:0 !important;
    border-radius:0 !important;
    padding:0 !important;
    background:transparent !important;
}

header .gymscore-full-logo{
    width:210px !important;
    height:54px !important;
}

.access-full-logo{
    width:min(430px,82vw) !important;
    height:auto !important;
    max-height:150px;
    object-fit:contain;
    background:transparent !important;
}


/* ScoreGym - favicon en cabecera interna */
.header-favicon{
    width:40px !important;
    height:40px !important;
    max-width:none !important;
    object-fit:contain !important;
    object-position:center !important;
    border-radius:0 !important;
    padding:0 !important;
    background:transparent !important;
    display:block;
}
header .header-favicon{
    width:40px !important;
    height:40px !important;
}
