/* Shared responsive shell: one mobile menu and one collapsible workspace model. */
.workspace-sidebar{position:relative}
.workspace-sidebar-toggle{position:absolute;z-index:8;top:7px;right:7px;display:grid;width:30px!important;min-width:30px;height:30px!important;margin:0!important;padding:0!important;place-items:center;border:1px solid var(--line)!important;border-radius:9px!important;background:var(--surface)!important;color:var(--accent)!important;box-shadow:0 5px 18px rgba(0,0,0,.22)}
.workspace-sidebar-toggle span{font-size:1.35rem;line-height:1;transition:transform .18s ease}
.practice-abstract{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:auto;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--surface) 88%,transparent)}
.practice-abstract>span{color:var(--accent);font-size:.55rem;font-weight:800;letter-spacing:.12em;white-space:nowrap}
.practice-abstract h2{margin:0;color:var(--text);font:700 .76rem/1.15 "DM Sans",sans-serif}
.practice-abstract p{margin:2px 0 0;color:var(--text);font-size:.61rem;line-height:1.3}
.practice-abstract small{display:block;margin-top:2px;color:var(--muted);font-size:.55rem;line-height:1.25}
.practice-abstract ul{display:flex;justify-content:flex-end;gap:4px;margin:0;padding:0;list-style:none}
.practice-abstract li{padding:3px 7px;border:1px solid var(--line);border-radius:99px;color:var(--muted);font-size:.52rem;white-space:nowrap}
.practice-abstract li:empty{display:none}
@media(max-width:620px){.practice-abstract{grid-template-columns:1fr}.practice-abstract ul{justify-content:flex-start;flex-wrap:wrap}}

/* A section is separated from the next section by its container.  Do not add
   a second separator inside the heading itself. */
.settings-card.settings-card>.section-title{border-bottom:0!important}

