/* 5. PAGES                                                            */
/* ================================================================== */

/* Editor dashboard v2 */
html.app-html {
  background: var(--c-surface-soft);
}

body.app-body {
  background: var(--c-surface-soft);
  color: var(--c-text);
  font-family: var(--font-ui);
}

body.app-body .site-nav-wrap,
body.app-body footer,
body.app-body .dev-bar {
  display: none;
}

body.app-body .page-layout {
  max-width: none;
  margin: 0;
  padding: 0;
}

body.app-body .page-layout.has-toc {
  display: block;
  max-width: none;
}

body.app-body .page-toc {
  display: none !important;
}

.app-shell,
.app-shell-fixed {
  min-height: 100vh;
  background: var(--c-surface-soft);
}

.app-shell-fixed {
  display: flex;
  flex-direction: column;
  height: 100vh;
  min-height: 0;
  overflow: hidden;
}

.app-shell-flow {
  height: auto;
  min-height: 100vh;
  overflow: visible;
}

.app-shell-fixed .tabbar {
  flex: 0 0 auto;
}

.tabbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: stretch;
  min-height: 50px;
  overflow: visible;
  background: var(--c-surface);
  border-bottom: var(--border-width) solid var(--c-border);
  box-shadow: 0 var(--sp-0-25) var(--sp-0-5) var(--c-shadow-bar);
}

.tabs {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  overflow-x: auto;
}

.tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  gap: var(--sp-2);
  min-width: 142px;
  padding: 0 var(--sp-4);
  border-right: var(--border-width) solid var(--c-border);
  border-bottom: var(--border-width-accent) solid transparent;
  color: var(--c-text-dim);
  font-size: var(--fs-sm);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.tab:first-child {
  border-left: var(--border-width) solid var(--c-border);
  border-top-left-radius: var(--radius-card);
}

.tab:hover {
  background: var(--c-surface-soft);
  text-decoration: none;
}

.tab.is-active {
  border-bottom-color: var(--c-link);
  color: var(--c-link);
  background: var(--c-surface);
}

.tab-filter {
  min-width: 0;
  padding: 0 var(--sp-3);
}

.tab svg,
.btn svg,
.search-field > svg,
.filter-menu summary svg,
.sort-control svg {
  width: var(--sp-5-5);
  height: var(--sp-5-5);
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex: 0 0 auto;
}

.tab svg {
  width: var(--sp-5);
  height: var(--sp-5);
}

.profile-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--size-touch);
  height: var(--size-touch);
  border-radius: var(--radius-field);
  color: var(--tone-gray-muted-fg);
  background: var(--tone-gray-muted-bg);
  font-weight: 600;
  letter-spacing: 0;
}

.tabbar .profile-avatar {
  width: 38px;
  height: 38px;
  font-size: var(--fs-sm);
}

.user-menu {
  position: relative;
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  padding: 0 var(--sp-4);
  border-left: var(--border-width) solid var(--c-border);
  background: var(--c-surface);
}

.user-menu summary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.user-menu summary:focus {
  outline: none;
}

.user-menu summary:focus .profile-avatar {
  box-shadow: 0 0 0 var(--border-width-accent) var(--c-brand-ring);
}

.user-menu-panel {
  position: absolute;
  top: calc(100% + var(--sp-2));
  right: var(--my-page-gutter);
  z-index: 40;
  display: grid;
  min-width: var(--width-sm);
  gap: 0;
  padding: var(--sp-2);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  box-shadow: 0 var(--sp-3-5) var(--size-md) var(--c-shadow-overlay);
}

.user-menu-panel strong {
  padding: var(--sp-2) var(--sp-2-5) var(--sp-3);
  border-bottom: var(--border-width) solid var(--c-border);
  color: var(--c-text);
  font-size: var(--fs-base);
  font-weight: 600;
  line-height: 1.25;
}

.user-menu-section {
  display: grid;
  gap: var(--sp-0-5);
  padding: var(--sp-2) 0;
  border-bottom: var(--border-width) solid var(--c-border);
}

.user-menu-section .field-label {
  padding: 0 var(--sp-2-5) var(--sp-0-5);
  margin: 0;
  font-weight: 500;
}

.user-menu-panel form {
  margin: 0;
}

.user-menu-panel a,
.user-menu-panel button {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--sp-7);
  padding: 0 var(--sp-2-5);
  border: 0;
  border-radius: var(--radius-field);
  color: var(--c-text);
  background: transparent;
  font: inherit;
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1.2;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  box-sizing: border-box;
}

.user-menu-panel a:hover,
.user-menu-panel a:focus,
.user-menu-panel a.is-active,
.user-menu-panel button:hover,
.user-menu-panel button:focus {
  outline: none;
  color: var(--c-link);
  background: var(--c-info-bg);
}

