/* League Access density refinements. Kept separate so the portal can evolve without
   changing the shared site layout rules. */
.portal-how-section{padding:20px 0}
.portal-how-details>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:8px;font-weight:800;color:var(--green);font-size:1rem;padding:8px 0}
.portal-how-details>summary::-webkit-details-marker{display:none}
.portal-how-details>summary::before{content:'+';display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--green);border-radius:50%;font-size:1rem;line-height:1}
.portal-how-details[open]>summary::before{content:'–'}
.portal-how-details[open]>summary{margin-bottom:14px}
.portal-how-details .portal-fineprint{margin-bottom:0}

body.portal-signed-in .portal-hero{padding:18px 0 14px}
body.portal-signed-in .portal-hero .eyebrow{display:none}
body.portal-signed-in .portal-hero h1{font-size:clamp(1.9rem,3vw,2.6rem);margin:0 0 4px;line-height:1}
body.portal-signed-in .portal-hero .lead{font-size:.95rem;margin:0}
body.portal-signed-in .portal-section{padding:18px 0}
body.portal-signed-in .portal-status{margin-top:8px}

.portal-manage-access,.portal-match-admin{padding:0!important;overflow:hidden}
.portal-manage-summary,.portal-match-admin-summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px;padding:14px 15px;font-weight:800;color:var(--green);font-size:1.05rem}
.portal-manage-summary::-webkit-details-marker,.portal-match-admin-summary::-webkit-details-marker{display:none}
.portal-manage-summary::before,.portal-match-admin-summary::before{content:'+';display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--green);border-radius:50%;font-size:1rem;line-height:1;flex:0 0 auto}
.portal-manage-details[open]>.portal-manage-summary::before,.portal-match-admin-details[open]>.portal-match-admin-summary::before{content:'–'}
.portal-manage-details[open]>.portal-manage-summary,.portal-match-admin-details[open]>.portal-match-admin-summary{border-bottom:1px solid var(--line)}
.portal-manage-count,.portal-match-admin-count{margin-left:auto;font-size:.86rem;font-weight:650;color:var(--muted)}
.portal-manage-body,.portal-match-admin-body{padding:0 15px 12px}
.portal-manage-body>.portal-activity-card{margin:8px 0 0;padding:12px}
.portal-manage-body>.portal-activity-card h3{margin-bottom:4px}
.portal-manage-body>.portal-activity-card .portal-summary-list{margin:4px 0}

.portal-match-admin-editor{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.portal-admin-match-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}
.portal-admin-stat-rows{display:grid;gap:8px;margin:8px 0}
.portal-admin-stat-row{display:grid;grid-template-columns:minmax(210px,1.6fr) repeat(5,minmax(66px,.45fr));gap:7px 9px;align-items:end;margin:0;padding:10px}
.portal-admin-stat-row .portal-field{margin:0}
.portal-admin-stat-row .portal-input{min-height:36px;padding:7px 9px}
.portal-admin-stat-row .portal-admin-wide{grid-column:span 3}
.portal-admin-stat-row>.portal-linkbtn{justify-self:start;align-self:end;margin-bottom:7px}
.portal-admin-note{margin-top:10px}
.portal-admin-message{min-height:1.2em;margin:6px 0}

