.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#fff;padding:1.15rem 2rem;border-bottom:1px solid var(--color-border);box-shadow:0 2px 4px #0000000d;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.app-header h1{font-size:1.65rem;font-weight:600;color:var(--color-heading);margin-bottom:.25rem}.app-header p{font-size:.9rem;color:var(--color-muted)}.app-nav{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.app-nav a,.app-nav button{border:1px solid var(--color-border);background:#fff;color:var(--color-heading);border-radius:6px;padding:.5rem .75rem;font-size:.85rem;font-weight:500;text-decoration:none;cursor:pointer}.app-nav a:hover,.app-nav button:hover{border-color:var(--color-primary);color:var(--color-primary)}.app-nav a:focus-visible,.app-nav button:focus-visible{outline:3px solid rgba(45,122,191,.28);outline-offset:2px}.app-main{flex:1;padding:1.5rem 2rem;max-width:1200px;width:100%;margin:0 auto}@media(min-width:900px)and (max-height:900px){.app-header{padding-block:1rem}.app-main{padding-block:1.25rem}}@media(max-width:640px){.app-header{padding:1rem 1.5rem}.app-header h1{font-size:1.5rem}.app-main{padding:1.5rem}}@media(max-width:420px){.app-header{align-items:flex-start;padding:.875rem 1rem}.app-header h1{font-size:1.35rem}.app-nav{width:100%}.app-nav a,.app-nav button{min-height:2.5rem}.app-main{padding:1rem}}.home{display:grid}.home h2{font-size:1.5rem;font-weight:600;color:var(--color-heading);margin-bottom:.25rem}.home .subtitle{color:var(--color-muted);margin-bottom:1rem}.home .course-direction{color:var(--color-primary-hover);font-size:.8rem;font-weight:600;letter-spacing:.02em;margin-bottom:.5rem}.placeholder-card{background:#fff;border:1px solid var(--color-border);border-radius:8px;padding:1.25rem;box-shadow:0 2px 4px #0000000d;transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column;height:100%}.home .placeholder-card{max-width:40rem}.bootstrap-language{justify-items:center}.bootstrap-language-card{width:min(100%,42rem)}.bootstrap-language-secondary{color:var(--color-muted);font-size:.98rem;line-height:1.35;margin-bottom:.625rem}.bootstrap-language .subtitle{margin-bottom:.375rem}.bootstrap-language-note{color:var(--color-subtle);font-size:.9rem;margin-bottom:1rem}.placeholder-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.placeholder-card p{color:var(--color-muted);margin-bottom:.625rem;line-height:1.4;font-size:.95rem}.btn-start{background:var(--color-primary);color:#fff;border:none;display:inline-block;padding:.625rem 1.25rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;text-align:center;text-decoration:none;transition:background .2s;width:100%}.home-actions>.btn-start:first-of-type{font-size:.95rem;padding-block:.75rem}.home-continue-actions .btn-start:first-child{font-size:.95rem;padding-block:.75rem}.btn-start:hover{background:var(--color-primary-hover)}.btn-start:focus-visible,.home-study-summary:focus-visible,.home-course-link:focus-visible{outline:3px solid rgba(45,122,191,.28);outline-offset:2px}.btn-start:active{transform:scale(.98)}.home-actions{display:grid;gap:.625rem}.home-continue{border:1px solid var(--color-border);border-radius:8px;display:grid;gap:.75rem;padding:.875rem}.home-continue span,.home-continue small{color:var(--color-muted);display:block;font-size:.8rem;line-height:1.3}.home-continue strong{color:var(--color-heading);display:block;font-size:1rem;line-height:1.35;margin:.125rem 0}.home-continue-actions{display:grid;gap:.5rem}.btn-start-secondary{background:#fff;border:1px solid var(--color-border);color:var(--color-primary-hover)}.btn-start-secondary:hover{background:var(--color-surface)}.home-study-plan{border-top:1px solid var(--color-border);display:grid;margin-top:1rem;padding-top:1rem}.home-study-summary{background:#f8f9fa;border:1px solid var(--color-border);border-radius:8px;color:var(--color-heading);cursor:pointer;display:grid;gap:.25rem;padding:.875rem 1rem}.home-study-summary span{font-weight:600}.home-study-summary small{color:var(--color-muted);font-size:.82rem;line-height:1.3}.home-study-plan-content{display:grid;gap:.75rem;margin-top:.75rem}.home-study-plan:not([open])>.home-study-plan-content{display:none}.home-study-plan-content div{display:grid;gap:.25rem;min-width:0}.home-recommendation{background:#f8f9fa;border:1px solid var(--color-border);border-radius:6px;padding:.75rem}.home-review-status{align-items:center;border:1px solid var(--color-border);border-radius:6px;color:var(--color-muted);display:flex;flex-wrap:wrap;gap:.4rem .75rem;padding:.75rem}.home-review-status span{display:grid;gap:.15rem;line-height:1.25}.home-review-status>span+span{border-left:1px solid var(--color-border);padding-left:.75rem}.home-study-plan-content span{color:var(--color-muted);font-size:.75rem;line-height:1.2}.home-study-plan-content strong{color:var(--color-heading);font-size:1.1rem;line-height:1}.home-study-plan-content small{color:var(--color-muted);font-size:.78rem;line-height:1.3}.home-course-link{color:var(--color-primary-hover);font-size:.85rem;font-weight:600;margin-top:.25rem;text-decoration:none}.home-browse-link{align-self:start;color:var(--color-primary-hover);font-size:.86rem;font-weight:600;margin-top:.75rem;text-decoration:none}.home-course-link:hover,.home-browse-link:hover{color:var(--color-primary)}.home-browse-link:focus-visible{outline:3px solid rgba(45,122,191,.28);outline-offset:2px}.home-last-practiced{border-top:1px solid var(--color-border);margin-top:1rem;padding-top:.75rem}.option-grid{display:grid;gap:.75rem}@media(max-width:520px){.home-review-status{align-items:start;flex-direction:column}.home-review-status>span+span{border-left:0;padding-left:0}}@media(max-width:420px){.placeholder-card{padding:1rem}.btn-start,.home-study-summary{min-height:2.75rem}.home-actions,.home-continue-actions,.home-study-plan-content{gap:.55rem}}.courses-page{display:grid;gap:1.5rem}.courses-page h2{font-size:1.5rem;font-weight:600;color:var(--color-heading);margin-bottom:.25rem}.courses-subtitle{color:var(--color-muted);max-width:40rem}.courses-section{display:grid;gap:1rem}.courses-section-secondary{border-top:1px solid var(--color-border);padding-top:1rem}.courses-section-title{font-size:1.15rem;font-weight:600;color:var(--color-heading);margin-bottom:.25rem}.course-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.guided-path-card{background:#fff;border:1px solid rgba(45,122,191,.28);border-left:4px solid var(--color-primary);border-radius:8px;box-shadow:0 6px 18px #182a3914;display:grid;gap:.9rem;padding:1.25rem}.guided-path-card h3{color:var(--color-heading);font-size:1.25rem;font-weight:600}.guided-path-grid{display:grid;gap:.75rem;grid-template-columns:1fr}.guided-path-grid-single{max-width:42rem}.guided-path-grid div{background:#f8f9fa;border:1px solid var(--color-border);border-radius:6px;display:grid;gap:.25rem;padding:.875rem}.guided-path-grid span,.lesson-intro-meta span{color:var(--color-primary-hover);font-size:.78rem;font-weight:600}.guided-path-grid strong{color:var(--color-heading);font-size:1rem;font-weight:600}.guided-path-grid small{color:var(--color-muted);font-size:.9rem;line-height:1.35}.guided-path-actions{max-width:22rem}.checkpoint-card{max-width:58rem}.checkpoint-stage{color:var(--color-primary-hover);font-size:.8rem;font-weight:600;margin:0}.checkpoint-summary-grid{display:grid;gap:.75rem;grid-template-columns:1fr}.checkpoint-summary-grid div{background:#f8f9fa;border:1px solid var(--color-border);border-radius:6px;display:grid;gap:.35rem;padding:.875rem}.checkpoint-summary-grid span{color:var(--color-primary-hover);font-size:.78rem;font-weight:600}.checkpoint-summary-grid strong{color:var(--color-heading);font-size:1rem;font-weight:600}.checkpoint-summary-grid small,.checkpoint-empty{color:var(--color-muted);font-size:.9rem}.checkpoint-actions{max-width:24rem}.course-browse-details{display:grid;gap:1rem}.course-browse-details[open]{gap:1rem}.course-browse-summary{align-items:center;background:#f8f9fa;border:1px solid var(--color-border);border-radius:8px;color:var(--color-heading);cursor:pointer;display:grid;gap:.25rem;padding:1rem 1.25rem}.course-browse-summary:focus-visible,.course-link:focus-visible{outline:3px solid rgba(45,122,191,.28);outline-offset:2px}.course-browse-summary span{font-weight:600}.course-browse-summary small{color:var(--color-muted);font-size:.9rem}.course-browse-details .course-grid{margin-top:1rem}.course-browse-details:not([open])>.course-grid{display:none}.lesson-intro-meta{display:flex;flex-wrap:wrap;gap:.5rem}.lesson-intro-meta span{background:#f8f9fa;border:1px solid var(--color-border);border-radius:999px;padding:.35rem .65rem}.lesson-intro-preview{background:#f8f9fa;border:1px solid var(--color-border);border-radius:6px;display:grid;gap:.35rem;padding:.875rem}.lesson-intro-preview h3{color:var(--color-heading);font-size:1rem;font-weight:600}.lesson-intro-preview p{margin:0}@media(min-width:720px){.guided-path-grid,.checkpoint-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.course-card,.course-placeholder-card{background:#fff;border:1px solid var(--color-border);border-radius:8px;padding:1.25rem;box-shadow:0 2px 4px #0000000d;display:flex;flex-direction:column;gap:.75rem}.course-card{transition:transform .2s,box-shadow .2s}.course-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.course-card-disabled{opacity:.65}.course-card-disabled:hover{transform:none;box-shadow:0 2px 4px #0000000d}.course-placeholder-card{max-width:40rem}.course-direction{color:var(--color-primary-hover);font-size:.8rem;font-weight:600;letter-spacing:.02em}.pair-status{color:var(--color-muted);font-size:.8rem;font-weight:600}.theme-order,.lesson-order,.lesson-context{color:var(--color-primary-hover);font-size:.8rem;font-weight:600;letter-spacing:.02em}.course-card h3{font-size:1.15rem;font-weight:600;color:var(--color-heading)}.course-card p,.course-placeholder-card p{color:var(--color-muted);line-height:1.4;font-size:.95rem}.course-actions,.lesson-actions{max-width:16rem}.lesson-actions{display:grid;gap:.75rem}.course-link{background:var(--color-primary);border:0;color:#fff;cursor:pointer;display:inline-block;padding:.625rem 1.25rem;border-radius:6px;font-size:.9rem;font-weight:500;text-align:center;text-decoration:none;transition:background .2s;width:100%;margin-top:auto}.course-link-compact{width:auto}.course-link-secondary{background:var(--color-secondary)}.course-link:hover{background:var(--color-primary-hover)}.course-link:disabled{background:var(--color-disabled);cursor:not-allowed}.course-link:disabled:hover{background:var(--color-disabled)}.course-link-secondary:hover{background:var(--color-secondary-hover)}.course-link:active{transform:scale(.98)}@media(max-width:420px){.courses-page{gap:1rem}.course-card,.course-placeholder-card,.guided-path-card{padding:1rem}.course-grid{grid-template-columns:minmax(0,1fr)}.course-link,.course-browse-summary{min-height:2.75rem}.lesson-actions,.guided-path-actions,.course-actions{max-width:none;width:100%}.lesson-intro-meta{align-items:flex-start;flex-direction:column}}.review-list{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.review-group{display:grid;gap:.75rem}.review-empty-due,.review-item-stats{color:var(--color-muted);font-size:.9rem}.review-item-why{color:var(--color-heading);font-size:.9rem;font-weight:600}.account-field{display:grid;gap:.35rem}.account-field span{color:var(--color-muted);font-size:.85rem;font-weight:600}.account-field input{border:1px solid var(--color-border);border-radius:6px;color:var(--color-heading);font-size:1rem;padding:.625rem .75rem}:root{--color-text: #333333;--color-heading: #2c3e50;--color-muted: #5f6f70;--color-subtle: #627176;--color-border: #e0e0e0;--color-primary: #1f6fb2;--color-primary-hover: #1b6aa8;--color-success: #1d7f45;--color-success-hover: #17673a;--color-success-strong: #166534;--color-danger: #b9382a;--color-danger-strong: #9f2d22;--color-secondary: #627176;--color-secondary-hover: #556569;--color-warning: #a85f00;--color-warning-hover: #8f5000;--color-disabled: #68757a}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f5;color:var(--color-text)}#root{min-height:100vh}