.item-stack {
  display: grid;
  gap: var(--sp-3);
}

.item-card {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-3);
  padding: var(--sp-3);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
}

.item-card.is-locked {
  opacity: 0.82;
}

.item-card.is-draggable {
  cursor: move;
}

.item-card.is-dragging {
  opacity: 0.5;
}

.item-main {
  min-width: 0;
  display: grid;
  gap: var(--sp-1);
}

.item-main strong {
  color: var(--c-text);
}

.item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-3);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.two-pane-grid {
  display: grid;
  grid-template-columns: minmax(var(--width-lg), 0.72fr) minmax(0, 1.28fr);
  gap: var(--my-pane-gap);
}

.toc-grid {
  display: grid;
  grid-template-columns: minmax(var(--my-toc-min), var(--width-sm-lg)) minmax(0, 1fr);
  gap: var(--my-pane-gap);
}

.pane-header {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  min-height: var(--my-tab-height);
  padding: 0 var(--sp-4-5);
  border-bottom: var(--border-width) solid var(--c-border);
  color: var(--c-text);
}

.pane-header strong {
  font-size: var(--fs-lg);
}

.pane-header-search {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  min-height: var(--size-lg);
  gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3) var(--sp-2) var(--sp-4);
}

.pane-header-compact {
  --pane-compact-control-size: var(--size-md);

  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  grid-auto-rows: max-content;
  min-height: 0;
  gap: var(--sp-1-5);
  padding: var(--sp-1-5) var(--sp-2);
}

.pane-header-compact.has-bulk {
  grid-template-columns: minmax(0, 1fr);
}

.pane-header-compact .bulk-default {
  grid-column: 1 / -1;
  min-width: 0;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--sp-1-5);
}

.pane-header-compact .search-field input,
.pane-header-compact .search-field-split select,
.pane-header-compact .filter-menu summary {
  height: var(--pane-compact-control-size);
  min-height: var(--pane-compact-control-size);
  border-radius: var(--radius-field);
}

.pane-header-compact .search-field > svg {
  left: var(--sp-3);
  width: var(--sp-4);
  height: var(--sp-4);
}

.pane-header-compact .search-field input {
  padding-right: var(--sp-7);
  padding-left: var(--sp-8);
}

.pane-header-compact .search-field-split {
  grid-template-columns: minmax(6.5rem, 8rem) minmax(0, 1fr);
}

.pane-header-compact .search-field-split select {
  padding-right: var(--sp-2-5);
  padding-left: var(--sp-8);
  border-radius: var(--radius-field) 0 0 var(--radius-field);
}

.pane-header-compact .search-field-split input[type="search"] {
  padding-left: var(--sp-3);
  border-radius: 0 var(--radius-field) var(--radius-field) 0;
}

.pane-header-compact .filter-menu summary {
  width: var(--size-md);
}

.filter-menu {
  position: relative;
  align-self: stretch;
  min-width: 0;
}

.filter-menu summary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--size-touch);
  height: var(--size-touch);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-field);
  color: var(--c-text-dim);
  background: var(--c-surface);
  box-shadow: 0 var(--sp-0-25) var(--sp-0-5) var(--c-shadow-panel);
}

.filter-menu summary:hover,
.filter-menu summary:focus-visible,
.filter-menu[open] summary {
  outline: none;
  border-color: var(--c-link);
  color: var(--c-link);
}

.filter-panel {
  position: absolute;
  z-index: 20;
  top: calc(100% + var(--sp-1));
  right: 0;
  display: grid;
  min-width: min(16rem, calc(100vw - var(--sp-6)));
  padding: var(--sp-1);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  box-shadow: var(--shadow-md);
}

.filter-panel a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  min-height: var(--sp-8);
  padding: 0 var(--sp-2-5);
  border-radius: var(--radius-field);
  color: var(--c-text);
  font-size: var(--fs-sm);
  font-weight: 500;
  text-decoration: none;
}

.filter-panel a:hover,
.filter-panel a.is-active {
  color: var(--c-link);
  background: var(--c-info-bg);
  text-decoration: none;
}

.filter-panel .status-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: var(--sp-6);
  height: var(--sp-5);
  padding: 0 var(--sp-1-75);
  border-radius: var(--radius-pill);
  color: currentColor;
  background: var(--c-surface-soft);
  font-size: var(--fs-xs);
  font-weight: 600;
}

.pane-bulkbar {
  --pane-compact-control-size: var(--size-md);

  flex: 0 0 auto;
  padding: var(--sp-1-5) var(--sp-2);
  border-bottom: var(--border-width) solid var(--c-border);
  background: var(--c-surface-soft);
}

