:root{--purple:#31098c;--purple-2:#4b16b7;--ink:#181526;--muted:#746f82;--line:#e9e7ee;--bg:#f6f5f8;--white:#fff;--green:#1ca56c;--amber:#e7a62a;--red:#dc4f57;--pitch:#24784e;--pitch2:#277e52}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px 'DM Sans',sans-serif}.app-shell{min-height:100vh;display:grid;grid-template-columns:228px 1fr}/* Mismo problema que la barra del modo en directo, y misma solución: 100vh
   cuenta el alto SIN la barra de direcciones de Safari, así que el pie de la
   barra lateral —"Restaurar copia" y "Cambiar de clave", empujados abajo con
   margin-top:auto— quedaba por debajo del borde y no se podía pulsar. El par
   100vh/100dvh deja el valor bueno en los navegadores que lo entienden.
   overflow-y:auto es el cinturón de seguridad: en una pantalla baja (un móvil
   apaisado, una ventana pequeña) el contenido no cabe por mucho que el alto
   sea correcto, y así al menos se puede llegar desplazando en vez de perderse.
   El padding inferior se declara dos veces a propósito: quien no entienda
   env() se queda con los 20px de la primera. */
.sidebar{background:#21065f;color:white;padding:26px 18px 20px;padding-bottom:max(20px,env(safe-area-inset-bottom));display:flex;flex-direction:column;position:sticky;top:0;height:100vh;height:100dvh;overflow-y:auto;z-index:30}.brand{display:flex;align-items:center;gap:12px;color:white;text-decoration:none;padding:0 7px 28px}.brand strong{font:800 18px Manrope;letter-spacing:.12em}.brand small{display:block;font-size:8px;letter-spacing:.2em;opacity:.62}.crest{width:38px;height:44px;background:white;color:var(--purple);border-radius:50% 50% 48% 48%/32% 32% 68% 68%;display:grid;place-items:center;position:relative;font:800 11px Manrope;box-shadow:inset 0 0 0 3px #6030c6}.crest i{position:absolute;width:25px;border-top:3px solid #6030c6;transform:rotate(-22deg)}nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:#c9bce8;border-radius:9px;padding:12px;display:flex;align-items:center;gap:12px;font:600 13px 'DM Sans';cursor:pointer;text-align:left}.nav-item:hover,.nav-item.active{color:white;background:rgba(255,255,255,.12)}.nav-item .icon{font-size:18px;width:19px}.nav-item b{margin-left:auto;background:#6640b7;padding:2px 7px;border-radius:9px;font-size:10px}.sidebar-foot{margin-top:auto;border-top:1px solid #462581;padding:19px 5px 0}.season{display:flex;justify-content:space-between;color:#ad9bce;font-size:10px;margin-bottom:21px}.season strong{color:white}.coach{display:flex;align-items:center;gap:9px}.coach-avatar{width:33px;height:33px;display:grid;place-items:center;border-radius:50%;background:#5b31b1;font-weight:700}.coach strong,.coach small{display:block;font-size:11px}.coach small{color:#a999c8;font-size:9px;margin-top:2px}main{min-width:0}.topbar{height:88px;background:white;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.eyebrow,.panel-heading span,.pitch-toolbar label{font-size:9px;color:#8c8698;font-weight:700;letter-spacing:.12em}.topbar h1{font:800 22px Manrope;margin:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* min-width:0 para que el bloque pueda encoger dentro del flex de .topbar: sin
   esto un título largo empujaría los botones fuera de la pantalla en móvil. */
.topbar-title{min-width:0}
/* El logo ocupa el hueco del rótulo pequeño que había antes. Al ir apilado sobre
   el h1 y no a su lado, aporta la marca sin quitarle ni un píxel de ancho al
   título, que es lo que hay que proteger en pantallas estrechas. */
.topbar-logo{display:block;height:30px;width:auto;margin-bottom:1px}.header-actions{display:flex;align-items:center;gap:9px}.saved-status{display:flex;align-items:center;gap:6px;color:#908a99;font-size:11px;margin-right:7px}.saved-status i{width:7px;height:7px;border-radius:50%;background:var(--green)}button,input,select,textarea{font:inherit}.btn{border:0;border-radius:8px;padding:10px 14px;font-weight:700;font-size:12px;cursor:pointer}.btn.primary{background:var(--purple);color:white}.btn.primary:hover{background:var(--purple-2)}.btn.secondary{background:white;border:1px solid #dedbe5;color:#393444}.mobile-menu{display:none;border:0;background:none;font-size:22px}.view{display:none;padding:24px 30px}.view.active{display:block}.match-card{background:white;border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:2.1fr 1fr 1fr 1fr;align-items:center;padding:18px 23px;box-shadow:0 2px 6px #27134d08}.match-card label{display:block;font-size:8px;font-weight:700;letter-spacing:.13em;color:#9a94a5;margin-bottom:7px}.match-main,.match-meta{padding:0 22px;border-right:1px solid var(--line)}.match-main{padding-left:0}.match-meta:last-child{border:0}.versus{display:flex;align-items:center;gap:9px;font-weight:700}.versus b{font-size:10px;color:#aaa4b3;margin-left:auto}.mini-crest{width:26px;height:29px;border-radius:50% 50% 45% 45%;background:var(--purple);color:white;display:grid;place-items:center;font-size:7px}.match-card input{border:0;min-width:0;width:100%;font-weight:700;color:var(--ink);padding:3px 0;background:transparent}.versus input{width:130px}.tactic-tabs-wrap{display:flex;align-items:center;border-bottom:1px solid #ddd9e5;margin-top:18px}.tactic-tabs{display:flex;overflow:auto}.tactic-tab{border:0;background:none;padding:13px 19px;cursor:pointer;color:#7a7485;font-weight:600;font-size:12px;white-space:nowrap;border-bottom:2px solid transparent}.tactic-tab.active{color:var(--purple);border-color:var(--purple)}.tactic-tab .remove{margin-left:8px;color:#aaa}.add-tab{border:0;background:none;color:var(--purple);font-weight:700;font-size:11px;cursor:pointer;padding:12px}.workspace{display:grid;grid-template-columns:minmax(520px,1fr) 240px;gap:15px;margin-top:18px}.pitch-panel,.bench-panel{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.pitch-toolbar{height:61px;display:flex;align-items:center;padding:0 16px;gap:7px;border-bottom:1px solid var(--line)}.pitch-toolbar>div:first-child{display:flex;align-items:center;gap:8px}.pitch-toolbar label{display:none}.pitch-toolbar select{border:1px solid #dedbe5;border-radius:7px;padding:8px;font-weight:700;color:var(--purple);background:white}.tool-divider{height:25px;border-left:1px solid var(--line);margin:0 3px}.tool{border:0;background:none;border-radius:7px;padding:8px;color:#746e7e;cursor:pointer;font-weight:600;font-size:11px}.tool:hover,.tool.active{background:#eee9f8;color:var(--purple)}.tool.danger{color:var(--red)}.pitch-wrap{background:#e9e6ed;padding:16px;display:flex;justify-content:center}.pitch{width:min(100%,610px);aspect-ratio:10/14;max-height:calc(100vh - 280px);background:var(--pitch);position:relative;overflow:hidden;touch-action:none;box-shadow:0 10px 25px #1a402c33}.grass-lines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,var(--pitch) 0,var(--pitch) 10%,var(--pitch2) 10%,var(--pitch2) 20%)}.field-outline{position:absolute;inset:3%;border:2px solid #ffffffb3}.halfway{position:absolute;top:50%;left:3%;right:3%;border-top:2px solid #ffffffb3}.center-circle{position:absolute;width:22%;aspect-ratio:1;border:2px solid #ffffffb3;border-radius:50%;left:39%;top:calc(50% - 7.86%)}.center-dot,.penalty b{position:absolute;width:5px;height:5px;background:#ffffffb3;border-radius:50%;left:calc(50% - 2.5px);top:calc(50% - 2.5px)}.penalty{position:absolute;left:26%;width:48%;height:16%;border:2px solid #ffffffb3}.penalty.top{top:3%;border-top:0}.penalty.bottom{bottom:3%;border-bottom:0}.penalty i{position:absolute;left:27%;width:46%;height:43%;border:2px solid #ffffffb3}.penalty.top i{top:0;border-top:0}.penalty.bottom i{bottom:0;border-bottom:0}.penalty b{top:62%}.penalty.bottom b{top:30%}.goal{position:absolute;left:41%;width:18%;height:2%;border:2px solid #ffffffb3}.goal.top{top:1%}.goal.bottom{bottom:1%}#drawingLayer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}#drawingLayer path:not(#arrowHead path){fill:none;stroke:#f6c344;stroke-width:8;stroke-linecap:round;marker-end:url(#arrowHead);filter:drop-shadow(0 2px 2px #0005)}#drawingLayer .draft{opacity:.65;stroke-dasharray:14}.pitch-player{position:absolute;width:58px;transform:translate(-50%,-50%);z-index:6;text-align:center;cursor:grab;touch-action:none;user-select:none}.pitch-player:active{cursor:grabbing}.player-token{width:46px;height:46px;margin:auto;border-radius:50%;border:3px solid white;background:var(--purple);box-shadow:0 3px 8px #0006;display:grid;place-items:center;color:white;font-weight:800;background-size:cover;background-position:center;position:relative}.player-token b{position:absolute;right:-6px;top:-4px;width:18px;height:18px;border-radius:50%;background:white;color:var(--purple);font-size:9px;display:grid;place-items:center;border:1px solid #ddd}.pitch-player small{display:block;color:white;background:#1b1a1cbf;border-radius:8px;padding:2px 5px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:8px;font-weight:700}.pitch-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#143f30bb;color:white;padding:10px 15px;border-radius:8px;font-size:10px;z-index:3;pointer-events:none}.bench-panel{padding:17px;align-self:start}.panel-heading{display:flex;justify-content:space-between;align-items:center}.panel-heading h3{font:800 16px Manrope;margin:3px 0}.count-pill{background:#eee9f8!important;color:var(--purple)!important;border-radius:10px;padding:3px 8px;letter-spacing:0!important}.helper{color:#8e8997;font-size:10px;margin:4px 0 14px}.bench-list{display:grid;gap:7px;max-height:500px;overflow:auto}.bench-player{display:flex;align-items:center;gap:9px;border:1px solid var(--line);padding:8px;border-radius:8px;cursor:pointer;background:white;text-align:left;width:100%}.bench-player:hover{border-color:#bca9e1;background:#faf8ff}.bench-avatar,.card-avatar{border-radius:50%;background:#eee9f8 center/cover;display:grid;place-items:center;color:var(--purple);font-weight:800;flex:none}.bench-avatar{width:31px;height:31px;font-size:10px}.bench-player p{margin:0;min-width:0;flex:1}.bench-player strong,.bench-player small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bench-player strong{font-size:11px}.bench-player small{font-size:9px;color:#948e9d}.status-dot{width:7px;height:7px;border-radius:50%}.available{background:var(--green)}.doubt{background:var(--amber)}.injured,.suspended{background:var(--red)}.text-btn{border:0;background:none;color:var(--purple);font-weight:700;font-size:10px;padding:14px 0;cursor:pointer}.legend{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-wrap:wrap;gap:7px;font-size:8px;color:#8c8697}.legend span{display:flex;align-items:center;gap:3px}.dot{width:6px;height:6px;border-radius:50%}.green{background:var(--green)}.amber{background:var(--amber)}.red{background:var(--red)}.squad-toolbar{display:flex;gap:10px;margin-bottom:17px}.search{height:39px;background:white;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;padding:0 12px;flex:1;color:#999}.search input{border:0;outline:0;width:100%;padding:0 8px}.squad-toolbar select{border:1px solid var(--line);border-radius:8px;background:white;padding:0 12px}.squad-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:17px}.squad-summary>div{background:white;border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;align-items:center;gap:12px}.summary-icon{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;color:white;font-weight:800}.summary-icon.purple{background:var(--purple)}.squad-summary p{margin:0}.squad-summary b,.squad-summary small{display:block}.squad-summary b{font:800 20px Manrope}.squad-summary small{font-size:9px;color:#8b8594}.player-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.player-card{background:white;border:1px solid var(--line);border-radius:11px;padding:16px}.player-card-top{display:flex;gap:12px;align-items:center}.card-avatar{width:52px;height:52px;font-size:15px}.player-card h3{font:700 14px Manrope;margin:0}.player-card .role{font-size:10px;color:#8d8797}.status-tag{display:inline-flex;align-items:center;gap:5px;font-size:8px;font-weight:700;border-radius:10px;background:#f2f1f4;padding:4px 7px;margin-top:5px}.status-tag i{width:5px;height:5px;border-radius:50%}.number{margin-left:auto;color:#d9d5df;font:800 25px Manrope}.notes{font-size:10px;color:#7c7686;min-height:38px;border-top:1px solid var(--line);padding-top:10px;margin:12px 0}.card-actions{display:flex;gap:7px}.card-actions button{flex:1;border:1px solid var(--line);background:white;border-radius:7px;padding:7px;font-size:9px;font-weight:700;cursor:pointer}.card-actions .delete{flex:0;color:var(--red)}dialog{border:0;border-radius:14px;padding:0;width:min(580px,calc(100% - 24px));box-shadow:0 24px 80px #1c10334d}dialog::backdrop{background:#1d1634aa}.modal-head{padding:22px 24px 16px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line)}.modal-head h2{font:800 20px Manrope;margin:3px 0}.close{border:0;background:none;font-size:22px;cursor:pointer}.photo-edit{display:flex;gap:15px;align-items:center;padding:18px 24px}.photo-preview{width:72px;height:72px;border-radius:50%;background:#eee9f8 center/cover;display:grid;place-items:center;color:var(--purple);font:800 20px Manrope;position:relative;cursor:pointer}.photo-preview img{display:none;width:100%;height:100%;object-fit:cover;border-radius:50%}.photo-preview i{position:absolute;right:0;bottom:0;background:var(--purple);color:white;border-radius:50%;width:21px;height:21px;display:grid;place-items:center;font-size:9px}.photo-edit strong,.photo-edit small{display:block}.photo-edit small{color:#928c9b;font-size:9px}.upload-btn{display:inline-block;color:var(--purple);font-weight:700;font-size:10px;margin-top:7px;cursor:pointer}.form-grid{padding:0 24px 18px;display:grid;grid-template-columns:1fr 90px;gap:13px}.form-grid label{font-size:10px;font-weight:700}.form-grid input,.form-grid select,.form-grid textarea{display:block;width:100%;border:1px solid #ddd9e3;border-radius:7px;padding:9px;margin-top:5px;outline:none}.form-grid input:focus,.form-grid textarea:focus{border-color:var(--purple)}.form-grid .full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:14px 24px;background:#faf9fb;border-top:1px solid var(--line)}.modal-actions .close{font-size:12px}.toast{position:fixed;right:25px;bottom:25px;background:#1e1930;color:white;padding:11px 17px;border-radius:8px;opacity:0;transform:translateY(12px);transition:.2s;z-index:100}.toast.show{opacity:1;transform:none}@media(max-width:900px){.app-shell{grid-template-columns:72px 1fr}.sidebar{padding:22px 10px}.brand>span:last-child,.nav-item span:not(.icon),.nav-item b,.sidebar-foot{display:none}.brand{justify-content:center;padding:0 0 25px}.nav-item{justify-content:center}.workspace{grid-template-columns:minmax(450px,1fr) 210px}.topbar{padding:0 20px}.player-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:680px){.app-shell{display:block}.sidebar{position:fixed;left:-240px;width:220px;transition:.2s}.sidebar.open{left:0}.brand>span:last-child,.nav-item span:not(.icon),.nav-item b,.sidebar-foot{display:block}.nav-item{justify-content:flex-start}.mobile-menu{display:block}.topbar{height:70px;padding:0 12px;justify-content:flex-start;gap:12px}.topbar h1{font-size:17px}.topbar-logo{height:22px}.eyebrow{font-size:7px}.header-actions{margin-left:auto}.saved-status,.header-actions .secondary span,.header-actions .primary{display:none}.header-actions .secondary{padding:9px}.view{padding:14px 10px}.match-card{grid-template-columns:1fr 1fr;padding:13px}.match-main{grid-column:1/-1;border-right:0;border-bottom:1px solid var(--line);padding:0 0 11px;margin-bottom:11px}.match-meta{padding:0 8px;border:0}.match-meta:last-child{display:none}.workspace{display:flex;flex-direction:column;gap:10px}.pitch-panel{order:1}.bench-panel{order:2}.pitch-toolbar{overflow:auto;height:53px}.pitch-toolbar .tool span{display:none}.pitch-wrap{padding:8px}.pitch{max-height:none}.bench-list{grid-template-columns:repeat(2,1fr);max-height:200px}.squad-toolbar{flex-wrap:wrap}.search{flex-basis:100%}.squad-toolbar select{flex:1;min-width:0}.squad-summary{grid-template-columns:repeat(2,1fr);gap:7px}.squad-summary>div{padding:10px}.player-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr 75px}.tactic-tabs-wrap{overflow:auto}.pitch-player{width:50px}.player-token{width:40px;height:40px}}
@media print{.sidebar,.topbar,.tactic-tabs-wrap,.bench-panel,.pitch-toolbar,.pitch-hint{display:none!important}.app-shell{display:block}.view{display:none!important;padding:0}.view.active{display:block!important}.export-all .view{display:block!important}.export-all #squadView{break-before:page;padding-top:15px}.match-card{box-shadow:none;margin-bottom:12px}.workspace{display:block;margin:0}.pitch-panel{border:0}.pitch-wrap{padding:0;background:white}.pitch{height:75vh;width:auto;max-height:none;margin:auto;-webkit-print-color-adjust:exact;print-color-adjust:exact}.squad-toolbar,.card-actions{display:none}.player-grid{grid-template-columns:repeat(3,1fr)}body{background:white}}

/* Pizarra avanzada: rival y anotaciones */
@media(min-width:1101px){.workspace{grid-template-columns:210px minmax(500px,1fr) 210px;gap:12px}}
.opponent-bench{border-top:3px solid #252733}.opponent-bench .bench-avatar{background-color:#252733;color:#ffbd35}.pitch-player.rival .player-token{background-color:#20232b;border-color:#ffbd35}.pitch-player.highlighted:before{content:"";position:absolute;width:68px;height:68px;left:-5px;top:-11px;border-radius:50%;background:#f6c34466;border:2px solid #f6c344;z-index:-1;animation:pulse 1.8s infinite}@keyframes pulse{50%{transform:scale(1.08);opacity:.72}}#arrows path{marker-end:url(#arrowHead)!important}#graphics circle{fill:#f6c34422;stroke:#f6c344;stroke-width:8}#graphics path{marker-end:none!important}.pitch-text{position:absolute;z-index:8;transform:translate(-50%,-50%);background:#fff;color:#201650;padding:5px 9px;border-radius:5px;font-weight:800;font-size:11px;box-shadow:0 2px 6px #0005;cursor:pointer;max-width:140px;text-align:center}.rival-header-card{background:#262834;color:white;border-radius:11px;padding:17px 20px;margin-bottom:16px;display:flex;align-items:center;gap:14px}.rival-header-card h2,.rival-header-card p{margin:2px 0}.rival-header-card p{color:#aeb0ba;font-size:10px}.rival-badge{width:46px;height:46px;border:2px solid #ffbd35;color:#ffbd35;border-radius:50%;display:grid;place-items:center;font:800 18px Manrope}@media(max-width:680px){.opponent-bench{order:3}}
.rival-colors{margin-left:auto;display:flex;gap:12px}.rival-colors label{font-size:8px;color:#bdbec7;font-weight:700;letter-spacing:.08em}.rival-colors input{display:block;width:42px;height:28px;border:1px solid #ffffff44;border-radius:5px;background:none;padding:2px;margin-top:5px;cursor:pointer}.pitch-player.sub-selected:before{content:"SALE";position:absolute;left:50%;top:-25px;transform:translateX(-50%);background:#d74650;color:white;border-radius:8px;padding:2px 6px;font-size:7px;font-weight:800}.sub-badge{position:absolute;z-index:10;transform:translate(-50%,-50%);background:#fff;border-radius:16px;padding:4px 7px;box-shadow:0 3px 8px #0006;font-size:13px;font-weight:900;display:flex;gap:2px}.sub-badge .in{color:#18a567}.sub-badge .out{color:#dc4f57}.substitution-tool.active{background:#e9f7f0!important;color:#16865a!important}@media(max-width:680px){.rival-colors{width:100%;margin:9px 0 0}.rival-header-card{flex-wrap:wrap}}
.pitch-player.rival .player-token{background-color:var(--rival-primary,#20232b);border-color:var(--rival-secondary,#ffbd35)}

/* Acceso con clave y sincronización */
.auth-overlay{position:fixed;inset:0;z-index:200;background:linear-gradient(160deg,#21065f,#31098c 55%,#4b16b7);display:grid;place-items:center;padding:20px}
.auth-overlay.hidden{display:none}
.auth-card{background:white;border-radius:16px;padding:34px 30px;width:min(420px,100%);text-align:center;box-shadow:0 30px 80px #10052f66}
.auth-crest{width:56px;height:64px;background:var(--purple);color:white;border-radius:50% 50% 48% 48%/32% 32% 68% 68%;display:grid;place-items:center;margin:0 auto;font:800 16px Manrope;box-shadow:inset 0 0 0 3px #6030c6}
.auth-card h1{font:800 24px Manrope;margin:14px 0 6px}
/* El h1 de la pantalla de acceso ya no lleva texto sino el logo de la app. Se
   reserva la altura para que la tarjeta no pegue un salto mientras applyBrand()
   asigna el src, que ocurre al final de app.js. */
.auth-card h1.auth-logo{margin:0 0 14px;min-height:52px;display:grid;place-items:center}
.auth-card h1.auth-logo img{display:block;width:min(230px,78%);height:auto;max-width:none}
.auth-card>p{color:#746f82;font-size:12px;margin:0 0 18px}
#authForm{display:grid;gap:10px}
#authForm input{border:1px solid #ddd9e3;border-radius:9px;padding:12px;text-align:center;font-weight:700;outline:none}
#authForm input:focus{border-color:var(--purple)}
#authForm .btn{padding:12px}
.auth-error{color:var(--red);font-size:11px;font-weight:700;min-height:14px;margin:8px 0 0}
.auth-hint{color:#9a94a5;font-size:10px;margin:14px 0 0}
.text-btn.light{color:#c9bce8;padding:12px 0 0;display:block;width:100%;text-align:left}
.text-btn.light:hover{color:white}

/* ===== Ficha de jugador: la cabecera y los botones quedan siempre a la vista ===== */
dialog[open]{display:flex;max-height:92vh;max-height:92dvh;overflow:hidden}
#playerForm,#callForm,#clubForm,#goalForm,#trainingForm,#trainingShareForm{display:flex;flex-direction:column;width:100%;min-height:0}
.modal-head,.photo-edit,.modal-actions{flex:0 0 auto}
.form-grid,.modal-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.modal-actions{padding-bottom:calc(14px + env(safe-area-inset-bottom))}

/* ===== Ajustes de móvil ===== */
@media(max-width:680px){
  /* La ficha se apila en una columna: el desplegable "Estado" ya no queda cortado */
  .form-grid{grid-template-columns:1fr;gap:12px;padding:0 18px 16px}
  .modal-head,.photo-edit{padding-left:18px;padding-right:18px}
  .modal-actions{padding-left:18px;padding-right:18px}
  /* 16px evita que iOS haga zoom al enfocar un campo y deje la pantalla descuadrada */
  input,select,textarea{font-size:16px}
  .form-grid input,.form-grid select,.form-grid textarea{padding:11px}
  .form-grid textarea{min-height:88px}
  .photo-edit{gap:12px}
  .photo-preview{width:60px;height:60px;font-size:17px}
  /* "Lugar" ya no se oculta: el partido se puede completar entero desde el móvil */
  .match-card .match-meta:last-child{display:block}
  .match-card{grid-template-columns:1fr 1fr}
  .versus input{width:auto;flex:1}
  /* Objetivos táctiles utilizables con el dedo */
  .card-actions button{padding:11px 8px;font-size:11px}
  .card-actions .delete{min-width:44px}
  .bench-player{padding:10px}
  .bench-list{max-height:260px}
  .text-btn{padding:16px 0}
  .squad-toolbar .btn.primary{padding:12px 14px}
  /* Indicador de sincronización visible: hace falta saber si se guardó en la nube */
  .saved-status{display:flex;margin-right:0}
  .saved-status #syncLabel{display:none}
  .saved-status.warn #syncLabel{display:inline;font-size:10px;color:var(--amber)}
}

/* En tablet la barra lateral se reduce a iconos y ocultaba el pie entero: sin él
   no había forma de descargar una copia ni de cambiar de clave. Se deja el pie
   con solo los iconos. Por debajo de 680px la barra vuelve a ser un cajón
   completo, así que ahí sí se ven las etiquetas. */
/* ===== Escudo del club =====
   Sustituye a las formas dibujadas con CSS (.crest, .auth-crest, .mini-crest).
   object-fit:contain para que un escudo de cualquier proporción no se deforme. */
.crest-img{display:block;height:46px;width:auto;max-width:46px;object-fit:contain;flex:none}
/* .auth-crest-img se retiró con el escudo del club de la pantalla de acceso:
   ahí manda la marca de la app, no la del cliente. El escudo sigue en la barra
   lateral, en el marcador y en la tarjeta de partido con .crest-img/.mini-crest-img. */
.mini-crest-img{height:30px;width:auto;max-width:30px;object-fit:contain;flex:none}
.brand{cursor:pointer}
.club-edit{display:flex;gap:16px;align-items:center;padding:18px 0 6px}
.club-preview{width:82px;height:82px;flex:none;border-radius:12px;background:#f4f2f8;display:grid;place-items:center;position:relative;cursor:pointer;padding:8px}
.club-preview img{max-width:100%;max-height:100%;object-fit:contain}
.club-preview i{position:absolute;right:-4px;bottom:-4px;background:var(--purple);color:white;border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:10px;font-style:normal}
.club-edit strong,.club-edit small{display:block}
.club-edit small{color:#928c9b;font-size:9px;margin-top:2px}
.club-edit .text-btn{display:block;padding:8px 0 0;font-size:10px}
.club-fields{padding-top:6px}

/* ===== Convocatoria ===== */
.close-call,.close-club{border:0;background:none;font-size:22px;cursor:pointer;color:inherit}
.modal-actions .close-club{font-size:12px}
.modal-scroll{padding:0 24px 18px}
.call-fields,.club-fields{display:grid;grid-template-columns:1fr 120px;gap:13px;padding:16px 0 4px}
.call-fields label,.club-fields label{font-size:10px;font-weight:700}
.call-fields .full,.club-fields .full{grid-column:1/-1}
.call-fields input,.club-fields input{display:block;width:100%;border:1px solid #ddd9e3;border-radius:7px;padding:9px;margin-top:5px;outline:none}
.call-fields input:focus,.club-fields input:focus{border-color:var(--purple)}
.call-list-head{display:flex;align-items:center;justify-content:space-between;margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.call-list-head b{color:var(--purple)}
.call-list-head .text-btn{padding:4px 9px;font-size:10px}
.call-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #f2f0f5;cursor:pointer}
.call-row input{width:17px;height:17px;flex:none;accent-color:var(--purple);cursor:pointer}
.call-num{width:22px;text-align:right;color:#aaa4b3;font:800 11px Manrope;flex:none}
.call-row strong{flex:1;min-width:0;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.call-tag{display:inline-flex;align-items:center;gap:5px;flex:none;font-size:8px;font-weight:700;border-radius:10px;background:#f2f1f4;color:#7c7686;padding:4px 8px}
.call-tag i{width:5px;height:5px;border-radius:50%}
.call-preview-label{display:block;margin:18px 0 7px}
#callPreview{width:100%;border:1px solid #ddd9e3;border-radius:8px;padding:12px;font:12px/1.55 'DM Sans',sans-serif;color:var(--ink);resize:vertical;outline:none;background:#fbfafc}
#callPreview:focus{border-color:var(--purple)}
@media(max-width:680px){
  .modal-scroll{padding:0 18px 16px}
  .call-fields,.club-fields{grid-template-columns:1fr;gap:12px}
  .club-edit{gap:13px}
  .club-preview{width:68px;height:68px}
  .call-row{padding:11px 0}
  .call-row input{width:20px;height:20px}
  /* El textarea a 16px evita que iOS haga zoom al tocarlo */
  #callPreview{font-size:16px;line-height:1.5}
}

/* La tarjeta de partido pasa de 4 a 5 celdas al añadir HORA. Envuelto en
   min-width para no pisar el apilado en móvil, que se define más arriba. */
@media(min-width:681px){
  .match-card{grid-template-columns:2fr repeat(4,1fr)}
  .match-main,.match-meta{padding:0 14px}
  .match-main{padding-left:0}
}

@media(max-width:900px) and (min-width:681px){
  .sidebar-foot{display:block;border-top:1px solid #462581;padding:14px 0 0}
  .sidebar-foot .season,.sidebar-foot .coach{display:none}
  .text-btn.light{text-align:center;font-size:17px;padding:11px 0 0}
  .text-btn.light span{display:none}
}

/* ===== Menú contextual del jugador (clic derecho / pulsación larga) ===== */
.ctx-menu{position:fixed;z-index:150;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 44px #1c103340;padding:6px;min-width:178px;max-height:82vh;overflow-y:auto;display:flex;flex-direction:column}
.ctx-menu.hidden{display:none}
.ctx-menu button{border:0;background:none;text-align:left;padding:11px 12px;border-radius:7px;font:600 13px 'DM Sans',sans-serif;color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:11px}
.ctx-menu button:hover{background:#f3f0fa;color:var(--purple)}
.ctx-menu .ic{width:18px;text-align:center;font-size:14px}

/* ===== Marcador y goles: local a la izquierda, visitante a la derecha ===== */
.scoreboard{background:#fff;border:1px solid var(--line);border-radius:14px;margin-top:12px;box-shadow:0 4px 16px #27134d0f;overflow:hidden}
.score-head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;padding:15px 20px;background:linear-gradient(180deg,#faf9fc,#fff)}
.score-team{display:flex;align-items:center;gap:10px;min-width:0}
.score-team.home{justify-content:flex-end}
.score-team.away{justify-content:flex-start}
.score-name{font:800 13px Manrope;letter-spacing:.03em;text-transform:uppercase;color:#2c2740;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.score-crest{width:30px;height:30px;object-fit:contain;flex:none}
.score-badge{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;font:800 11px Manrope;background:var(--rp,#20232b);color:var(--rs,#ffbd35);box-shadow:inset 0 0 0 2px var(--rs,#ffbd35)}
.score-num{flex:none;display:flex;align-items:center;gap:9px;background:#201a34;border-radius:12px;padding:8px 17px}
.score-num b{font:800 24px Manrope;line-height:1;color:#fff;min-width:15px;text-align:center}
.score-num i{font-style:normal;color:#7c7599;font-weight:700}
.score-goals{display:grid;grid-template-columns:1fr 1px 1fr;padding:14px 14px 16px}
.goal-divider{background:linear-gradient(#fff0,var(--line) 14%,var(--line) 86%,#fff0)}
.goal-col{list-style:none;margin:0;padding:0;display:grid;gap:11px;align-content:start}
.goal-col.home{text-align:right;padding-right:15px}
.goal-col.away{text-align:left;padding-left:15px}
.g-row{position:relative}
.g-main{display:flex;align-items:center;gap:7px;font-weight:700;font-size:12.5px;color:#241f38}
.goal-col.home .g-main{justify-content:flex-end}
.goal-col.away .g-main{justify-content:flex-start}
.g-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g-ball{font-size:13px;flex:none}
.g-assist{font-size:10px;color:#948e9d;margin-top:2px}
.g-del{position:absolute;top:-1px;border:0;background:none;color:#cfc9d8;font-size:15px;line-height:1;cursor:pointer;padding:2px;opacity:0;transition:opacity .15s}
.goal-col.home .g-del{left:-3px}
.goal-col.away .g-del{right:-3px}
.g-row:hover .g-del{opacity:1}
.g-del:hover{color:var(--red)}
.score-hint{color:#948e9d;font-size:10px;text-align:center;padding:16px;margin:0}
@media(max-width:680px){
  .score-head{padding:13px 14px;gap:9px}
  .score-name{font-size:11px}
  .score-crest,.score-badge{width:26px;height:26px}
  .score-num{padding:7px 13px;gap:7px}
  .score-num b{font-size:21px}
  .score-goals{padding:12px 10px 14px}
  .goal-col.home{padding-right:11px}
  .goal-col.away{padding-left:11px}
  .g-del{opacity:1;color:#dcb3b6}
}
@media print{
  .ctx-menu{display:none!important}
  .scoreboard{box-shadow:none}
  .g-del,.score-hint{display:none!important}
}

/* ===== Entrenamientos ===== */
.training-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.training-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column}
.training-card-top{display:flex;align-items:flex-start;gap:10px}
.training-card-top h3{font:800 16px Manrope;margin:0 0 4px}
.tr-date{font-size:10px;color:#6f6980;font-weight:700}
.tr-date.muted{color:#b3aec0}
.tr-meta{margin-left:auto;flex:none;font-size:9px;font-weight:700;color:var(--purple);background:#eee9f8;border-radius:9px;padding:4px 9px;white-space:nowrap}
.tr-notes{font-size:11px;color:#6f6980;margin:11px 0 0;line-height:1.45}
.tr-stations{display:grid;gap:9px;margin-top:12px}
.tr-station{border:1px solid var(--line);border-radius:9px;padding:10px 11px;background:#fbfafc}
.tr-station-head{display:flex;align-items:center;gap:8px}
.tr-station-head strong{font-size:12px}
.tr-count{flex:none;font-size:9px;font-weight:800;color:var(--purple);background:#eee9f8;border-radius:8px;padding:2px 7px}
.tr-station p{font-size:10px;color:#83808f;margin:5px 0 0;line-height:1.4}
.tr-players{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.tr-chip{font-size:10px;font-weight:700;background:#fff;border:1px solid #e2def0;color:#3f3a52;border-radius:20px;padding:3px 9px}
.tr-empty{font-size:10px;color:#a49fb1;margin:6px 0 0;font-style:italic}
.tr-actions{display:flex;gap:7px;margin-top:14px}
.tr-actions button{flex:1;border:1px solid var(--line);background:#fff;border-radius:7px;padding:9px;font-size:10px;font-weight:700;cursor:pointer}
.tr-actions button:hover{border-color:#bca9e1}
.tr-actions .delete{flex:0;color:var(--red);min-width:40px}

/* Editor de entrenamiento */
.training-fields{display:grid;grid-template-columns:1fr 150px;gap:13px;padding:16px 0 6px}
.training-fields label{font-size:10px;font-weight:700}
.training-fields .full{grid-column:1/-1}
.training-fields input,.training-fields textarea{display:block;width:100%;border:1px solid #ddd9e3;border-radius:7px;padding:9px;margin-top:5px;outline:none;font:inherit;resize:vertical}
.training-fields input:focus,.training-fields textarea:focus{border-color:var(--purple)}
.stations-head{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin-top:8px;padding-top:12px}
.stations-head b{color:var(--purple)}
.stations-head .text-btn{padding:0;font-size:11px}
#stationsList{display:grid;gap:12px;margin-top:12px}
.station-block{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fbfafc}
.station-top{display:flex;gap:8px;align-items:center}
.station-name{flex:1;min-width:0;border:1px solid #ddd9e3;border-radius:7px;padding:8px;font-weight:700;outline:none}
.station-name:focus{border-color:var(--purple)}
.station-del{flex:none;border:0;background:none;color:var(--red);font-size:18px;line-height:1;cursor:pointer;padding:4px 8px}
.station-notes{display:block;width:100%;border:1px solid #ddd9e3;border-radius:7px;padding:8px;margin-top:8px;outline:none;font:inherit;resize:vertical}
.station-notes:focus{border-color:var(--purple)}
.mini-eyebrow{font-size:8px;font-weight:700;letter-spacing:.12em;color:#9a94a5;margin:11px 0 6px}
.chip-row{display:flex;flex-wrap:wrap;gap:6px}
.pchip{border:1px solid #ddd9e3;background:#fff;color:#5f5a70;border-radius:20px;padding:5px 11px;font-size:11px;font-weight:700;cursor:pointer}
.pchip:hover{border-color:#bca9e1}
.pchip.on{background:var(--purple);border-color:var(--purple);color:#fff}
#trainingPreview{width:100%;border:1px solid #ddd9e3;border-radius:8px;padding:12px;font:12px/1.55 'DM Sans',sans-serif;color:var(--ink);resize:vertical;outline:none;background:#fbfafc}
#trainingPreview:focus{border-color:var(--purple)}
@media(max-width:680px){
  .training-list{grid-template-columns:1fr}
  .training-fields{grid-template-columns:1fr}
  #trainingPreview{font-size:16px}
}
@media print{.tr-actions{display:none!important}}

/* ===== Modo LIVE: partido en directo ===== */
.live-bar{margin-top:12px}
.live-bar:empty{display:none}
.live-setup{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;display:flex;align-items:center;gap:16px;box-shadow:0 4px 16px #27134d0f}
.live-setup-info{flex:1;min-width:0}
.live-eyebrow{font-size:9px;font-weight:800;letter-spacing:.14em;color:var(--purple)}
.live-setup-info small{display:block;color:#7c7686;font-size:10px;margin:3px 0 8px}
.live-lens{display:flex;gap:6px;flex-wrap:wrap}
.live-len{border:1px solid #ddd9e3;background:#fff;color:#5f5a70;border-radius:8px;padding:6px 11px;font-weight:800;font-size:12px;cursor:pointer}
.live-len.on{background:var(--purple);border-color:var(--purple);color:#fff}
.btn-live-start{flex:none;border:0;border-radius:12px;padding:15px 26px;font:800 15px Manrope;letter-spacing:.03em;color:#fff;background:linear-gradient(135deg,#1ca56c,#12965f);cursor:pointer;box-shadow:0 8px 22px #12965f55}
.btn-live-start:hover{filter:brightness(1.06)}
.live-run{background:#1b1630;color:#fff;border-radius:14px;padding:12px 16px;display:flex;align-items:center;gap:16px;box-shadow:0 6px 20px #14092e40}
.live-bar.running .live-run{background:linear-gradient(135deg,#241a3d,#3a1568)}
.live-clock-wrap{display:flex;align-items:center;gap:10px;flex:none}
.live-dot{width:10px;height:10px;border-radius:50%;background:#6c6482;flex:none}
.live-dot.on{background:#ff5a5f;animation:livePulse 1.4s infinite}
@keyframes livePulse{0%{box-shadow:0 0 0 0 #ff5a5f88}70%{box-shadow:0 0 0 9px #ff5a5f00}100%{box-shadow:0 0 0 0 #ff5a5f00}}
.live-clock{font:800 26px Manrope;line-height:1;letter-spacing:.02em}
.live-over{font:800 12px Manrope;color:#ffb54a;margin-left:6px}
.live-half{display:block;font-size:10px;color:#b8b0d0;font-weight:700;margin-top:2px}
.live-controls{margin-left:auto;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.live-controls .btn.secondary{background:#2f2748;border:1px solid #43395f;color:#e7e2f5}
.live-controls .btn.secondary:hover{background:#392f57}
.live-controls .live-lens{margin-right:4px}
.live-controls .live-len{background:#2f2748;border-color:#43395f;color:#e7e2f5}
.live-controls .live-len.on{background:#fff;color:var(--purple);border-color:#fff}
.player-token .live-min{position:absolute;left:-9px;top:-4px;background:#1ca56c;color:#fff;font:800 8px Manrope;padding:1px 4px;border-radius:8px;white-space:nowrap;box-shadow:0 2px 5px #0006}
.g-min{font-size:9px;color:#a49fb1;font-weight:800;flex:none}

/* Acciones rápidas dentro del menú contextual */
.ctx-events{border-top:1px solid var(--line);margin-top:4px;padding-top:6px}
.ctx-sep{font-size:8px;font-weight:800;letter-spacing:.12em;color:#a49fb1;padding:2px 10px 6px}
.ctx-ev-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.ctx-ev{border:0;background:#f6f4fb;border-radius:7px;padding:8px;font:700 11px 'DM Sans',sans-serif;color:#3f3a52;cursor:pointer;display:flex;align-items:center;gap:6px;text-align:left}
.ctx-ev span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ctx-ev:hover{background:#ece7f8;color:var(--purple)}

/* Informe */
#reportForm{display:flex;flex-direction:column;width:100%;min-height:0}
.r-score{display:flex;align-items:center;justify-content:center;gap:14px;padding:16px 24px 4px;font:700 13px Manrope}
.r-score b{flex:none;font:800 26px Manrope;background:#201a34;color:#fff;border-radius:10px;padding:4px 14px}
.r-score span{flex:1;text-align:center;color:#3a3550;text-transform:uppercase;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.r-status{text-align:center;font-size:10px;font-weight:700;color:#948e9d;margin-bottom:4px}
.r-block{border-top:1px solid var(--line);padding:12px 24px}
.r-block h4{font:800 11px Manrope;letter-spacing:.06em;text-transform:uppercase;color:var(--purple);margin:0 0 9px}
.r-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.r-list li{display:flex;align-items:center;gap:8px;font-size:12px}
.r-list li.tr-empty{color:#a49fb1;font-style:italic}
.r-min{font:800 11px Manrope;color:#948e9d;min-width:30px;flex:none}
.r-side{width:7px;height:7px;border-radius:50%;flex:none}
.r-side.own{background:var(--purple)}
.r-side.rival{background:#20232b;box-shadow:inset 0 0 0 2px #ffbd35}
.r-goals i{color:#948e9d;font-style:normal;font-size:10px}
.r-minutes li{justify-content:space-between}
.r-min-val{font:800 12px Manrope;color:var(--purple)}
.r-events li{align-items:flex-start;flex-direction:column;gap:4px}
.r-evs{display:flex;flex-wrap:wrap;gap:5px}
.r-ev{font-size:10px;font-weight:700;background:#f4f2f8;border-radius:8px;padding:2px 7px;color:#4a4557}
@media(max-width:680px){
  .live-setup{flex-direction:column;align-items:stretch;gap:12px}
  .btn-live-start{width:100%;padding:16px}
  .live-run{flex-wrap:wrap}
  .live-controls{margin-left:0;width:100%;justify-content:flex-start}
}
@media print{.live-bar{display:none!important}}

/* ===== Zonas del campo, eventos de equipo e informe por zonas ===== */

/* Menú de pulsación larga: nombre, pestañas Ofensivo/Defensivo y rejilla de eventos */
.ctx-name{font:800 12px Manrope;color:var(--purple);padding:6px 10px 4px;text-transform:uppercase;letter-spacing:.04em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:230px}
.ctx-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:2px 0 6px;background:#f2eff9;border-radius:8px;padding:3px}
.ctx-tab{border:0;background:none;border-radius:6px;padding:8px 4px!important;font:800 11px 'DM Sans',sans-serif;color:#6d6684;cursor:pointer;justify-content:center}
.ctx-tab.on{background:#fff;color:var(--purple);box-shadow:0 1px 4px #2b118a1f}
.ctx-ev-grid{display:grid;grid-template-columns:1fr;gap:4px;max-width:246px}
.ctx-ev{border:0;background:#f6f4fb;border-radius:7px;padding:9px 10px!important;font:700 11.5px 'DM Sans',sans-serif;color:#3f3a52;cursor:pointer;display:flex;align-items:center;gap:9px;text-align:left;min-height:44px}
.ctx-ev i{font-style:normal;font-size:15px;width:19px;text-align:center;flex:none}
.ctx-ev span{display:block;min-width:0;overflow:hidden}
.ctx-ev span small{display:block;font-size:9px;font-weight:600;color:#8c8698;margin-top:1px}
.ctx-ev:hover{background:#ece7f8;color:var(--purple)}

/* Selector de zona: un solo componente para jugador, equipo y correcciones */
.zone-pick{width:246px;max-width:88vw}
.zp-head{padding:2px 4px 8px}
.zp-title{display:block;font:800 12px Manrope;color:var(--purple)}
.zp-head small{display:block;font-size:10px;color:#8c8698;margin-top:2px;line-height:1.3}
.zp-field{background:#eef4f0;border:1px solid #cfe0d6;border-radius:10px;padding:7px 7px 3px;position:relative}
.zp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.zg-cell{border:1px solid #cfe0d6!important;background:#fff!important;border-radius:7px;min-height:48px;min-width:44px;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;padding:4px 2px!important}
.zg-cell b{font:800 13px Manrope;color:#22303a}
.zg-cell i{font-style:normal;font-size:8px;font-weight:700;color:#7d8b84;text-transform:uppercase;letter-spacing:.03em}
.zg-cell.now{border-color:var(--purple)!important;box-shadow:inset 0 0 0 1px var(--purple)}
.zg-cell:hover{background:#e6f3ec!important}
.zg-cell.flash{background:var(--purple)!important;border-color:var(--purple)!important}
.zg-cell.flash b,.zg-cell.flash i{color:#fff}
.zp-goal{display:block;text-align:center;font:800 8px Manrope;color:var(--purple);letter-spacing:.12em;padding:5px 0 3px}
.zp-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:7px}
.zp-skip,.zp-cancel{border:1px solid var(--line)!important;background:#fff!important;border-radius:7px;padding:11px 6px!important;font:700 11px 'DM Sans',sans-serif;color:#6d6684;cursor:pointer;justify-content:center;text-align:center}
.zp-skip:hover,.zp-cancel:hover{background:#f3f0fa!important;color:var(--purple)}

/* Botón y panel de eventos de equipo: fuera del flujo del jugador */
.team-fab{position:fixed;right:20px;bottom:20px;z-index:140;border:0;border-radius:30px;background:var(--purple);color:#fff;font:800 15px Manrope;min-width:56px;height:56px;padding:0 18px;box-shadow:0 10px 26px #2b118a4d;cursor:pointer;display:flex;align-items:center;gap:7px}
.team-fab span{display:none;font-size:13px}
.team-fab.wide span{display:inline}
.team-fab.hidden{display:none}
.team-fab:hover{background:var(--purple-2)}
.team-menu{position:fixed;right:20px;bottom:88px;z-index:150;width:292px;max-width:calc(100vw - 32px);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 46px #1c103340;padding:12px;max-height:76vh;overflow-y:auto}
.team-menu.hidden{display:none}
.tm-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.tm-close{border:0;background:none;font-size:20px;line-height:1;color:#8c8698;cursor:pointer;padding:0 2px}
.tm-help{font-size:10px;color:#8c8698;margin:0 0 9px}
.tm-ev{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px;margin-bottom:6px;display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;min-height:52px}
.tm-ev:hover{background:#f6f4fb;border-color:#d9d1ee}
.tm-ev i{font-style:normal;font-size:18px;flex:none}
.tm-ev span{flex:1;min-width:0}
.tm-ev strong{display:block;font:700 12.5px 'DM Sans',sans-serif;color:var(--ink)}
.tm-ev small{display:block;font-size:9.5px;color:#8c8698;margin-top:1px}
.tm-count{flex:none;min-width:38px;min-height:38px;display:grid;place-items:center;border-radius:9px;background:#f2eff9;color:var(--purple);font:800 15px Manrope;touch-action:none;user-select:none;-webkit-user-select:none}
.tm-rol{border-top:1px solid var(--line);margin-top:6px;padding-top:9px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.tm-rol>span{font-size:10px;font-weight:700;color:#8c8698}
.tm-rol-chips{display:flex;gap:4px}
.tm-rol-chip{border:1px solid #ddd9e3;background:#fff;color:#5f5a70;border-radius:7px;padding:7px 10px;font-weight:800;font-size:10.5px;cursor:pointer}
.tm-rol-chip.on{background:var(--purple);border-color:var(--purple);color:#fff}

/* Deshacer el último evento */
.undo-toast{position:fixed;left:50%;transform:translateX(-50%) translateY(14px);bottom:88px;z-index:160;background:#1e1930;color:#fff;border-radius:10px;padding:9px 9px 9px 15px;display:flex;align-items:center;gap:12px;font-size:12px;font-weight:600;max-width:calc(100vw - 28px);opacity:0;pointer-events:none;transition:.2s;box-shadow:0 12px 30px #14092e5c}
.undo-toast.show{opacity:1;pointer-events:auto;transform:translateX(-50%)}
.undo-toast span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.undo-toast button{border:0;background:#4b16b7;color:#fff;border-radius:7px;padding:9px 13px;font:800 11px 'DM Sans',sans-serif;cursor:pointer;flex:none}
.undo-toast button:hover{background:#5f22d8}
body.live-on .toast{bottom:88px}

/* Informe: campo, mapa de calor y tablas */
.rep-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.rep-score{min-width:0}
.rep-score-row{display:flex;align-items:center;gap:11px;font:700 14px Manrope}
.rep-crest{width:30px;height:30px;object-fit:contain}
.rep-score-row b{font:800 24px Manrope;background:#201a34;color:#fff;border-radius:9px;padding:3px 12px}
.rep-score small{display:block;font-size:10.5px;color:#948e9d;font-weight:700;margin-top:4px}
.rep-top-actions{display:flex;gap:7px;flex-wrap:wrap}
.rep-grid{display:grid;grid-template-columns:minmax(300px,400px) minmax(280px,1fr);gap:16px;align-items:start}
.rep-side{display:grid;gap:16px;align-content:start}
.rep-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px;box-shadow:0 4px 16px #27134d0d}
.rep-grid .rep-card{margin-bottom:0}
.rep-card-head{margin-bottom:10px}
.rep-card-head h3{font:800 16px Manrope;margin:2px 0 0}
.rep-metric-label{display:block;font-size:9px;color:#8c8698;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.rep-metric-label select{display:block;width:100%;margin-top:5px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;font-weight:700;color:var(--ink)}
.rep-filter-toggle{margin-top:8px;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px;font:700 11.5px 'DM Sans',sans-serif;color:#5f5a70;cursor:pointer;width:100%;text-align:left}
.rep-filter-toggle:hover{background:#f6f4fb;color:var(--purple)}
.rep-filters{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px;padding:11px;background:#faf9fd;border:1px solid var(--line);border-radius:10px}
/* display:grid gana al [hidden] del navegador, así que hay que decirlo aquí */
.rep-filters[hidden]{display:none}
.rep-filters label{display:block;font-size:9.5px;font-weight:700;color:#8c8698;letter-spacing:.06em;text-transform:uppercase}
.rep-filters select,.rep-filters input{display:block;width:100%;margin-top:4px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fff;font-weight:600;color:var(--ink)}
.rep-filters .text-btn{grid-column:1/-1;text-align:left;padding:2px 0}
.rep-note{grid-column:1/-1;margin:0;font-size:10px;color:#948e9d;line-height:1.4}
.rep-field-wrap{margin:14px auto 0;max-width:360px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.rep-empty{margin:0;padding:10px;text-align:center;font-size:11.5px;font-weight:700;color:#948e9d;background:#faf9fd}
.rep-legend{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:11px;justify-content:center}
.rep-scale{display:flex;border-radius:5px;overflow:hidden;border:1px solid var(--line)}
.rep-scale i{width:17px;height:12px;display:block}
.rep-scale-tag{font-size:9.5px;font-weight:700;color:#948e9d}
.rep-tot{font-size:10.5px;color:#6d6684;font-weight:600;width:100%;text-align:center}
.rep-tot b{color:var(--amber)}
.rep-hint{font-size:11px;color:#948e9d;margin:8px 0 0;line-height:1.4}
.rep-zone-detail{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.rz-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}
.rz-head strong{font:800 12px Manrope;color:var(--purple)}
.rz-head span{font-size:10px;color:#948e9d;font-weight:700}
.rz-list{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.rz-list li{display:flex;align-items:center;gap:7px;font-size:11.5px;background:#faf9fd;border-radius:8px;padding:7px 8px}
.rz-min{font:800 11px Manrope;color:#948e9d;min-width:26px;flex:none}
.rz-tipo{flex:1;min-width:0;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rz-quien{color:#6d6684;font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:90px}
.rz-zona{font:800 9.5px Manrope;color:var(--purple);background:#f0ecfa;border-radius:5px;padding:3px 5px;flex:none}
.rz-btn{border:1px solid var(--line);background:#fff;border-radius:7px;min-width:32px;min-height:32px;cursor:pointer;color:#6d6684;flex:none;font-size:13px}
.rz-btn:hover{background:#f3f0fa;color:var(--purple)}
.rz-btn.del:hover{background:#fdeced;color:var(--red);border-color:#f5c9cc}
.rz-edit{background:#faf9fd;border:1px solid var(--line);border-radius:10px;padding:10px;margin:5px 0}
.rz-edit .zone-pick{width:100%}

/* Panel de equipo */
.rt-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rt-col h4{font:800 10px Manrope;letter-spacing:.08em;text-transform:uppercase;color:var(--purple);margin:0 0 7px}
.rt-col ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.rt-col li{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;background:#faf9fd;border-radius:7px;padding:7px 8px;line-height:1.25}
.rt-col li b{font:800 14px Manrope;color:var(--purple);flex:none}
.rt-ratios{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.rt-ratios>div{background:#f4f2fb;border-radius:10px;padding:10px}
.rt-ratios span{display:block;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8c8698}
.rt-ratios b{display:block;font:800 22px Manrope;color:var(--purple);margin:3px 0 2px}
.rt-ratios small{display:block;font-size:9.5px;color:#6d6684;line-height:1.3}

/* Tabla individual: nombres escritos, columna de jugador fija y sin columnas vacías */
.rep-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:10px;border:1px solid var(--line);border-radius:10px}
.rep-table{border-collapse:separate;border-spacing:0;width:100%;font-size:11.5px}
.rep-table th,.rep-table td{padding:9px 10px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line)}
.rep-table thead th{background:#f6f4fb;font:800 9.5px Manrope;letter-spacing:.04em;text-transform:uppercase;color:#5f5a70}
.rep-table tbody th,.rep-table thead th:first-child{position:sticky;left:0;z-index:2;text-align:left;background:#fff;box-shadow:1px 0 0 var(--line)}
.rep-table thead th:first-child{background:#f6f4fb;z-index:3}
.rep-table tbody th{font:700 12px 'DM Sans',sans-serif;color:var(--ink);min-width:132px}
.rep-table tbody th small{display:block;font-size:9.5px;color:#948e9d;font-weight:600;margin-top:1px}
.rep-table tbody tr{cursor:pointer}
.rep-table tbody tr:hover th,.rep-table tbody tr:hover td{background:#faf9fd}
.rep-table td{font:800 13px Manrope;color:var(--purple)}
.rep-table td.cero{color:#c3bfcc;font-weight:600}

/* Resumen en texto y ficha del jugador */
.rs-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.rs-list li{font-size:11.5px;line-height:1.45;color:#3a3550;background:#faf9fd;border-radius:8px;padding:9px 10px;border-left:3px solid var(--purple)}
.rs-tot{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.rs-tot li{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;background:#faf9fd;border-radius:7px;padding:7px 9px}
.rs-tot b{font:800 14px Manrope;color:var(--purple)}
.st-block{padding:12px 24px;border-top:1px solid var(--line)}
.st-block:first-child{border-top:0}
.st-block h4{font:800 11px Manrope;letter-spacing:.06em;text-transform:uppercase;color:var(--purple);margin:0 0 9px}
.st-zonas{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;max-width:280px}
.st-z{border:1px solid #cfe0d6;border-radius:8px;padding:9px 4px;text-align:center}
.st-z b{display:block;font:800 16px Manrope;color:#22303a}
.st-z i{display:block;font-style:normal;font-size:8.5px;font-weight:800;color:#6d7d75;letter-spacing:.04em}

@media(max-width:900px){.rep-grid{grid-template-columns:1fr}}
@media(max-width:680px){
  /* Cuatro botones no caben en una fila sin sacar la página de la pantalla */
  .rep-top-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .rep-top-actions .btn{padding:12px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rep-filters{grid-template-columns:1fr}
  .rt-cols,.rt-ratios{grid-template-columns:1fr}
  .rep-card{padding:13px}
  .st-block{padding:12px 18px}
  .team-fab{right:16px;bottom:16px}
  .team-menu{right:12px;left:12px;width:auto;bottom:82px}
  .ctx-menu{max-width:calc(100vw - 16px)}
  /* Cuadrantes cómodos con el dedo, con el móvil en una mano */
  .zg-cell{min-height:56px}
  .zp-skip,.zp-cancel{padding:13px 6px!important}
}
@media print{
  .team-fab,.team-menu,.undo-toast,.rep-top-actions,.rep-filter-toggle,.rep-filters,.rz-btn{display:none!important}
  .rep-card{break-inside:avoid;box-shadow:none}
}

/* ===== Barra de herramientas de la pizarra: agrupada y sin cortes =====
   Antes era una fila fija de 11 botones. En tablet (768–1024px) el panel del
   campo se estrecha y la fila se salía: .pitch-panel{overflow:hidden} recortaba
   los últimos botones y no había forma de llegar a ellos. Ahora son seis
   controles —dos de ellos desplegables— y la fila envuelve con flex-wrap, así
   que a cualquier anchura se ve todo sin scroll ni recorte.
   Los desplegables van en position:fixed, colocados desde JS: es la única
   forma de que el overflow:hidden del panel no vuelva a cortarlos. */
.pitch-toolbar{height:auto;min-height:56px;flex-wrap:wrap;align-content:center;gap:6px;padding:7px 10px;overflow:visible}
.pitch-toolbar .tb-formation{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.pitch-toolbar select{min-height:44px}
/* 44px de lado mínimo: es el área táctil por debajo de la cual el dedo falla */
.tool{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;white-space:nowrap;position:relative}
.tool[disabled]{opacity:.35;cursor:default}
.tool[disabled]:hover{background:none;color:#746e7e}
.tool .t-ico{font-style:normal;font-size:15px;line-height:1}
.tool .t-caret{font-size:9px;opacity:.55;font-weight:400}
.tool-menu{position:relative;display:inline-flex}
.tool-menu.open .tool-trigger{background:#eee9f8;color:var(--purple)}
.tool-dropdown{position:fixed;z-index:60;min-width:196px;background:white;border:1px solid var(--line);border-radius:11px;padding:6px;box-shadow:0 14px 36px #1c103330;display:grid;gap:2px}
.tool-dropdown[hidden]{display:none}
.tool-option{display:flex;align-items:center;gap:11px;min-height:44px;width:100%;border:0;background:none;border-radius:8px;padding:0 12px;cursor:pointer;font:600 12px 'DM Sans',sans-serif;color:#3b3548;text-align:left}
.tool-option i{font-style:normal;font-size:16px;width:20px;text-align:center;color:var(--purple)}
.tool-option:hover{background:#f4f1fb}
.tool-option.on{background:#eee9f8;color:var(--purple)}
/* Herramienta fijada con pulsación larga o doble toque: se queda activa en vez
   de volver sola a "Mover". El punto y el borde la distinguen de "activa". */
.tool.pinned,.tool-option.pinned{box-shadow:inset 0 0 0 1.5px var(--purple)}
.tool.pinned:after{content:"";position:absolute;right:3px;top:3px;width:6px;height:6px;border-radius:50%;background:var(--purple)}
.tool-option.pinned{position:relative}
.tool-option.pinned:after{content:"FIJA";margin-left:auto;font-size:8px;letter-spacing:.08em;color:var(--purple)}
@media(min-width:601px){.pitch-toolbar .tool .t-name{display:inline}}
/* Por debajo de 600px sólo los desplegables conservan el nombre: es requisito
   que su botón principal muestre icono + herramienta activa. */
@media(max-width:600px){
  .pitch-toolbar .tool .t-name{display:none}
  .pitch-toolbar .tool-trigger .t-name{display:inline}
  .pitch-toolbar .tool{padding:8px;min-width:44px}
  .pitch-toolbar .tool-trigger{padding:8px 10px}
}
@media print{.tool-dropdown{display:none!important}}
/* El rectángulo comparte el aspecto del círculo: relleno translúcido y trazo
   ámbar del mismo grosor, para que las marcas se lean como una misma familia. */
#graphics rect{fill:#f6c34422;stroke:#f6c344;stroke-width:8}
/* La goma es un SVG en línea (no hay glifo ni emoji de goma que pegue con el
   resto de iconos): hereda el color del botón, incluido el rojo de .danger. */
.tool .t-ico svg{display:block}
.tool .t-ico:has(svg){display:flex;align-items:center}

/* ===== Tarjeta sobre el jugador =====
   Rectángulo en CSS y no un emoji: a 46px de ficha el emoji sale borroso y
   cambia de forma en cada sistema. Abajo a la izquierda, que arriba ya están
   el dorsal (derecha) y los minutos jugados (izquierda). */
.card-badge{position:absolute;left:-6px;bottom:-2px;width:11px;height:15px;border-radius:2px;border:1.5px solid #fff;box-shadow:0 2px 5px #0006;transform:rotate(-12deg);z-index:2}
.card-badge.yellow{background:#f5c518}
.card-badge.red{background:#dc2f38}

/* Selector de zona incrustado en el diálogo del gol: a lo ancho del modal y con
   los botones propios de la ficha (el diálogo ya tiene Cancelar y Guardar). */
.goal-zone{padding:0 24px 18px}
.goal-zone[hidden]{display:none}
.goal-zone .zone-pick{width:100%;max-width:none}

/* ===== Partidos jugados ===== */
.mp-lista{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.mp-fila{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;
         background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 15px;cursor:pointer}
.mp-fila:hover{border-color:var(--purple);box-shadow:0 4px 14px #31098c14}
.mp-fecha{font:700 12px 'DM Sans';color:var(--muted);white-space:nowrap}
.mp-equipos{min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mp-equipos b{font:700 14px 'DM Sans'}
.mp-equipos i{font-style:normal;font-size:10px;color:var(--muted);font-weight:700}
.mp-equipos small{flex-basis:100%;font-size:10.5px;color:var(--muted)}
.mp-res{font:800 19px Manrope;font-variant-numeric:tabular-nums;padding:4px 11px;border-radius:9px;white-space:nowrap}
.mp-res.gana{background:#e7f7ef;color:#0c6742}
.mp-res.pierde{background:#fdecec;color:#a61f2b}
.mp-res.empata{background:#f2f0f7;color:#4a4557}
.mp-acciones{display:flex;gap:5px}
.mp-btn{width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;color:var(--muted);font-size:14px}
.mp-btn:hover{border-color:var(--purple);color:var(--purple)}
.mp-btn.del:hover{border-color:var(--red);color:var(--red)}
/* Informe archivado */
.md-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.md-sello{font:700 10px Manrope;letter-spacing:.1em;color:var(--muted);background:#f2f0f7;padding:6px 11px;border-radius:99px}
.md-cabecera{text-align:center}
.md-marcador{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin:8px 0 4px}
.md-marcador b{font:700 16px 'DM Sans'}
.md-marcador em{font:800 30px Manrope;font-style:normal;font-variant-numeric:tabular-nums;color:var(--purple)}
.md-cabecera small{color:var(--muted);font-size:11.5px}
#matchDetail>section,#matchDetail>.rep-card{margin-bottom:14px}
@media (max-width:640px){
  .mp-fila{grid-template-columns:1fr auto;grid-template-areas:"fecha res" "equipos res" "acc acc";gap:6px 12px}
  .mp-fecha{grid-area:fecha}.mp-equipos{grid-area:equipos}.mp-res{grid-area:res;align-self:center}
  .mp-acciones{grid-area:acc;justify-content:flex-end;margin-top:4px}
}

/* ===== Vista 3D del campo =====
   Mismo ancho que .pitch, pero MÁS BAJA a propósito. El campo visto en
   perspectiva desde detrás de la portería es ancho y poco alto: en una caja
   10:14 el dibujo se queda en la franja central y sobra un tercio de gris
   arriba y abajo. Con 10:11 la cámara puede acercarse y el campo llena. La
   página se acorta al pasar a 3D, pero es la consecuencia de pulsar un botón,
   no un salto inesperado. */
.pitch-3d{width:min(100%,610px);aspect-ratio:10/11;position:relative;overflow:hidden;
          background:#e9e6ed;border-radius:2px;touch-action:none;box-shadow:0 10px 25px #1a402c33}
.pitch-3d[hidden]{display:none}
.pitch-3d canvas{display:block;width:100%;height:100%}
.pitch-wrap.en-3d .pitch{display:none}
.p3d-aviso{position:absolute;inset:0;margin:0;display:flex;flex-direction:column;align-items:center;
           justify-content:center;gap:7px;text-align:center;padding:24px;color:var(--muted);font-size:13px}
.p3d-aviso b{font:800 15px Manrope;color:var(--ink)}
.p3d-aviso small{max-width:38ch;line-height:1.5}
/* El botón no es una herramienta de dibujo: cuando está activo se enciende en
   morado, no en el ámbar de las marcas, para que se lea como "modo de vista". */
.tool.tool-3d .t-ico{font:800 11px Manrope;letter-spacing:.04em}
.tool.tool-3d.active{background:var(--purple);border-color:var(--purple);color:#fff}
@media print{.pitch-3d{display:none!important}.pitch-wrap.en-3d .pitch{display:block}}

/* ===================================================================
   MODO EN DIRECTO · pantalla completa
   Fondo oscuro y texto blanco: se lee a pleno sol y no deslumbra de
   noche. Sin scroll en ninguna de las dos pantallas: el alto se reparte
   con grid y los botones se estiran a lo que quede, nunca por debajo de
   los 96 px de alto ni de los 12 px de separación.
   =================================================================== */
/* Alto: 100dvh, no 100vh. En el móvil la barra de direcciones se recoge al
   desplazar y 100vh cuenta el alto SIN ella, así que la barra inferior queda
   por debajo del borde y "Deshacer" no se puede pulsar. */
.lm{position:fixed;top:0;left:0;right:0;bottom:0;height:100vh;height:100dvh;z-index:400;background:#0d1117;color:#fff;
    display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;
    font-family:'DM Sans',system-ui,sans-serif;
    padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
    -webkit-user-select:none;user-select:none;touch-action:manipulation}
.lm[hidden]{display:none}
body.lm-on{overflow:hidden}
body.lm-on .team-fab,body.lm-on .team-menu{display:none!important}
/* Los avisos viven fuera de la pantalla completa: sin esto se quedan detrás. */
body.lm-on .toast{z-index:420;bottom:96px}
body.lm-on .undo-toast{z-index:420}

/* --- Barra superior: reloj, contador, sincronización y equipo ---
   Todo puede encoger (min-width:0) menos los botones: en una pantalla de 360 px
   la suma de anchos naturales se sale, y sin esto lo que se salía se perdía
   detrás del borde por el overflow:hidden de la pantalla. */
.lm-top{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#151b25;border-bottom:1px solid #232c3a;min-height:56px;min-width:0}
.lm-top>*{min-width:0}
.lm-clock{display:flex;align-items:center;gap:9px;min-width:0}
.lm-time{display:flex;flex-direction:column;line-height:1.05;min-width:0}
.lm-time b{font:800 21px Manrope,sans-serif;font-variant-numeric:tabular-nums}
.lm-time span{font-size:9.5px;color:#8a97a8;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lm-minute{font:800 20px Manrope,sans-serif;color:#ffd166;background:#ffd1661f;border-radius:9px;padding:5px 9px;font-variant-numeric:tabular-nums}
.lm-mid{display:flex;align-items:center;gap:12px;margin-left:auto;flex:none}
.lm-count{display:flex;align-items:baseline;gap:5px}
.lm-count b{font:800 19px Manrope,sans-serif;color:#fff;font-variant-numeric:tabular-nums}
.lm-count span{font-size:10px;color:#8a97a8;font-weight:700}
.lm-sync{display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;color:#8a97a8}
.lm-sync i{width:11px;height:11px;border-radius:50%;background:#5b6675;flex:none;box-shadow:0 0 0 3px #ffffff0f}
.lm-sync[data-est="ok"] i{background:#22c55e}
.lm-sync[data-est="pend"] i{background:#f0a92c;animation:lm-late 1.1s infinite}
.lm-sync[data-est="off"] i{background:#6b7684}
@keyframes lm-late{50%{opacity:.35}}
.lm-right{display:flex;align-items:center;gap:7px;min-width:0;flex:0 1 auto}
.lm-more{display:none}   /* solo en móvil, ver más abajo */
/* Toggle Nosotros/Rival: persistente y fuera del flujo de registro, para no
   añadir una pulsación a cada evento. */
.lm-team{display:flex;align-items:center;gap:7px;border:2px solid #2f6df6;background:#2f6df61f;color:#dce8ff;
         border-radius:11px;padding:9px 13px;font:800 12px Manrope,sans-serif;letter-spacing:.05em;cursor:pointer;
         max-width:190px;min-width:0;white-space:nowrap;min-height:46px}
.lm-team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.lm-team i{width:10px;height:10px;border-radius:50%;background:#2f6df6;flex:none}
.lm-team.rival{border-color:#f0a92c;background:#f0a92c24;color:#ffe6bd}
.lm-team.rival i{background:#f0a92c}
.lm-ico{width:46px;height:46px;flex:none;border-radius:11px;border:1px solid #2b3547;background:#1c2431;
        color:#dbe3ec;font-size:18px;cursor:pointer;display:grid;place-items:center}
.lm-ico:active{background:#27313f}
.lm-ico.go{background:#1ca56c;border-color:#1ca56c;color:#fff}
.lm-ico.end{background:#2f6df6;border-color:#2f6df6;color:#fff}
.lm-ico:disabled{opacity:.35;cursor:default}

/* --- Cuerpo: una pantalla u otra, nunca las dos a la vez --- */
.lm-body{position:relative;min-height:0;display:grid}
.lm-p1,.lm-p2{min-height:0;display:grid;padding:12px}
.lm-p1[hidden],.lm-p2[hidden]{display:none}
.lm-p1{grid-template-rows:minmax(0,1fr) auto;gap:12px}

/* Rejilla de eventos: 2 columnas × 4 filas. Ataque a la izquierda (verde),
   defensa a la derecha (rojo), y el gol destacado sobre los dos bloques.
   Las filas son minmax(0,1fr), no minmax(96px,1fr): así reparten TODO el hueco
   disponible —que en vertical siempre da de sobra para los 96 px— y en una
   pantalla corta encogen en vez de salirse por abajo y perder un botón. */
.lm-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(4,minmax(0,1fr));gap:12px;min-height:0}
.lm-ev{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
       border:0;border-radius:16px;cursor:pointer;color:#fff;padding:8px;min-height:60px;
       font:800 clamp(15px,2.4vh,22px) Manrope,sans-serif;line-height:1.15;text-align:center;
       box-shadow:inset 0 -4px 0 #0003;transition:transform .06s;overflow:hidden}
.lm-ev i{font-size:clamp(18px,3vh,28px);font-style:normal;line-height:1}
.lm-ev:active{transform:scale(.97);filter:brightness(1.25)}
.lm-ev.of{background:#146c43}
.lm-ev.def{background:#8a2733}
.lm-ev.gol{background:linear-gradient(160deg,#f5b301,#e07a00);color:#221500;box-shadow:inset 0 -4px 0 #0000002e,0 0 0 3px #ffd16659}
.lm-ev.gol i{font-size:clamp(20px,3.4vh,32px)}

/* Córners: fila aparte, más bajos y con otro color. Se guardan de una sola
   pulsación, así que no pueden parecerse a los de dos pasos. */
.lm-corners{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:12px;border-top:2px dashed #2b3547}
.lm-corner{display:flex;align-items:center;justify-content:center;gap:9px;min-height:66px;border:2px solid #3d4b60;
           background:#1a2230;color:#dbe6f3;border-radius:14px;cursor:pointer;
           font:800 clamp(13px,1.9vh,17px) Manrope,sans-serif}
.lm-corner i{font-size:19px;font-style:normal}
.lm-corner:active{background:#243044;transform:scale(.97)}

/* Confirmación: menos de un segundo y por encima de la rejilla, sin tapar lo
   que haya que pulsar a continuación. */
.lm-flash{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:5;
          background:#22c55e;color:#04220f;font:800 14px Manrope,sans-serif;padding:11px 18px;border-radius:99px;
          box-shadow:0 10px 30px #0009;opacity:0;pointer-events:none;max-width:92%;
          white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lm-flash.on{animation:lm-flash .9s ease-out}
@keyframes lm-flash{0%{opacity:0;transform:translateX(-50%) scale(.9)}12%{opacity:1;transform:translateX(-50%) scale(1)}70%{opacity:1}100%{opacity:0}}

/* --- Pantalla 2: el campo en 3×3 --- */
.lm-p2{grid-template-rows:auto minmax(0,1fr);gap:10px}
.lmz-head{display:flex;align-items:center;gap:10px;min-width:0}
.lmz-head>div{min-width:0}
.lmz-head b{font:800 clamp(16px,2.6vh,23px) Manrope,sans-serif;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lmz-head small{display:block;font-size:11px;color:#8a97a8;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lmz-flip{margin-left:auto;border:1px solid #3d4b60;background:#1a2230;color:#cfdae8;border-radius:11px;
          padding:11px 13px;font:700 12px 'DM Sans',sans-serif;cursor:pointer;min-height:46px;white-space:nowrap}
.lmz-close{width:52px;height:52px;flex:none;border:0;border-radius:13px;background:#8a2733;color:#fff;font-size:28px;line-height:1;cursor:pointer}
.lmz-field{min-height:0}
/* El dibujo va en SVG estirado al hueco (solo líneas, que aguantan el estirado)
   y encima los nueve botones: así el texto no se deforma. */
.lmz-pitch{position:relative;height:100%;background:#14512f;border-radius:14px;overflow:hidden}
.lmz-svg{position:absolute;inset:0;width:100%;height:100%}
/* Círculo central en CSS y no en el SVG: aquel se estira al hueco y lo dejaría
   como una elipse, que es lo único del dibujo que delata la deformación. */
.lmz-circle{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;pointer-events:none;
            width:min(30%,120px);aspect-ratio:1;border:2px solid rgba(255,255,255,.55);border-radius:50%}
.lmz-grid{position:relative;height:100%;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:repeat(3,minmax(0,1fr))}
.lmz-cell{border:0;background:transparent;cursor:pointer;display:flex;align-items:flex-start;justify-content:flex-start;padding:8px;position:relative;z-index:2}
/* La fila de arriba baja su código: ahí está siempre la portería (la ámbar o la
   nuestra, según la orientación) y se pisaba con el rótulo del cuadrante. */
.lmz-cell:nth-child(-n+3){padding-top:26px}
.lmz-cell b{font:800 12px Manrope,sans-serif;color:#ffffffbf;letter-spacing:.06em;text-shadow:0 1px 3px #0006}
.lmz-cell:active{background:#ffffff26}
.lmz-cell.hit{background:#22c55ecc;animation:lm-hit .25s}
@keyframes lm-hit{0%{background:#ffffffdd}100%{background:#22c55ecc}}

/* --- Barra inferior: deshacer, con las últimas cinco a mano --- */
.lm-bottom{padding:10px 12px;background:#151b25;border-top:1px solid #232c3a}
.lm-undo{width:100%;min-height:54px;border:1px solid #3d4b60;background:#1c2431;color:#dbe6f3;border-radius:13px;
         font:800 14px Manrope,sans-serif;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;padding:0 14px}
.lm-undo span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lm-undo:active{background:#8a2733;border-color:#8a2733}
.lm-undo:disabled{opacity:.4;cursor:default}
.lm.paused .lm-time b{color:#f0a92c}

/* --- Hoja de controles del partido (móvil) --------------------------------
   Fin de parte, finalizar y salir no caben como iconos de 42 px en una barra
   que ya lleva reloj, minuto, contador, semáforo y el toggle de equipo. Se
   agrupan detrás de ⋯ y se presentan como filas grandes: son las tres acciones
   donde equivocarse cuesta más caro, así que ganan sitio, no lo pierden. */
.lm-sheet{position:absolute;inset:0;z-index:20;background:#0d1117d9;display:flex;align-items:flex-end;padding:14px}
.lm-sheet[hidden]{display:none}
.lm-sheet-card{width:100%;display:grid;gap:10px}
.lm-sheet-card button{display:flex;align-items:center;gap:12px;min-height:60px;padding:0 18px;cursor:pointer;
                      border:1px solid #3d4b60;background:#1c2431;color:#e8eef6;border-radius:14px;
                      font:800 15px Manrope,sans-serif;text-align:left}
.lm-sheet-card button i{font-size:20px;font-style:normal;width:24px;text-align:center;flex:none}
.lm-sheet-card button.end{background:#2f6df6;border-color:#2f6df6;color:#fff}
.lm-sheet-cancel{justify-content:center;background:transparent!important;border-color:#2b3547!important;color:#8a97a8!important;min-height:52px!important}

@media (max-width:820px){
  .lm-team{padding:9px 11px;max-width:150px;font-size:11px}
  .lm-count span{display:none}
  .lm-sync em{display:none}
  .lm-minute{font-size:18px;padding:4px 8px}
  .lm-time b{font-size:18px}
  .lm-ico{width:42px;height:42px;font-size:16px}
  .lm-p1,.lm-p2{padding:10px}
}
/* Los tres controles del reloj pasan a la hoja solo cuando de verdad no caben:
   por encima de 600 px sobra sitio para tenerlos sueltos, y una tablet no debe
   pagar un toque extra por un problema que es del móvil. */
@media (max-width:600px){
  #lmHalfBtn,#lmFinish,#lmExit{display:none}
  .lm-more{display:grid}
}
@media (max-width:430px){
  .lm-top{gap:6px;padding:6px 8px;min-height:52px}
  .lm-clock{gap:6px}
  .lm-time span{display:none}
  .lm-time b{font-size:16px}
  .lm-minute{font-size:17px;padding:3px 7px}
  .lm-mid{gap:8px}
  .lm-team{max-width:132px;padding:9px 10px;gap:6px;letter-spacing:0}
  .lm-ico{width:40px;height:40px}
  .lm-grid{gap:10px}
  .lm-corners{gap:10px;padding-top:10px}
  .lm-corner{gap:6px}
  .lmz-close{width:46px;height:46px;font-size:24px}
  .lmz-flip{padding:11px 10px;font-size:11px}
  .lmz-head small{display:none}
}
/* Móvil estrecho (360 px y menos): cae el mm:ss y se queda el minuto, que es el
   dato con el que se apunta. La pausa se sigue viendo porque el botón ▶ se pone
   verde y el minuto cambia a ámbar. */
@media (max-width:365px){
  .lm-time{display:none}
  .lm-top{gap:5px}
}
.lm.paused .lm-minute{color:#f0a92c;background:#f0a92c26}

/* Pantallas bajas: se aprieta el aire y la fila de córners, nunca los ocho
   botones de registro, que son los que se pulsan. */
@media (max-height:720px){
  .lm-p1,.lm-p2{padding:8px}
  .lm-p1{gap:10px}
  .lm-corners{gap:10px;padding-top:10px}
  .lm-corner{min-height:54px}
  .lm-bottom{padding:8px}
  .lm-undo{min-height:48px}
  .lm-top{min-height:52px;padding:6px 10px}
}
/* Móvil en apaisado: aquí no hay 96 px por fila para nadie. Se reparte lo que
   haya y se quitan los iconos antes que perder un botón fuera de pantalla. */
@media (max-height:480px){
  .lm-ev{font-size:13px;gap:2px}
  .lm-ev i{display:none}
  .lm-corner{min-height:44px;font-size:12px}
  .lm-undo{min-height:42px;font-size:13px}
  .lm-corners{padding-top:8px}
  .lm-sheet-card button{min-height:48px}
}

/* Gol sin goleador en el marcador: se apunta en directo sin preguntar quién y
   se le pone nombre después, con un toque sobre la fila. */
.g-row .g-main[data-assign]{cursor:pointer;border-radius:8px}
.g-row .g-main[data-assign]:hover{background:#f4f1fb}
.g-row.sin-asignar .g-name{color:var(--amber);border-bottom:1px dashed var(--amber)}

/* Informe: acción del rival y comparativa por partes. */
.rz-list .rz-rival .rz-quien{color:#b46b12;font-weight:700}
.rep-halves td small{display:block;font-size:9.5px;color:#8c8698;font-weight:700;margin-top:2px}
.rep-halves td.cero{color:#b9b4c4}
.rep-halves td.cero small{color:#c9c5d2}
.rep-halves .rh-tot{background:#f8f6fd;font-weight:800}
