/* BSE dashboard spacing (docs/dashboard-spacing-audit.md, Robert "ok" 21 Oct 2026). One scale, two breakpoints (960 / 600).
 * Loaded last (wp_head 1110, after bse-mobile-layout at 1100). Spacing and radius only: no colours, fonts, copy or order.
 * Home_Dash 1.0 (the home panel holding .bse-hd1, frozen) and drill bodies are left alone; on drills only the GS11 top bar may wrap on phones.
 * Selectors carry #root + .bse-sdapp[class] + .bse-sdapp-main[class] so they outrank app-alignment.css's !important rules. */

html body #bse-student-dashboard-root,html body .bse-app-aligned-lesson{
 --bse-space-1:4px;--bse-space-2:8px;--bse-space-3:12px;--bse-space-4:16px;--bse-space-5:24px;--bse-space-6:32px;
 --bse-radius-card:16px;--bse-radius-inner:12px;--bse-radius-pill:999px}

/* Panel gutter: 32 desktop, 24 tablet, 16 phone. */
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class]>:is(#bse-panel-home,#bse-panel-speakfluent,.bse-sdapp-panel):not(:has(.bse-hd1)){padding:var(--bse-space-6)!important}
/* C1 Extra Practice: the cream library is the page, so it carries the gutter and the panel adds none. */
html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training:has(>.bse-training-library){padding:0!important}
html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training>.bse-training-library{padding:var(--bse-space-6) var(--bse-space-6) 64px!important}

/* Cards: 24 padding, radius 16. */
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-home-section:not(.bse-mentor-hero),.bse-wordplay-dashboard-card,.bse-practice-recommended,.assignment-card,.bse-exam-test-card,.bse-tutor-contact-card,.bse-approved-category-card):not(#bse-panel-home:has(.bse-hd1) *){padding:var(--bse-space-5)!important;border-radius:var(--bse-radius-card)!important}
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-course,.bse-exam-library-intro):not(#bse-panel-home:has(.bse-hd1) *){border-radius:var(--bse-radius-card)!important}
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-speakfluent-course-body{padding:0 var(--bse-space-5) var(--bse-space-5)!important}

/* Inside a card: radius 12, 16 padding, 12 between rows. */
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list>li,.bse-next-best-list>li,.bse-c1-lexical-card,.bse-assessment-result-card):not(#bse-panel-home:has(.bse-hd1) *){padding:var(--bse-space-4)!important;border-radius:var(--bse-radius-inner)!important}
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list,.bse-next-best-list):not(#bse-panel-home:has(.bse-hd1) *){gap:var(--bse-space-3)!important}

/* Today: no empty 100px gutter beside the status pill; the check-in strip lines up with the cards' text. */
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .assignment-card{grid-template-columns:auto minmax(0,1fr) auto!important;gap:var(--bse-space-4)!important}
html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-stage-confirmation{padding:var(--bse-space-3) var(--bse-space-5)!important}

@media (max-width:960px){
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class]>:is(#bse-panel-home,#bse-panel-speakfluent,.bse-sdapp-panel):not(:has(.bse-hd1)){padding:var(--bse-space-5)!important}
 html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training:has(>.bse-training-library){padding:0!important}
 html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training>.bse-training-library{padding:var(--bse-space-5) var(--bse-space-5) 48px!important}
 /* The sticky menu card covered the breadcrumb and badge while scrolling. */
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-side{position:static!important;top:auto!important}
}

@media (max-width:600px){
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class]>:is(#bse-panel-home,#bse-panel-speakfluent,.bse-sdapp-panel):not(:has(.bse-hd1)){padding:var(--bse-space-4) var(--bse-space-4) 72px!important}
 html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training:has(>.bse-training-library){padding:0!important}
 html body #bse-student-dashboard-root .bse-sdapp[data-dashboard-version="c1_advanced"][class] .bse-sdapp-main[class]>#bse-panel-bse_training>.bse-training-library{padding:20px var(--bse-space-4) 72px!important}
 /* One gutter on phones: the white page sheet loses its own 8px margin and 9px padding, the panel keeps 16px. */
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-shell:not(:has(.is-active .bse-hd1)){margin-inline:0!important;padding-inline:0!important;box-shadow:none!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class]>:is(#bse-panel-home,#bse-panel-speakfluent,.bse-sdapp-panel):not(:has(.bse-hd1)){border-radius:0!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-home-section:not(.bse-mentor-hero),.bse-wordplay-dashboard-card,.bse-practice-recommended,.assignment-card,.bse-exam-test-card,.bse-tutor-contact-card,.bse-approved-category-card):not(#bse-panel-home:has(.bse-hd1) *){padding:var(--bse-space-4)!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-speakfluent-course-body{padding:0 var(--bse-space-3) var(--bse-space-3)!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-speakfluent-course>summary{flex-wrap:wrap}
 /* A card inside a card becomes a plain row: no frame of its own, one hairline between rows. */
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list>li,.bse-next-best-list>li,.bse-c1-lexical-card,.bse-assessment-result-card):not(#bse-panel-home:has(.bse-hd1) *){padding:var(--bse-space-3) 0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list>li+li,.bse-next-best-list>li+li,.bse-assessment-result-card+.bse-assessment-result-card):not(#bse-panel-home:has(.bse-hd1) *){border-top:1px solid color-mix(in srgb,currentColor 14%,transparent)!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list,.bse-next-best-list):not(#bse-panel-home:has(.bse-hd1) *){gap:0!important}
 /* Number columns: 28px, not 38–42px. */
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] :is(.bse-speakfluent-list,.bse-next-best-list)>li{grid-template-columns:28px minmax(0,1fr)!important;column-gap:var(--bse-space-2)!important}
 /* Extra Practice: the library wrapper stops framing the recommended card, and the number badge fits its 28px column. */
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-training-library{padding-inline:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-next-best-number{width:28px!important;min-width:28px!important;height:28px!important;font-size:13px!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .assignment-card{grid-template-columns:minmax(0,1fr)!important;gap:var(--bse-space-3)!important}
 html body #bse-student-dashboard-root .bse-sdapp[class] .bse-sdapp-main[class] .bse-stage-confirmation{padding:var(--bse-space-3) var(--bse-space-4)!important}
}

/* Lesson pages (app-aligned): 16px gutter on phones, nothing pulled to the screen edge. */
html body .bse-app-aligned-lesson .stage-tabs{margin-right:0!important}
html body :is(#_,.bse-app-aligned-lesson)[class][class][class] :is(.card,.task){border-radius:var(--bse-radius-card)!important}
@media (max-width:600px){
 html body :is(#_,.bse-app-aligned-lesson)[class][class][class]>main{padding:var(--bse-space-4)!important}
}

/* Drill pages: only the GS11 top bar may wrap; nothing inside the drill body changes. */
@media (max-width:600px){
 html body .brt-gs11-topbar{flex-wrap:wrap!important;row-gap:var(--bse-space-2)}
}

/* Home_Dash 1.0 is frozen: its two cards outside .bse-hd1 keep exactly the padding layout.css gave them before 1.0.38. */
html body #bse-student-dashboard-root #bse-panel-home:has(.bse-hd1) :is(.bse-home-section:not(.bse-mentor-hero),.bse-wordplay-dashboard-card){padding:20px!important}
@media (max-width:720px){html body #bse-student-dashboard-root #bse-panel-home:has(.bse-hd1) :is(.bse-home-section:not(.bse-mentor-hero),.bse-wordplay-dashboard-card){padding:16px!important}}