.pane-tools {
  display: grid;
  grid-template-columns: var(--sp-6) minmax(0, 1fr);
  align-items: center;
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  gap: var(--sp-1-5);
  padding: 0;
  background: transparent;
}

.pane-tools .bulk-actions {
  align-items: center;
  min-height: 0;
  min-width: 0;
  gap: var(--sp-1);
}

.pane-tools .bulk-actions > .btn {
  justify-content: center;
}

.pane-tools .btn {
  min-height: var(--sp-7);
  padding: 0 var(--sp-2);
  border-radius: var(--radius-field);
  font-size: var(--fs-xs);
  font-weight: 500;
}

.pane-bulkbar .pane-tools .btn {
  position: relative;
  width: var(--pane-compact-control-size);
  height: var(--pane-compact-control-size);
  min-height: var(--pane-compact-control-size);
  padding: 0;
}

.pane-bulkbar .pane-tools .btn span {
  position: absolute;
  width: var(--border-width);
  height: var(--border-width);
  margin: calc(-1 * var(--border-width));
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.pane-tools .btn svg {
  width: var(--sp-4);
  height: var(--sp-4);
}

.pane-tools .sort-control {
  height: var(--pane-compact-control-size, var(--sp-7));
  min-height: var(--pane-compact-control-size, var(--sp-7));
  padding: 0 var(--sp-2);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-field);
  background: var(--c-surface);
}

.pane-tools .sort-control label {
  display: inline-flex;
  align-items: center;
  height: 100%;
}

.pane-tools .sort-control select {
  height: calc(var(--pane-compact-control-size, var(--sp-7)) - var(--border-width) - var(--border-width));
  min-height: 0;
  border: 0;
  background: transparent;
  color: var(--c-text);
  font-size: var(--fs-xs);
  font-weight: 500;
  padding-right: var(--sp-1);
}

.pane-tools .sort-control select:focus {
  outline: none;
}

.bulk-default {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  min-width: 0;
  gap: var(--sp-3);
}

.bulk-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  min-height: var(--size-touch);
  min-width: 0;
  gap: var(--sp-2-5);
}

.check-control {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--sp-6);
  height: var(--sp-6);
  cursor: pointer;
}

.check-control input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
  opacity: 0;
}

.check-control span {
  position: relative;
  display: block;
  width: var(--sp-4-5);
  height: var(--sp-4-5);
  border: 1.5px solid var(--c-border-strong);
  border-radius: var(--sp-1-25);
  background: var(--c-surface);
}

.check-control input:focus-visible + span {
  box-shadow: 0 0 0 var(--border-width-accent) var(--c-brand-ring);
}

.check-control input:checked + span,
.check-control input:indeterminate + span {
  border-color: var(--c-link);
  background: var(--c-link);
}

.check-control input:checked + span::after {
  content: "";
  position: absolute;
  left: var(--sp-1-25);
  top: var(--sp-0-5);
  width: var(--sp-1-25);
  height: var(--sp-2-5);
  border: solid var(--c-surface);
  border-width: 0 var(--sp-0-5) var(--sp-0-5) 0;
  transform: rotate(45deg);
}

.check-control input:indeterminate + span::after {
  content: "";
  position: absolute;
  left: var(--sp-1);
  top: var(--sp-1-75);
  width: var(--sp-2);
  height: var(--sp-0-5);
  border-radius: var(--radius-pill);
  background: var(--c-surface);
}

.select-all-check,
.row-check {
  justify-self: center;
}

.search-field {
  position: relative;
  min-width: 0;
}

.search-field > svg {
  position: absolute;
  top: 50%;
  left: var(--sp-3-5);
  width: var(--sp-4-5);
  height: var(--sp-4-5);
  color: var(--c-text-muted);
  transform: translateY(-50%);
  pointer-events: none;
}

.search-field input {
  width: 100%;
  height: var(--size-touch);
  padding: 0 var(--sp-8) 0 var(--size-touch);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  color: var(--c-text);
  background: var(--c-surface);
  font: inherit;
  font-size: var(--fs-sm);
}

.search-field-split {
  display: grid;
  grid-template-columns: var(--width-xs-lg) minmax(0, 1fr);
}

.search-field-split > svg {
  z-index: 1;
}

.search-field-split select {
  width: 100%;
  height: var(--size-touch);
  padding: 0 var(--size-sm) 0 var(--size-touch);
  border: var(--border-width) solid var(--c-border);
  border-right: 0;
  border-radius: var(--radius-card) 0 0 var(--sp-2);
  color: var(--c-text-dim);
  background: var(--c-surface-soft);
  font: inherit;
  font-size: var(--fs-sm);
  font-weight: 700;
}

