:root {
  color-scheme: light;
  --ink: #050505;
  --cream: #eee3d1;
  --paper: #fffdf7;
  --yellow: #f5ce22;
  --blue: #3568d4;
  --green: #126957;
  --coral: #ff6259;
  --writing-font-family: "Avenir Next", "SF Pro Display", "Segoe UI", sans-serif;
  --writing-font-size: 1.04rem;
  --writing-font-weight: 400;
  --writing-line-height: 1.35;
  --writing-mono-font-size: .98rem;
  --song-menu-width: 312px;
  --tool-writing: #ccdcf2;
  --tool-organizing: #f2d18c;
  --tool-reference: #cfe5cf;
  --tool-production: #dfd2ed;
  --muted: rgba(5, 5, 5, .48);
  --line: 3px;
  --heavy-line: 8px;
}

* { box-sizing: border-box; }
html, body { min-height: 100%; }
body {
  margin: 0;
  overflow-x: hidden;
  background: var(--cream);
  color: var(--ink);
  font-family: "Avenir Next", "SF Pro Display", "Segoe UI", sans-serif;
}

button, input, textarea, select { font: inherit; }
select option { font-family: "Avenir Next", "SF Pro Display", "Segoe UI", sans-serif; }
button { color: inherit; cursor: pointer; }
[hidden] { display: none !important; }

.topbar {
  position: relative;
  z-index: 20;
  display: flex;
  min-height: 68px;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 10px 18px;
  background: var(--ink);
  color: white;
}
.topbar-left { display: flex; min-width: 0; align-items: center; gap: 8px; }

.brand {
  padding: 6px 7px;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: 1.35rem;
  font-weight: 900;
  letter-spacing: -.045em;
}

