/* Reach workspaces: compact identity, retained task views, cards, anchored actions.
   These assemblies replace dashboard composition; route controllers own data. */
.workbench { --workspace-bottom: 0px; position: relative; min-width: 0; }
.workbench:has(.workbench-actions) { padding-bottom: 80px; }
.workbench-back { display: inline-flex; align-items: center; min-height: 36px; margin-bottom: var(--sp-1); color: var(--muted); text-decoration: none; font-size: var(--fs-13); }
.workbench-top { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: var(--sp-2) var(--sp-4); }
.workbench-heading { grid-column: 1 / -1; display: flex; gap: var(--sp-3); align-items: center; justify-content: space-between; min-width: 0; margin: 0 0 var(--sp-2); }
.workbench-heading h1 { font-size: var(--fs-32); margin: 0; }
.workbench-heading .title-input { width: 100%; min-width: 0; font: var(--fw-heavy) var(--fs-28)/1.2 var(--font-display); padding: var(--sp-1) 0; border: 0; border-bottom: 1px solid transparent; border-radius: 0; background: transparent; }
.workbench-heading .title-input:focus { border-bottom-color: var(--text); }
.workbench-heading .page-actions { flex: none; position: relative; gap: var(--sp-2); }
.workbench-format { margin: 0; }
.workbench-format select { min-height: 44px; max-width: 220px; font-size: var(--fs-14); }
.workbench-count { display: flex; align-items: center; font-size: var(--fs-14); }
.workbench-count > span:last-child { margin-left: var(--sp-1); color: var(--muted); }
.task-views { display: flex; gap: var(--sp-5); min-height: 48px; margin: var(--sp-2) 0 var(--sp-3); border-bottom: 1px solid var(--line); overflow-x: auto; }
.task-views button { flex: none; min-height: 48px; padding: var(--sp-2) var(--sp-1); border: 0; border-radius: 0; background: transparent; color: var(--muted); font-size: var(--fs-14); }
.task-views button[aria-selected=true] { box-shadow: inset 0 -3px var(--text); color: var(--text); font-weight: var(--fw-heavy); }
.workspace-view-row { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-3); align-items: center; margin-block: var(--sp-4); padding-bottom: var(--sp-2); border-bottom: 1px solid var(--line); }
.workspace-view-row .task-views { flex: 1 0 auto; margin: 0; border: 0; }
.card-display { display: flex; flex: none; align-items: center; gap: var(--sp-2); margin-left: auto; }
.card-display-density { display: flex; border: 1px solid var(--line2); border-radius: var(--r-2); overflow: hidden; }
.card-display-density button { min-width: 44px; min-height: 44px; padding: var(--sp-1); border: 0; border-radius: 0; background: transparent; color: var(--muted); font-size: var(--fs-14); box-shadow: none; }
.card-display-density button + button { border-left: 1px solid var(--line); }
.card-display-density button[aria-pressed=true] { background: var(--action-bg); color: var(--ink); font-weight: var(--fw-heavy); }
.card-display-density button:focus-visible { outline-offset: -3px; }
.card-display > button { width: 46px; height: 46px; padding: 0; }
.card-display[hidden], .card-display-density[hidden] { display: none; }
@media (min-width: 561px) { .public-deck-workbench .card-display-density { display: none; } }
@media (min-width: 700px) { .card-display-density { display: none; } }
.workbench [role=tabpanel][hidden] { display: none; }
.deck-workspace { min-width: 0; }
.deck-workspace .list-head { margin: 0 0 var(--sp-3); }
.deck-workspace #builder-panel-analysis { display: grid; gap: var(--sp-5); }
.deck-workspace #builder-panel-analysis[hidden] { display: none; }
.deck-overview { margin-bottom: var(--sp-4); border-bottom: 1px solid var(--line); }
.deck-overview > summary { display: flex; align-items: center; gap: var(--sp-2); min-height: 48px; cursor: pointer; font-size: var(--fs-13); list-style: none; }
.deck-overview > summary::-webkit-details-marker { display: none; }
.deck-overview > summary::after { content: '+'; font-size: var(--fs-20); }
.deck-overview[open] > summary::after { content: '−'; }
#overview-value { margin-left: auto; color: var(--muted); text-align: right; }
.workbench-actions { position: fixed; z-index: calc(var(--z-chrome) - 1); inset-inline: 0; bottom: var(--workspace-bottom,0px); display: flex; justify-content: flex-end; gap: var(--sp-2); padding: var(--sp-3) max(var(--page-pad),calc((100% - var(--page-max)) / 2 + var(--page-pad))) max(var(--sp-3),env(safe-area-inset-bottom)); background: var(--bg); border-top: 1px solid var(--line); }
.workbench-actions > :is(button,a) { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2); }
.workbench-actions > .primary { min-width: 180px; }
/* A deck begins with its actual card faces. Partners get equal, unobscured space. */
.posters:has(.deck-shelf-item), .cards.catalog-cards { display: grid; grid-template-columns: repeat(auto-fill,minmax(min(100%,var(--shelf-card-min)),1fr)); gap: var(--sp-6) var(--sp-4); }
.deck-shelf-item { position:relative; align-self:start; display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--line2); border-radius: var(--r-4); background: var(--panel); }
.deck-shelf-item.has-partners { grid-column: span 2; }
.deck-shelf-faces { display: grid; grid-template-columns: minmax(0,1fr); gap: var(--sp-2); align-items: start; min-width: 0; padding: var(--sp-1); text-decoration: none; }
.has-partners .deck-shelf-faces { grid-template-columns: repeat(2,minmax(0,1fr)); }
.deck-shelf-faces > .cimg { width: 100%; aspect-ratio: var(--card-aspect); border-radius: var(--card-r); }
.deck-shelf-empty { display: grid; place-items: center; aspect-ratio: var(--card-aspect); border: 1px solid var(--line); border-radius: var(--card-r); background: var(--panel2); }
.deck-shelf-body { display: flex; flex-direction: column; min-width: 0; padding: var(--sp-3); }
.deck-shelf-heading { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-2); align-items: center; }
.deck-shelf-heading h3 { flex: 1 1 100%; margin: 0; font-size: var(--fs-16); line-height: 1.3; overflow-wrap: anywhere; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
.deck-shelf-heading h3 a { color: var(--text); text-decoration: none; }
.deck-shelf-heading h3 a::after { content:''; position:absolute; inset:0; border-radius:var(--r-4); }
.deck-shelf-item:has(a:focus-visible) { outline:var(--focus); outline-offset:var(--focus-offset); }
.deck-shelf-commander { margin: var(--sp-2) 0; color: var(--muted); font-size: var(--fs-13); line-height: 1.4; }
.deck-shelf-facts { display: flex; flex-wrap: wrap; gap: var(--sp-1) var(--sp-2); margin-block: var(--sp-1) 0; font-size: var(--fs-12); color: var(--muted); }
.deck-shelf-facts > span { min-width:0; overflow-wrap:anywhere; order:1; }
.deck-shelf-facts > .lead { order:0; flex:1 0 100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.deck-shelf-facts a { position:relative; z-index:1; }
.deck-shelf-facts:empty { display:none; }
.rail:has(.deck-shelf-item) { grid-auto-columns: min(var(--shelf-card-min),calc((100% - var(--sp-3)) / 2)); gap: var(--sp-3); align-items: start; }
.collection-workbench .collection-summary { display: grid; gap: var(--sp-4); margin: 0 0 var(--sp-5); padding: 0; background: transparent; border: 0; }
.inventory-actions { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.inventory-actions button { min-height: 44px; }
.collection-workbench .collection-filters { margin-bottom: var(--sp-3); }
.owned .owned-head { display: grid; grid-template-columns: 96px minmax(0,1fr); gap: var(--sp-4); align-items: center; }
.owned .owned-art { width: 100%; padding: 0; background: transparent; border: 0; }
.owned .owned-art .cimg { width: 100%; aspect-ratio: 488 / 680; }
/* Flat, compact editing groups keep collection controls directly available. */
.owned { gap:var(--sp-3); }
.owned .owned-sec { gap:var(--sp-2); margin:0; padding-top:var(--sp-2); border-top:1px solid var(--line); }
.owned-title-row { display:flex; align-items:start; gap:var(--sp-2); }
.owned-title-row h2 { flex:1; min-width:0; }
.owned-title-row .owned-close { flex:none; width:44px; height:44px; }
.owned-section-head { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-2); min-width:0; }
.owned-section-head h3 { margin:0; font-size:var(--fs-14); font-weight:var(--fw-semibold); line-height:var(--lh-snug); }
.owned-section-head button, .owned-quantity-controls > button { flex:none; min-height:44px; padding-inline:var(--sp-2); color:var(--muted); }
.owned-section-head button:hover, .owned-quantity-controls > button:hover { color:var(--text); }
.owned-quantity-controls { display:flex; flex:none; align-items:center; gap:var(--sp-2); }
.owned .owned-row, .owned .alloc-row { gap:var(--sp-2); min-height:44px; }
.owned .alloc-row > span:first-child { flex:1; }
.owned .alloc-row .sub { display:block; font-size:var(--fs-12); }
.owned .stepper { border-radius:var(--r-2); }
.owned .stepper.lg button { width:44px; height:44px; }
.owned .stepper.lg input { width:36px; height:44px; font-size:var(--fs-14); }
.owned-printing-fields { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); gap:var(--sp-2); }
.owned-pick { min-width:0; }
.owned-pick select { width:100%; min-width:0; min-height:44px; padding:var(--sp-2); text-overflow:ellipsis; }
.owned-storage-head { margin-top:var(--sp-1); }
.owned-note textarea { min-height:64px; }
@media(max-width:560px) { .owned-printing-fields { grid-template-columns:minmax(0,1fr); } }

.deck-identity { display: grid; grid-template-columns: 120px minmax(0,1fr); gap: var(--sp-5); align-items: start; }
.deck-identity:not(:has(.deck-identity-faces > button)) { grid-template-columns: minmax(0,1fr); }
.deck-identity-faces:empty { display: none; }
.deck-identity-faces { display: flex; gap: var(--sp-2); }
.deck-identity-faces button { min-width: 0; padding: 0; flex: 1; }
.deck-identity-faces .cimg { width: 100%; }
.deck-identity h1 { margin: 0 0 var(--sp-2); font-size: var(--fs-28); line-height: 1.15; }
.deck-identity .deck-meta-line { margin: var(--sp-1) 0; font-size: var(--fs-13); }
.deck-identity .deck-identity-status { margin: var(--sp-2) 0; font-size: var(--fs-12); }
.public-deck-panels .list-head { margin-bottom: var(--sp-3); }
.deck-details { display: grid; gap: var(--sp-5); }
.public-deck-actions > .menu { flex: none; }
.public-deck-actions > .menu > summary { min-height: 48px; min-width: 48px; }
.public-deck-actions .menu-panel > :is(button,a) { display: flex; min-height: 44px; width: 100%; }
@media (max-width: 560px) {
  .workbench { --workspace-bottom: var(--tabbar-h); }
  html.native-tabs .workbench { --workspace-bottom: var(--native-tab-h,0px); }
  .workbench-heading h1,.workbench-heading .title-input { font-size: var(--fs-24); }
  .builder-workbench > .workbench-back { display: none; }
  .workbench-heading .save-state { font-size: 0; }
  .workbench-heading .save-state.bad { font-size: var(--fs-12); }
  .workbench-actions > .primary { min-width: 0; flex: 1; }
  .workbench-actions { padding-bottom: var(--sp-3); }   /* it already sits above the tab bar, which clears the home indicator */
  .posters:has(.deck-shelf-item), .cards.catalog-cards { grid-template-columns: repeat(2,minmax(0,1fr)); gap: var(--sp-5) var(--sp-3); }
}
/* A short phone spends less on chrome so the first row of card faces is on screen without scrolling. */
@media (max-width: 560px) and (max-height: 700px) {
  .page:has(> .workbench) { padding-top: var(--sp-2); }
  .workbench-heading { margin-bottom: 0; }
  .workbench-heading h1, .workbench-heading .title-input { font-size: var(--fs-20); }
  .task-views { gap: var(--sp-4); min-height: 44px; margin: 0 0 var(--sp-2); }
  .task-views button { min-height: 44px; }
  .commander-disclosure { margin-bottom: var(--sp-1); }
  .workbench-actions { padding-top: var(--sp-2); padding-bottom: var(--sp-2); }
  .workbench-actions > :is(button,a) { min-height: 44px; }
  .workbench:has(.workbench-actions) { padding-bottom: 68px; }
}

.workbench-disclosure { margin: var(--sp-3) 0; border-bottom: 1px solid var(--line); }
.workbench-disclosure > summary { display: flex; align-items: center; min-height: 48px; cursor: pointer; color: var(--muted); font-size: var(--fs-14); }
.workbench-disclosure > summary::after { content: '+'; margin-left: auto; }
.workbench-disclosure[open] > summary::after { content: '−'; }
.workbench-disclosure > :not(summary) { margin-bottom: var(--sp-3); }
.workspace-routes { display: flex; gap: var(--sp-5); border-bottom: 1px solid var(--line); margin: var(--sp-2) 0 var(--sp-4); overflow-x: auto; }
.workspace-routes a { display: inline-flex; align-items: center; min-height: 48px; color: var(--muted); text-decoration: none; white-space: nowrap; font-size: var(--fs-14); }
.workspace-routes a[aria-current=page] { color: var(--text); box-shadow: inset 0 -3px var(--text); font-weight: var(--fw-heavy); }
.history-workbench,.assistants-workbench { max-width: 900px; }
.history-workbench .history-versions button { min-height: 80px; }
.assistants-workbench [role=tabpanel] > section { margin-top: var(--sp-5); }
.assistants-workbench :is(section,.assistant-setup) > :is(h2,h3,p,button) { margin-bottom:var(--sp-3); }
.assistants-workbench details > summary { display:flex; align-items:center; min-height:48px; border-bottom:1px solid var(--line); font-weight:var(--fw-semibold); cursor:pointer; list-style:none; }
.assistants-workbench details > summary::-webkit-details-marker { display:none; }
.assistants-workbench details > summary::after { content:'+'; margin-left:auto; }
.assistants-workbench details[open] > summary::after { content:'−'; }
.card-review-grid { list-style:none; display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:var(--sp-5) var(--sp-3); margin:var(--sp-4) 0; padding:0; }
.card-review-grid > li { display:flex; flex-direction:column; gap:var(--sp-1); min-width:0; font-size:var(--fs-13); overflow-wrap:anywhere; }
.card-review-grid > li > button { width:100%; padding:0; margin-bottom:var(--sp-2); }
.card-review-grid small { color:var(--muted); }
@media(max-width:560px) {
  .workspace-routes { gap: var(--sp-4); }
  .card-review-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

.page:has(> .workbench) { padding-top: var(--sp-4); }

.deck-identity-copy { min-width:0; display:grid; gap:var(--sp-1); align-content:start; }
.deck-identity-status { display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-2); }

/* Landscape phones need the identity and format on one row so cards stay visible. */
@media (min-width:561px) and (max-width:1000px) and (max-height:500px) {
  .topbar { padding-block:var(--sp-1); }
  .page:has(> .workbench) { padding-top:var(--sp-2); }
  .builder-workbench > .workbench-back { display:none; }
  .builder-workbench .workbench-top { grid-template-columns:minmax(0,1fr) 160px auto; align-items:center; }
  .builder-workbench .workbench-heading { grid-column:auto; margin:0; }
  .builder-workbench .title-input { font-size:var(--fs-20); }
  .builder-workbench .save-state:not(.bad) { font-size:0; }
  .builder-workbench .workbench-format select { width:100%; }
  .builder-workbench .workspace-view-row .task-views { margin-block:0; }
  .workbench-actions { padding-block:var(--sp-2); }
}

@media(max-width:700px) { .owned-id h2 { font-size:var(--fs-18); } }
@media(min-width:701px) { .owned .owned-head { display:contents; } }

/* Deck identity and format share one disclosure, leaving the card workspace above the fold. */
.builder-workbench .workbench-top { display: block; }
.deck-settings > summary { gap: var(--sp-2); }
.deck-settings #commander-summary { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deck-settings .workbench-count { margin-left: auto; flex: none; font-size: var(--fs-12); }
.deck-settings > summary::after { margin-left: 0; }
.deck-settings .workbench-format { display: flex; align-items: center; gap: var(--sp-3); padding-block: var(--sp-2); }
.deck-settings .workbench-format > span { color: var(--muted); font-size: var(--fs-13); }
@media (max-width: 560px) and (max-height: 700px) {
  main.page:has(> .builder-workbench) { padding-top: var(--sp-2); }
  .builder-workbench .deck-board .dg-group > h3 { margin-block: var(--sp-2); }
}

/* Keep card view controls within reach after the deck identity scrolls away. */
:is(.builder-workbench,.public-deck-workbench) > .workspace-view-row {
  position:sticky; top:var(--workspace-sticky-top,0px); z-index:calc(var(--z-chrome) - 2);
  background:var(--bg); padding-top:var(--sp-2);
}
.deck-format-button { display:inline-flex; align-items:center; gap:var(--sp-2); min-height:44px; padding:var(--sp-1) var(--sp-2); border:0; background:transparent; box-shadow:none; font-size:var(--fs-14); }
.deck-format-button .icon { width:14px; height:14px; color:var(--muted); }
.builder-title { flex:1; min-width:0; }
.builder-subtitle { display:flex; align-items:center; gap:var(--sp-3); color:var(--muted); }
.builder-subtitle .deck-format-button { padding-inline:0; color:var(--muted); }
.builder-subtitle .workbench-count { font-size:var(--fs-12); }
.commander-overview { display:grid; grid-template-columns:minmax(120px,180px) minmax(0,1fr); gap:var(--sp-4); align-items:start; margin-bottom:var(--sp-4); }
.commander-overview .leaders { display:flex; gap:var(--sp-3); min-width:0; }
.commander-overview .leader { display:grid; grid-template-columns:minmax(0,1fr); flex:1; min-width:0; width:100%; gap:var(--sp-2); }
.commander-overview .leader-face { grid-column:auto; grid-row:auto; max-width:180px; }
.commander-overview .leader figcaption { min-width:0; grid-column:auto; margin:0; }
.commander-overview .commander-name { display:flex; flex-wrap:wrap; align-items:center; gap:var(--sp-1); }
.commander-overview .commander-actions { display:flex; flex-wrap:nowrap; gap:var(--sp-1); width:max-content; margin-top:var(--sp-1); }
.commander-overview .commander-actions button { flex:none; min-height:44px; padding:var(--sp-1) var(--sp-2); border:1px solid var(--line); border-radius:var(--r-2); background:transparent; color:var(--muted); box-shadow:none; font-size:var(--fs-12); text-decoration:none; white-space:nowrap; }
.commander-overview .commander-actions button:is(:hover,:focus-visible) { background:var(--panel2); border-color:var(--line2); color:var(--text); }
.sticky-deck-identity { display:none; min-width:0; align-items:center; gap:var(--sp-2); }
.is-stuck .sticky-deck-identity { display:flex; flex:1; }
.sticky-deck-identity strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--fs-14); }
.sticky-commander-faces { display:flex; flex:none; gap:var(--sp-1); }
.sticky-commander-faces:empty { display:none; }
.sticky-commander-faces .cimg { width:28px; height:39px; border-radius:3px; }
.builder-workbench .is-stuck .task-views { flex:none; }
@media(max-width:700px) { .builder-workbench .is-stuck .sticky-deck-identity { flex-basis:100%; } .builder-workbench .is-stuck .task-views { flex:1 0 auto; } }
@media(max-width:560px) { .commander-overview .leaders { flex-direction:column; } .sticky-deck-identity { gap:var(--sp-1); } .sticky-deck-identity strong { font-size:var(--fs-12); } .sticky-commander-faces .cimg { width:22px; height:31px; } }
.commander-overview .leader-empty { flex:1; min-width:0; width:100%; }
.commander-overview:has(.leader:nth-child(2)), .commander-overview:has(.leader + .leader-empty), .commander-overview:not(:has(.leader)) { grid-template-columns:minmax(0,1fr); }
.commander-overview:not(:has(.leader)) #commander-stats { display:none; }
#commander-stats { min-width:0; display:grid; gap:var(--sp-4); padding-top:var(--sp-2); }
.commander-numbers { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-2); }
.commander-numbers > div { display:grid; gap:var(--sp-1); }
.commander-numbers strong { font-size:var(--fs-24); font-variant-numeric:tabular-nums; }
.commander-numbers span, .commander-curve > span { color:var(--muted); font-size:var(--fs-12); }
.commander-curve .curve { width:100%; height:64px; gap:var(--sp-1); margin-top:var(--sp-2); }
.commander-curve .curve > div { flex:1; width:auto; min-width:0; font-size:var(--fs-10); }
@media(max-width:380px) { .commander-overview { grid-template-columns:120px minmax(0,1fr); gap:var(--sp-3); } }
.format-picker { max-width:440px; }
.format-options { display:grid; gap:var(--sp-2); margin:var(--sp-4) 0; }
.format-options button { display:flex; align-items:center; justify-content:space-between; gap:var(--sp-3); width:100%; min-height:64px; padding:var(--sp-3); text-align:left; }
.format-options button > span { display:grid; gap:var(--sp-1); }
.format-options small { color:var(--muted); font-weight:var(--fw-regular); }
.format-cancel { width:100%; min-height:44px; }

/* Guest deck invitations belong to the page, above the cards. */
.workbench.guest-deck{padding-bottom:0}
.guest-deck .public-deck-actions{position:static;inset:auto;margin:0;padding:var(--sp-3) 0;flex-wrap:wrap;border-top:0;border-bottom:1px solid var(--line)}