.search-field-split input[type="search"] {
  padding-left: var(--sp-3);
  border-radius: 0 var(--sp-2) var(--sp-2) 0;
}

.search-field input:focus,
.search-field-split select:focus {
  outline: none;
  border-color: var(--c-link);
  box-shadow: 0 0 0 var(--border-width-accent) var(--c-brand-ring);
}

.search-clear {
  position: absolute;
  top: 50%;
  right: var(--sp-1-75);
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--sp-6-5);
  height: var(--sp-6-5);
  padding: 0;
  border: 0;
  border-radius: var(--radius-field);
  color: var(--c-text-muted);
  background: transparent;
  transform: translateY(-50%);
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
}

.search-field.has-value .search-clear {
  opacity: 1;
  pointer-events: auto;
}

.search-clear:hover,
.search-clear:focus {
  color: var(--c-link);
  background: var(--c-info-bg);
}

.search-clear:focus {
  outline: none;
  box-shadow: 0 0 0 var(--border-width-accent) var(--c-brand-ring);
}

.search-clear svg {
  width: var(--sp-4);
  height: var(--sp-4);
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.sort-control {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1-5);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
  white-space: nowrap;
}

.sort-control svg {
  width: var(--sp-4-25);
  height: var(--sp-4-25);
}

.unread-dot {
  display: flex;
  align-items: center;
  justify-content: center;
}

.unread-dot span {
  width: var(--sp-3);
  height: var(--sp-3);
  border-radius: var(--radius-round);
  background: var(--c-link);
}

.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--size-lg);
  height: var(--size-lg);
  border-radius: var(--radius-field);
  color: var(--c-surface);
  font-size: var(--fs-lg);
  font-weight: 700;
  letter-spacing: 0;
}

.list-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  min-height: var(--height-row);
  padding: 0 var(--sp-4-5);
  border-top: var(--border-width) solid var(--c-border);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.list-footer span {
  color: var(--c-link);
  font-weight: 700;
}

.message-detail {
  padding: var(--sp-6);
}

.message-detail-thread {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.message-stack {
  display: grid;
  flex: 0 0 auto;
  align-content: start;
  gap: var(--sp-2-5);
  padding-bottom: 0;
}

.message-card {
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
}

.message-card[open] {
  border-color: var(--c-link);
  box-shadow: 0 0 0 var(--border-width) var(--c-brand-ring-soft);
}

.message-card summary {
  display: grid;
  grid-template-columns: var(--size-touch) minmax(0, 1fr) auto;
  gap: var(--sp-3-5);
  align-items: center;
  min-height: var(--height-row-lg);
  padding: var(--sp-3) var(--sp-3-5);
}

.message-stack.has-unread .message-card[data-my-incoming="true"]:not([open]) summary {
  background: color-mix(in srgb, var(--c-link) 6%, var(--c-surface));
}

.message-card summary .avatar {
  width: var(--size-touch);
  height: var(--size-touch);
  font-size: var(--fs-sm);
}

.message-summary-main {
  display: grid;
  min-width: 0;
  gap: var(--sp-1);
}

.message-summary-main strong,
.message-summary-main span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.message-summary-main strong {
  color: var(--c-text);
}

.message-stack.has-unread .message-card[data-my-incoming="true"] .message-summary-main strong {
  color: var(--c-link);
}

.message-summary-main span {
  color: var(--c-text-muted);
}

.message-card time {
  display: grid;
  gap: var(--sp-0-75);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
  text-align: right;
  white-space: nowrap;
}

.message-stack.has-unread .message-card[data-my-incoming="true"] time {
  color: var(--c-link);
}

.message-body {
  padding: 0 var(--sp-4-5) var(--sp-4-5) var(--height-card);
  color: var(--c-text);
  font-size: var(--fs-base);
  line-height: 1.62;
  white-space: pre-wrap;
}

.message-stack-compact {
  gap: var(--sp-2);
}

.message-stack-compact .message-card summary {
  min-height: var(--my-tab-height);
  padding: var(--sp-2-25) var(--sp-3);
}

.message-stack-compact .message-body {
  padding-bottom: var(--sp-3-5);
}

#my-article-messages .action-row {
  margin-top: var(--sp-2-5);
}

.message-footer {
  margin-top: var(--sp-3);
  padding-top: var(--sp-3);
  border-top: var(--border-width) solid var(--c-border);
}