.primary-nav { display: flex; min-width: 0; align-items: center; justify-content: flex-start; gap: 4px; }
.topbar > .brand { flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.account-button {
  min-height: 38px;
  padding: 0 13px;
  border: 2px solid white;
  border-radius: 9px;
  background: transparent;
  color: white;
  font-size: .68rem;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.account-button:hover, .account-button.is-signed-in { border-color: var(--yellow); background: var(--yellow); color: var(--ink); }
.account-button:disabled { cursor: not-allowed; opacity: .55; }
.cloud-status { color: rgba(255, 255, 255, .68); font-size: .6rem; font-weight: 800; white-space: nowrap; }
.cloud-status.is-error { color: #ff918b; }
button.account-required:disabled { cursor: not-allowed; filter: grayscale(.35); opacity: .38; }
.primary-nav-group { display: flex; min-width: 0; align-items: center; contain: layout style; }
.primary-nav-button {
  min-height: 38px;
  padding: 0 13px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: white;
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.primary-nav-button:hover { color: var(--yellow); }
.primary-nav-button.is-active { background: var(--yellow); color: var(--ink); transition: border-radius .22s ease, background-color .14s ease, color .14s ease; }
.primary-nav button:focus:not(:focus-visible) { outline: none; }
.primary-nav button:focus-visible { outline: 2px solid white; outline-offset: 2px; }
.primary-nav-group:has(.primary-subnav.is-open) .primary-nav-button.is-active { border-radius: 9px 0 0 9px; }
.primary-subnav {
  display: flex;
  width: 0;
  min-height: 38px;
  align-items: center;
  overflow: hidden;
  padding: 0;
  border: 2px solid var(--yellow);
  border-left: 0;
  border-right-width: 0;
  border-radius: 0 9px 9px 0;
  border-color: transparent;
  color: white;
  opacity: 0;
  pointer-events: none;
  transition: width .32s cubic-bezier(.22, .72, .25, 1), opacity .16s ease, border-color .16s ease, border-right-width .1s ease;
  white-space: nowrap;
  will-change: width;
}
.primary-subnav.is-open { width: var(--subnav-width, 220px); border-color: var(--yellow); border-right-width: 2px; opacity: 1; pointer-events: auto; }
.primary-subnav-inner {
  display: flex;
  width: max-content;
  min-width: max-content;
  align-items: center;
  padding: 0 4px;
  opacity: 0;
  transform: translateX(-8px);
  transition: opacity .16s ease .06s, transform .26s cubic-bezier(.22, .72, .25, 1);
}
.primary-subnav.is-open .primary-subnav-inner { opacity: 1; transform: translateX(0); }
.primary-subnav button {
  display: flex;
  min-height: 30px;
  align-items: center;
  padding: 0 8px;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: .62rem;
  font-weight: 850;
  letter-spacing: .025em;
}
.primary-subnav button:hover, .primary-subnav button.is-current { background: var(--yellow); color: var(--ink); }
.primary-subnav button:focus-visible { outline: 2px solid var(--yellow); outline-offset: -3px; }
.primary-subnav button + button { border-left: 1px solid rgba(255, 255, 255, .25); }

.label, .rail-label {
  margin: 0;
  font-size: .62rem;
  font-weight: 900;
  letter-spacing: .11em;
  text-transform: uppercase;
}

main { min-height: calc(100vh - 68px); padding: 16px; }
.app-home-view, .section-landing {
  min-height: calc(100vh - 100px);
  padding: clamp(24px, 5vw, 70px);
}
.app-home-view { display: grid; align-content: center; gap: 28px; }
.app-home-heading, .section-landing-heading { display: grid; max-width: 760px; gap: 7px; }
.app-home-heading h1, .section-landing-heading h1 {
  margin: 0;
  font-size: clamp(2rem, 5vw, 4.4rem);
  line-height: .98;
  letter-spacing: -.065em;
}
.section-landing-heading > span { max-width: 620px; color: var(--muted); font-size: .9rem; font-weight: 700; }
.app-home-grid, .tool-landing-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.app-destination-card {
  display: grid;
  min-height: 260px;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto 1fr auto;
  gap: 12px;
  align-items: end;
  padding: 22px;
  border: var(--line) solid var(--ink);
  border-radius: 18px;
  color: var(--ink);
  text-align: left;
  box-shadow: 5px 5px 0 rgba(5, 5, 5, .15);
  transition: transform .12s ease, box-shadow .12s ease;
}
.app-destination-card:hover { transform: translateY(-3px); box-shadow: 7px 8px 0 rgba(5, 5, 5, .18); }
.app-destination-card > span { align-self: start; font-size: .62rem; font-weight: 900; letter-spacing: .1em; }
.app-destination-card > strong { grid-column: 1 / -1; align-self: end; font-size: clamp(1.65rem, 3vw, 2.7rem); line-height: 1; letter-spacing: -.055em; }
.app-destination-card > small { max-width: 31ch; font-size: .75rem; font-weight: 750; line-height: 1.35; }
.app-destination-card > i { font-size: 1.6rem; font-style: normal; font-weight: 900; line-height: 1; }
.destination-songs { background: var(--yellow); }
.destination-tools { background: var(--tool-writing); }
.destination-learn { background: var(--tool-reference); }
.section-landing { display: grid; align-content: start; gap: 30px; }
.tool-landing-card {
  display: grid;
  min-height: 180px;
  align-content: end;
  gap: 7px;
  padding: 20px;
  border: var(--line) solid var(--ink);
  border-radius: 15px;
  background: var(--paper);
  color: var(--ink);
  text-align: left;
  box-shadow: 4px 4px 0 rgba(5, 5, 5, .13);
}
.tool-landing-card:hover { transform: translateY(-2px); box-shadow: 6px 6px 0 rgba(5, 5, 5, .16); }
.tool-landing-card strong { font-size: 1.35rem; letter-spacing: -.04em; }
.tool-landing-card small { max-width: 34ch; color: var(--muted); font-size: .72rem; font-weight: 700; line-height: 1.35; }
.tool-landing-lyrics, .tool-landing-chords { background: var(--tool-writing); }
.tool-landing-listen { background: var(--tool-reference); }
.learn-placeholder-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.learn-placeholder {
  display: grid;
  max-width: 760px;
  min-height: 180px;
  align-content: center;
  gap: 8px;
  padding: 24px;
  border: var(--line) dashed var(--ink);
  border-radius: 15px;
  background: rgba(255, 253, 247, .45);
}
.learn-placeholder strong { font-size: 1.2rem; }
.learn-placeholder span { color: var(--muted); font-size: .78rem; font-weight: 700; }
[data-section-card] { transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease; }
[data-section-card].is-selected { background: var(--yellow); box-shadow: 7px 7px 0 rgba(5, 5, 5, .18); transform: translateY(-3px); }

@media (prefers-reduced-motion: reduce) {
  .primary-subnav, .primary-subnav-inner, .primary-nav-button, [data-section-card] { transition-duration: .01ms !important; }
}
.home-view { min-height: calc(100vh - 100px); padding: clamp(18px, 4vw, 54px); }
.home-library { display: grid; width: 100%; margin: 0; gap: 18px; }
.home-library > header { display: flex; align-items: center; justify-content: space-between; }
.home-library h1 { margin: 0; font-size: clamp(1.45rem, 3vw, 2.15rem); letter-spacing: -.045em; }
.home-song-row { display: flex; min-width: 0; gap: 12px; overflow-x: auto; padding: 3px 3px 12px; }
.home-song-card-wrap { position: relative; flex: 0 0 300px; }
.home-song-card { display: grid; width: 100%; height: 100%; align-content: start; gap: 8px; padding: 13px 13px 42px; border: var(--line) solid var(--ink); border-radius: 13px; background: var(--paper); color: var(--ink); text-align: left; box-shadow: 4px 4px 0 rgba(5, 5, 5, .14); }
.home-song-card strong { overflow-wrap: anywhere; color: var(--ink); font-size: 1rem; line-height: 1.1; }
.home-song-card:hover { background: var(--yellow); transform: translateY(-2px); }
.tag-row { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 5px; }
.entity-tag { display: inline-flex; min-width: 0; min-height: 25px; max-width: 100%; flex: 0 0 auto; align-items: center; padding: 3px 8px; border: 2px solid var(--ink); border-radius: 8px; color: var(--ink); font-size: .62rem; font-weight: 850; line-height: 1.1; overflow-wrap: anywhere; }
.artist-tag { background: var(--green); color: white; }
.project-tag { background: var(--cream); }
.contributor-tag { background: var(--blue); color: white; }
.more-tag { background: var(--yellow); }
.home-song-card-tags { width: 100%; align-content: start; justify-content: flex-start; }
.home-song-card:hover .artist-tag, .home-song-card:hover .contributor-tag { color: white; }
.home-layout-preview { position: relative; display: grid; width: 100%; aspect-ratio: 4 / 3; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 1fr); gap: 4px; overflow: hidden; margin-top: 2px; }
.home-layout-cell { border: 1px solid rgba(5, 5, 5, .2); border-radius: 4px; background: var(--cream); }
.home-layout-tile { z-index: 1; display: grid; min-width: 0; min-height: 0; place-items: center; overflow: hidden; border: 2px solid var(--ink); border-radius: 5px; color: var(--ink); font-size: .44rem; font-style: normal; font-weight: 950; line-height: 1; }
.home-layout-info, .home-layout-todos { background: var(--tool-organizing); }
.home-layout-chords, .home-layout-lyrics, .home-layout-lyricEditor { background: var(--tool-writing); }
.home-layout-audio { background: var(--tool-reference); }
.home-songs-empty { margin: 10px 0; color: var(--muted); font-size: .78rem; font-weight: 700; }
.home-add {
  display: inline-flex;
  width: max-content;
  align-items: center;
  gap: 8px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
}
.home-add span {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: var(--line) solid var(--ink);
  border-radius: 9px;
  background: var(--yellow);
  color: var(--ink);
  font-size: 1.1rem;
  font-weight: 700;
}
.home-add strong { font-size: .72rem; letter-spacing: .01em; }
.home-add:hover span { background: var(--coral); }

.song-view {
  position: relative;
  display: grid;
  width: calc(100% + 32px);
  height: calc(100vh - 68px);
  height: calc(100dvh - 68px);
  min-height: 0;
  margin: -16px;
  grid-template-columns: 54px minmax(0, 1fr);
  gap: 0;
  transition: none;
}
.song-view.module-rail-expanded { grid-template-columns: var(--song-menu-width) minmax(0, 1fr); }
.song-view.song-library-expanded { grid-template-columns: minmax(0, 1fr) 0; }
.song-view.module-sidebar-hidden { grid-template-columns: 0 minmax(0, 1fr); }
.song-view > .home-view { width: 100%; min-width: 0; height: 100%; overflow: auto; }
.standalone-folder-rail {
  display: flex;
  min-width: 0;
  height: 100%;
  grid-column: 1;
  grid-row: 1;
  flex-direction: column;
  gap: 14px;
  overflow-y: auto;
  padding: 20px 14px 24px;
  border-right: var(--line) solid var(--ink);
  background: var(--paper);
}
.standalone-folder-heading { display: flex; align-items: center; gap: 9px; }
.standalone-folder-heading h2 { margin: 0; flex: 0 1 auto; font-size: 1.16rem; line-height: 1; letter-spacing: -.045em; white-space: nowrap; }
.standalone-folder-heading > button {
  display: grid;
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  margin-left: auto;
  place-items: center;
  padding: 0 0 2px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font-size: 1.35rem;
  font-weight: 900;
}
.standalone-folder-heading > button:hover { background: var(--yellow); }
.standalone-new-form { display: grid; gap: 7px; padding: 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--cream); }
.standalone-new-form input { width: 100%; min-width: 0; padding: 7px 8px; border: 2px solid var(--ink); border-radius: 6px; background: white; font-size: .72rem; font-weight: 750; }
.standalone-new-form > div { display: flex; gap: 5px; }
.standalone-new-form button { min-height: 29px; padding: 0 8px; border: 2px solid var(--ink); border-radius: 6px; background: white; font-size: .61rem; font-weight: 850; }
.standalone-new-form button[type="submit"] { background: var(--yellow); }
.standalone-document-list { display: flex; flex-direction: column; gap: 6px; }
.standalone-document-entry { display: grid; gap: 4px; }
.standalone-document-card { position: relative; min-width: 0; }
.standalone-document-button {
  display: grid;
  width: 100%;
  gap: 3px;
  padding: 10px 40px 10px 10px;
  border: 2px solid var(--ink);
  border-radius: 8px;
  background: white;
  text-align: left;
}
.standalone-document-edit {
  position: absolute;
  right: 7px;
  bottom: 7px;
  display: grid;
  width: 25px;
  height: 25px;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--ink);
}
.standalone-document-edit:hover, .standalone-document-edit[aria-expanded="true"] { background: var(--yellow); }
.standalone-document-edit svg, .song-card-edit svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.standalone-document-editor { display: grid; gap: 7px; padding: 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--cream); }
.standalone-document-editor label { display: grid; gap: 3px; }
.standalone-document-editor label span { font-size: .58rem; font-weight: 850; }
.standalone-document-editor input { width: 100%; min-width: 0; padding: 7px 8px; border: 2px solid var(--ink); border-radius: 6px; background: white; font-size: .72rem; font-weight: 750; }
.standalone-document-editor-actions { display: grid; grid-template-columns: 32px minmax(0, 1fr) 32px; gap: 5px; }
.standalone-document-editor button { min-height: 31px; padding: 0 7px; border: 2px solid var(--ink); border-radius: 6px; background: white; font-size: .59rem; font-weight: 850; }
.standalone-document-editor [data-standalone-create-song] { background: var(--yellow); }
.standalone-document-editor .standalone-icon-action { display: grid; width: 32px; padding: 0; place-items: center; }
.standalone-document-editor .standalone-icon-action svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.standalone-document-editor [data-standalone-delete] { background: var(--coral); }
.standalone-delete-confirm { display: grid; gap: 6px; padding-top: 7px; border-top: 2px solid rgba(5, 5, 5, .25); }
.standalone-delete-confirm p { margin: 0; font-size: .62rem; font-weight: 750; line-height: 1.3; }
.standalone-delete-confirm > div { display: flex; gap: 5px; }
.standalone-delete-confirm [data-standalone-delete-confirm] { background: var(--coral); }
.standalone-document-button:hover, .standalone-document-button.is-active { background: var(--yellow); }
.standalone-document-button strong { overflow-wrap: anywhere; font-size: .76rem; line-height: 1.1; }
.standalone-document-button small { color: var(--muted); font-size: .57rem; font-weight: 750; }
.song-view.standalone-tool-mode { grid-template-columns: 230px minmax(0, 1fr); }
.song-view.standalone-tool-mode.module-focused { grid-template-columns: 230px minmax(0, 1fr); }
.song-view.standalone-tool-mode .module-rail { display: none; }
.song-view.standalone-tool-mode .song-page { margin-left: 0; padding: 0; grid-column: 2; grid-row: 1; grid-template-rows: minmax(0, 1fr); }
.song-view.standalone-tool-mode .song-heading { display: none; }
.song-view.standalone-tool-mode .module-grid { height: 100%; grid-row: 1; padding: 0; }
.song-view.standalone-tool-mode .module-grid.focus-mode .focused-module {
  grid-template-rows: minmax(0, 1fr);
  gap: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
.song-view.standalone-tool-mode .focused-module .module-frame-head { display: none; }
.song-view.standalone-tool-mode .focused-module .module-body { background: white; }
.song-view.standalone-tool-mode .focused-module.module-lyricEditor .lyrics-editor-shell,
.song-view.standalone-tool-mode .focused-module.module-chords .chord-expanded {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  gap: 0;
  background: white;
}
.song-view.standalone-tool-mode .lyrics-side-rail,
.song-view.standalone-tool-mode .chord-side-rail {
  display: flex;
  min-height: 54px;
  overflow: visible;
  align-items: center;
  flex-direction: row;
  gap: 5px;
  padding: 5px 9px;
  border-bottom: 3px solid var(--ink);
  background: var(--tool-writing);
}
.song-view.standalone-tool-mode .lyrics-rail-history,
.song-view.standalone-tool-mode .lyrics-rail-actions,
.song-view.standalone-tool-mode .chord-rail-modes,
.song-view.standalone-tool-mode .chord-rail-actions { display: flex; grid-template-columns: none; gap: 4px; margin: 0; }
.song-view.standalone-tool-mode .lyrics-rail-actions,
.song-view.standalone-tool-mode .chord-rail-actions { margin-left: auto; }
.song-view.standalone-tool-mode .lyrics-editor-main,
.song-view.standalone-tool-mode .chart-input-panel,
.song-view.standalone-tool-mode .chart-preview-panel { border-radius: 0; }
.song-view.standalone-tool-mode .lyrics-editor-main { border: 0; }
.song-view.standalone-tool-mode .lyrics-editor-surface { padding: 24px 12px 28px; }
.song-view.standalone-tool-mode .chart-builder-grid { gap: 3px; background: var(--ink); }
.song-view.standalone-tool-mode .chart-input-panel,
.song-view.standalone-tool-mode .chart-preview-panel { border-top: 0; border-right: 0; border-bottom: 0; border-left: 0; }
.song-view.standalone-tool-mode .chart-mode-input .chart-input-panel,
.song-view.standalone-tool-mode .chart-mode-output .chart-preview-panel { border-right: 0; border-left: 0; }
.song-view.standalone-tool-mode .chord-meta-popover { top: 60px; left: 9px; }
.module-rail {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 20px 18px 24px;
  border-right: var(--line) solid var(--ink);
  background: var(--paper);
  overflow-y: auto;
  transition: opacity .14s ease, transform .18s ease;
}
.song-view.module-sidebar-hidden .module-rail { visibility: hidden; padding-right: 0; padding-left: 0; border-right: 0; opacity: 0; transform: translateX(-100%); pointer-events: none; }
.module-rail .rail-label { color: var(--ink); }
.module-rail-heading { display: grid; width: 46px; justify-items: center; gap: 5px; }
.rail-label { margin: 0; color: var(--muted); font-size: .55rem; }
.rail-label-long { display: none; }
.module-rail-toggle { display: grid; width: 32px; height: 42px; place-items: center; padding: 0; border: 0; background: transparent; color: white; }
.module-rail-toggle:hover { color: var(--yellow); }
.hamburger-icon { position: relative; display: block; width: 20px; height: 16px; }
.hamburger-icon i { position: absolute; left: 0; width: 20px; height: 2.5px; border-radius: 2px; background: currentColor; transition: top .16s ease, opacity .12s ease, transform .16s ease; }
.hamburger-icon i:nth-child(1) { top: 0; }
.hamburger-icon i:nth-child(2) { top: 6.75px; }
.hamburger-icon i:nth-child(3) { top: 13.5px; }
.module-rail-toggle[aria-expanded="true"] .hamburger-icon i:nth-child(1) { top: 6.75px; transform: rotate(45deg); }
.module-rail-toggle[aria-expanded="true"] .hamburger-icon i:nth-child(2) { opacity: 0; }
.module-rail-toggle[aria-expanded="true"] .hamburger-icon i:nth-child(3) { top: 6.75px; transform: rotate(-45deg); }
.module-button-copy { display: none; min-width: 0; }
.module-button {
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  padding: 0;
  border: var(--line) solid var(--ink);
  border-radius: 10px;
  background: white;
  color: var(--ink);
  font-weight: 950;
}
.module-button svg { width: 27px; height: 27px; fill: none; stroke: currentColor; stroke-width: 2.3; stroke-linecap: round; stroke-linejoin: round; }
.module-button .module-icon-fill { fill: currentColor; stroke: none; }
.module-button:not(:disabled):hover { background: var(--yellow); transform: translateY(-1px); }
.module-button.is-active { background: var(--yellow); color: var(--ink); transform: none; }
.module-button:disabled { opacity: .3; cursor: default; transform: none; }
.song-view.module-rail-expanded .module-rail { align-items: stretch; }
.song-view.module-rail-expanded .module-rail-heading { display: flex; width: 100%; min-height: 30px; align-items: center; justify-content: space-between; padding: 0 2px; }
.song-view.module-rail-expanded .module-rail-heading .rail-label { color: var(--ink); font-size: .82rem; font-weight: 950; }
.song-view.module-rail-expanded .rail-label-short { display: none; }
.song-view.module-rail-expanded .rail-label-long { display: inline; }
.section-controls { display: grid; min-width: 0; max-width: 474px; flex: 1 1 auto; gap: 3px; margin-left: auto; padding: 0; border: 0; background: transparent; }
.module-add-grid { display: flex; width: 100%; min-width: 0; max-width: 474px; justify-content: flex-start; gap: 6px; overflow-x: auto; padding: 2px 0 0; scrollbar-width: none; }
.module-add-grid .module-button:first-child { margin-left: auto; }
.module-add-grid::-webkit-scrollbar { display: none; }
.song-view.module-rail-expanded .module-add-grid .module-button { width: 42px; min-width: 42px; min-height: 42px; height: 42px; flex: 0 0 42px; grid-template-columns: 1fr; grid-template-rows: 1fr; place-items: center; padding: 0; }
.song-view.module-rail-expanded .module-add-grid .module-button svg { grid-column: 1; grid-row: 1; width: 24px; height: 24px; justify-self: center; padding: 0; border: 0; border-radius: 0; background: transparent; }
.song-view.module-rail-expanded .module-add-grid .module-button-copy { display: none; }
.module-button-copy strong { overflow: hidden; font-size: 1.02rem; font-weight: 950; line-height: 1.05; text-overflow: ellipsis; white-space: nowrap; }
.module-button-copy small { color: var(--ink); font-size: .67rem; font-weight: 550; line-height: 1.35; }

.workspace-presets { display: none; }
.song-menu-heading { display: flex; width: 100%; min-height: 30px; flex: 0 0 auto; align-items: center; justify-content: space-between; padding: 0 2px 4px; }
.song-menu-heading .rail-label { font-size: .92rem; font-weight: 950; }
.rail-song-list { display: grid; flex: 0 0 auto; gap: 9px; }
.rail-song-list > header { padding: 0 2px 2px; }
.rail-song-title-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rail-section-toggle { display: inline-flex; min-width: 0; align-items: center; gap: 5px; padding: 3px 0; border: 0; background: transparent; color: var(--ink); font-size: .86rem; font-weight: 950; line-height: 1; text-align: left; text-transform: uppercase; }
.rail-section-toggle:hover { color: var(--blue); }
.rail-section-toggle svg { width: 14px; height: 14px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s ease; }
.rail-section-toggle[aria-expanded="true"] svg { transform: rotate(90deg); }
.rail-section-content { display: grid; gap: 7px; }
[data-rail-song-list] { display: grid; max-height: 248px; grid-auto-rows: 78px; align-content: start; gap: 7px; overflow-y: auto; padding-right: 3px; scrollbar-gutter: stable; }
.rail-song-entry { position: relative; width: 100%; min-width: 0; height: 78px; min-height: 78px; }
.rail-song-button { display: grid; width: 100%; min-width: 0; height: 100%; min-height: 78px; grid-template-columns: 82px minmax(0, 1fr); align-items: start; gap: 10px; overflow: hidden; padding: 8px 36px 8px 8px; border: 2px solid var(--ink); border-radius: 9px; background: white; color: var(--ink); text-align: left; }
.rail-song-button:hover, .rail-song-button.is-active { background: var(--yellow); }
.song-card-edit { position: absolute; right: 9px; bottom: 9px; z-index: 2; display: grid; width: 25px; height: 25px; place-items: center; padding: 0; border: 0; border-radius: 5px; background: transparent; color: var(--ink); }
.song-card-edit:hover { background: var(--yellow); }
.home-song-card-wrap .song-card-edit { right: 11px; bottom: 11px; }
.rail-song-copy { display: grid; min-width: 0; align-self: start; align-content: start; gap: 6px; }
.rail-song-button strong { overflow: hidden; font-size: .82rem; font-weight: 950; line-height: 1.12; text-overflow: ellipsis; white-space: nowrap; }
.rail-song-button small { overflow: hidden; color: var(--muted); font-size: .61rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.rail-song-layout-preview { width: 82px; height: 62px; aspect-ratio: auto; gap: 2px; margin: 0; }
.rail-song-layout-preview .home-layout-cell { border-radius: 2px; }
.rail-song-layout-preview .home-layout-tile { border-width: 1px; border-radius: 2px; font-size: .28rem; }
.rail-song-tags { gap: 3px; }
.rail-song-tags .entity-tag { min-height: 19px; padding: 2px 5px; border-width: 1px; border-radius: 5px; font-size: .5rem; }
.rail-song-expand-button { display: flex; min-height: 29px; align-items: center; justify-content: flex-end; gap: 4px; padding: 2px 3px; border: 0; background: transparent; color: var(--ink); font-size: .62rem; font-weight: 850; }
.rail-song-expand-button:hover { color: var(--blue); }
.rail-song-expand-button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s ease; }
.rail-song-expand-button[aria-expanded="true"] svg { transform: rotate(180deg); }
.rail-song-empty { margin: 0 2px; color: var(--muted); font-size: .7rem; font-weight: 700; }
.rail-library-row { display: none; flex: 0 0 auto; gap: 8px; margin-top: 12px; padding-top: 14px; border-top: 2px solid var(--ink); }
.song-view.module-rail-expanded .rail-library-row { display: grid; }
.rail-library-row > header { display: flex; align-items: center; justify-content: space-between; padding: 0 2px; }
.rail-library-manage-button { padding: 4px 3px; border: 0; background: transparent; color: var(--ink); font-size: .62rem; font-weight: 850; }
.rail-library-manage-button:hover { color: var(--blue); }
.rail-library-row > div { display: grid; gap: 7px; }
.rail-library-card { display: grid; width: 100%; min-width: 0; min-height: 76px; align-content: start; gap: 6px; padding: 10px; border: 2px solid var(--ink); border-radius: 9px; background: white; color: var(--ink); text-align: left; }
.rail-library-card > strong { overflow: hidden; font-size: .9rem; font-weight: 950; line-height: 1.12; text-overflow: ellipsis; white-space: nowrap; }
.rail-library-card > span, .rail-library-card > small { color: var(--muted); font-size: .6rem; font-weight: 700; line-height: 1.3; }
.rail-person-card:hover { background: var(--yellow); }
.rail-person-roles { display: flex; flex-wrap: wrap; gap: 4px; }
.rail-person-roles span { padding: 2px 6px; border: 1px solid var(--ink); border-radius: 5px; background: var(--cream); font-size: .54rem; font-weight: 850; }
.rail-person-roles small, .rail-project-songs > small { color: var(--muted); font-size: .6rem; font-weight: 700; }
.rail-project-songs { display: flex; min-width: 0; flex-wrap: wrap; gap: 4px; }
.rail-project-songs button { max-width: 100%; padding: 3px 6px; overflow: hidden; border: 1px solid var(--ink); border-radius: 5px; background: var(--paper); font-size: .56rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.rail-project-songs button:hover { background: var(--yellow); }
.rail-library-empty { margin: 4px 2px; color: var(--muted); font-size: .7rem; font-weight: 700; }
.song-view.module-rail-expanded .workspace-presets { display: flex; flex: 0 0 auto; flex-direction: column; align-items: stretch; gap: 8px; margin-top: 12px; padding-top: 14px; border-top: 2px solid var(--ink); }
.workspace-presets > header { margin-bottom: 2px; padding: 0 2px 2px; }
.workspace-title-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.workspace-section-content { gap: 8px; }
.workspace-description { color: var(--muted); font-size: .7rem; font-weight: 700; line-height: 1.35; }
.workspace-add-button, .rail-song-add-button { display: grid; width: 29px; height: 29px; place-items: center; padding: 0 0 2px; border: 0; border-radius: 7px; background: transparent; color: var(--ink); font-size: 1.18rem; font-weight: 850; line-height: 1; }
.workspace-add-button:hover, .workspace-add-button[aria-expanded="true"], .rail-song-add-button:hover, .rail-song-add-button[aria-expanded="true"] { background: var(--yellow); }
.workspace-save-form { display: grid; gap: 8px; padding: 11px; border: 2px solid var(--ink); border-radius: 8px; background: var(--cream); }
.workspace-save-form > strong { font-size: .86rem; font-weight: 950; }
.workspace-save-form label { display: grid; gap: 3px; }
.workspace-save-form label > span { font-size: .62rem; font-weight: 800; }
.workspace-save-form input, .workspace-save-form textarea { width: 100%; min-width: 0; padding: 7px 8px; border: 2px solid var(--ink); border-radius: 6px; background: white; color: var(--ink); font-size: .74rem; font-weight: 500; line-height: 1.3; resize: vertical; }
.workspace-save-form > div { display: flex; gap: 5px; }
.workspace-save-form > div button { min-height: 31px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 6px; background: white; font-size: .64rem; font-weight: 850; }
.workspace-save-form > div button[type="submit"] { background: var(--yellow); }
.workspace-save-form .workspace-delete-button { width: 28px; padding: 0 0 2px; margin-left: auto; background: white; font-size: 1rem; line-height: 1; }
.workspace-delete-confirm { display: grid; gap: 6px; padding: 8px; border: 2px solid var(--ink); border-radius: 6px; background: white; }
.workspace-delete-confirm p { margin: 0; font-size: .68rem; font-weight: 700; line-height: 1.3; }
.workspace-delete-confirm > div { display: flex; gap: 5px; }
.workspace-delete-confirm button { min-height: 30px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 5px; background: white; font-size: .64rem; font-weight: 850; }
.workspace-delete-confirm .workspace-delete-confirm-button { background: var(--coral); }
.custom-workspace-list { display: flex; flex-direction: column; gap: 6px; }
.custom-workspace-list:empty { display: none; }
.workspace-premade-list { display: flex; flex-direction: column; gap: 8px; }
.workspace-preset-divider { display: flex; align-items: center; gap: 8px; margin: 3px 0; color: var(--muted); font-size: .61rem; font-weight: 850; letter-spacing: .04em; text-transform: uppercase; }
.workspace-preset-divider::before, .workspace-preset-divider::after { height: 1px; flex: 1 1 auto; background: var(--ink); content: ""; opacity: .38; }
.custom-workspace-card { position: relative; }
.custom-workspace-card .workspace-preset-button { padding-right: 36px; }
.workspace-edit-button { position: absolute; right: 7px; bottom: 7px; display: grid; width: 23px; height: 23px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 5px; background: var(--paper); color: var(--ink); }
.workspace-edit-button:hover { background: var(--yellow); }
.workspace-edit-button svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.song-view.module-rail-expanded .module-rail .workspace-presets { border-top-color: var(--ink); }
.song-view.song-library-expanded .module-rail { align-items: stretch; }
.song-view.song-library-expanded .song-page { display: none; }
.song-view.song-library-expanded .rail-song-list { flex: 0 0 auto; }
.song-view.song-library-expanded .rail-song-list > .rail-section-content { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); align-items: stretch; gap: 12px; padding: 2px 2px 10px; }
.song-view.song-library-expanded [data-rail-song-list] { display: contents; max-height: none; overflow: visible; padding: 0; scrollbar-gutter: auto; }
.song-view.song-library-expanded .rail-song-entry { height: auto; min-height: 140px; order: 1; }
.song-view.song-library-expanded .rail-song-button { width: 100%; min-width: 0; height: 100%; min-height: 140px; grid-template-columns: minmax(88px, 42%) minmax(0, 1fr); column-gap: 12px; padding: 10px 40px 10px 10px; border-radius: 9px; }
.song-view.song-library-expanded .rail-song-layout-preview { width: 100%; height: auto; aspect-ratio: 4 / 3; }
.song-view.song-library-expanded .rail-song-button strong, .song-view.song-library-expanded .workspace-preset-button strong { align-self: start; color: var(--ink); font-size: 1.05rem; font-weight: 950; line-height: 1.08; overflow-wrap: anywhere; white-space: normal; }
.song-view.song-library-expanded .rail-song-create-form { width: 100%; min-width: 0; min-height: 132px; order: 2; align-content: start; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); border-radius: 9px; background: white; }
.song-view.song-library-expanded .rail-song-create-form > strong, .song-view.song-library-expanded .rail-song-create-form > div { grid-column: 1 / -1; }
.song-view.song-library-expanded .rail-library-row { display: grid; }
.song-view.song-library-expanded .rail-library-row > div { display: flex; gap: 10px; overflow-x: auto; padding: 2px 2px 10px; }
.song-view.song-library-expanded .rail-library-card { width: 250px; min-width: 250px; min-height: 92px; flex: 0 0 250px; }
.song-view.song-library-expanded .workspace-presets { flex: 0 0 auto; }
.song-view.song-library-expanded .custom-workspace-list, .song-view.song-library-expanded .workspace-premade-list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; padding: 2px 2px 10px; }
.song-view.song-library-expanded .custom-workspace-card, .song-view.song-library-expanded .workspace-premade-list > .workspace-preset-button { width: 100%; min-width: 0; }
.song-view.song-library-expanded .workspace-preset-button { min-height: 140px; grid-template-columns: minmax(88px, 42%) minmax(0, 1fr); align-items: start; column-gap: 12px; row-gap: 6px; padding: 10px; border-radius: 9px; }
.song-view.song-library-expanded .workspace-preview { width: 100%; height: auto; aspect-ratio: 4 / 3; }
.workspace-preset-button {
  display: grid;
  width: 100%;
  min-height: 103px;
  grid-template-columns: 106px minmax(0, 1fr);
  grid-template-rows: auto 1fr;
  align-items: start;
  align-self: start;
  column-gap: 12px;
  row-gap: 5px;
  padding: 10px;
  border: 2px solid var(--ink);
  border-radius: 8px;
  background: white;
  color: var(--ink);
  text-align: left;
}
.workspace-preset-button:hover { background: var(--yellow); transform: none; }
.workspace-preset-button.is-active { background: var(--yellow); }
.workspace-preset-button strong { grid-column: 2; grid-row: 1; align-self: start; font-size: .94rem; font-weight: 950; line-height: 1.08; }
.workspace-preset-button:hover strong { color: var(--ink); }
.workspace-preset-button small { display: block; grid-column: 2; grid-row: 2; align-self: start; color: var(--ink); font-size: .7rem; font-weight: 400; line-height: 1.3; }
.workspace-preview { display: grid; width: 106px; height: 80px; grid-column: 1; grid-row: 1 / span 2; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, 1fr); gap: 2px; }
.workspace-cell { display: grid; min-width: 0; place-items: center; overflow: hidden; border: 1px solid var(--ink); border-radius: 2px; color: var(--ink); font-size: .32rem; font-style: normal; font-weight: 950; line-height: 1; }
.workspace-preview .preview-chords, .workspace-preview .preview-notepad, .workspace-preview .preview-lyrics { background: var(--tool-writing); }
.workspace-preview .preview-audio { background: var(--tool-reference); }
.workspace-preview .preview-info, .workspace-preview .preview-tasks { background: var(--tool-organizing); }
.workspace-preview-writing-room .preview-lyrics { grid-column: 1 / span 2; grid-row: 1 / span 3; }
.workspace-preview-writing-room .preview-notepad { grid-column: 3 / span 2; grid-row: 1 / span 2; }
.workspace-preview-writing-room .preview-audio { grid-column: 3 / span 2; grid-row: 3; }
.workspace-preview-harmony .preview-chords { grid-column: 1 / span 2; grid-row: 1 / span 3; }
.workspace-preview-harmony .preview-lyrics { grid-column: 3 / span 2; grid-row: 1 / span 3; }
.workspace-preview-play-through .preview-chords { grid-column: 1 / span 2; grid-row: 1 / span 3; }
.workspace-preview-play-through .preview-audio { grid-column: 3 / span 2; grid-row: 1 / span 2; }
.workspace-preview-play-through .preview-info { grid-column: 3; grid-row: 3; }
.workspace-preview-play-through .preview-tasks { grid-column: 4; grid-row: 3; }
.workspace-preview-review-finish .preview-audio { grid-column: 1 / span 2; grid-row: 1 / span 2; }
.workspace-preview-review-finish .preview-lyrics { grid-column: 3 / span 2; grid-row: 1 / span 3; }
.workspace-preview-review-finish .preview-info { grid-column: 1; grid-row: 3; }
.workspace-preview-review-finish .preview-tasks { grid-column: 2; grid-row: 3; }
.workspace-preview-whole-song .preview-info { grid-column: 1; grid-row: 1; }
.workspace-preview-whole-song .preview-tasks { grid-column: 2; grid-row: 1; }
.workspace-preview-whole-song .preview-chords { grid-column: 3 / span 2; grid-row: 1 / span 2; }
.workspace-preview-whole-song .preview-notepad { grid-column: 1; grid-row: 2 / span 2; }
.workspace-preview-whole-song .preview-lyrics { grid-column: 2; grid-row: 2 / span 2; }
.workspace-preview-whole-song .preview-audio { grid-column: 3 / span 2; grid-row: 3; }
.workspace-preset-status { min-height: 1rem; margin: 0 2px; color: var(--muted); font-size: .67rem; font-weight: 800; }

