/* Shared controls: long names, labels and native pickers may shrink inside grids. */
body{min-width:0}
.fields{grid-template-columns:minmax(0,1fr)}
.field,.password-field,.form-grid>*,.dialog-body,.dialog-body form,.dialog-body fieldset{min-width:0}
.field,.form-help,.form-error,.notice,.check-row>span,.consent-check span{overflow-wrap:anywhere}
.field input,.field select,.field textarea,.password-field input{max-width:100%}
.field select{text-overflow:ellipsis}
.check-row>span{min-width:0}
.check-row input{margin-right:0}
.form-actions>.btn,.dialog-body .btn,.avatar-upload .btn,.profile-invite .btn{max-width:100%;white-space:normal;line-height:1.5;text-align:center;overflow-wrap:anywhere}
.dialog-body code{white-space:normal;overflow-wrap:anywhere}
.dialog-body p,.dialog-body li{overflow-wrap:anywhere}
.public-card p,.public-caption,.public-contact p,.privacy-request-row strong{min-width:0;overflow-wrap:anywhere}
.privacy-panel>.panel-heading{flex-wrap:wrap;gap:12px}
.privacy-request-heading>.btn{max-width:100%;white-space:normal;line-height:1.5}
.public-leaders strong{max-width:45%;white-space:normal;overflow-wrap:anywhere}
.seat,.content:has(.manager-heading) .seating-panel .seat{min-width:0;min-height:48px;font-size:12px;line-height:1.5}
.seat>span:last-child{min-width:0;white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
.seat.reserved small{display:block;font-size:10px;line-height:1.4;color:var(--gold)}
.dialog-body input,.dialog-body select,.dialog-body textarea{scroll-margin-block:100px 24px}
.password-field input{padding-right:52px}
.password-field .icon-btn{width:44px;height:44px;right:2px;top:50%;transform:translateY(-50%)}

/* Keep the close control reachable even with a long tournament/player name. */
dialog{overscroll-behavior:contain;max-width:calc(100vw - 24px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px))}
.dialog-header>h2{min-width:0;overflow-wrap:anywhere;line-height:1.4}
.dialog-header>.icon-btn{width:44px;height:44px;flex:0 0 44px}
.dialog-body{max-width:100%}
.avatar-editor-header>div{min-width:0;overflow-wrap:anywhere}
.avatar-editor-header>.avatar-editor-close{flex:0 0 44px}
.avatar-editor-tools,.avatar-editor-footer{flex-wrap:wrap}
.avatar-editor-tools>button,.avatar-editor-footer>button{min-width:0;overflow-wrap:anywhere;line-height:1.5}
.avatar-editor-frame{max-width:100%}