.pane-workspace {
  align-self: stretch;
  align-items: stretch;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.list-pane,
.detail-pane {
  min-width: 0;
  height: 100%;
  min-height: 0;
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  box-shadow: var(--my-panel-shadow);
}

.list-pane {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.pane-list {
  display: grid;
  align-content: start;
  flex: 1 1 auto;
  grid-auto-rows: max-content;
  min-height: 0;
  overflow-y: auto;
}

.list-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--sp-2-5);
  min-height: var(--height-card-lg);
  padding: var(--sp-3-5) var(--sp-4-5);
  border-bottom: var(--border-width) solid var(--c-border);
  color: var(--c-text);
  text-decoration: none;
}

.list-row:hover,
.list-row.is-selected,
.list-row.is-bulk-selected {
  background: var(--c-surface-hover);
  text-decoration: none;
}

.list-row.is-selected {
  box-shadow: inset var(--sp-0-75) 0 0 var(--c-link);
}

.side-pane .list-row {
  gap: var(--sp-1-25);
  min-height: var(--my-tab-height);
  padding: var(--sp-2) var(--sp-3-5);
}

.pane-row.has-controls {
  grid-template-columns: var(--sp-6) minmax(0, 1fr);
  align-items: center;
  column-gap: var(--sp-2-5);
}

.pane-row-content {
  display: grid;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.pane-row-content:hover {
  text-decoration: none;
}

.pane-row-body {
  display: grid;
  min-width: 0;
}

.pane-row-body.has-unread-marker {
  grid-template-columns: var(--sp-4) minmax(0, 1fr);
  align-items: center;
  gap: var(--sp-2);
}

.pane-row-text {
  display: grid;
  min-width: 0;
  gap: var(--sp-1-25);
}

.row-main,
.row-main span {
  min-width: 0;
}

.row-main strong {
  display: block;
  color: var(--c-link);
  font-weight: 700;
  line-height: 1.25;
}

.row-main span {
  display: block;
  overflow: hidden;
  margin-top: var(--sp-0-75);
  color: var(--c-text);
  font-weight: 700;
  line-height: 1.32;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.side-pane .row-main span {
  margin-top: 0;
  font-size: var(--fs-sm);
  line-height: 1.3;
}

.row-meta,
.row-badges {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.row-meta {
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.side-pane .row-foot {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: var(--sp-2-5);
  overflow: hidden;
  white-space: nowrap;
}

.side-pane .row-meta {
  flex: 1 1 auto;
  flex-wrap: nowrap;
  gap: var(--sp-2-5);
  min-width: 0;
  overflow: hidden;
}

.side-pane .row-meta span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.side-pane .row-badges {
  flex: 0 0 auto;
  flex-wrap: nowrap;
}

.side-pane .row-badges .status-badge {
  padding: 0.1rem 0.45rem;
  font-size: var(--fs-xs);
}

.pane-workspace .list-row {
  gap: var(--sp-1-25);
  min-height: var(--my-tab-height);
  padding: var(--sp-2) var(--sp-3-5);
}

.pane-workspace .row-main span {
  margin-top: 0;
  font-size: var(--fs-sm);
  line-height: 1.3;
}

.pane-workspace .row-foot {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: var(--sp-2-5);
  overflow: hidden;
  white-space: nowrap;
}

.pane-workspace .row-meta {
  flex: 1 1 auto;
  flex-wrap: nowrap;
  gap: var(--sp-2-5);
  min-width: 0;
  overflow: hidden;
}

.pane-workspace .row-meta span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pane-workspace .row-badges {
  flex: 0 0 auto;
  flex-wrap: nowrap;
}

.pane-workspace .row-badges .status-badge {
  padding: 0.1rem 0.45rem;
  font-size: var(--fs-xs);
}

.detail-pane {
  overflow-y: auto;
  scroll-behavior: smooth;
  clip-path: inset(0 round var(--radius-card));
}

.detail-view {
  display: grid;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-4-5) var(--sp-4-5);
}

.detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-3-5);
}

.detail-head strong {
  display: block;
  margin-bottom: var(--sp-1-25);
  color: var(--c-link);
  font-size: var(--fs-xs);
  line-height: 1.2;
}

.detail-head h1 {
  margin: 0;
  color: var(--c-text);
  font-size: var(--fs-xl);
  line-height: 1.24;
  letter-spacing: 0;
}

.detail-head small {
  display: block;
  margin-top: var(--sp-1-25);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
  line-height: 1.35;
}

.detail-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-1-75) var(--sp-4-5);
  margin: 0;
  padding: var(--sp-3) 0;
}

.detail-grid div {
  display: inline-flex;
  align-items: baseline;
  min-width: 0;
  gap: var(--sp-1-5);
}

.detail-grid dt {
  color: var(--c-text-muted);
  font-size: var(--fs-xs);
  font-weight: 700;
}

.detail-grid dd {
  margin: 0;
  min-width: 0;
  color: var(--c-text);
  font-size: var(--fs-sm);
  font-weight: 700;
}