.song-page {
  --song-page-padding-x: clamp(18px, 3vw, 34px);
  --song-page-padding-top: 14px;
  --song-page-padding-bottom: 28px;
  position: relative;
  display: grid;
  min-width: 0;
  min-height: 0;
  margin-left: 12px;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 12px;
  height: 100%;
  overflow: hidden;
  padding: var(--song-page-padding-top) var(--song-page-padding-x) var(--song-page-padding-bottom);
}
.song-heading {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-height: 38px;
  justify-self: start;
  padding: 6px 0;
  text-align: left;
  transition: none;
}
.song-heading h1 {
  margin: 0;
  font-size: clamp(1.6rem, 3.15vw, 2.85rem);
  line-height: .96;
  letter-spacing: -.065em;
  overflow-wrap: anywhere;
}
.song-title-button { display: inline-flex; width: auto; margin: -4px -7px; padding: 4px 7px; border: 0; border-radius: 9px; background: transparent; color: inherit; font: inherit; line-height: inherit; letter-spacing: inherit; text-align: left; white-space: nowrap; transition: background-color .12s ease; }
.song-title-button:disabled { color: inherit; cursor: default; opacity: 1; }
.song-view.module-focused .song-title-button { cursor: pointer; }
.song-view.module-focused .song-title-button:hover { background: rgba(5, 5, 5, .14); color: inherit; }
.song-view.module-focused .song-title-button:focus-visible { outline: 3px solid rgba(5, 5, 5, .28); outline-offset: 2px; background: rgba(5, 5, 5, .14); }
.song-title-line { display: flex; min-width: 0; align-items: center; justify-content: flex-start; gap: 9px; }
.song-title-line h1 { width: auto; min-width: 0; flex: 0 0 auto; }
.song-heading-tags { max-width: 55%; flex: 0 1 auto; justify-content: flex-start; }
.song-delete-button { display: grid; width: 30px; height: 30px; flex: 0 0 auto; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: var(--paper); font-size: .85rem; font-weight: 900; }
.song-delete-button:hover { background: var(--coral); }

.module-grid {
  --grid-columns: 4;
  --grid-visible-rows: 3;
  --grid-column-min: 180px;
  --grid-column-max: 440px;
  --grid-column-width: 240px;
  --grid-gap: 8px;
  --grid-row-height: 160px;
  --grid-scroll-rail: clamp(18px, 3vw, 34px);
  position: relative;
  display: grid;
  min-height: 0;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  padding: 1px 1px 8px;
  grid-template-columns: repeat(var(--grid-columns), var(--grid-column-width));
  grid-template-rows: repeat(var(--grid-visible-rows), var(--grid-row-height));
  grid-auto-flow: column;
  grid-auto-columns: var(--grid-column-width);
  gap: var(--grid-gap);
  align-content: start;
  justify-content: safe center;
}
.empty-canvas {
  display: grid;
  grid-column: 1 / -1;
  min-height: 280px;
  place-items: center;
  border: 2px dashed rgba(5, 5, 5, .2);
  border-radius: 16px;
  color: var(--muted);
}
.empty-canvas p { margin: 0; font-size: .72rem; font-weight: 800; }