@media(min-width:900px){
  .portal-dashboard.portal-executive-compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
  .portal-dashboard.portal-executive-compact>.portal-card{padding:15px}
  .portal-dashboard.portal-executive-compact>.portal-identity,
  .portal-dashboard.portal-executive-compact>.portal-section-label,
  .portal-dashboard.portal-executive-compact>.portal-inline-action,
  .portal-dashboard.portal-executive-compact>.portal-season-code,
  .portal-dashboard.portal-executive-compact>.portal-manage-access,
  .portal-dashboard.portal-executive-compact>.portal-contributions,
  .portal-dashboard.portal-executive-compact>.portal-match-admin{grid-column:1/-1}
  .portal-dashboard.portal-executive-compact>.portal-exec-queue-card{min-height:128px}
  .portal-dashboard.portal-executive-compact>.portal-exec-queue-card>p{margin:6px 0}
  .portal-dashboard.portal-executive-compact>.portal-match-night-tools{grid-column:1/-1}

  .portal-dashboard.portal-executive-compact>.portal-inline-action{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:12px;padding-bottom:12px}
  .portal-dashboard.portal-executive-compact>.portal-inline-action p{margin:0}
  .portal-dashboard.portal-executive-compact>.portal-match-night-tools .portal-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
  .portal-dashboard.portal-executive-compact>.portal-match-night-tools .btn{margin:0}
  .portal-dashboard.portal-executive-compact>.portal-season-code{display:grid;grid-template-columns:minmax(220px,1.25fr) auto minmax(260px,1fr) auto;gap:9px 14px;align-items:end}
  .portal-dashboard.portal-executive-compact>.portal-season-code>h3,
  .portal-dashboard.portal-executive-compact>.portal-season-code>.portal-inline-status{grid-column:1/-1}
  .portal-dashboard.portal-executive-compact>.portal-season-code>h3{margin-bottom:0}
  .portal-dashboard.portal-executive-compact>.portal-season-code>p.portal-fineprint{margin:0}
  .portal-dashboard.portal-executive-compact>.portal-season-code>strong{font-size:1.05rem;align-self:center;white-space:nowrap}
  .portal-dashboard.portal-executive-compact>.portal-season-code>.btn{margin:0;white-space:nowrap}
  .portal-dashboard.portal-executive-compact>.portal-season-code>.portal-field{margin:0}
  .portal-dashboard.portal-executive-compact>.portal-season-code>.portal-field .portal-input{width:100%;box-sizing:border-box}

  .portal-manage-body>.portal-subcard{margin:8px 0;padding:12px}
  .portal-manage-body .portal-field{margin:6px 0}
  .portal-manage-body .portal-input{min-height:38px;padding:8px 10px}

  .portal-manage-body>.portal-invite-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px;align-items:end}
  .portal-manage-body>.portal-invite-card>h3,
  .portal-manage-body>.portal-invite-card>p,
  .portal-manage-body>.portal-invite-card>.portal-inline-status{grid-column:1/-1;margin-bottom:2px}
  .portal-manage-body>.portal-invite-card>.btn{justify-self:start;margin-top:3px}

  .portal-manage-body>.portal-season-code-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:end}
  .portal-manage-body>.portal-season-code-card>h3,
  .portal-manage-body>.portal-season-code-card>p,
  .portal-manage-body>.portal-season-code-card>.portal-inline-status{grid-column:1/-1;margin-bottom:2px}
  .portal-manage-body>.portal-season-code-card>.btn{margin-bottom:6px}

  .portal-manage-body>.portal-user-access-card{display:grid;grid-template-columns:minmax(180px,.35fr) 1fr;gap:8px 14px;align-items:end}
  .portal-manage-body>.portal-user-access-card>.portal-match-head{grid-column:1/-1}
  .portal-manage-body>.portal-user-access-card>.portal-actions{align-self:center;margin-bottom:5px}
}

@media(max-width:899px){
  /* Long review contacts must not enlarge the phone's layout viewport. */
  .portal-dashboard{grid-template-columns:minmax(0,1fr)}
  .portal-dashboard>*{min-width:0;max-width:100%}
  .portal-access-request .portal-people-name,
  .portal-access-request .portal-people-cell{display:block;white-space:normal;overflow-wrap:anywhere}
  body.portal-signed-in .portal-hero{padding:14px 0 12px}
  .portal-how-section{padding:16px 0}
  .portal-manage-summary,.portal-match-admin-summary{padding:13px 14px}
  .portal-manage-body,.portal-match-admin-body{padding:0 12px 10px}
  .portal-admin-stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .portal-admin-stat-row .portal-admin-player,.portal-admin-stat-row .portal-admin-wide{grid-column:1/-1}
}

.portal-score-error{color:#b91c1c;font-weight:700}
.portal-submit-error{color:#b91c1c;font-weight:700;margin-top:8px;outline:none}
.portal-stats-details{margin:12px 0}.portal-stats-summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;font-weight:800;color:var(--green);padding:10px 0}.portal-stats-summary::-webkit-details-marker{display:none}.portal-stats-summary::before{content:'+';display:inline-grid;place-items:center;width:22px;height:22px;border:1px solid currentColor;border-radius:50%;line-height:1;flex:0 0 auto}.portal-stats-details[open]>.portal-stats-summary::before{content:'–'}.portal-stats-body{padding:0 0 4px}
.portal-stat-counts{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0}
.portal-stat-count{display:flex;align-items:center;gap:5px}
.portal-stat-count-label{font-weight:800;min-width:2ch}
.portal-stat-count select{width:auto;min-width:52px;padding:6px 22px 6px 8px}
.portal-report-history{margin-top:12px}
.portal-history-summary{cursor:pointer;list-style:none;font-weight:800;color:var(--green);padding:14px 15px}
.portal-history-summary::-webkit-details-marker{display:none}
.portal-history-body{padding:0 15px 12px}
.portal-history-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;background:transparent;border:1px solid var(--line);border-radius:6px;padding:10px 12px;margin:6px 0;cursor:pointer}
.portal-history-match{font-weight:700}
.portal-history-score{flex:1;text-align:center}
@media(max-width:899px){.portal-stats-summary{padding:12px 0}.portal-stats-body{padding-bottom:8px}}