.author-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-bottom: 0;
}

.detail-view .author-list {
  gap: var(--sp-1-5);
}

.abstract-section {
  padding: var(--sp-3) 0;
}

.abstract-section h2 {
  margin: 0 0 var(--sp-2);
  color: var(--c-text);
  font-size: var(--fs-lg);
  letter-spacing: 0;
}

.abstract-section p {
  max-height: var(--width-xs-lg);
  overflow: auto;
  margin: 0;
  color: var(--c-text-dim);
  font-size: var(--fs-sm);
  line-height: 1.48;
}

.detail-view > .action-row {
  padding-top: var(--sp-3);
}

.detail-view > .action-row svg {
  width: var(--sp-6-5);
  height: var(--sp-6-5);
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.review-status-strip {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1fr);
  gap: var(--sp-3-5);
  align-items: center;
  min-height: var(--sp-10);
  padding: 0 var(--sp-4);
  margin: 0;
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
}

.review-status-strip > span {
  color: var(--c-text);
  font-size: var(--fs-sm);
  font-weight: 700;
}

.review-status-strip .status-badge {
  margin-left: var(--sp-2-5);
}

.review-status-strip small {
  display: block;
  margin-top: var(--sp-1);
  color: var(--c-text-muted);
  font-weight: 500;
}

.pane-back {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  min-height: var(--size-touch);
  margin: var(--sp-3-5) var(--sp-4-5) var(--sp-1);
  padding: 0 var(--sp-3);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  color: var(--c-text-dim);
  background: var(--c-surface);
  font-weight: 700;
  text-decoration: none;
}

.pane-back:hover {
  border-color: var(--c-link);
  color: var(--c-link);
  background: var(--c-surface-soft);
  text-decoration: none;
}

.pane-back svg {
  width: var(--sp-4-5);
  height: var(--sp-4-5);
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.detail-back {
  display: none;
}

.app-shell-fixed.app-shell-flow .workspace-view {
  flex: 0 0 auto;
  grid-template-rows: auto;
  overflow: visible;
}

.list-detail-grid {
  align-items: start;
  height: auto;
  overflow: visible;
}

.list-detail-grid > .list-pane,
.list-detail-grid > .detail-pane {
  height: auto;
  min-height: 0;
  max-height: none;
}

.list-detail-grid > .detail-pane {
  overflow: visible;
}

.list-detail-grid .pane-list {
  flex: 0 1 auto;
  overflow-y: visible;
}

.article-detail {
  display: grid;
  gap: var(--sp-1-5);
  padding: var(--sp-3-5) var(--sp-4-5) 0;
}

.article-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-4-5);
  padding-bottom: 0;
  scroll-margin-top: var(--sp-4-5);
}

.article-hero h1 {
  margin: 0;
  color: var(--c-text);
  font-size: var(--fs-2xl);
  line-height: 1.2;
  letter-spacing: 0;
}

.article-hero .eyebrow {
  display: block;
  margin-bottom: var(--sp-2);
}

.meta-strip {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-1-5) var(--sp-4-5);
  margin: 0;
  padding: var(--sp-1-5) 0 var(--sp-2);
  border-bottom: var(--border-width) solid var(--c-border);
}

.meta-strip div {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  gap: var(--sp-1-75);
}

.meta-strip dt,
.keyvalue-grid dt {
  margin: 0;
  color: var(--c-text-muted);
  font-size: var(--fs-xs);
  font-weight: 700;
}

.meta-strip dd,
.keyvalue-grid dd {
  margin: 0;
  min-width: 0;
  color: var(--c-text);
  font-weight: 700;
}

.assignment-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-top: var(--sp-2-5);
  padding: var(--sp-3);
  border: var(--border-width) solid var(--c-link);
  border-radius: var(--radius-card);
  background: var(--c-surface-soft);
}

.assignment-cta[data-variant="inline"] {
  margin-top: var(--sp-3);
  border-color: var(--c-border);
  background: transparent;
  padding: var(--sp-2-5);
}

.assignment-cta[data-variant="inline"] .item-main strong {
  font-size: var(--fs-base);
}

.assignment-cta[data-variant="inline"] .item-main span {
  font-size: var(--fs-xs);
}

.assignment-cta[data-variant="summary"] {
  border-color: var(--c-link);
  background: color-mix(in srgb, var(--c-link) 8%, white);
  box-shadow: 0 var(--sp-1) var(--sp-3) color-mix(in srgb, var(--c-link) 14%, transparent);
}

.assignment-cta .item-main strong {
  color: var(--c-text);
  font-size: var(--fs-lg);
  line-height: 1.2;
}