.module-frame {
  position: relative;
  display: grid;
  min-height: 0;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 11px;
  overflow: hidden;
  padding: 13px;
  border: 5px solid var(--ink);
  border-radius: 14px;
  background: white;
  cursor: default;
  transition: opacity .12s ease, transform .12s ease;
}
.module-grid.focus-mode { display: block; overflow: hidden; }
.module-grid.focus-mode .module-frame { display: none; }
.module-grid.focus-mode .module-frame.focused-module {
  display: grid;
  width: 100%;
  height: 100%;
  cursor: default;
}
.module-grid.focus-mode .module-resize { display: none; }
.song-view.module-focused { grid-template-columns: 0 minmax(0, 1fr); }
.song-view.module-focused .module-rail { visibility: hidden; opacity: 0; transform: translateX(-100%); pointer-events: none; }
.song-view.module-focused .focused-module { cursor: default; }
.module-frame.dragging {
  z-index: 2;
  opacity: .46;
  box-shadow: 6px 6px 0 rgba(5, 5, 5, .18);
}
.grid-drop-preview {
  z-index: 4;
  border: 4px solid var(--yellow);
  border-radius: 14px;
  background: rgba(245, 206, 34, .2);
  pointer-events: none;
}
.resize-cell-highlight {
  z-index: 5;
  border: 3px solid var(--yellow);
  border-radius: 14px;
  background: rgba(245, 206, 34, .22);
  pointer-events: none;
}
.resize-live-outline {
  position: absolute;
  z-index: 9;
  min-width: 0;
  min-height: 0;
  border: 4px solid var(--yellow);
  border-radius: 14px;
  background: transparent;
  pointer-events: none;
}
.resize-live-outline::after {
  position: absolute;
  right: -4px;
  bottom: -4px;
  width: 16px;
  height: 16px;
  border-right: 4px solid var(--yellow);
  border-bottom: 4px solid var(--yellow);
  border-radius: 0 0 8px 0;
  content: "";
}
.resize-live-outline.resize-from-left::after {
  right: auto;
  left: -4px;
  border-right: 0;
  border-left: 4px solid var(--yellow);
  border-radius: 0 0 0 8px;
}
.module-frame-head {
  position: relative;
  z-index: 4;
  display: grid;
  min-width: 0;
  min-height: 38px;
  grid-template-columns: 38px minmax(0, 1fr) 38px;
  align-items: stretch;
  margin: -13px -13px 0;
  border-bottom: 3px solid var(--ink);
  background: var(--ink);
  color: white;
}
.module-frame-head > h2 { min-width: 0; align-self: stretch; margin: 0; padding: 0; font-size: 1.08rem; font-weight: 900; line-height: 1.05; letter-spacing: -.03em; overflow-wrap: anywhere; }
.module-enter { width: 100%; height: 100%; min-width: 0; padding: 0 10px; overflow: hidden; border: 0; background: transparent; color: inherit; font: inherit; line-height: inherit; letter-spacing: inherit; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.module-enter.is-pointer-hovered { background: var(--yellow); color: var(--ink); }
.module-enter:focus-visible { outline: 3px solid var(--yellow); outline-offset: -3px; }
.module-enter:disabled { background: transparent; color: inherit; cursor: default; opacity: 1; }
.module-grid.focus-mode .module-frame-head { grid-template-columns: 38px minmax(0, 1fr) 38px; }
.module-grid.focus-mode .module-enter { padding-left: 10px; }
.module-grid.focus-mode .module-drag { display: none; }
.module-back {
  display: none;
  width: 38px;
  height: 38px;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: 9px 0 0 0;
  background: transparent;
  color: white;
}
.module-grid.focus-mode .module-back { display: grid; }
.module-back.is-pointer-hovered { background: var(--yellow); color: var(--ink); }
.module-back:focus-visible { outline: 3px solid var(--yellow); outline-offset: -3px; }
.module-back svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.module-drag {
  position: relative;
  z-index: 6;
  width: 38px;
  height: 38px;
  border: 0;
  border-right: 3px solid var(--ink);
  border-radius: 9px 0 0 0;
  background: var(--yellow);
  cursor: grab;
  touch-action: none;
  user-select: none;
  transition: none;
}
.module-drag::before {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--ink);
  content: "⠿";
  font-size: 1rem;
  font-weight: 950;
  line-height: 1;
}
.module-drag.is-pointer-hovered, .module-drag:focus-visible { background: var(--yellow); box-shadow: inset 0 0 0 3px rgba(5, 5, 5, .18); }
.module-drag:active { cursor: grabbing; }
.module-drag:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }
.module-grid:not(.focus-mode) .module-drag { background: var(--ink); box-shadow: none; }
.module-grid:not(.focus-mode) .module-drag::before { color: white; }
.module-grid:not(.focus-mode) .module-drag.is-pointer-hovered,
.module-grid:not(.focus-mode) .module-drag:focus-visible,
.module-grid:not(.focus-mode) .module-drag:active,
.module-grid:not(.focus-mode) .module-frame.dragging .module-drag { background: var(--yellow); box-shadow: inset 0 0 0 3px rgba(5, 5, 5, .18); }
.module-grid:not(.focus-mode) .module-drag.is-pointer-hovered::before,
.module-grid:not(.focus-mode) .module-drag:focus-visible::before,
.module-grid:not(.focus-mode) .module-drag:active::before,
.module-grid:not(.focus-mode) .module-frame.dragging .module-drag::before { color: var(--ink); }
.module-remove {
  position: relative;
  z-index: 6;
  width: 38px;
  height: 38px;
  padding: 0;
  border: 0;
  border-left: 2px solid rgba(255, 255, 255, .35);
  border-radius: 0 9px 0 0;
  background: var(--ink);
  color: transparent;
  font-size: 0;
  transition: background .12s ease;
}
.module-remove::before {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: white;
  content: "×";
  font-size: 1rem;
  font-weight: 950;
  line-height: 1;
}
.module-remove:hover, .module-remove:focus-visible { background: var(--coral); }
.module-remove:hover::before, .module-remove:focus-visible::before { color: var(--ink); }
.module-remove:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }
.module-resize {
  position: absolute;
  bottom: 0;
  z-index: 3;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  cursor: nwse-resize;
  touch-action: none;
  user-select: none;
}
.module-resize-right { right: 0; }
.module-resize-left { left: 0; cursor: nesw-resize; }
.module-resize::before {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 18px;
  height: 18px;
  border: 0;
  border-radius: 0 0 8px 0;
  background: var(--ink);
  clip-path: polygon(100% 0, 100% 100%, 0 100%);
  content: "";
}
.module-resize-left::before {
  right: auto;
  left: 0;
  border-radius: 0 0 0 8px;
  clip-path: polygon(0 0, 100% 100%, 0 100%);
}
.module-resize.is-pointer-hovered { background: transparent; }
.module-resize:active::before, .module-frame.resizing .module-resize::before { background: var(--yellow); }
.module-frame.resizing { z-index: 7; user-select: none; }
.module-grid.suppress-interaction-hover .module-drag { background: var(--ink); box-shadow: none; }
.module-grid.suppress-interaction-hover .module-drag::before { color: white; }
.module-grid.suppress-interaction-hover .module-enter { background: transparent; color: white; }
.module-grid.suppress-interaction-hover .module-resize { background: transparent; }
.module-grid.suppress-interaction-hover .module-resize::before { background: var(--ink); }
.module-grid.suppress-interaction-hover .task-list-column > header .task-list-grip { background: transparent; }
.placeholder-lines { display: grid; gap: 7px; margin-top: 16px; }
.placeholder-lines span { display: block; height: 6px; border-radius: 99px; background: var(--cream); }
.placeholder-lines span:nth-child(2) { width: 72%; }
.placeholder-lines span:nth-child(3) { width: 86%; }
.placeholder-lines span:nth-child(4) { width: 54%; }

