.lineup-field{position:relative;isolation:isolate;aspect-ratio:1 / 1.1;container-type:inline-size;overflow:hidden;background:repeating-linear-gradient(0deg,#226449 0%,#226449 10%,#286e50 10%,#286e50 20%);border:1px solid #164433;box-shadow:inset 9px 0 #ffffff09,inset -9px 0 #ffffff09;color:#f5f4dc}
.lineup-field:before{content:'';position:absolute;inset:0 3%;border-inline:2px solid #d5eac35c;background:repeating-linear-gradient(0deg,transparent 0%,transparent calc(10% - 1px),#d5eac344 calc(10% - 1px),#d5eac344 10%);pointer-events:none}
.lineup-field:after{content:'';position:absolute;left:3%;right:3%;top:51%;border-top:1px dashed #ecf7858c;pointer-events:none}
.formation-markings span{position:absolute;left:4%;font:700 4cqw var(--display);color:#dae9ca33;transform:translateY(-50%)}
.formation-side{position:absolute;right:4%;font:7px var(--mono);letter-spacing:1.5px;opacity:.65}.formation-defense{top:2%}.formation-offense{top:52.2%}
.formation-player{position:absolute;z-index:1;left:calc(var(--x)*1%);top:calc(var(--y)*1%);transform:translate(-50%,-50%);width:12%;height:14%;padding:0;background:none;border:0;color:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;isolation:isolate}
.formation-player:before{content:'';position:absolute;left:15%;right:15%;height:13%;top:54%;border-radius:50%;background:#071e2670;z-index:-1}
.formation-player img{width:95%;height:70%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 2px 0 #071d2460)}
.formation-player>span{display:flex;flex-direction:column;max-width:100%;align-items:center;line-height:1;background:#102d29d9;padding:3px 4px 2px;border-bottom:2px solid #b8ed8a}
.formation-player.defense>span{border-color:#eebc7b}.formation-player b{font:600 max(8px,1.75cqw)/1 var(--mono);white-space:nowrap}.formation-player small{font:500 max(6px,1.65cqw)/1.2 var(--display);overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-top:2px;white-space:nowrap}
button.formation-player{cursor:pointer;min-height:44px}button.formation-player:hover,button.formation-player:focus-visible{background:#f0f88426;border-radius:8px;outline:2px solid #edf781;outline-offset:0}.formation-player.selected>span{background:#eef781;color:#102d29;border-color:#eef781}
.formation-kicker{display:flex;align-items:center;gap:12px;width:100%;padding:6px 12px;min-height:48px;background:#193b2f;color:#f1f0e4;border:0;text-align:left}.formation-kicker>span{font:9px var(--mono);color:#c7d7b9}.formation-kicker img{object-fit:contain;image-rendering:pixelated}.formation-kicker strong{font:600 19px var(--display)}.formation-kicker .formation-edit{margin-left:auto}
#roster-dialog{width:min(680px,96vw);scroll-padding-bottom:80px}#roster-dialog .dialog-header{padding:16px 20px}#roster-dialog .dialog-header h2{margin:0;font-size:32px}#roster-dialog .dialog-header .eyebrow{display:none}#roster-dialog .roster-toolbar{padding:12px 20px 0;gap:8px;flex-wrap:nowrap}#roster-dialog .roster-team-tabs{margin:12px 20px 0}#roster-dialog .roster-toolbar select{max-width:none;min-width:0;flex:1}.roster-secondary-actions{display:flex;gap:12px;align-items:center;white-space:nowrap}.roster-secondary-actions button{font-size:9px;min-height:38px}#roster-dialog .roster-instruction{margin:10px 20px;font-size:11px}#roster-dialog .roster-content{display:block;padding:0 20px 16px}#position-list{display:block}#roster-dialog #preset-note{display:none}#roster-dialog #roster-save-note{font:8px var(--mono);color:var(--muted);display:block;margin:8px 20px}#roster-dialog .lineup-save-form{margin:10px 20px}#roster-dialog .dialog-footer{padding:12px 20px;border-top:1px solid var(--line)}#roster-dialog .roster-footer-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:10px}#roster-dialog .roster-footer-actions button{min-height:48px;font:700 21px var(--display);justify-content:center;padding:10px 8px;text-align:center}
.pokemon-picker-dialog{width:min(650px,96vw)}.pokemon-picker-dialog .dialog-header{position:sticky;top:0;background:var(--paper);z-index:2;padding:14px 20px}.pokemon-picker-dialog h2{font-size:25px;margin:0}.pokemon-picker-dialog .pokemon-picker{padding:16px 20px}.pokemon-picker-dialog .picker-title{margin-bottom:12px}.pokemon-picker-dialog #catalogue-note,.pokemon-picker-dialog .ratings-download{display:none}.pokemon-picker-dialog .species-search{margin-top:0}.pokemon-picker-dialog .scout-status{display:none}.pokemon-picker-dialog .species-choice img{height:58px}.pokemon-picker-dialog .catalogue-controls{margin:10px 0}.pokemon-picker-dialog .species-choice{padding:7px}
.card-preview-dialog{width:min(580px,96vw);padding:0}.card-preview-dialog .dialog-header{padding:14px 18px;position:sticky;top:0;background:var(--paper);z-index:1}.card-preview-dialog h2{font-size:27px;margin:0}.card-preview-image{display:block;width:100%;height:auto;user-select:auto;-webkit-touch-callout:default}.card-preview-actions{position:sticky;bottom:0;background:var(--paper);padding:12px 16px;display:flex;flex-wrap:wrap;gap:10px;align-items:center;border-top:1px solid var(--line)}.card-preview-actions button{flex:1;min-height:44px;justify-content:center;font:700 20px var(--display)}.card-preview-actions p{width:100%;margin:0;font-size:11px;color:var(--muted)}.card-preview-status:empty{display:none}
@media(max-width:720px){#roster-dialog{width:100vw;max-width:100vw;max-height:100svh;height:100svh;margin:0;border:0}#roster-dialog .dialog-header{padding:13px 14px}#roster-dialog .dialog-header h2{font-size:29px}#roster-dialog .roster-team-tabs{margin:8px 14px 0}#roster-dialog .roster-toolbar{padding:8px 14px 0}#roster-dialog .roster-instruction{margin:8px 14px}#roster-dialog .roster-content{padding:0 10px 8px}#roster-dialog #roster-save-note{margin:6px 14px}#roster-dialog .dialog-footer{padding:10px 14px max(10px,env(safe-area-inset-bottom));position:sticky}#roster-dialog .roster-footer-actions button{font-size:19px}.roster-secondary-actions{gap:10px}.pokemon-picker-dialog{max-width:100vw;width:100vw;max-height:94svh;height:94svh;margin:auto 0 0}.pokemon-picker-dialog .pokemon-picker{padding:12px 16px}.pokemon-picker-dialog .dialog-header{padding:14px 16px}.card-preview-dialog{max-height:96svh}.formation-player small{display:none}.formation-player>span{padding:3px 4px}.formation-player img{height:76%}}
button.formation-player:active:not(:disabled){transform:translate(-50%,-50%) translateY(1px)}
.position-board .lineup-field{max-width:600px;margin:auto}.position-board>.formation-kicker{max-width:600px;margin:auto}.lineup-field .position-slot{gap:0;min-height:44px;padding:0;border:0;background:none;box-shadow:none;color:#f1f0e4}.lineup-field .position-slot.preview{outline:2px solid #eef781;border-radius:6px}.formation-open{font:24px var(--display);background:#ffffff15;border:1px dashed #c4d5b970;display:grid;place-items:center;border-radius:6px;width:65%;height:52%;margin-bottom:4px}.lineup-field .position-slot.empty:not(:disabled){background:none;border:0}.lineup-field .position-slot .position-rating{position:absolute;top:99%;margin:0}.lineup-field .position-slot .rating-star{width:7px;height:7px}.lineup-field .position-slot .rating-star.is-filled{color:#eef781}.position-slot.formation-kicker{flex-direction:row;min-height:48px;justify-content:flex-start;gap:12px;padding:6px 12px;border:0}.position-slot.formation-kicker img{width:36px;height:36px}.position-slot.formation-kicker>span{display:flex;gap:12px;align-items:center}.position-slot.formation-kicker .position-rating{margin-left:auto}.position-slot.formation-kicker small{font:600 19px var(--display)}.position-slot.formation-kicker .formation-open{width:32px;height:32px;margin:0}.position-slot.formation-kicker:active:not(:disabled){transform:translateY(1px)}
/* Free build starts with open positions; the picker uses the shared fit stars. */
.formation-player.empty:not(.selected)>span{background:#102d2980}.formation-player.special>span{border-color:#d8d7aa}.species-choice .position-rating{margin-top:7px;justify-content:center}.species-choice .position-rating-stars{gap:3px}.species-choice .rating-star{width:13px;height:13px}#roster-dialog .roster-footer-actions button:disabled{opacity:.4;cursor:default}.roster-secondary-actions button:disabled{opacity:.35;cursor:default}.pokemon-picker-dialog .dialog-header h2{font-size:24px}
#roster-team-rating{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:8px}
#roster-team-rating>span:first-child{font:10px var(--mono);letter-spacing:.6px}