.assignment-cta .item-main span {
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.assignment-cta .btn {
  flex: 0 0 auto;
  min-width: max-content;
}

.article-copy {
  margin: 0;
  color: var(--c-text-dim);
  font-size: var(--fs-sm);
  line-height: 1.6;
}

.keyvalue-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-3);
  margin: 0;
}

.keyvalue-grid div {
  min-width: 0;
}

.keyvalue-grid dd {
  overflow-wrap: anywhere;
}

.review-message .message-body p {
  margin: 0;
  color: var(--c-text-dim);
  font-size: var(--fs-sm);
  line-height: 1.5;
}

.review-body {
  color: var(--c-text);
  font-size: var(--fs-base);
  line-height: 1.62;
}

.attachment-stack {
  display: grid;
  gap: var(--sp-2);
  margin-top: var(--sp-3);
}

.file-list {
  display: grid;
  overflow: hidden;
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
}

.review-message .message-body p + p {
  margin-top: var(--sp-2);
}

.file-row {
 display: grid;
 grid-template-columns: var(--size-sm) minmax(0, 1fr) auto;
  gap: var(--sp-3);
  align-items: center;
  min-height: var(--my-tab-height);
  padding: var(--sp-2-5) var(--sp-3);
  border-bottom: var(--border-width) solid var(--c-border);
  color: var(--c-text);
 text-decoration: none;
}

.file-main {
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.file-main:hover {
  text-decoration: underline;
}

.file-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  justify-content: flex-end;
}

.file-actions form {
  margin: 0;
}

.proofread-patch-list {
  margin-top: var(--sp-4);
  border-top: var(--border-width) solid var(--c-border);
}

.proofread-patch-list h3 {
  margin: var(--sp-3) var(--sp-3) var(--sp-1);
  font-size: var(--fs-sm);
  color: var(--c-text-muted);
}

.file-row:last-child {
  border-bottom: none;
}

.file-row:hover {
  background: var(--c-surface-soft);
  text-decoration: none;
}

.file-row svg {
  width: var(--sp-6);
  height: var(--sp-6);
  color: var(--c-text-muted);
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.file-main,
.file-row > span {
  min-width: 0;
}

.file-main strong,
.file-main small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.file-row strong {
  color: var(--c-text);
  font-weight: 700;
}

.file-row small {
  margin-top: var(--sp-0-75);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.queue-panel {
  overflow: hidden;
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
  padding: var(--sp-3);
}

#submit-authors .queue-panel {
  border: none;
  border-radius: 0;
  background: transparent;
  padding: 0;
}

#my-article-review .queue-panel {
  border: none;
  border-radius: 0;
  background: transparent;
  padding: 0;
}

.picker-overlay {
  display: grid;
  gap: var(--sp-4);
}

.picker-head {
  display: grid;
  gap: var(--sp-1);
}

.picker-head h2,
.picker-section h3 {
  margin: 0;
}

.picker-head p {
  margin: 0;
  color: var(--c-text-muted);
}

.picker-section {
  display: grid;
  gap: var(--sp-2);
}

.picker-list {
  display: grid;
  gap: var(--sp-2);
}

.picker-card,
.picker-choice {
  display: grid;
  gap: var(--sp-2);
  padding: var(--sp-3);
  border: var(--border-width) solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-surface);
}

.picker-card span {
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.picker-choice {
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
}

.picker-choice input[type="radio"] {
  margin-top: 0.2rem;
}

.picker-choice.is-current,
.picker-choice.is-recommended {
  border-color: color-mix(in srgb, var(--c-link) 25%, var(--c-border));
}

.picker-choice-main,
.picker-choice-head,
.picker-choice-meta,
.picker-choice-keywords {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.picker-choice-main {
  flex-direction: column;
  min-width: 0;
}

.picker-choice-head {
  align-items: center;
  justify-content: space-between;
}

.picker-choice-meta {
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
}

.timeline-list {
  position: relative;
  display: grid;
  gap: var(--sp-1-5);
  padding-left: var(--sp-1);
}

.timeline-list::before {
  content: "";
  position: absolute;
  left: calc(var(--sp-1) + 5px);
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(
    to bottom,
    color-mix(in srgb, var(--c-link) 28%, var(--c-border)),
    color-mix(in srgb, var(--c-link) 10%, transparent)
  );
}

.timeline-item {
  position: relative;
  display: grid;
  grid-template-columns: 12px minmax(0, 1fr);
  gap: var(--sp-3);
  align-items: start;
  padding: 0 0 var(--sp-2) 0;
  color: var(--c-text);
}

.timeline-item:last-child {
  padding-bottom: 0;
}

.timeline-item::before {
  content: "";
  position: relative;
  z-index: 1;
  width: 12px;
  height: 12px;
  margin-top: 0.2rem;
  border: 2px solid color-mix(in srgb, var(--c-link) 50%, var(--c-border));
  border-radius: var(--radius-pill);
  background: var(--c-surface);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--c-surface) 88%, transparent);
}