.module-chords, .module-lyrics, .module-lyricEditor { background: var(--tool-writing); }
.module-info, .module-todos { background: var(--tool-organizing); }
.module-audio { background: var(--tool-reference); }
.module-info:not(.focused-module) { color: var(--ink); }
.module-info:not(.focused-module) .module-body { overflow: hidden; }
.module-body { min-height: 0; overflow: auto; cursor: default; }
.module-frame input, .module-frame textarea, .module-frame select { cursor: text; }
.module-frame button, .module-frame label, .module-frame select { cursor: pointer; }
.module-frame input, .module-frame textarea, .module-frame select {
  min-width: 0;
  border: 2px solid var(--ink);
  border-radius: 8px;
  background: var(--paper);
  color: var(--ink);
  font-size: .76rem;
  font-weight: 500;
  outline: 0;
}
.module-frame input:focus, .module-frame textarea:focus, .module-frame select:focus { box-shadow: 0 0 0 3px var(--yellow); }
.module-frame label > span { font-size: .6rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.module-empty-message { margin: 10px 2px; color: var(--muted); font-size: .7rem; font-weight: 600; }

.info-summary { display: grid; height: 100%; min-height: 0; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 6px; padding: 2px 1px; }
.info-summary > strong { min-width: 0; color: var(--ink); font-size: clamp(1.45rem, 2.35vw, 2rem); font-weight: 900; line-height: .98; letter-spacing: -.045em; opacity: 1; overflow-wrap: anywhere; }
.info-summary-tags { max-width: 100%; justify-content: flex-start; justify-self: start; }
.info-summary .entity-tag { border-color: var(--ink); }
.info-summary .project-tag, .info-summary .more-tag { border-color: var(--ink); color: var(--ink); }
.info-summary-empty { color: rgba(5,5,5,.55); font-size: .62rem; font-weight: 800; }
.info-module-content { display: grid; gap: 30px; padding: 1px; }
.info-focused-grid { display: grid; grid-template-columns: minmax(0, .72fr) minmax(0, .96fr) minmax(0, 1.62fr); gap: clamp(22px, 3vw, 42px); align-items: start; }
.info-focused-column { display: grid; min-width: 0; align-content: start; gap: 15px; padding: 4px 0; }
.info-column-heading { display: flex; min-height: 31px; align-items: center; justify-content: space-between; gap: 9px; }
.info-column-heading > span { font-size: .72rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.info-column-heading > small { color: var(--muted); font-size: .58rem; font-weight: 800; }
.info-primary-fields { display: grid; grid-template-columns: 1fr; gap: 9px; }
.info-primary-fields label, .song-relationship-fields label, .song-notes-field { display: grid; gap: 5px; }
.info-primary-fields input { width: 100%; height: 38px; padding: 0 9px; }
.song-relationship-fields { display: grid; grid-template-columns: 1fr; gap: 9px; }
.directory-picker { display: grid; grid-template-columns: minmax(0, 1fr) 34px; gap: 5px; font-size: inherit; font-weight: inherit; letter-spacing: normal; text-transform: none; }
.directory-picker select { width: 100%; height: 36px; padding: 0 7px; }
.directory-picker button { width: 34px; height: 36px; padding: 0; border: 2px solid var(--ink); border-radius: 8px; background: var(--cream); font-weight: 900; }
.directory-picker button:hover { background: var(--yellow); }
.contributors-section { display: grid; gap: 7px; }
.contributors-section > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.contributors-section > header strong { font-size: .65rem; letter-spacing: .05em; text-transform: uppercase; }
.contributors-section > header button { width: 30px; height: 30px; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: var(--yellow); font-weight: 900; }
.contributor-list { display: grid; gap: 6px; }
.contributor-column-headings { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 30px; gap: 5px; margin-bottom: -8px; padding: 0 3px; color: var(--muted); font-size: .58rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.contributor-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 30px; gap: 5px; }
.contributor-row input, .contributor-row select { width: 100%; height: 36px; padding: 0 8px; }
.contributor-row button { width: 30px; height: 36px; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: white; font-weight: 900; }
.contributor-row button:hover { background: var(--coral); }
.info-people-actions { display: flex; flex-wrap: wrap; gap: 7px; }
.info-people-actions button { min-height: 34px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--paper); font-size: .67rem; font-weight: 850; }
.info-people-actions button:hover { background: var(--yellow); }
.info-people-actions .create-info-person-button { background: var(--yellow); }
.info-new-person-editor { display: grid; grid-template-columns: minmax(140px, 1fr) auto auto; gap: 7px; }
.info-new-person-editor input { min-width: 0; height: 38px; padding: 0 9px; }
.info-new-person-editor button { min-height: 38px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--paper); font-size: .66rem; font-weight: 850; }
.info-new-person-editor button[type="submit"] { background: var(--green); color: white; }
.info-new-person-editor small { grid-column: 1 / -1; color: var(--muted); font-size: .62rem; font-weight: 750; }
.song-rights-section { display: grid; gap: 13px; padding: 18px; border-radius: 14px; background: rgba(255,255,255,.48); }
.song-rights-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.song-rights-heading > div { display: grid; gap: 2px; }
.song-rights-heading > div > span { font-size: .78rem; font-weight: 950; letter-spacing: .06em; text-transform: uppercase; }
.song-rights-heading small, .rights-footnote { color: var(--muted); font-size: .61rem; font-weight: 750; }
.split-total { padding: 7px 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--paper); font-size: .68rem; white-space: nowrap; }
.split-total.is-complete { background: var(--green); color: white; }
.split-total.is-incomplete { background: var(--yellow); }
.song-rights-layout { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(230px, .8fr); gap: 22px; align-items: start; }
.writer-splits-panel, .writer-list, .copyright-fields { display: grid; gap: 7px; }
.writer-column-headings { display: grid; grid-template-columns: minmax(180px, 1.4fr) minmax(115px, .8fr) 92px 30px; gap: 6px; padding: 0 3px; color: var(--muted); font-size: .58rem; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.writer-row { display: grid; grid-template-columns: minmax(180px, 1.4fr) minmax(115px, .8fr) 92px 30px; gap: 6px; align-items: start; }
.writer-row select, .writer-row input { width: 100%; height: 38px; padding: 0 8px; }
.writer-person-field { display: grid; gap: 3px; }
.writer-person-field small { min-height: 12px; padding-left: 3px; color: var(--muted); font-size: .55rem; font-weight: 750; overflow-wrap: anywhere; }
.writer-share-field { position: relative; display: block; }
.writer-share-field input { padding-right: 24px; }
.writer-share-field > span { position: absolute; top: 11px; right: 9px; font-size: .7rem; font-weight: 900; }
.writer-row > button { width: 30px; height: 38px; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: var(--paper); font-weight: 900; }
.writer-row > button:hover { background: var(--coral); }
.rights-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 3px; }
.rights-actions button { min-height: 34px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 8px; background: var(--paper); font-size: .66rem; font-weight: 850; }
.rights-actions button:first-child { background: var(--yellow); }
.copyright-fields label { display: grid; gap: 5px; }
.copyright-fields input { width: 100%; height: 38px; padding: 0 9px; }
.rights-footnote { margin: 0; line-height: 1.4; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
.song-notes-field textarea { width: 100%; min-height: 96px; resize: vertical; padding: 9px; line-height: 1.45; }
.info-notes-column textarea { width: 100%; min-height: 340px; resize: vertical; padding: 12px; background: var(--paper); font-size: .9rem; line-height: 1.5; }
.archive-song-note-button { display: grid; width: 30px; height: 30px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: var(--yellow); }
.archive-song-note-button:hover { background: var(--paper); }
.archive-song-note-button svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.song-note-status { min-height: 14px; color: var(--muted); font-size: .6rem; font-weight: 800; }
.song-note-status:empty { display: none; }
.song-note-archive { display: grid; gap: 12px; padding-top: 6px; }
.song-note-archive > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.song-note-archive > header > span { font-size: .72rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.song-note-archive > header small { color: var(--muted); font-size: .62rem; font-weight: 850; }
.song-note-archive-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 10px; align-items: start; }
.song-note-card { display: grid; gap: 9px; min-width: 0; padding: 12px; border: 2px solid var(--ink); border-radius: 10px; background: var(--paper); }
.song-note-card > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.song-note-card time { color: var(--muted); font-size: .58rem; font-weight: 800; }
.song-note-card button { display: grid; width: 26px; height: 26px; place-items: center; padding: 0; border: 0; border-radius: 6px; background: transparent; font-weight: 900; }
.song-note-card button:hover { background: var(--coral); }
.song-note-card p { margin: 0; font-size: .78rem; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; }
.song-note-archive-empty { margin: 0; color: var(--muted); font-size: .7rem; font-weight: 750; }
.focused-module .info-module-content { width: 100%; margin-inline: auto; padding: 8px 4px 18px; }

.tasks-module-content { height: 100%; min-height: 0; padding: 1px; }
.tasks-grid-view { display: grid; min-height: 0; align-content: start; gap: 8px; }
.tasks-grid-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tasks-grid-header > h3 { margin: 0; font-size: .72rem; font-weight: 900; }
.tasks-expanded-view { display: none; height: 100%; min-height: 0; }
.task-list-board { position: relative; display: grid; min-height: 0; grid-template-columns: 346px minmax(0, 1fr); gap: 10px; overflow: hidden; }
.task-list-landing-pad { display: grid; min-width: 0; min-height: 0; padding: 20px; overflow: hidden; border: 3px dashed var(--ink); border-radius: 13px; background: rgba(245, 206, 34, .18); }
.task-list-landing-pad.task-list-drop-target { outline: 4px solid var(--blue); outline-offset: -4px; }
.task-list-landing-pad .task-list-column { width: 300px; height: 100%; justify-self: center; background: white; }
.task-list-columns { display: grid; min-height: 0; grid-auto-columns: 300px; grid-auto-flow: column; gap: 9px; padding: 21px 0; overflow-x: auto; align-items: stretch; }
.task-list-add-column { display: grid; min-width: 0; min-height: 0; place-content: center; gap: 7px; border: 2px dashed rgba(5, 5, 5, .38); border-radius: 10px; background: transparent; color: var(--muted); }
.task-list-add-column span { font-size: 1.35rem; font-weight: 700; line-height: 1; }
.task-list-add-column strong { font-size: .72rem; font-weight: 900; }
.task-list-add-column:hover { border-color: var(--ink); background: var(--yellow); color: var(--ink); }
.task-list-board.task-reordering .task-list-landing-pad, .task-list-board.task-reordering .task-list-columns { overflow: visible; }
.task-list-column { position: relative; z-index: 2; display: grid; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 8px; padding: 9px; overflow: hidden; border: 2px solid var(--ink); border-radius: 10px; background: var(--cream); transition: transform .18s ease, opacity .12s ease; }
.task-list-column.dragging-list { opacity: 0; }
.task-list-drag-ghost { position: fixed; z-index: 1000; margin: 0; pointer-events: none; box-shadow: 7px 7px 0 rgba(5, 5, 5, .18); opacity: .96; transform: none !important; transition: none !important; }
.task-list-native-drag-image { position: fixed; left: 0; top: 0; z-index: -1; width: 1px; height: 1px; opacity: .01; pointer-events: none; }
.task-list-column.task-list-drop-target { outline: 3px solid var(--blue); outline-offset: -3px; }
.task-list-placeholder { position: absolute; z-index: 1; border: 3px dashed var(--blue); border-radius: 10px; background: rgba(53, 104, 212, .1); pointer-events: none; transition: left .18s ease, top .18s ease; }
.task-list-column > header { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 6px; }
.task-list-column > header input { width: 100%; height: 32px; padding: 0 8px; border: 0; background: transparent; font-size: .78rem; font-weight: 900; }
.task-list-column > header .task-list-grip { width: 30px; height: 30px; padding: 0; border: 0; border-radius: 6px; background: transparent; cursor: grab; font-size: .8rem; }
.task-list-column > header .task-list-grip.is-pointer-hovered { background: var(--yellow); }
.task-list-column > header .task-list-grip:active { cursor: grabbing; }
.task-list-column > header .task-list-delete { width: 27px; height: 27px; padding: 0; border: 0; border-radius: 6px; background: transparent; font-size: .9rem; font-weight: 900; }
.task-list-column > header .task-list-delete:hover { background: var(--coral); }
.task-list { display: grid; min-height: 0; align-content: start; gap: 6px; margin: 0; padding: 0; overflow: auto; list-style: none; }
.task-item { position: relative; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; min-height: 44px; padding: 8px 11px 8px 10px; border: 2px solid var(--ink); border-radius: 9px; background: white; }
.task-item.dragging-task { height: 0; min-height: 0; overflow: hidden; padding-block: 0; border-block-width: 0; opacity: 0; }
.task-item-drop-placeholder { min-height: 44px; border: 2px dotted var(--blue); border-radius: 9px; background: rgba(53, 104, 212, .08); pointer-events: none; }
.task-list-column.task-list-drop-target .task-list > .module-empty-message { display: none; }
.task-item .task-drag-surface { position: absolute; z-index: 0; display: none; inset: 0; cursor: grab; }
.task-item .task-drag-surface:active { cursor: grabbing; }
.task-item input[type="checkbox"] { position: relative; z-index: 1; width: 17px; height: 17px; appearance: none; border: 1.5px solid rgba(5,5,5,.5); border-radius: 4px; background: white; cursor: pointer; }
.task-item input[type="checkbox"]:checked { border-color: var(--ink); background-color: var(--ink); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.3 8.2 6.4 11l6.2-6.2' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-position: center; background-repeat: no-repeat; background-size: 13px; }
.task-item span[data-task-text] { position: relative; z-index: 1; min-width: 0; overflow-wrap: anywhere; white-space: normal; cursor: text; font: var(--writing-font-weight) var(--writing-font-size)/var(--writing-line-height) var(--writing-font-family); }
.task-item .task-edit-field { position: relative; z-index: 1; width: 100%; min-height: 30px; grid-column: 2; resize: none; overflow: hidden; padding: 4px 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; font: var(--writing-font-weight) var(--writing-font-size)/var(--writing-line-height) var(--writing-font-family); white-space: pre-wrap; overflow-wrap: anywhere; }
.task-item.done span[data-task-text] { color: var(--muted); text-decoration: line-through; }
.task-entry-row { min-height: 44px; list-style: none; }
.task-inline-form { display: grid; min-height: 44px; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 8px; padding: 7px 11px 7px 10px; border: 2px solid rgba(5,5,5,.22); border-radius: 9px; background: rgba(255,255,255,.62); }
.task-inline-form:focus-within { border-color: var(--yellow); background: white; box-shadow: inset 0 0 0 1px var(--yellow); }
.task-entry-circle { width: 17px; height: 17px; border: 1.5px solid rgba(5,5,5,.42); border-radius: 4px; }
.task-inline-form input { width: 100%; height: 28px; padding: 0; border: 0; border-radius: 0; background: transparent; font: var(--writing-font-weight) var(--writing-font-size)/var(--writing-line-height) var(--writing-font-family); box-shadow: none; }
.task-inline-form input:focus { box-shadow: none; }
.task-inline-form input::placeholder { color: var(--muted); }
.focused-module .task-item { cursor: grab; }
.focused-module .task-item:active { cursor: grabbing; }
.focused-module .task-item .task-drag-surface { display: block; }
.focused-module .tasks-module-content { width: 100%; margin: 0; padding: 8px; }
.focused-module .tasks-grid-view { display: none; }
.focused-module .tasks-expanded-view { display: grid; }

.module-audio .module-body { min-height: 0; overflow: hidden; }
.audio-module-content {
  display: grid;
  height: 100%;
  min-height: 0;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 14px;
  padding: 1px;
  border-radius: 10px;
  transition: background-color .12s ease, box-shadow .12s ease;
}
.audio-module-content > audio { display: none; }
.audio-module-content.is-audio-drag-over { background: rgba(245, 206, 34, .28); box-shadow: inset 0 0 0 3px var(--yellow); }
.audio-is-empty { grid-template-rows: minmax(0, 1fr) auto; }
.audio-drop-zone {
  display: flex;
  min-height: 0;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px;
  border: 2px dashed rgba(5, 5, 5, .35);
  border-radius: 10px;
  background: rgba(238, 227, 209, .42);
}
.audio-drop-icon { display: grid; flex: 0 0 auto; place-items: center; border: 2px solid var(--ink); border-radius: 8px; background: var(--yellow); font-weight: 950; }
.audio-drop-icon { width: 35px; height: 35px; font-size: 1rem; }
.audio-drop-zone > div, .audio-file-row > div { display: grid; min-width: 0; gap: 1px; }
.audio-drop-zone strong, .audio-file-row strong { min-width: 0; overflow: hidden; font-size: .72rem; font-weight: 900; text-overflow: ellipsis; white-space: nowrap; }
.audio-drop-zone small, .audio-file-row small { min-width: 0; overflow: hidden; color: var(--muted); font-size: .57rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.audio-drop-zone button, .audio-file-row button {
  flex: 0 0 auto;
  min-height: 30px;
  padding: 0 9px;
  border: 2px solid var(--ink);
  border-radius: 7px;
  background: white;
  font-size: .61rem;
  font-weight: 900;
}
.audio-drop-zone button:hover, .audio-file-row button:hover { background: var(--yellow); }
.audio-header-row { display: grid; height: 42px; min-width: 0; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; }
.audio-file-row { display: grid; height: 42px; min-width: 0; grid-template-columns: minmax(120px, 1fr) 30px 30px; align-items: center; column-gap: 4px; padding: 4px 4px 4px 6px; border: 2px solid var(--ink); border-radius: 9px; background: var(--paper); }
.audio-file-row .audio-replace, .audio-file-row .audio-remove { display: grid; width: 30px; height: 30px; min-height: 0; place-items: center; padding: 0; border: 0; border-radius: 6px; background: transparent; }
.audio-file-row .audio-replace svg { display: block; width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.audio-file-row .audio-remove { justify-self: end; font-size: .85rem; }
.audio-file-row .audio-replace:hover { background: var(--yellow); }
.audio-file-row .audio-remove:hover { background: var(--coral); }
.audio-primary-controls { display: grid; min-width: 0; min-height: 0; grid-template-rows: minmax(0, 1fr); padding: 4px 0; }
.audio-navigation { display: flex; align-items: center; justify-content: center; gap: 7px; }
.audio-navigation button { display: grid; width: 42px; height: 42px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 9px; background: var(--paper); font-size: .72rem; font-weight: 950; line-height: 1; }
.audio-navigation button:not(:disabled):hover { background: var(--yellow); }
.audio-navigation button:disabled { cursor: default; opacity: .25; }
.audio-navigation .audio-play { background: var(--yellow); }
.audio-navigation svg { width: 19px; height: 19px; fill: currentColor; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.audio-play:not(:disabled):hover { background: var(--coral); }
.audio-play:active { background: var(--ink); color: white; }
.audio-play:disabled { cursor: wait; opacity: .35; }
.audio-timeline { display: grid; width: 100%; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 7px; }
.audio-time-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.audio-time-row > span { min-width: 3.2em; font: 850 .62rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: nowrap; }
.audio-time-row > span:last-child { text-align: right; }
.audio-time-row > strong { color: var(--muted); font-size: .55rem; font-weight: 850; letter-spacing: .055em; text-align: center; text-transform: uppercase; }
.audio-scale-controls { display: none; height: 42px; grid-template-columns: 42px 46px 42px; align-items: stretch; overflow: hidden; border: 0; border-radius: 9px; background: var(--paper); box-shadow: inset 0 0 0 2px var(--ink); }
.audio-scale-controls button { position: relative; display: grid; width: 42px; height: 42px; place-items: center; padding: 0; border: 0; border-radius: 8px; background: transparent; color: var(--ink); }
.audio-scale-controls button::before { position: absolute; z-index: 0; inset: 4px; border-radius: 5px; background: transparent; content: ""; pointer-events: none; }
.audio-scale-controls button svg { position: relative; z-index: 1; width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 3; stroke-linecap: round; }
.audio-scale-controls button:not(:disabled):hover::before { background: var(--yellow); }
.audio-scale-controls button:disabled { opacity: .25; }
.audio-scale-controls output { display: grid; place-items: center; font: 850 .66rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; text-align: center; }
.audio-clear-notes { display: none; width: 42px; height: 42px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 9px; background: var(--paper); }
.audio-clear-notes svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.audio-clear-notes:not(:disabled):hover { background: var(--coral); }
.audio-clear-notes:disabled { opacity: .3; }
.audio-timeline-scroll { width: 100%; min-width: 0; min-height: 0; overflow-x: auto; overflow-y: hidden; scrollbar-color: var(--ink) transparent; scrollbar-width: thin; }
.audio-timeline-track { height: 100%; min-height: 0; }
.audio-waveform { --audio-progress: 0%; --audio-cursor: 0%; position: relative; width: 100%; height: 92px; overflow: hidden; border: 3px solid var(--ink); border-radius: 11px; background-color: var(--paper); background-image: repeating-linear-gradient(90deg, transparent 0, transparent calc(10% - 1px), rgba(5,5,5,.07) calc(10% - 1px), rgba(5,5,5,.07) 10%); cursor: ew-resize; touch-action: none; }
.audio-waveform::before { position: absolute; z-index: 0; inset: 0; background: linear-gradient(90deg, rgba(245, 206, 34, .12) 0 var(--audio-progress), transparent var(--audio-progress) 100%); content: ""; pointer-events: none; }
.audio-waveform::after { position: absolute; z-index: 5; top: 0; bottom: 0; left: var(--audio-progress); width: 5px; background: var(--ink); content: ""; pointer-events: none; transform: translateX(-2px); }
.audio-waveform:focus-visible { outline: 4px solid var(--yellow); outline-offset: 3px; }
.module-audio.audio-space-active:focus, .module-audio.audio-space-active .audio-waveform:focus-visible { outline: none; }
.audio-waveform canvas { position: relative; z-index: 2; display: block; width: 100%; height: 100%; pointer-events: none; }
.audio-waveform:not(.has-waveform) canvas { opacity: .22; }
.audio-marker-stage { --audio-progress: 0%; position: relative; display: grid; height: 100%; min-width: 0; min-height: 0; grid-template-rows: minmax(150px, 2fr) minmax(82px, 1fr); }
.audio-playhead-time, .audio-cursor-guide span { position: absolute; z-index: 7; top: 5px; left: clamp(27px, var(--audio-progress), calc(100% - 27px)); min-width: 44px; padding: 3px 5px; border-radius: 4px; background: var(--ink); color: white; font: 800 .57rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; text-align: center; pointer-events: none; transform: translateX(-50%); }
.audio-cursor-guide { position: absolute; z-index: 6; inset: 0; opacity: 0; pointer-events: none; }
.audio-cursor-guide::before { position: absolute; top: 0; bottom: 0; left: var(--audio-cursor); border-left: 2px dashed var(--blue); content: ""; transform: translateX(-1px); }
.audio-cursor-guide span { left: clamp(27px, var(--audio-cursor), calc(100% - 27px)); background: var(--blue); }
.audio-waveform.has-audio-cursor .audio-cursor-guide { opacity: .72; }
.audio-playhead-action { position: absolute; z-index: 8; left: var(--audio-progress-left, 13px); display: grid; width: 23px; height: 23px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 5px; background: var(--paper); color: var(--ink); font: 950 .9rem/1 Arial, sans-serif; transform: translateX(-50%); }
.audio-marker-lane-below .audio-playhead-action { top: 4px; }
.audio-playhead-action:not(:disabled):hover, .audio-playhead-action[aria-expanded="true"] { background: var(--coral); }
.audio-playhead-action:disabled { cursor: default; opacity: .25; }
.audio-marker-lane { position: relative; min-width: 0; min-height: 0; overflow-y: auto; z-index: 4; }
.audio-marker-items { position: relative; width: 100%; min-height: 82px; }
.audio-marker-note { position: absolute; z-index: 4; top: var(--marker-top, 7px); left: var(--marker-left, 0px); display: grid; width: 180px; overflow: hidden; border: 2px solid var(--ink); border-radius: 8px; background: var(--paper); }
.audio-marker-note::after { position: absolute; left: 3px; width: 8px; height: 8px; border-right: 2px solid var(--ink); border-bottom: 2px solid var(--ink); background: var(--paper); content: ""; transform: rotate(45deg); }
.audio-marker-note::after { top: -6px; transform: rotate(225deg); }
.audio-marker-note > header { position: relative; z-index: 1; display: grid; grid-template-columns: 27px minmax(0, 1fr) 27px; min-height: 29px; border-bottom: 1.5px solid var(--ink); background: var(--yellow); }
.audio-marker-note > header button { min-width: 0; padding: 0; overflow: hidden; border: 0; border-radius: 0; background: transparent; text-overflow: ellipsis; white-space: nowrap; }
.audio-marker-note .audio-marker-grip { cursor: grab; touch-action: none; font-size: .78rem; font-weight: 950; }
.audio-marker-note .audio-marker-grip:active { cursor: grabbing; }
.audio-marker-note .audio-marker-title { padding: 0 5px; font: 850 .58rem/1 ui-monospace, SFMono-Regular, Menlo, monospace; text-align: left; }
.audio-marker-note .audio-marker-delete { font-size: .85rem; font-weight: 900; text-align: center; }
.audio-marker-note .audio-marker-grip:hover, .audio-marker-note .audio-marker-title:hover { background: rgba(255, 255, 255, .42); }
.audio-marker-note .audio-marker-delete:hover { background: var(--coral); }
.audio-marker-note.is-repositioning { z-index: 9; }
.audio-marker-note textarea { position: relative; z-index: 1; width: 100%; min-height: 46px; resize: none; overflow-y: hidden; padding: 6px 16px 6px 7px; border: 0; border-radius: 0; background: var(--paper); font-size: .84rem; font-weight: 400; line-height: 1.3; scrollbar-gutter: stable; }
.audio-marker-note textarea:focus { outline: 3px solid var(--yellow); outline-offset: -3px; }
.audio-marker-pins { position: absolute; z-index: 3; inset: 0; pointer-events: none; }
.audio-marker-pin { position: absolute; top: 0; bottom: 0; left: var(--marker-position); width: 2px; background: var(--ink); opacity: .62; transform: translateX(-1px); }
.audio-marker-pin::before { position: absolute; left: -4px; width: 10px; height: 10px; border: 2px solid var(--ink); border-radius: 50%; background: var(--yellow); content: ""; }
.audio-marker-pin::before { bottom: 5px; }
.audio-status { min-width: 0; margin: 0 0 0 auto; overflow: hidden; color: var(--muted); font-size: .57rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.audio-file-row .audio-status { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.audio-is-empty .audio-status:empty { display: none; }
.module-audio:not(.focused-module) .audio-marker-stage { grid-template-rows: 130px minmax(82px, 1fr); }
.module-audio:not(.focused-module) .audio-waveform { height: 130px; }
.module-audio:not(.focused-module) .audio-file-row { grid-template-columns: minmax(0, 1fr) 30px 30px; }
.module-audio:not(.focused-module) .audio-navigation { gap: 5px; }
.module-audio:not(.focused-module) .audio-file-row .audio-status { display: none; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-module-content { grid-template-rows: auto minmax(0, 1fr); align-content: stretch; gap: 7px; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-primary-controls { height: 100%; grid-template-rows: minmax(0, 1fr); padding: 0; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-timeline { gap: 3px; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-time-row > strong { display: none; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-marker-stage { display: block; height: 100%; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-marker-lane, .module-audio[data-size="2×1"]:not(.focused-module) .audio-playhead-action { display: none; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-waveform { height: 100%; min-height: 72px; border-width: 2px; border-radius: 7px; box-shadow: none; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-file-row .audio-status { display: none; }
.module-audio[data-size="2×1"]:not(.focused-module) .audio-drop-zone { padding: 6px; }
.focused-module.module-audio .module-body { padding: 0; }
.focused-module.module-audio .audio-module-content { width: 100%; margin: 0; padding: clamp(10px, 2vw, 22px); border: 0; border-radius: 0; background: transparent; }
.focused-module.module-audio .audio-header-row { height: 42px; grid-template-columns: auto auto auto minmax(0, 1fr); align-items: center; }
.focused-module.module-audio .audio-scale-controls { display: grid; }
.focused-module.module-audio .audio-clear-notes { display: grid; }
.focused-module.module-audio .audio-file-row { grid-template-columns: minmax(140px, 1fr) 30px 30px; }
.focused-module.module-audio .audio-navigation { gap: 5px; }
.focused-module.module-audio .audio-navigation button { width: 42px; height: 42px; font-size: .62rem; }
.focused-module.module-audio .audio-primary-controls { display: grid; grid-template-rows: minmax(0, 1fr); }
.focused-module.module-audio .audio-marker-stage { grid-template-rows: 260px minmax(0, 1fr); }
.focused-module.module-audio .audio-waveform { height: 100%; min-height: 0; }

.module-lyrics .module-body { overflow: hidden; }
.module-lyricEditor .module-body { overflow: hidden; }
.lyrics-editor-shell {
  position: relative;
  display: grid;
  height: 100%;
  min-height: 0;
  grid-template-columns: 48px minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  gap: 8px;
  overflow: hidden;
}
.lyrics-side-rail {
  display: flex;
  min-width: 0;
  min-height: 0;
  align-items: center;
  flex-direction: column;
  gap: 5px;
  overflow-y: auto;
  padding: 4px 2px;
  scrollbar-width: thin;
}
.lyrics-rail-history, .lyrics-rail-actions { display: grid; grid-template-columns: 1fr; gap: 3px; }
.lyrics-rail-actions { margin-top: auto; margin-bottom: 12px; }
.focused-module.module-lyricEditor .lyrics-rail-actions { margin-bottom: 0; }
.lyrics-side-rail button {
  display: grid;
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  place-items: center;
  justify-self: center;
  padding: 0;
  border: 2px solid var(--ink);
  border-radius: 10px;
  background: white;
  color: var(--ink);
}
.lyrics-side-rail button:hover:not(:disabled) { background: var(--yellow); }
.lyrics-side-rail button:disabled { cursor: default; opacity: .3; }
.lyrics-rail-actions button:first-child { background: var(--yellow); }
.lyrics-rail-icon {
  width: 23px;
  height: 23px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.lyrics-rail-status { min-height: 12px; color: var(--muted); font-size: .5rem; font-weight: 750; line-height: 1.2; text-align: center; }
.lyrics-rail-status:empty { display: none; }
.lyrics-editor-main { display: grid; min-width: 0; min-height: 0; grid-template-rows: minmax(0, 1fr); overflow: hidden; border: 3px solid var(--ink); border-radius: 11px; background: white; }
.lyrics-editor-surface {
  min-height: 0;
  overflow: auto;
  padding: 9px 7px 12px;
  outline: none;
  color: var(--ink);
  cursor: text;
  font-family: "SF Pro Text", "SF Pro Display", "Avenir Next", "Segoe UI", sans-serif;
}
.lyrics-line {
  display: flex;
  min-height: 25px;
  align-items: flex-start;
  border-radius: 6px;
}
.lyrics-line.is-pointer-hovered { background: rgba(238, 227, 209, .72); }
.lyrics-line.is-selected { background: rgba(245, 206, 34, .34); }
.lyrics-line.is-section-header { margin-top: 14px; }
.lyrics-line.is-section-header .lyrics-line-content { font-weight: 800; }
.lyrics-line-handle {
  display: grid;
  width: 30px;
  min-width: 30px;
  height: 25px;
  place-items: center;
  padding: 0;
  margin-right: 5px;
  opacity: 0;
  color: rgba(5, 5, 5, .78);
  text-align: center;
  cursor: grab;
  user-select: none;
}
.lyrics-line.is-pointer-hovered .lyrics-line-handle, .lyrics-line.is-selected .lyrics-line-handle { opacity: 1; }
.lyrics-line-handle:active { cursor: grabbing; }
.lyrics-line-handle::before {
  width: 19px;
  height: 15px;
  border-radius: 2px;
  background:
    linear-gradient(currentColor, currentColor) 0 0 / 19px 3px no-repeat,
    linear-gradient(currentColor, currentColor) 0 6px / 19px 3px no-repeat,
    linear-gradient(currentColor, currentColor) 0 12px / 19px 3px no-repeat;
  content: "";
}
.lyrics-line-content {
  min-width: 0;
  min-height: 25px;
  flex: 1;
  padding: 1px 3px;
  outline: none;
  font: var(--writing-font-weight) var(--writing-font-size)/var(--writing-line-height) var(--writing-font-family);
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}
.lyrics-line.dragging { opacity: .3; }
.lyrics-line.drop-before { border-top: 2px solid var(--ink); }
.lyrics-line.drop-after { border-bottom: 2px solid var(--ink); }
.lyrics-selection-toolbar {
  position: fixed;
  z-index: 1000;
  display: none;
  gap: 5px;
  padding: 5px;
  border: 2px solid var(--ink);
  border-radius: 8px;
  background: white;
  box-shadow: 4px 4px 0 rgba(5, 5, 5, .16);
}
.lyrics-selection-toolbar button {
  min-height: 27px;
  padding: 0 9px;
  border: 0;
  border-radius: 5px;
  background: var(--ink);
  color: white;
  font-size: .62rem;
  font-weight: 850;
}
.lyrics-selection-toolbar button:hover { background: var(--yellow); color: var(--ink); }
.lyrics-selection-formatting { display: flex; align-items: center; gap: 3px; padding-right: 5px; border-right: 1px solid rgba(5, 5, 5, .25); }
.lyrics-selection-toolbar .lyrics-format-button { width: 27px; padding: 0; }
.lyrics-selection-toolbar .lyrics-format-button[aria-pressed="true"] { background: var(--yellow); color: var(--ink); }
.lyrics-variant { color: var(--blue); cursor: pointer; border-radius: 4px; }
.lyrics-variant:hover { background: rgba(53, 104, 212, .1); }
.lyrics-variant-editor {
  display: inline-flex;
  max-width: none;
  align-items: center;
  gap: 6px;
  padding: 1px 6px;
  margin: 0 2px;
  border: 1.5px solid var(--ink);
  border-radius: 7px;
  background: var(--paper);
  vertical-align: baseline;
  white-space: nowrap;
}
.lyrics-variant-option-wrap { display: inline-flex; align-items: center; gap: 2px; }
.lyrics-variant-option-wrap + .lyrics-variant-option-wrap { padding-left: 6px; border-left: 1px solid rgba(5, 5, 5, .24); }
.lyrics-variant-option { color: var(--muted); cursor: pointer; overflow-wrap: anywhere; }
.lyrics-variant-option.active { color: var(--blue); font-weight: 800; }
.lyrics-variant-option:hover { color: var(--ink); }
.lyrics-variant-action {
  display: inline-flex;
  width: 20px;
  height: 20px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: rgba(5, 5, 5, .58);
  cursor: pointer;
  font-size: .78rem;
  font-weight: 850;
  user-select: none;
}
.lyrics-variant-action:hover { background: var(--yellow); color: var(--ink); }
.lyrics-variant-commit-action svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.lyrics-variant-option-delete { width: 17px; height: 17px; font-size: .66rem; }
.lyrics-variant-divider { width: 1px; height: 15px; flex: none; margin: 0 1px; background: rgba(5, 5, 5, .24); user-select: none; }
.module-frame .lyrics-add-alt-input {
  width: 110px;
  min-width: 110px;
  padding: 0;
  border: 0;
  border-radius: 0;
  outline: 0;
  box-shadow: none;
  background: transparent;
  color: var(--ink);
  font: inherit;
}
.module-frame .lyrics-add-alt-input:focus { box-shadow: none; }
.notepad-focus-layout { height: 100%; min-height: 0; }
.notepad-editor {
  display: grid;
  height: 100%;
  min-height: 0;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
  border: 3px solid var(--ink);
  border-radius: 11px;
  background: white;
}
.notepad-toolbar {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 4px;
  overflow-x: hidden;
  padding: 5px;
  border-bottom: 2px solid var(--ink);
  background: var(--cream);
  scrollbar-width: thin;
}
.notepad-toolbar-group {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: stretch;
  overflow: hidden;
  border: 1.5px solid var(--ink);
  border-radius: 999px;
  background: white;
}
.notepad-toolbar-group button {
  min-width: 25px;
  min-height: 24px;
  padding: 0 6px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font-size: .61rem;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
}
.notepad-toolbar-group button + button { border-left: 0; }
.notepad-toolbar-group button:hover, .notepad-toolbar-group button.is-active { background: var(--yellow); }
.notepad-toolbar-group button:focus-visible { position: relative; z-index: 1; outline: 3px solid rgba(245, 206, 34, .55); outline-offset: -1px; }
.notepad-icon-group { gap: 2px; overflow: visible; border: 0; border-radius: 0; background: transparent; }
.notepad-icon-group button { width: 25px; padding: 0; border-radius: 5px; background: transparent; }
.notepad-icon-group button:hover, .notepad-icon-group button:active { background: var(--yellow); }
.notepad-icon-group svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.notepad-status { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
.notepad-underline { text-decoration: underline; }
.saved-notes-archive { display: none; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 8px; padding: 10px; overflow: hidden; border: 3px solid var(--ink); border-radius: 11px; background: var(--cream); }
.saved-notes-archive > header { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 10px; }
.saved-notes-archive h3 { margin: 0; font-size: .82rem; font-weight: 900; white-space: nowrap; }
.saved-notes-archive input { width: 100%; height: 32px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 7px; background: white; font-size: .68rem; }
.saved-notes-grid { display: grid; min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 180px; gap: 7px; overflow: auto; align-content: start; }
.saved-note-card { display: grid; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; border: 2px solid var(--ink); border-radius: 8px; background: white; }
.saved-note-card > header { display: flex; min-height: 33px; align-items: center; justify-content: space-between; gap: 6px; padding: 4px 6px 4px 9px; border-bottom: 1.5px solid var(--ink); }
.saved-note-card time { color: var(--muted); font-size: .54rem; font-weight: 700; }
.saved-note-card header span { display: flex; gap: 2px; }
.saved-note-card button { display: grid; width: 24px; height: 24px; padding: 0; place-items: center; border: 0; border-radius: 5px; background: transparent; font-size: .78rem; font-weight: 900; }
.saved-note-card [data-saved-note-copy] svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.saved-note-card button:hover { background: var(--yellow); }
.saved-note-card [data-saved-note-delete]:hover { background: var(--coral); }
.saved-note-content { min-height: 0; overflow: auto; padding: 10px; font-family: "SF Pro Text", "SF Pro Display", "Avenir Next", "Segoe UI", sans-serif; font-size: .92rem; font-weight: 400; line-height: 1.25; }
.saved-note-content p { margin: 0; }
.saved-note-content h2 { margin: .16em 0 .12em; font-size: 1.25rem; line-height: 1.14; letter-spacing: -.01em; }
.saved-note-content pre { margin: .35em 0; padding: .58em .78em; border-radius: 7px; background: #d7c4a4; font: 400 .9em/1.25 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; white-space: pre-wrap; }
.saved-note-content pre code { font: inherit; }
.saved-note-content ul, .saved-note-content ol { margin: 0; padding-left: 2em; }
.saved-note-content blockquote { margin: .96em 0; padding-left: 1em; border-left: 3px solid var(--ink); }
.saved-note-content [data-indent="1"] { margin-left: 2rem; }
.saved-note-content [data-indent="2"] { margin-left: 4rem; }
.saved-note-content [data-indent="3"] { margin-left: 6rem; }
.saved-notes-empty { grid-column: 1 / -1; margin: 10px; color: var(--muted); font-size: .68rem; font-weight: 700; }
.notepad-writing-surface {
  min-height: 0;
  overflow: auto;
  padding: clamp(8px, 1.4vw, 16px);
  color: var(--ink);
  font: var(--writing-font-weight) var(--writing-font-size)/var(--writing-line-height) var(--writing-font-family);
  white-space: pre-wrap;
  word-break: break-word;
}
.notepad-writing-surface:focus,
.notepad-writing-surface:focus-visible,
.notepad-writing-surface .ProseMirror,
.notepad-writing-surface .ProseMirror:focus,
.notepad-writing-surface .ProseMirror:focus-visible { outline: none !important; box-shadow: none !important; }
.notepad-writing-surface .ProseMirror { min-height: 100%; }
.notepad-writing-surface[contenteditable="true"] { min-height: 100%; cursor: text; }
.notepad-writing-surface[contenteditable="true"]:empty::before { color: rgba(5, 5, 5, .38); content: "Start writing…"; pointer-events: none; }
.notepad-writing-surface .ProseMirror > :first-child { margin-top: 0; }
.notepad-writing-surface .ProseMirror > :last-child { margin-bottom: 0; }
.notepad-writing-surface p { margin: 0; }
.notepad-writing-surface ul, .notepad-writing-surface ol { margin: 0; padding-left: 2em; font-size: inherit; line-height: inherit; }
.notepad-writing-surface li { margin: 0; padding-left: 0; line-height: inherit; }
.notepad-writing-surface li + li { margin-top: 0; }
.notepad-writing-surface li > p { margin: 0; }
.notepad-writing-surface ul { list-style-type: disc; }
.notepad-writing-surface ul ul { list-style-type: circle; }
.notepad-writing-surface ul ul ul { list-style-type: square; }
.notepad-writing-surface ol { list-style-type: decimal; }
.notepad-writing-surface h1 { margin: .94em 0 .42em; color: var(--ink); font-size: 1.92rem; font-weight: 800; line-height: 1.06; letter-spacing: -.02em; text-transform: none; }
.notepad-writing-surface h2 { margin: .16em 0 .12em; color: var(--ink); font-size: 1.25rem; font-weight: 720; line-height: 1.14; letter-spacing: -.01em; text-transform: none; }
.notepad-writing-surface h3 { margin: .34em 0 .16em; color: var(--muted); font-size: .74rem; font-weight: 520; line-height: 1.2; letter-spacing: .08em; text-transform: uppercase; }
.notepad-writing-surface h3 + p, .notepad-writing-surface h3 + ul, .notepad-writing-surface h3 + ol, .notepad-writing-surface h3 + blockquote { margin-top: .7em; }
.notepad-writing-surface pre { margin: .35em 0; padding: .58em .78em; border-radius: 7px; background: #d7c4a4; color: var(--ink); font: 400 .9em/1.25 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; white-space: pre-wrap; }
.notepad-writing-surface pre code { color: inherit; font: inherit; }
.notepad-writing-surface blockquote { margin: .96em 0; padding: .05em 0 .05em 1em; border-left: 3px solid var(--ink); color: var(--ink); background: transparent; }
.notepad-writing-surface hr { height: 0; margin: 1.18em 0; border: 0; border-top: 1px solid rgba(5, 5, 5, .14); background: transparent; }
.notepad-writing-surface [data-indent="1"] { margin-left: 2rem; }
.notepad-writing-surface [data-indent="2"] { margin-left: 4rem; }
.notepad-writing-surface [data-indent="3"] { margin-left: 6rem; }
.notepad-writing-surface .is-editor-empty:first-child::before { position: absolute; color: rgba(5, 5, 5, .38); content: attr(data-placeholder); cursor: text; pointer-events: none; }
.focused-module .notepad-focus-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, .9fr); gap: 10px; }
.focused-module .notepad-editor { width: auto; margin: 0; }
.focused-module .saved-notes-archive { display: grid; }

.chord-module-content { height: 100%; }
.module-chords .module-body { width: 100%; }
.chord-expanded { position: relative; display: grid; height: 100%; min-height: 0; grid-template-columns: 48px minmax(0, 1fr); gap: 8px; }
.focused-module.module-chords .module-body { overflow: hidden; }
.chord-side-rail { display: flex; min-width: 0; min-height: 0; align-items: center; flex-direction: column; gap: 5px; overflow-y: auto; padding: 4px 2px; border: 0; border-radius: 0; background: transparent; scrollbar-width: thin; }
.chord-rail-fields { display: grid; gap: 3px; }
.chord-rail-fields label { display: grid; min-width: 0; gap: 2px; }
.chord-rail-fields label > span { overflow: hidden; padding-left: 1px; font-size: .48rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.chord-rail-fields input, .chord-rail-fields select { width: 100%; height: 29px; min-width: 0; padding: 0 5px; border: 2px solid var(--ink); border-radius: 7px; background: white; font-size: .62rem; font-weight: 800; }
.chord-rail-modes, .chord-rail-actions { display: grid; grid-template-columns: 1fr; gap: 3px; }
.chord-rail-actions { margin-top: auto; margin-bottom: 12px; }
.chord-meta-toggle, .chord-rail-modes button, .chord-rail-actions button { display: grid; width: 44px; height: 44px; flex: 0 0 auto; place-items: center; justify-self: center; padding: 0; border: 2px solid var(--ink); border-radius: 10px; background: white; color: var(--ink); }
.chord-rail-modes button:disabled { opacity: .38; cursor: not-allowed; }
.chord-meta-toggle[aria-expanded="true"] { background: var(--yellow); }
.chord-rail-modes button[aria-pressed="true"] { background: var(--ink); color: white; }
.chord-rail-actions button:first-child { background: var(--yellow); }
.chord-rail-icon { width: 23px; height: 23px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chord-rail-status { min-height: 12px; color: var(--muted); font-size: .5rem; font-weight: 750; line-height: 1.2; text-align: center; }
.chord-rail-status:empty { display: none; }
.chord-meta-popover { position: absolute; top: 0; left: 56px; z-index: 20; display: grid; width: 190px; gap: 10px; padding: 11px; border: 3px solid var(--ink); border-radius: 11px; background: white; box-shadow: 6px 6px 0 rgba(5,5,5,.18); }
.chord-meta-popover > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.chord-meta-popover > header strong { font-size: .76rem; }
.chord-meta-popover > header button { display: grid; width: 30px; height: 30px; place-items: center; padding: 0; border: 2px solid var(--ink); border-radius: 7px; background: white; }
.chord-meta-popover > header .chord-rail-icon { width: 16px; height: 16px; }
.chart-builder-grid { display: grid; min-height: 0; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 9px; }
.chart-mode-input .chart-builder-grid, .chart-mode-output .chart-builder-grid { grid-template-columns: minmax(0, 1fr); }
.chart-mode-input .chart-preview-panel { display: none; }
.chart-mode-output .chart-input-panel { display: none; }
.chart-input-panel, .chart-preview-panel { display: grid; min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; border: 3px solid var(--ink); border-radius: 11px; background: white; }
.chart-input-panel > header, .chart-preview-panel > header { display: flex; height: 57px; min-height: 57px; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 15px; border-bottom: 3px solid var(--ink); background: var(--ink); color: white; }
.chart-input-panel > header strong, .chart-preview-panel > header strong { font-size: 1rem; letter-spacing: -.02em; }
.chart-input-panel > header span { color: rgba(255,255,255,.65); font-size: .64rem; font-weight: 650; }
.chart-input-panel textarea { display: block; width: 100%; height: 100%; min-height: 0; resize: none; padding: 18px; border: 0; border-radius: 0; box-shadow: none; font: var(--writing-font-weight) var(--writing-mono-font-size)/var(--writing-line-height) ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre; }
.chart-preview-panel > header { align-items: center; flex-direction: row; flex-wrap: nowrap; }
.chart-preview-panel > header strong { flex: 0 0 auto; }
.chart-view-tags { display: flex; min-width: 0; flex: 1 1 auto; justify-content: flex-end; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.chart-view-tags button { min-height: 25px; padding: 3px 8px; border: 2px solid rgba(255,255,255,.72); border-radius: 999px; background: transparent; color: white; font-size: .62rem; font-weight: 850; line-height: 1.1; white-space: nowrap; }
.chart-view-tags button[aria-pressed="true"] { border-color: var(--yellow); background: var(--yellow); color: var(--ink); }
.chord-preview-output { min-height: 0; margin: 0; padding: 18px; overflow: auto; font: var(--writing-font-weight) var(--writing-mono-font-size)/var(--writing-line-height) ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; }
.chart-preview-section { font-family: "Avenir Next", "SF Pro Display", sans-serif; font-weight: 900; }
.module-grid:not(.focus-mode) .module-chords .chord-expanded { grid-template-columns: 48px minmax(0, 1fr); gap: 8px; }
.module-grid:not(.focus-mode) .module-chords .chord-side-rail { gap: 5px; padding: 4px 2px; }
.module-grid:not(.focus-mode) .module-chords .chord-rail-modes,
.module-grid:not(.focus-mode) .module-chords .chord-rail-actions { gap: 3px; }
.module-grid:not(.focus-mode) .module-chords .chord-meta-toggle,
.module-grid:not(.focus-mode) .module-chords .chord-rail-modes button,
.module-grid:not(.focus-mode) .module-chords .chord-rail-actions button { width: 44px; height: 44px; }
.module-grid:not(.focus-mode) .module-chords .chord-rail-icon { width: 23px; height: 23px; }
.module-grid:not(.focus-mode) .module-chords .chord-meta-popover { left: 56px; }
.module-grid:not(.focus-mode) .module-chords[data-size^="2×"] .chart-builder-grid { grid-template-columns: minmax(0, 1fr); }

.quick-notes {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 30;
  display: grid;
  justify-items: end;
  gap: 9px;
}
.quick-notes-toggle {
  min-height: 43px;
  padding: 0 13px;
  border: var(--line) solid var(--ink);
  border-radius: 11px;
  background: var(--yellow);
  font-size: .72rem;
  font-weight: 900;
  box-shadow: 4px 4px 0 var(--ink);
}
.quick-notes-toggle:hover, .quick-notes-toggle[aria-expanded="true"] { background: var(--blue); color: white; }
.quick-notes-panel {
  width: min(330px, calc(100vw - 36px));
  padding: 14px;
  border: 4px solid var(--ink);
  border-radius: 15px;
  background: var(--paper);
  box-shadow: 7px 7px 0 rgba(5, 5, 5, .2);
}
.quick-notes-panel header, .quick-notes-panel footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.quick-notes-panel header { margin-bottom: 10px; }
.quick-notes-panel .label { font-weight: 750; }
.quick-notes-panel header button {
  width: 32px;
  height: 32px;
  padding: 0;
  border: 2px solid var(--ink);
  border-radius: 7px;
  background: white;
  font-weight: 900;
}
.quick-notes-panel textarea {
  width: 100%;
  min-height: 170px;
  resize: vertical;
  padding: 10px;
  border: var(--line) solid var(--ink);
  border-radius: 9px;
  background: var(--cream);
  color: var(--ink);
  font: 500 .82rem/1.5 "Avenir Next", "SF Pro Display", sans-serif;
  outline: 0;
}
.quick-notes-panel textarea:focus { box-shadow: 0 0 0 3px var(--yellow); }
.quick-notes-panel footer { margin-top: 8px; color: var(--muted); font-size: .62rem; font-weight: 500; }
.quick-notes-panel footer button { padding: 5px 7px; border: 0; border-radius: 6px; background: transparent; font-size: .68rem; font-weight: 700; }
.quick-notes-panel footer button:hover { background: var(--coral); color: var(--ink); }

dialog { width: min(470px, calc(100vw - 24px)); padding: 0; border: 0; border-radius: 18px; background: transparent; }
dialog::backdrop { background: rgba(5, 5, 5, .72); }
.new-song-form {
  display: grid;
  gap: 17px;
  padding: 22px;
  border: var(--heavy-line) solid var(--ink);
  border-radius: 22px;
  background: var(--cream);
}
.new-song-form header { display: flex; align-items: center; justify-content: space-between; }
.dialog-close {
  width: 38px;
  height: 38px;
  padding: 0;
  border: var(--line) solid var(--ink);
  border-radius: 9px;
  background: white;
  font-size: 1.15rem;
}
.new-song-form label { display: grid; gap: 6px; }
.new-song-form label span { font-size: .64rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.new-song-form input {
  width: 100%;
  height: 48px;
  padding: 0 12px;
  border: var(--line) solid var(--ink);
  border-radius: 10px;
  background: white;
  color: var(--ink);
  outline: 0;
}
.new-song-form input:focus { box-shadow: 0 0 0 4px var(--yellow); }
.create-song-button {
  min-height: 48px;
  margin-top: 4px;
  border: var(--line) solid var(--ink);
  border-radius: 10px;
  background: var(--yellow);
  color: var(--ink);
  font-size: .76rem;
  font-weight: 900;
}
.edit-song-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.edit-song-actions button { min-height: 46px; padding: 0 12px; border: var(--line) solid var(--ink); border-radius: 10px; background: white; font-size: .72rem; font-weight: 900; }
.edit-song-actions .create-song-button { margin-top: 0; background: var(--yellow); }
.edit-song-actions [data-edit-song-delete]:hover { background: var(--coral); }
.create-song-button:hover { background: var(--ink); color: white; }

.delete-list-dialog { display: grid; width: min(440px, calc(100vw - 24px)); gap: 16px; padding: 20px; border: var(--heavy-line) solid var(--ink); border-radius: 18px; background: var(--cream); }
.delete-list-dialog > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.delete-list-dialog > p { margin: 0; font-size: .8rem; font-weight: 650; line-height: 1.45; }
.delete-list-actions { display: grid; gap: 8px; }
.delete-list-actions button { min-height: 43px; padding: 0 12px; border: 2px solid var(--ink); border-radius: 9px; background: white; font-size: .7rem; font-weight: 850; }
.delete-list-actions .delete-list-move { background: var(--yellow); }
.delete-list-actions .delete-list-all { background: var(--coral); }
.delete-list-actions button:hover { background: var(--ink); color: white; }

.account-dialog { width: min(520px, calc(100vw - 24px)); }
.account-panel { display: grid; gap: 18px; padding: 22px; border: var(--heavy-line) solid var(--ink); border-radius: 20px; background: var(--cream); }
.account-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.account-panel h2 { margin: 5px 0 0; font-size: clamp(1.5rem, 5vw, 2.3rem); line-height: 1; letter-spacing: -.05em; }
.account-signed-out, .account-signed-in, .account-reset { display: grid; gap: 14px; }
.account-signed-out > p, .account-signed-in > p, .account-reset > p, .account-local-note, .account-status { margin: 0; font-size: .76rem; font-weight: 650; line-height: 1.45; }
.account-mode-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; padding: 4px; border: var(--line) solid var(--ink); border-radius: 12px; background: white; }
.account-mode-tabs button { min-height: 40px; padding: 0 10px; border: 0; border-radius: 7px; background: transparent; font-size: .7rem; font-weight: 900; }
.account-mode-tabs button.is-active { background: var(--ink); color: white; }
.account-form { display: grid; gap: 10px; }
.account-form label { display: grid; gap: 6px; }
.account-form label span { font-size: .64rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.account-form input { min-height: 48px; padding: 0 12px; border: var(--line) solid var(--ink); border-radius: 10px; background: white; outline: 0; }
.account-form input:focus { box-shadow: 0 0 0 4px var(--yellow); }
.account-form button, .account-signed-in button { min-height: 46px; padding: 0 14px; border: var(--line) solid var(--ink); border-radius: 10px; background: var(--yellow); font-size: .72rem; font-weight: 900; }
.account-form button:hover, .account-signed-in button:hover { background: var(--ink); color: white; }
.account-form button:disabled, .account-signed-in button:disabled { cursor: wait; opacity: .55; }
.account-form .account-text-button { min-height: auto; justify-self: center; padding: 4px; border: 0; background: transparent; text-decoration: underline; text-underline-offset: 3px; }
.account-form .account-text-button:hover { background: transparent; color: var(--ink); }
.account-local-note { padding-top: 14px; border-top: 2px solid var(--ink); color: var(--muted); }
.account-status { min-height: 1.1em; color: var(--green); }
.account-status.is-error { color: #9b1c18; }

.directory-dialog { width: min(940px, calc(100vw - 24px)); max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }
.directory-panel { display: grid; max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); gap: 20px; overflow: auto; padding: 22px; border: var(--heavy-line) solid var(--ink); border-radius: 22px; background: var(--cream); }
.directory-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.directory-panel-head h2 { margin: 4px 0 0; font-size: clamp(1.55rem, 3vw, 2.2rem); letter-spacing: -.045em; }
.directory-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.directory-section { display: grid; min-width: 0; gap: 12px; padding: 15px; border: var(--line) solid var(--ink); border-radius: 13px; background: var(--paper); }
.directory-section:first-child { grid-column: 1 / -1; }
.directory-section > header h3 { margin: 0; font-size: 1.1rem; letter-spacing: -.025em; }
.directory-section > header p { margin: 3px 0 0; color: var(--muted); font-size: .68rem; font-weight: 650; line-height: 1.4; }
.directory-add-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px; }
.directory-add-form input, .directory-row input, .directory-row select { min-width: 0; height: 40px; padding: 0 9px; border: 2px solid var(--ink); border-radius: 8px; background: white; color: var(--ink); outline: 0; }
.directory-add-form input:focus, .directory-row input:focus, .directory-row select:focus { box-shadow: 0 0 0 3px var(--yellow); }
.directory-add-form button, .directory-row button { min-height: 40px; padding: 0 10px; border: 2px solid var(--ink); border-radius: 8px; background: var(--yellow); font-size: .68rem; font-weight: 900; }
.directory-list { display: grid; gap: 7px; }
.directory-row { display: grid; grid-template-columns: minmax(115px, 1fr) minmax(90px, auto) auto 34px; align-items: center; gap: 5px; }
.directory-person-row { grid-template-columns: minmax(120px, 1.25fr) minmax(120px, 1.25fr) 105px minmax(110px, 1fr) auto 34px; }
.directory-person-row .directory-usage { grid-column: 1 / 5; }
.directory-row small { color: var(--muted); font-size: .58rem; font-weight: 750; line-height: 1.25; }
.directory-row .directory-remove { width: 34px; padding: 0; background: white; font-size: .9rem; }
.directory-row .directory-remove:not(:disabled):hover { background: var(--coral); }
.directory-row .directory-remove:disabled { cursor: not-allowed; opacity: .28; }
.directory-empty { margin: 7px 2px; color: var(--muted); font-size: .7rem; font-weight: 700; }

@media (max-width: 980px) {
  .song-view.song-library-expanded .rail-song-list > .rail-section-content, .song-view.song-library-expanded .custom-workspace-list, .song-view.song-library-expanded .workspace-premade-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .info-focused-grid { grid-template-columns: 1fr; }
  .song-rights-layout { grid-template-columns: 1fr; }
  .info-focused-column { padding: 16px 4px; }
  .info-focused-column:first-child { padding-top: 4px; }
  .chart-builder-grid { grid-template-columns: 1fr; overflow: auto; }
  .chart-input-panel, .chart-preview-panel { min-height: 300px; }
  .focused-module.module-chords .module-body { overflow: auto; }
  .chord-expanded { height: auto; min-height: 100%; }
}

@media (max-width: 780px) {
  main { padding: 10px; }
  .primary-subnav button { padding: 0 6px; font-size: .57rem; }
  .learn-placeholder-grid { grid-template-columns: 1fr; }
  .app-home-view, .section-landing { min-height: calc(100vh - 88px); padding: 28px 14px; }
  .app-home-grid, .tool-landing-grid { grid-template-columns: 1fr; }
  .app-destination-card { min-height: 170px; }
  .song-view {
    width: calc(100% + 20px);
    height: calc(100vh - 68px);
    height: calc(100dvh - 68px);
    margin: -10px;
    grid-template-columns: 1fr;
    grid-template-rows: minmax(0, 1fr);
  }
  .song-view.module-rail-expanded, .song-view.module-sidebar-hidden { grid-template-columns: 1fr; }
  .song-view.standalone-tool-mode, .song-view.standalone-tool-mode.module-focused { grid-template-columns: 190px minmax(0, 1fr); }
  .standalone-folder-rail { position: static; width: auto; padding: 16px 12px; }
  .song-view.song-library-expanded .rail-song-list > .rail-section-content, .song-view.song-library-expanded .custom-workspace-list, .song-view.song-library-expanded .workspace-premade-list { grid-template-columns: 1fr; }
  .module-rail { position: absolute; z-index: 7; inset: 0 auto 0 0; width: min(var(--song-menu-width), calc(100vw - 22px)); align-items: stretch; overflow-x: hidden; overflow-y: auto; padding: 20px 18px 24px; }
  .song-view.song-library-expanded .module-rail { display: flex; }
  .song-view.song-library-expanded .workspace-presets { margin-top: 12px; padding-top: 14px; border-top: 2px solid var(--ink); }
  .module-rail-heading, .song-view.module-rail-expanded .module-rail-heading { display: flex; width: 100%; min-height: 30px; align-items: center; justify-content: space-between; margin: 0; padding: 0 2px; }
  .rail-label-long { display: inline; }
  .rail-label-short { display: none !important; }
  .module-button, .song-view.module-rail-expanded .module-button { width: 42px; min-width: 42px; min-height: 42px; height: 42px; grid-template-columns: 1fr; grid-template-rows: 1fr; place-items: center; padding: 0; }
  .song-view.module-rail-expanded .module-button-copy { display: none; }
  .workspace-presets, .song-view.module-rail-expanded .workspace-presets { display: flex; flex-direction: column; }
  .song-page { min-height: 0; margin-left: 0; border-width: var(--heavy-line); border-radius: 24px; }
  .focused-module .info-primary-fields { grid-template-columns: 1fr; }
  .focused-module .song-relationship-fields { grid-template-columns: 1fr; }
  .directory-columns { grid-template-columns: 1fr; }
  .writer-column-headings { display: none; }
  .writer-row { grid-template-columns: minmax(0, 1fr) 92px 30px; }
  .writer-person-field { grid-column: 1 / -1; }
}

@media (max-width: 480px) {
  .topbar { min-height: 62px; padding: 8px 10px; }
  .brand { font-size: 1.15rem; }
  .account-button { min-height: 34px; padding: 0 9px; font-size: .58rem; }
  .cloud-status { display: none; }
  .primary-nav { gap: 0; }
  .primary-nav-button { min-height: 34px; padding: 0 8px; font-size: .6rem; }
  .primary-nav:has(.primary-nav-button.is-active) .primary-nav-group:not(:has(.primary-nav-button.is-active)) { display: none; }
  .primary-subnav { min-height: 34px; overflow-x: auto; padding: 0 2px; }
  .primary-subnav button { min-height: 26px; padding: 0 5px; font-size: .52rem; }
  .song-page { --song-page-padding-x: 12px; --song-page-padding-top: 17px; --song-page-padding-bottom: 16px; gap: 13px; }
  .module-grid { --grid-scroll-rail: 12px; }
  .quick-notes { right: 12px; bottom: 12px; }
  .directory-panel { padding: 15px; }
  .directory-row { grid-template-columns: minmax(0, 1fr) auto 34px; }
  .directory-row small { grid-column: 1 / -1; grid-row: 2; }
  .directory-person-row { grid-template-columns: 1fr 1fr; padding-bottom: 10px; }
  .directory-person-row .directory-usage { grid-column: 1 / -1; grid-row: auto; }
  .directory-person-row button { width: 100%; }
}
