.modal-backdrop{position:fixed;inset:0;background:rgba(9,10,15,.4);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out)}.modal-backdrop.open{opacity:1;pointer-events:auto}.modal-container{background:var(--bg-primary);border:1px solid var(--border-strong);border-radius:var(--radius-2xl);width:100%;max-width:480px;position:relative;overflow:hidden;box-shadow:0 24px 50px rgba(0,0,0,.5);transform:scale(.95);transition:transform .3s var(--ease-out)}.modal-backdrop.open .modal-container{transform:scale(1)}.modal-container--recap{max-width:400px;max-height:calc(100vh - 40px);overflow-y:auto;background:#090a0f;border-color:var(--accent-yellow)}.modal-header{padding:var(--space-6);border-bottom:1px solid var(--border-default);display:flex;justify-content:space-between;align-items:center}.modal-title{font-size:var(--fs-2xl);margin:0}.modal-close{position:relative;background:var(--bg-elevated);border:none;color:var(--text-secondary);width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s var(--ease-out),color .2s var(--ease-out)}.modal-close::after{content:'';position:absolute;inset:-4px}.modal-close:hover{background:var(--border-strong);color:var(--text-primary)}.modal-close:active{transform:scale(.9)}.modal-body{padding:var(--space-6)}.squad-code{font-family:var(--font-mono);font-size:var(--fs-4xl);font-weight:var(--fw-bold);text-align:center;letter-spacing:var(--ls-wide);background:var(--bg-elevated);padding:var(--space-4);border-radius:var(--radius-lg);margin:var(--space-4) 0;border:1px solid var(--border-default)}.recap-card{aspect-ratio:9/16;background:linear-gradient(135deg,#ffb921,#ef4444);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;color:#fff}.recap-card::before{content:'';position:absolute;inset:0;background-image:url('data:image/svg+xml;utf8,<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"><circle cx="2" cy="2" r="1" fill="rgba(0,0,0,0.1)"/></svg>')}.recap-card-content{position:relative;z-index:1}.recap-value{font-family:var(--font-display);font-size:5rem;line-height:.9;text-shadow:0 10px 20px rgba(0,0,0,.3)}