/* A story of any length has one text scroller; navigation never shrinks away. */
.story-topline,.story-bars,.story-bottom{flex-shrink:0}
.story-copy{min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.story-copy:focus-visible{outline:2px solid var(--gold-light);outline-offset:-3px}
.story-copy h2,.story-copy p{overflow-wrap:anywhere}
.story-bottom>button{flex-shrink:0}

/* The desktop menu must remain reachable at laptop heights and browser zoom. */
@media(min-width:901px){
  .sidebar{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
  .sidebar>.brand,.sidebar>.nav-caption,.sidebar>.nav,.sidebar>.nav-separator,.sidebar>.sidebar-bottom{flex-shrink:0}
  .topbar-left,.topbar-actions,.topbar .user-link{min-width:0}
  .topbar .user-details{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar-actions>.icon-btn{flex-shrink:0}
}
@media(min-width:901px) and (max-width:1100px){
  .topbar-left>.separator,.topbar-left>.topbar-date{display:none}
  .topbar-actions{gap:14px}
}

/* Keep feedback in the viewport without turning long server messages into a wide box. */
.toast,.live-tournament-notice>strong,.live-tournament-notice>span{overflow-wrap:anywhere}
.toast-stack{max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain}

@media(max-width:900px){
  .topbar-left,.mobile-brand{min-width:0}
  .mobile-brand>img,.topbar-actions{flex-shrink:0}
  .mobile-brand>span{min-width:0}
  .sidebar .nav a{overflow-wrap:anywhere}
  .dialog-body .text-link,.notification-actions .text-link{min-height:44px;line-height:1.5;white-space:normal}
  .form-help,.form-error{line-height:1.75}
  .check-row{min-height:44px;gap:16px}
  .check-row strong{font-size:12px;line-height:1.5}
  .check-row small{font-size:12px;line-height:1.6}
  .auth-tabs>button{min-height:44px}
  body.mobile-app .toast-stack{max-height:calc(100dvh - 180px - env(safe-area-inset-bottom,0px))}
}
@media(max-width:600px){
  dialog:not(.story-dialog):not(.avatar-editor){max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
  .dialog-header{gap:12px;padding:16px}
  .dialog-body{padding:20px 16px}
  .form-actions{gap:10px}
  .form-actions>.btn{flex:1 1 150px;min-width:0}
  .avatar-editor-tools,.avatar-editor-footer{gap:8px}
}
@media(max-width:360px){
  .seats-grid{grid-template-columns:minmax(0,1fr)}
  .topbar-actions{gap:4px}
  .mobile-brand{gap:7px}
  .mobile-brand>span{font-size:14px;letter-spacing:.1px}
  .mobile-brand small{font-size:6px;letter-spacing:1px}
  .avatar-editor-header{padding-inline:16px}
  .avatar-editor-content{padding-inline:16px}
  .avatar-editor-footer{padding-inline:16px}
  .avatar-editor-tools>button,.avatar-editor-footer>button{padding-inline:8px;font-size:12px}
}

/* A keyboard or landscape viewport leaves too little height for nested scrollers. */
@media(max-height:500px){
  .dialog-header{padding-block:10px}
  .dialog-header h2{font-size:18px}
  .guest-merge-accounts,.guest-merge-tournaments,.finish-position-changes{max-height:none;overflow:visible}
  .story-view{padding-block:12px}
  .story-topline{margin-top:8px}
  .story-copy,.story-dialog.has-story-cta .story-copy{padding-block:14px}
  .story-copy h2{font-size:27px;margin:12px 0}
  .story-bottom{padding-bottom:0}
}
@media(prefers-reduced-motion:reduce){
  .mobile-nav-indicator,.mobile-nav-item,.mobile-nav-icon,.sidebar,.check-row input:after{transition:none}
  .toast{animation:none}
}

/* Tournament operations need predictable seat cards, even for long full names. */
.manager-grid,.manager-grid>.panel,.manager-grid .tables-grid,.manager-grid .poker-table,.manager-grid .seats-grid{min-width:0}
.manager-grid .tables-grid{align-items:start}
.manager-grid .poker-table-title{gap:10px}
.manager-grid .poker-table-title>small{flex:none;white-space:nowrap}
.content:has(.manager-heading) .seating-panel .seat{height:54px;min-height:54px;padding:6px;gap:6px;align-items:center;overflow:hidden;line-height:1.35}
.manager-grid .seat>.seat-number{flex:none}
.manager-grid .seat>.seat-number+span{min-width:0;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left}
.manager-grid .seat .person-identity{display:flex;min-width:0;width:100%;gap:5px}
.manager-grid .seat .person-identity .avatar{flex:0 0 25px}
.manager-grid .seat .person-identity-copy{display:block;min-width:0;flex:1;overflow:hidden}
.manager-grid .seat .person-identity-name{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;overflow-wrap:normal}
.manager-grid .seat .academy-status-badges{display:flex;flex-wrap:nowrap;max-width:100%;overflow:hidden;white-space:nowrap;gap:3px;margin-top:3px}
.manager-grid .seat .academy-status-badge,.manager-grid .seat .academy-status-coach{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;overflow-wrap:normal;line-height:1.2}
.manager-grid .seat.reserved .academy-status-badges{display:none}
.manager-grid .seat.reserved small{margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.manager-grid .panel-heading{flex-wrap:wrap;gap:12px}
.manager-grid .purchase-head{align-items:flex-start;flex-wrap:wrap;gap:8px 14px}
.manager-grid .purchase-head>strong{flex:1 1 150px}
.manager-grid .purchase-head>.gold{flex:none;white-space:nowrap}
.manager-training-summary{font-size:14px;line-height:1.7}

@media(max-width:600px){
  .manager-grid .tables-grid{grid-template-columns:minmax(0,1fr)}
  .manager-grid .seats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .manager-grid .poker-table{padding:13px 10px}
  .manager-grid .poker-table-title{font-size:14px}
  .manager-grid .poker-table-title>small{font-size:12px}
  .manager-grid .table-felt{padding:12px 5px;margin-bottom:10px}
  .manager-heading .action-row{gap:8px}
}

/* Desktop console: read from a working distance and use the page's main scroll. */
@media(min-width:901px){
  .content:has(.manager-heading){max-width:none;padding:28px 28px 40px;font-size:15px}
  .manager-heading{margin-bottom:24px}
  .manager-heading h1{font-size:36px}
  .manager-heading .eyebrow{font-size:11px;margin-bottom:10px}
  .manager-heading .role-select{font-size:14px;min-height:44px;padding:10px 12px}
  .manager-heading>.action-row>.btn{font-size:14px;min-height:44px}
  .manager-top{grid-template-columns:minmax(250px,0.8fr) minmax(0,2fr);gap:20px;margin-bottom:22px}
  .manager-clock{padding:22px 18px;display:flex;flex-direction:column;justify-content:center}
  .manager-clock .eyebrow{font-size:12px;line-height:1.6;letter-spacing:1.4px}
  .manager-clock .timer-digits{font-size:70px;margin:14px 0}
  .manager-clock .blinds-digits{font-size:32px}
  .content:has(.manager-heading) .manager-clock .small{font-size:14px}
  .manager-clock .clock-controls{margin-top:18px}
  .manager-clock .clock-controls .btn{min-height:46px;font-size:15px;padding:10px 14px}
  .manager-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
  .manager-stats .stat{padding:18px}
  .content:has(.manager-heading) .stat-top{font-size:13px;line-height:1.5}
  .manager-stats .stat-value{font-size:30px;margin-top:12px}
  .content:has(.manager-heading) .stat-sub{display:block;font-size:12px;line-height:1.5;margin-top:8px}
  .manager-tools{padding:14px;gap:12px}
  .manager-tools .action-row{gap:9px}
  .content:has(.manager-heading) .manager-tools .btn,.content:has(.manager-heading) .purchase-row .btn,.content:has(.manager-heading) .manager-player-panel .data-table .btn{font-size:14px;min-height:44px;padding:10px 13px;line-height:1.45}
  .manager-grid{grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}
  .manager-grid>.panel{padding:22px}
  .manager-grid .panel-heading,.manager-player-panel .panel-heading{margin-bottom:18px}
  .manager-grid .panel-heading h2,.manager-player-panel .panel-heading h2{font-size:25px}
  .manager-grid .panel-heading .btn,.manager-player-panel .panel-heading .btn{font-size:14px;min-height:44px}
  .manager-grid .tables-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none;overflow:visible;padding-right:0;gap:16px}
  .manager-grid>.panel:last-child{max-height:none;overflow:visible}
  .manager-grid .poker-table{padding:16px}
  .manager-grid .poker-table-title{font-size:16px;margin-bottom:12px}
  .manager-grid .poker-table-title small{font-size:13px}
  .manager-grid .table-felt{padding:14px 6px;font-size:11px;margin-bottom:12px}
  .manager-grid .seats-grid{gap:7px}
  .content:has(.manager-heading) .seating-panel .seat{font-size:14px;height:60px;min-height:60px;padding:8px}
  .manager-grid .seat .seat-number{font-size:12px;width:18px;height:22px}
  .manager-grid .seat .academy-status-badge,.manager-grid .seat .academy-status-coach{font-size:10px}
  .content:has(.manager-heading) .purchase-head{font-size:16px}
  .content:has(.manager-heading) .purchase-detail{font-size:14px;line-height:1.6;margin:10px 0 14px}
  .manager-grid .empty-state{font-size:14px;line-height:1.7}
  .manager-player-panel{padding:22px!important;margin-top:22px!important}
  .manager-player-panel .participant-search{font-size:14px}
  .manager-player-panel .participant-search input{font-size:16px}
  .content:has(.manager-heading) .manager-player-panel .data-table td{font-size:15px;padding:18px 12px}
  .content:has(.manager-heading) .manager-player-panel .data-table th{font-size:12px;padding:10px 12px 14px}
  .manager-player-panel .data-table .pill{font-size:11px;padding:6px 8px}
  .manager-player-panel .player-actions{gap:7px;min-width:240px}
}
@media(min-width:1600px){
  .manager-grid{grid-template-columns:minmax(0,1.8fr) minmax(360px,1fr)}
  .manager-top{grid-template-columns:300px minmax(0,1fr)}
  .manager-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
}