.timeline-item > div {
  display: grid;
  gap: 0.15rem;
  min-width: 0;
}

.timeline-item strong {
  color: var(--c-text);
  font-size: var(--fs-sm);
  font-weight: 700;
  line-height: 1.2;
}

.timeline-item small {
  color: var(--c-text-muted);
  font-size: var(--fs-xs);
  line-height: 1.3;
}

#my-article-status p {
  margin: 0 0 var(--sp-3);
  color: var(--c-text-muted);
  font-size: var(--fs-sm);
  line-height: 1.45;
}

#my-article-status .action-row form {
  margin: 0;
}

.sticky-actions {
  position: sticky;
  bottom: 0;
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--sp-3);
  padding: var(--sp-4) 0 var(--sp-4-5);
  border-top: var(--border-width) solid var(--c-border);
  background: linear-gradient(180deg, var(--c-glass-surface), var(--c-surface) 34%);
}

@media (max-width: 980px) {
  .two-pane-grid,
  .toc-grid {
    grid-template-columns: 1fr;
  }

  .app-shell-fixed .two-pane-grid,
  .app-shell-fixed .toc-grid {
    grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
  }

  .app-shell-fixed .workspace-view {
    grid-template-rows: auto minmax(0, 1fr);
  }

  .app-shell-fixed .workspace-view.messages-master-detail,
  .app-shell-fixed .workspace-view.article-master-detail,
  .app-shell-fixed .workspace-view.admin-master-detail {
    grid-template-rows: minmax(0, 1fr);
  }

  .messages-master-detail.has-explicit-detail > .list-pane,
  .messages-master-detail:not(.has-explicit-detail) > .detail-pane,
  .list-detail-grid.has-explicit-detail > .list-pane,
  .list-detail-grid:not(.has-explicit-detail) > .detail-pane,
  .article-master-detail > .side-pane,
  .admin-master-detail > .side-pane {
    display: none;
  }

  .messages-master-detail:not(.has-explicit-detail) .list-row.is-selected,
  .list-detail-grid:not(.has-explicit-detail) .list-row.is-selected {
    background: var(--c-surface);
    box-shadow: none;
  }

  .messages-master-detail:not(.has-explicit-detail) .list-row.is-selected:hover,
  .list-detail-grid:not(.has-explicit-detail) .list-row.is-selected:hover {
    background: var(--c-surface-hover);
  }

  .detail-back {
    display: inline-flex;
    flex: 0 0 auto;
  }

  .toc-grid .side-pane {
    max-height: 36vh;
  }

  .detail-pane {
    position: static;
  }

  .keyvalue-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

}

@media (max-width: 640px) {
  .app-shell {
    --my-page-gutter: var(--sp-3);
    --my-pane-gap: var(--sp-2-5);
  }

  .tab {
    min-width: var(--width-sm);
    padding: 0 var(--sp-4-5);
    font-size: var(--fs-sm);
  }

  .tab.tab-filter {
    min-width: 0;
    padding: 0 var(--sp-3);
  }

  .detail-view {
    padding: var(--sp-4);
  }

  .detail-head,
  .detail-view > .action-row {
    align-items: stretch;
    flex-direction: column;
  }

  .detail-head .badge-list {
    justify-content: flex-start;
  }

  .toc-grid .side-pane {
    max-height: 42vh;
  }

  .article-detail {
    padding: var(--sp-3) var(--sp-2-5) 0;
  }

  .article-hero,
  .assignment-cta,
  .section-panel .section-header,
  .sticky-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .assignment-cta .btn {
    width: 100%;
    justify-content: center;
  }

  #my-article-messages .action-row .btn {
    width: 100%;
    justify-content: center;
  }

  .keyvalue-grid,
  .file-row {
    grid-template-columns: 1fr;
  }

  .meta-strip {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--sp-2-25);
  }

  .file-row {
    gap: var(--sp-2);
    align-items: start;
  }

  .review-status-strip {
    grid-template-columns: 1fr;
  }

  .avatar {
    width: var(--sp-9);
    height: var(--sp-9);
  }

  .message-detail {
    padding: var(--sp-6) var(--sp-5);
  }

  .message-card summary {
    grid-template-columns: var(--size-touch) minmax(0, 1fr);
  }

  .message-card time {
    grid-column: 2;
    text-align: left;
  }

  .message-body {
    padding-left: var(--sp-4-5);
  }

  .message-footer .action-row {
    align-items: stretch;
    flex-direction: column;
  }
}
