/* Route-based public pages and the full-screen product workspace. */
.publicRouteView[hidden] { display: none; }
.publicRouteView { min-height: calc(100vh - 78px); padding: 72px 0 96px; background: #f7f9fc; }
.routeInner { width: min(calc(100% - 56px), 1120px); margin: 0 auto; }
.routeHero { display: grid; grid-template-columns: 1.05fr .95fr; gap: 56px; align-items: center; margin-bottom: 54px; }
.routeHero h1 { max-width: 700px; margin: 8px 0 18px; color: #101828; font-size: clamp(2.9rem, 6vw, 5.8rem); line-height: .98; letter-spacing: -.08em; }
.routeHero p { max-width: 620px; color: #667085; font-size: 1.12rem; line-height: 1.65; }
.routeActions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.routeImagePanel { min-height: 330px; padding: 22px; border: 1px solid #dce5f0; border-radius: 18px; background: linear-gradient(145deg, #eaf2ff, #fff); box-shadow: 0 18px 50px rgba(16,24,40,.07); }
.routeImagePanel .exerciseArt { width: 100%; height: auto; }
.routeGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.routeCard { min-height: 170px; padding: 24px; border: 1px solid #e1e7ef; border-radius: 14px; background: #fff; box-shadow: 0 6px 20px rgba(16,24,40,.035); }
.routeCard h2, .routeCard h3 { margin: 0 0 9px; color: #101828; letter-spacing: -.035em; }
.routeCard p { margin: 0; color: #667085; line-height: 1.55; }
.routeBand { margin: 42px 0; padding: 28px; border: 1px solid #cfe0fa; border-radius: 16px; background: #edf4ff; }
.routeBand h2 { margin: 0 0 8px; color: #173d77; }
.routeBand p { margin: 0; color: #526b8c; }
.routeHeading { margin: 0 0 8px; color: #101828; font-size: clamp(2rem, 4vw, 3.5rem); letter-spacing: -.065em; }
.routeLead { max-width: 700px; margin: 0 0 32px; color: #667085; font-size: 1.06rem; line-height: 1.65; }
.routeSteps { display: grid; gap: 12px; counter-reset: route-step; }
.routeStep { display: grid; grid-template-columns: 55px 1fr; gap: 16px; align-items: start; padding: 20px 0; border-bottom: 1px solid #e1e7ef; }
.routeStep:last-child { border-bottom: 0; }
.routeStep::before { counter-increment: route-step; content: counter(route-step, decimal-leading-zero); color: #2f7ff0; font-size: .78rem; font-weight: 800; letter-spacing: .1em; }
.routeStep h3 { margin: 0 0 5px; color: #101828; }
.routeStep p { margin: 0; color: #667085; line-height: 1.55; }
.exerciseToolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 22px; }
.exerciseToolbar input, .exerciseToolbar select { min-height: 44px; padding: 0 13px; border: 1px solid #d0d5dd; border-radius: 9px; background: #fff; color: #101828; font: inherit; }
.exerciseToolbar input { flex: 1 1 280px; }
.exerciseGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.exerciseCard { overflow: hidden; border: 1px solid #e1e7ef; border-radius: 15px; background: #fff; box-shadow: 0 5px 18px rgba(16,24,40,.035); }
.exerciseCard .exerciseArt { display: block; width: 100%; height: auto; }
.exerciseCardBody { padding: 16px 17px 18px; }
.exerciseCard h3 { margin: 0 0 5px; color: #101828; font-size: 1.03rem; }
.exerciseCard p { margin: 0; color: #667085; font-size: .88rem; }
.exerciseMeta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.exerciseMeta span { padding: 5px 8px; border-radius: 6px; background: #f1f5fa; color: #52637a; font-size: .72rem; }
.exerciseCard .button { width: 100%; margin-top: 15px; padding: 10px 13px; }
.exerciseDetail { display: grid; grid-template-columns: minmax(280px, .8fr) 1.2fr; gap: 28px; align-items: start; }
.exerciseDetailVisual { padding: 18px; border: 1px solid #dce5f0; border-radius: 16px; background: #eef4fc; }
.exerciseDetailVisual .exerciseArt { width: 100%; }
.exerciseDetailCopy { padding: 6px 0; }
.exerciseDetailCopy h1 { margin: 6px 0 10px; color: #101828; font-size: clamp(2.3rem, 5vw, 4.5rem); letter-spacing: -.075em; line-height: 1; }
.exerciseDetailCopy p { color: #667085; line-height: 1.65; }
.routeBack { display: inline-flex; margin-bottom: 24px; color: #2f7ff0; font-weight: 700; text-decoration: none; }
.routeBack:hover { text-decoration: underline; }
body.routeAuth .siteHeader, body.routeAuth > #top, body.routeAuth .siteFooter { display: none; }
body.routeAuth .modal.open { display: block; }
body.routeAuth { overflow: hidden; }
body.workspaceMode .siteHeader, body.workspaceMode > #top, body.workspaceMode .siteFooter, body.workspaceMode #publicRouteView { display: none; }
body.workspaceMode .dashboard.workspace { position: static; display: block; min-height: 100vh; overflow: visible; }
body.workspaceMode .workspacePanel { min-height: 100vh; }
body.workspaceMode .workspaceShell { min-height: 100vh; }
.workspacePageHeader { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-bottom: 24px; }
.workspacePageHeader .workspaceMobileMenu { order: -1; }
.exerciseLibraryGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.workspaceExerciseCard { overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.workspaceExerciseCard .exerciseArt { display: block; width: 100%; }
.workspaceExerciseCardBody { padding: 14px; }
.workspaceExerciseCardBody b { color: #101828; }
.workspaceExerciseCardBody small { display: block; margin-top: 5px; color: #667085; line-height: 1.45; }
.workspaceExerciseCardBody .workspaceButton { width: 100%; margin-top: 12px; padding: 9px 11px; font-size: .82rem; }
.workspaceExerciseFilter { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.workspaceExerciseFilter input, .workspaceExerciseFilter select { min-height: 42px; padding: 0 12px; border: 1px solid #d0d5dd; border-radius: 8px; background: #fff; color: #101828; font: inherit; }
.workspaceExerciseFilter input { flex: 1 1 260px; }
.workspaceExerciseHistoryRow { display: grid; grid-template-columns: 112px minmax(0, 1fr) auto; align-items: center; gap: 16px; }
.workspaceExerciseThumb { width: 112px; overflow: hidden; border-radius: 10px; background: #edf4ff; }
.workspaceExerciseThumb .exerciseArt { display: block; width: 100%; }
.routeLoading { width: min(calc(100% - 56px), 1120px); margin: 0 auto; color: #667085; }
@media (max-width: 900px) { .routeHero, .exerciseDetail { grid-template-columns: 1fr; } .routeGrid, .exerciseGrid, .exerciseLibraryGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .publicRouteView { padding: 48px 0 64px; } .routeInner { width: min(calc(100% - 32px), 1120px); } .routeGrid, .exerciseGrid, .exerciseLibraryGrid { grid-template-columns: 1fr; } .routeHero h1 { font-size: 3rem; } .workspacePageHeader { align-items: flex-start; } .workspaceExerciseHistoryRow { grid-template-columns: 74px minmax(0, 1fr); } .workspaceExerciseThumb { width: 74px; } .workspaceExerciseHistoryRow > strong { grid-column: 2; } }