/* League Access role ladder and compact executive review sections. */
.portal-locked-card{position:relative;background:#f3efe7;color:var(--muted);box-shadow:none;opacity:.78}
.portal-locked-card h3{color:#5d695f}
.portal-locked-pill{display:inline-flex;align-items:center;border:1px solid #b9b0a3;border-radius:999px;padding:4px 10px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#5d695f;background:#fffaf2}
.portal-dashboard>.portal-spare-review,.portal-dashboard>.portal-spare-review-locked,.portal-dashboard>.portal-previewing,.portal-dashboard>.portal-season-code-editor,.portal-dashboard>.portal-activity-card{grid-column:1/-1}
.portal-dashboard>.portal-team-registrations-card{grid-column:1/-1}
.portal-dashboard.portal-executive-compact>.portal-spare-review{grid-column:1/-1}
.portal-dashboard>.portal-how-details{grid-column:1/-1}
@media(min-width:900px){
  .portal-dashboard.portal-executive-compact>.portal-report-issue,
  .portal-dashboard.portal-executive-compact>.portal-report-history{grid-column:1/-1}
}

.portal-access-preview{min-width:min(260px,100%)}
.portal-access-preview .portal-label{margin-bottom:3px}
.portal-access-preview-select{min-height:38px;padding:7px 10px}
.portal-previewing{border-color:#d0ba70;background:#fff7df;box-shadow:none}
.portal-previewing p{margin:4px 0 0}

/* Keep the administrator role editor aligned with the full-width access panel. */
@media (min-width:900px) {
  .portal-dashboard.portal-executive-compact > .portal-role-editor { grid-column:1/-1; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor > .portal-field { display:inline-flex; flex-direction:column; vertical-align:bottom; width:min(100%, 310px); margin:6px 14px 8px 0; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor > .btn { display:block; margin:8px 0 0; }
}

/* Administrator dashboard: compact, aligned controls without empty grid columns. */
.portal-dashboard > .portal-role-editor { box-sizing:border-box; }
.portal-role-editor > h3 { margin:0 0 12px; }
.portal-role-editor > .portal-field { min-width:0; }
.portal-role-editor > .portal-field .portal-input { width:100%; box-sizing:border-box; }
.portal-role-editor > .portal-fineprint { margin:8px 0; }
.portal-manage-access .portal-manage-body { padding-top:14px; }
@media (min-width:900px) {
  .portal-dashboard.portal-executive-compact { gap:16px; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:18px; row-gap:10px; align-items:end; padding:20px 24px; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor > h3,
  .portal-dashboard.portal-executive-compact > .portal-role-editor > p { grid-column:1/-1; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor > .portal-field { display:flex; flex-direction:column; width:auto; margin:0; }
  .portal-dashboard.portal-executive-compact > .portal-role-editor > .btn { grid-column:1/-1; justify-self:start; margin:2px 0 0; }
  .portal-manage-body > .portal-user-access-card { grid-template-columns:minmax(220px,1fr) minmax(280px,2fr); }
}
@media (min-width:900px) and (max-width:1150px) {
  .portal-dashboard.portal-executive-compact > .portal-role-editor { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:899px) {
  .portal-role-editor { padding:16px; }
  .portal-role-editor > .portal-field { display:block; margin:10px 0; }
  .portal-role-editor > .btn { margin-top:10px; }
}
.portal-stat-team-status{margin:8px 0 12px;border-left:3px solid var(--green);padding-left:12px}
.portal-stat-team-status p{margin:4px 0}
.portal-stat-record-state{display:block;font-size:.82rem;font-weight:800;color:var(--green);margin-bottom:4px}
.portal-stat-record-state--changed,.portal-stat-record-state--draft{color:var(--muted)}
.portal-stat-existing-warning{border-left:3px solid var(--gold);padding:8px 12px;background:var(--paper);color:var(--ink);font-weight:700}