/* Compact workspaces use spacing, not decorative horizontal rules. */
.training-dashboard #options .section-title{border-top:0!important;border-bottom:0!important;padding-top:0!important;padding-bottom:0!important}
.training-dashboard #options :is(.embedded-metronome,.settings-practice-transport,.training-track-note){border-top:0!important;border-bottom:0!important;padding-top:2px!important;padding-bottom:0!important}
.training-dashboard .training-panel :is(.shared-session-header,.phrase-section-title,.shared-instrument,.shared-practice-transport,.harmony-palette,.guitar-tab,.piano-tab){border-top:0!important;border-bottom:0!important}
.training-dashboard .training-panel .shared-session-header{padding-bottom:3px!important}
.training-dashboard .training-panel .phrase-section-title{padding-bottom:1px!important}
.training-dashboard .training-panel .shared-instrument{margin-top:4px!important;margin-bottom:3px!important;padding-top:3px!important;padding-bottom:3px!important}
.training-dashboard .training-panel :is(.guitar-tab,.piano-tab){margin-top:7px!important;padding-top:5px!important}
.training-dashboard .training-panel .harmony-palette{margin-top:7px!important;margin-bottom:2px!important;padding-bottom:2px!important}
.guided-course-page .course-syllabus{grid-template-columns:repeat(6,minmax(0,1fr))!important}
.guided-course-page .course-syllabus a{grid-template-columns:17px minmax(0,1fr) 10px;gap:3px;min-height:29px;padding:3px 4px}
.guided-course-page .course-syllabus a>span{font-size:.44rem}
@media(max-width:1100px){.guided-course-page .course-syllabus{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:620px){.guided-course-page .course-syllabus{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* Sections are distinguished by spacing and colour only.  Keep the outline of
   the main panel, but never draw separators inside its sections. */
:is(body.training-dashboard,body.songs-dashboard,body.chords-page) :is(.section-title,.selector-group-title,.phrase-section-title,.shared-session-header,.shared-instrument,.shared-practice-transport,.instrument-summary,.harmony-palette,.embedded-metronome,.settings-practice-transport,.training-track-note,.course-lesson-copy,.guitar-tab,.piano-tab,.chord-settings-title){border-top:0!important;border-bottom:0!important}
body.training-dashboard #options>.settings-card{border-bottom:0!important}
body.songs-dashboard :is(.chart-section,.song-settings-section){border-top:0!important;border-bottom:0!important}
body.chords-page .chord-picker section+section{border-top:0!important}
:is(body.training-dashboard,body.songs-dashboard,body.chords-page) hr{display:none!important}

/* Minicorso: clean content inside every numbered section. */
body.guided-course-page #options.guided-course-panel{gap:0!important}
body.guided-course-page #options.guided-course-panel>.settings-card{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
body.guided-course-page #options.guided-course-panel>.settings-card>.section-title{
  border:0!important;
}

/* One section grammar for every training screen: spacing, numbers and colour
   provide hierarchy; horizontal rules are never part of the component. */
:is(body.training-dashboard,body.songs-dashboard) #options>.settings-card,
:is(body.training-dashboard,body.songs-dashboard) :is(.pulse-settings-card,.practice-settings-card),
:is(body.training-dashboard,body.songs-dashboard) :is(.pulse-settings-card,.practice-settings-card) :is(.section-title,.embedded-metronome,.settings-practice-transport){
  border-top:0!important;
  border-bottom:0!important;
}

@media(min-width:900px) and (min-height:720px){
  .collapsible-workspace.workspace-sidebar-collapsed .shell{grid-template-columns:42px minmax(0,1fr)!important}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar{display:block!important;grid-column:1!important;width:42px;overflow:visible!important}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar>:not(.workspace-sidebar-toggle){display:none!important}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar-toggle{top:7px;right:5px}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar-toggle span{transform:rotate(180deg)}
  .collapsible-workspace.workspace-sidebar-collapsed .training-panel{grid-column:2!important;width:100%!important}
  .songs-dashboard.collapsible-workspace.workspace-sidebar-collapsed .songs-shell,
  .chords-page.collapsible-workspace.workspace-sidebar-collapsed .chords-workspace{grid-template-columns:42px minmax(0,1fr)!important}
  .songs-dashboard.collapsible-workspace.workspace-sidebar-collapsed .song-sidebar,
  .chords-page.collapsible-workspace.workspace-sidebar-collapsed .chord-picker{display:block!important;width:42px!important;min-width:42px!important;overflow:hidden!important;padding:0!important}
  .songs-dashboard.collapsible-workspace.workspace-sidebar-collapsed .song-sidebar>:not(.workspace-sidebar-toggle),
  .chords-page.collapsible-workspace.workspace-sidebar-collapsed .chord-picker>:not(.workspace-sidebar-toggle){display:none!important}
  .songs-dashboard.collapsible-workspace.workspace-sidebar-collapsed .chord-trainer,
  .chords-page.collapsible-workspace.workspace-sidebar-collapsed .chord-display{grid-column:2!important;width:100%!important}
}

@media(max-width:899px), (max-height:719px){
  .collapsible-workspace.workspace-sidebar-collapsed{height:100dvh;overflow:hidden}
  .collapsible-workspace.workspace-sidebar-collapsed .shell{display:grid!important;grid-template-columns:42px minmax(0,1fr)!important;grid-template-rows:78px minmax(0,1fr)!important;gap:8px!important;width:100%!important;height:100dvh;padding:0 8px 8px!important}
  .collapsible-workspace.workspace-sidebar-collapsed .unified-header{grid-column:1/-1;grid-row:1}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar{display:block!important;grid-column:1!important;grid-row:2!important;width:42px;min-height:0;overflow:visible!important}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar>:not(.workspace-sidebar-toggle){display:none!important}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar-toggle{top:6px;right:5px}
  .collapsible-workspace.workspace-sidebar-collapsed .workspace-sidebar-toggle span{transform:rotate(180deg)}
  .collapsible-workspace.workspace-sidebar-collapsed .training-panel{grid-column:2!important;grid-row:2!important;min-width:0!important;height:100%!important;margin:0!important;overflow:auto!important}
}

@media(max-width:900px){
  .portal-header,.unified-header{position:relative;z-index:1000;overflow:visible!important}
  .mobile-header-menu>summary{position:relative;z-index:1002}
  .mobile-header-menu>summary::marker{content:""}
  .mobile-header-menu>summary::after{display:none!important}
  .mobile-header-menu[open]::before{content:"";position:fixed;z-index:1000;inset:78px 0 0;background:rgba(4,6,10,.5);backdrop-filter:blur(3px)}
  .mobile-header-panel{position:fixed!important;z-index:1001!important;top:68px!important;right:10px!important;width:min(280px,calc(100vw - 20px))!important;max-height:calc(100dvh - 80px);overflow:auto;padding:10px!important;border-radius:13px!important;background:color-mix(in srgb,var(--panel) 96%,black)!important;box-shadow:0 22px 65px rgba(0,0,0,.7)!important}
  .mobile-header-panel .context-nav{grid-template-columns:1fr!important}
  .mobile-header-panel .context-nav a{min-height:36px;padding:8px 10px!important}
}

/* On phones the application menu is a real drawer.  Its navigation and
   account controls participate in one normal block flow, so nested course
   menus can never overlap login, logout or language controls. */
@media(max-width:600px){
  .mobile-header-menu[open]::before{inset:78px 0 0!important}
  html body .mobile-header-menu .mobile-header-panel{
    box-sizing:border-box!important;
    top:78px!important;
    right:0!important;
    left:0!important;
    width:100vw!important;
    max-width:none!important;
    max-height:calc(100dvh - 78px)!important;
    margin:0!important;
    padding:14px 16px 18px!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    border-right:0!important;
    border-left:0!important;
    border-radius:0 0 14px 14px!important;
  }
  html body .mobile-header-panel .context-nav{
    display:grid!important;
    width:100%!important;
    max-width:none!important;
    height:auto!important;
    padding:0!important;
    gap:6px!important;
    overflow:visible!important;
    border:0!important;
    background:transparent!important;
    backdrop-filter:none!important;
  }
  html body .mobile-header-panel .context-nav>a,
  html body .mobile-header-panel .nav-menu-group>summary{
    box-sizing:border-box;
    width:100%;
    min-height:42px!important;
    padding:11px 12px!important;
    font-size:.78rem!important;
  }
  html body .mobile-header-panel .nav-submenu{
    box-sizing:border-box;
    width:calc(100% - 12px);
    margin:4px 0 8px 12px!important;
  }
  html body .mobile-header-panel .nav-submenu a,
  html body .mobile-header-panel .nav-future{
    min-height:42px;
    white-space:normal;
  }
  html body .mobile-header-panel .mobile-account-row{
    position:static!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto auto;
    width:100%;
    margin-top:12px!important;
    padding-top:12px!important;
  }
  html body .mobile-account-row .account-nav-link{width:100%;margin:0!important}
  html body .mobile-account-row .logout-nav-form{margin:0!important}
  html body .mobile-account-row .language-switch{margin:0!important}
}

/* Phones never expose nested horizontal scrollbars. Compact renderers must
   adapt their content to the viewport and retain vertical scrolling only. */
@media(max-width:700px){
  html,body{width:100%;max-width:100%;overflow-x:clip!important}
  :is(main,section,article,aside,form,fieldset,.shell,.entry-shell,.songs-shell,.chords-shell,.training-panel,.chords-workspace){min-width:0;max-width:100%}
  :is(.tab-scroll,.fretboard,.standard-fretboard,.chorus-grid-scroll,.inversion-grid){max-width:100%!important;overflow-x:hidden!important}
}

/* A collapsed workspace is a rail containing the toggle only. */
.collapsible-workspace.workspace-sidebar-collapsed #options.workspace-sidebar{
  overflow:hidden!important;
  font-size:0!important;
}
.collapsible-workspace.workspace-sidebar-collapsed #options.workspace-sidebar>*:not(.workspace-sidebar-toggle){
  display:none!important;
  visibility:hidden!important;
}
.collapsible-workspace.workspace-sidebar-collapsed #options.workspace-sidebar::before,
.collapsible-workspace.workspace-sidebar-collapsed #options.workspace-sidebar::after{
  display:none!important;
  content:none!important;
}
