/* === AIJC Design System v1.1.0 === */
:root{
  --primary:#6c63ff;--secondary:#a78bfa;--brand-3:#22c55e;--brand-4:#3b82f6;--brand-5:#ef4444;
  --bg:#f8f7ff;--surface:#ffffff;--border:#e5e7eb;--text:#1a1a2e;--text-muted:#6b7280;
  --radius:16px;--radius-sm:10px;--radius-xs:8px;
  --font-main:'Nunito',sans-serif;--font-code:'JetBrains Mono','Courier New',monospace;
  --shadow-sm:0 2px 8px rgba(0,0,0,.06);--shadow:0 4px 20px rgba(108,99,255,.12);--shadow-lg:0 8px 40px rgba(108,99,255,.18);
}
.dark-mode{
  --bg:#0f0e17;--surface:#1a1929;--border:#2d2b4e;--text:#e8e6ff;--text-muted:#8b86b8;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{font-size:16px;-webkit-text-size-adjust:100%;}
body{font-family:var(--font-main);background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;}
img{max-width:100%;display:block;}
a{color:var(--primary);text-decoration:none;}
.container{width:100%;max-width:1180px;margin:0 auto;padding:0 24px;}
.hidden{display:none!important;}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 22px;border-radius:var(--radius-sm);font-weight:700;font-size:.9rem;border:none;cursor:pointer;transition:transform .15s,box-shadow .15s,opacity .15s;text-decoration:none;line-height:1.2;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(108,99,255,.35);}
.btn-outline{background:transparent;color:var(--primary);border:2px solid var(--primary);}
.btn-outline:hover{background:rgba(108,99,255,.08);}
.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border);}
.btn-danger{background:#ef4444;color:#fff;}
.btn-sm{padding:6px 14px;font-size:.82rem;}
.btn-full{width:100%;justify-content:center;}
.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important;}

/* Header */
.site-header{background:var(--surface);border-bottom:1.5px solid var(--border);position:sticky;top:0;z-index:100;box-shadow:var(--shadow-sm);}
.header-inner{display:flex;align-items:center;gap:20px;padding:0 24px;height:70px;max-width:1180px;margin:0 auto;}
.site-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);flex-shrink:0;}
.logo-icon{font-size:1.8rem;}
.logo-text{font-size:1.1rem;font-weight:800;}
.logo-text strong{color:var(--primary);}
.site-nav{display:flex;align-items:center;gap:4px;flex:1;justify-content:center;}
.nav-link{padding:7px 14px;border-radius:var(--radius-xs);font-weight:600;font-size:.875rem;color:var(--text-muted);transition:color .15s,background .15s;}
.nav-link:hover,.nav-link.active{color:var(--primary);background:rgba(108,99,255,.08);}
.header-actions{display:flex;align-items:center;gap:8px;margin-left:auto;}
.nav-user{display:flex;align-items:center;gap:8px;font-size:.875rem;font-weight:600;}
.nav-avatar{width:32px;height:32px;border-radius:50%;border:2px solid var(--primary);object-fit:cover;}
.dark-toggle{background:none;border:1px solid var(--border);border-radius:var(--radius-xs);width:36px;height:36px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:border-color .15s;}
.dark-toggle:hover{border-color:var(--primary);}
.mobile-menu-btn{display:none;background:none;border:1px solid var(--border);border-radius:8px;padding:6px 10px;cursor:pointer;font-size:1.1rem;}

/* Footer */
.site-footer{background:var(--surface);border-top:1.5px solid var(--border);padding:48px 0 20px;margin-top:60px;}
.footer-inner{display:grid;grid-template-columns:1fr auto;gap:60px;max-width:1180px;margin:0 auto;padding:0 24px;}
.footer-brand .logo-text{margin-bottom:8px;}
.footer-brand p{color:var(--text-muted);font-size:.875rem;margin-top:6px;}
.footer-cols{display:flex;gap:48px;}
.footer-col h4{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);margin-bottom:12px;}
.footer-col a{display:block;font-size:.875rem;color:var(--text-muted);padding:4px 0;transition:color .15s;}
.footer-col a:hover{color:var(--primary);}
.footer-toggle{display:flex;align-items:center;gap:8px;font-size:.875rem;cursor:pointer;}
.footer-bottom{text-align:center;padding-top:24px;margin-top:24px;border-top:1px solid var(--border);color:var(--text-muted);font-size:.8rem;}

/* Site content */
.site-content{min-height:calc(100vh - 70px);}
.page-inner{padding-bottom:60px;}
.page-header{padding:40px 0 24px;}
.page-header h1{font-size:2rem;font-weight:900;margin-bottom:6px;}
.page-header p{color:var(--text-muted);}

/* Auth pages */
.page-auth{min-height:calc(100vh - 70px);display:flex;align-items:center;justify-content:center;padding:24px;}
.auth-container{width:100%;max-width:440px;}
.auth-card{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;padding:40px;box-shadow:var(--shadow-lg);}
.auth-header{text-align:center;margin-bottom:28px;}
.auth-logo{font-size:3rem;margin-bottom:8px;}
.auth-header h1{font-size:1.6rem;font-weight:900;margin-bottom:4px;}
.auth-header p{color:var(--text-muted);}
.auth-form{display:flex;flex-direction:column;gap:14px;}
.auth-switch{text-align:center;margin-top:16px;font-size:.875rem;color:var(--text-muted);}
.auth-divider{display:flex;align-items:center;gap:12px;margin:16px 0;}
.auth-divider::before,.auth-divider::after{content:"";flex:1;height:1px;background:var(--border);}
.auth-divider span{color:var(--text-muted);font-size:.8rem;}
.btn-google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 20px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-weight:700;font-size:.9rem;color:var(--text);cursor:pointer;transition:border-color .15s,box-shadow .15s;text-decoration:none;}
.btn-google:hover{border-color:var(--primary);box-shadow:var(--shadow-sm);}

/* Forms */
.form-group{display:flex;flex-direction:column;gap:5px;}
.form-group label{font-size:.82rem;font-weight:700;color:var(--text);}
.form-group input,.form-group textarea,.form-group select{padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;background:var(--bg);color:var(--text);font-family:var(--font-main);outline:none;transition:border-color .2s;width:100%;}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--primary);}
.form-group textarea{resize:vertical;min-height:80px;}
.form-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.form-check{display:flex;align-items:center;gap:8px;font-size:.875rem;}
.form-error{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);color:#dc2626;padding:10px 14px;border-radius:var(--radius-xs);font-size:.875rem;font-weight:600;}
.form-hint{font-size:.78rem;color:var(--text-muted);}
.form-hint code{background:var(--bg);padding:2px 6px;border-radius:4px;font-family:var(--font-code);font-size:.78rem;}
.form-label-bold{font-weight:700;font-size:.875rem;margin-bottom:6px;display:block;}

/* Dashboard */
.page-dashboard{padding:0;}
.dashboard-grid{display:grid;grid-template-columns:300px 1fr;gap:24px;max-width:1180px;margin:0 auto;padding:24px;}
.dashboard-sidebar{display:flex;flex-direction:column;gap:16px;}
.dashboard-main{display:flex;flex-direction:column;gap:16px;}
.widget{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:24px;}
.widget-title{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:14px;}
.level-badge{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;padding:5px 14px;border-radius:20px;font-size:.82rem;font-weight:800;}
.xp-bar-wrap{height:8px;background:var(--border);border-radius:4px;overflow:hidden;margin:10px 0;}
.xp-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:4px;transition:width 1s cubic-bezier(.4,0,.2,1);}
.streak-counter{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--text);}
.streak-fire{font-size:1.3rem;}
.pet-container{text-align:center;padding:8px 0;}
.pet-sprite{font-size:4rem;margin-bottom:6px;animation:float 3s ease-in-out infinite;}
.pet-name{font-weight:800;font-size:1rem;}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.dashboard-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.dashboard-stats-row>div{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 6px;text-align:center;}
.stat-number{font-size:1.6rem;font-weight:900;color:var(--primary);line-height:1;display:block;}
.stat-label{font-size:.7rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;margin-top:3px;display:block;}
.achievement-badge{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px;border:1.5px solid var(--border);border-radius:12px;background:var(--bg);min-width:90px;}
.badge-emoji{font-size:2rem;}
.badge-name{font-size:.72rem;font-weight:700;text-align:center;color:var(--text-muted);}
.dashboard-quicklinks{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.quicklink-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px 12px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;text-decoration:none;color:inherit;text-align:center;transition:transform .18s,box-shadow .18s,border-color .18s;}
.quicklink-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--primary);}
.quicklink-icon{font-size:2.4rem;line-height:1;}
.quicklink-label{font-weight:800;font-size:.92rem;color:var(--text);}
.quicklink-sub{font-size:.78rem;color:var(--text-muted);margin:0;}
.challenge-widget{display:flex;flex-direction:column;gap:12px;}
.challenge-widget textarea{resize:vertical;min-height:60px;padding:10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-code);font-size:.875rem;background:var(--bg);color:var(--text);outline:none;width:100%;transition:border-color .2s;}
.challenge-widget textarea:focus{border-color:var(--primary);}

/* Loading */
.loading-spinner{text-align:center;padding:60px 20px;color:var(--text-muted);font-size:1rem;font-weight:500;}

/* Leaderboard */
.leaderboard-section{max-width:700px;margin:0 auto;}
.leaderboard-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:24px;}
.leaderboard-filters{display:flex;gap:6px;}
.filter-btn{padding:7px 16px;border:1.5px solid var(--border);border-radius:20px;background:transparent;font-size:.82rem;font-weight:600;cursor:pointer;color:var(--text-muted);transition:all .15s;}
.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.leaderboard-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--border);transition:background .15s;}
.leaderboard-row:last-child{border-bottom:none;}
.leaderboard-row:hover{background:rgba(108,99,255,.04);}
.leaderboard-row.me{background:rgba(108,99,255,.07);border-radius:12px;}
.lb-rank{width:36px;text-align:center;font-size:1.2rem;font-weight:900;color:var(--text-muted);}
.lb-rank.gold{color:#f59e0b;}
.lb-rank.silver{color:#94a3b8;}
.lb-rank.bronze{color:#c27c3e;}
.lb-avatar{width:40px;height:40px;border-radius:50%;border:2px solid var(--border);object-fit:cover;}
.lb-info{flex:1;}
.lb-name{font-weight:700;font-size:.95rem;}
.lb-level{font-size:.78rem;color:var(--text-muted);}
.lb-xp{font-weight:800;color:var(--primary);font-size:.9rem;}

/* Library */
.lib-search-input{width:100%;max-width:400px;padding:10px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;background:var(--bg);color:var(--text);outline:none;margin-bottom:24px;transition:border-color .2s;display:block;}
.lib-search-input:focus{border-color:var(--primary);}
.library-category{margin-bottom:40px;}
.library-category h2{font-size:1.2rem;font-weight:800;margin-bottom:14px;padding-bottom:10px;border-bottom:2px solid var(--border);}
.articles-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;}
.article-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:20px;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:8px;transition:transform .18s,box-shadow .18s,border-color .18s;}
.article-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--primary);}
.article-card h3{font-size:1rem;font-weight:700;margin:0;line-height:1.4;}
.article-card p{font-size:.85rem;color:var(--text-muted);margin:0;flex:1;}
.article-card-meta{display:flex;align-items:center;gap:12px;font-size:.78rem;color:var(--text-muted);margin-top:auto;padding-top:8px;border-top:1px solid var(--border);}
.article-read-tag{color:#22c55e;font-weight:700;}

/* Play page */
.games-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding-bottom:48px;}
.game-card{background:var(--surface);border:1.5px solid var(--border);border-radius:18px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s;}
.game-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px);}
.game-card-header{padding:18px 18px 12px;border-bottom:1px solid var(--border);}
.game-card-title h2{font-size:1.1rem;font-weight:800;margin:0 0 3px;}
.game-card-title p{font-size:.82rem;color:var(--text-muted);margin:0;}
.game-stats{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:10px;padding:8px 0 0;}
.game-stats span{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;}
.gs-label{color:var(--text-muted);font-weight:500;font-size:.78rem;}
.game-stats strong{color:var(--primary);font-weight:800;font-size:.95rem;}
.game-container{flex:1;padding:16px;min-height:220px;background:var(--surface);}
.mm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;}
.mm-card{height:88px;perspective:700px;cursor:pointer;border-radius:10px;}
.mm-card-inner{position:relative;width:100%;height:100%;transition:transform .42s cubic-bezier(.4,.2,.2,1);transform-style:preserve-3d;border-radius:10px;}
.mm-card.flipped .mm-card-inner,.mm-card.matched .mm-card-inner{transform:rotateY(180deg);}
.mm-card-front,.mm-card-back{position:absolute;inset:0;backface-visibility:hidden;border-radius:10px;display:flex;align-items:center;justify-content:center;text-align:center;padding:6px;border:2px solid var(--border);}
.mm-card-front{background:linear-gradient(135deg,rgba(108,99,255,.18),rgba(108,99,255,.06));font-size:1.5rem;color:var(--primary);}
.mm-card-back{transform:rotateY(180deg);background:var(--bg);font-size:.72rem;font-weight:600;}
.mm-card.matched .mm-card-back{background:rgba(34,197,94,.12);border-color:#22c55e;}
.bp-area{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start;}
.bp-source,.bp-drop{flex:1;min-width:120px;min-height:80px;border:2px dashed var(--border);border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s;}
.bp-drag-over{border-color:var(--primary);background:rgba(108,99,255,.05);}
.bp-block{background:var(--bg);border:1.5px solid var(--border);border-radius:7px;padding:7px 10px;font-family:var(--font-code);font-size:.78rem;cursor:grab;user-select:none;transition:box-shadow .15s;}
.bp-block:hover{box-shadow:0 2px 10px rgba(108,99,255,.2);}
.dc-line{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;border:1.5px solid transparent;font-family:var(--font-code);font-size:.78rem;transition:background .12s;}
.dc-line:hover{background:rgba(108,99,255,.07);border-color:rgba(108,99,255,.3);}
.dc-line-num{min-width:20px;color:var(--text-muted);font-size:.72rem;text-align:right;user-select:none;}
.dc-line-correct{background:rgba(34,197,94,.1);border-color:#22c55e;}
.dc-line-wrong{background:rgba(239,68,68,.1);border-color:#ef4444;}

/* Learn page */
.learn-hero{background:linear-gradient(135deg,#0f0c29,#302b63,#24243e);padding:72px 0 80px;}
.learn-hero-inner{display:grid;grid-template-columns:1fr;gap:40px;position:relative;z-index:1;}
.learn-hero-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(108,99,255,.2);border:1px solid rgba(108,99,255,.4);color:#a78bfa;padding:6px 14px;border-radius:20px;font-size:.85rem;font-weight:700;margin-bottom:20px;}
.learn-hero-text h1{font-size:2.8rem;font-weight:900;color:#fff;margin:0 0 16px;line-height:1.1;}
.learn-hero h1{color:#fff;}
.learn-hero > .learn-hero-inner > p,.learn-hero-inner > p{color:#cdc9e8;}
.text-gradient{background:linear-gradient(135deg,#a78bfa,#60a5fa,#34d399);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.learn-hero-text p{color:#94a3b8;font-size:1.05rem;margin:0 0 24px;line-height:1.7;}
.learn-hero-stats{display:flex;gap:28px;flex-wrap:wrap;}
.hero-stat{text-align:center;}
.hero-stat-num{display:block;font-size:1.8rem;font-weight:900;color:#fff;line-height:1;}
.hero-stat-label{font-size:.78rem;color:#a9a4d4;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-top:4px;display:block;}
.learn-progress-bar-section{margin:32px auto;}
.progress-overview{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;padding:24px 28px;}
.progress-overview-inner{display:grid;grid-template-columns:1fr 1fr auto;gap:32px;align-items:center;}
.progress-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:6px;}
.progress-xp-row{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;}
.progress-xp-num{font-size:1.8rem;font-weight:900;color:var(--primary);line-height:1;}
.progress-xp-level{font-size:.875rem;color:var(--text-muted);font-weight:600;}
.progress-bar-track{height:8px;background:var(--border);border-radius:4px;overflow:hidden;}
.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:4px;transition:width 1s cubic-bezier(.4,0,.2,1);}
.progress-lang-bars{display:flex;flex-direction:column;gap:8px;}
.lang-progress-item{}
.lang-progress-header{display:flex;justify-content:space-between;font-size:.82rem;font-weight:600;margin-bottom:3px;}
.lang-progress-track{height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.lang-progress-fill{height:100%;border-radius:3px;transition:width 1s;}
.progress-streak-block{text-align:center;}
.streak-num{font-size:2rem;font-weight:900;color:#f59e0b;line-height:1;}
.streak-fire{font-size:2rem;margin-bottom:4px;}
.streak-label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;}
.learn-filters-bar{display:flex;align-items:center;gap:12px;padding:16px 20px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;margin:20px auto;flex-wrap:wrap;}
.learn-search-wrap{position:relative;display:flex;align-items:center;}
.search-icon{position:absolute;left:11px;font-size:.9rem;pointer-events:none;}
.lesson-search-input{padding:8px 32px 8px 34px;border:1.5px solid var(--border);border-radius:10px;font-size:.875rem;background:var(--bg);color:var(--text);outline:none;width:220px;transition:border-color .2s;}
.lesson-search-input:focus{border-color:var(--primary);}
.search-clear{position:absolute;right:8px;background:none;border:none;cursor:pointer;color:var(--text-muted);}
.learn-filter-pills{display:flex;align-items:center;gap:6px;flex:1;flex-wrap:wrap;}
.filter-group{display:flex;gap:4px;flex-wrap:wrap;}
.filter-sep{color:var(--border);font-size:1.2rem;padding:0 4px;}
.pill{padding:5px 12px;border:1.5px solid var(--border);border-radius:20px;background:transparent;color:var(--text-muted);font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .15s;}
.pill:hover{border-color:var(--primary);color:var(--primary);}
.pill.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.learn-view-toggle{display:flex;gap:4px;margin-left:auto;}
.view-btn{width:32px;height:32px;border:1.5px solid var(--border);border-radius:8px;background:transparent;cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all .15s;}
.view-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.learn-tracks{padding-bottom:60px;}
.lang-track{margin-bottom:52px;}
.track-header{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:2px solid var(--border);margin-bottom:24px;gap:16px;flex-wrap:wrap;}
.track-header-left{display:flex;align-items:center;gap:14px;}
.track-icon{width:52px;height:52px;border-radius:14px;font-size:1.7rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.track-title{font-size:1.5rem;font-weight:800;margin:0 0 2px;}
.track-desc{color:var(--text-muted);margin:0;font-size:.875rem;}
.track-header-right{display:flex;align-items:center;gap:20px;}
.track-lesson-count{font-size:.875rem;color:var(--text-muted);font-weight:600;}
.track-completion{display:flex;align-items:center;gap:8px;}
.track-comp-bar{width:90px;height:7px;background:var(--border);border-radius:4px;overflow:hidden;}
.track-comp-fill{height:100%;border-radius:4px;transition:width 1s;}
.track-comp-label{font-size:.82rem;font-weight:700;color:var(--text-muted);}
.lessons-roadmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;align-items:start;}
.lesson-card-v2{position:relative;height:100%;}
.lesson-card-link{display:flex;flex-direction:column;height:100%;min-height:190px;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:20px;text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s;position:relative;overflow:hidden;}
.lesson-card-link:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);border-color:var(--primary);}
.lesson-step-badge{position:absolute;top:-10px;right:14px;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.82rem;color:#fff;box-shadow:0 4px 12px rgba(0,0,0,.2);z-index:1;}
.lesson-step-badge.done{background:#22c55e!important;}
.step-check.hidden,.step-num.hidden{display:none;}
.lesson-card-body-v2{flex:1;display:flex;flex-direction:column;padding-top:6px;}
.lesson-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;flex-wrap:wrap;gap:6px;}
.lesson-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.lesson-lang-pill{padding:2px 8px;border-radius:20px;font-size:.75rem;font-weight:700;}
.lesson-diff-pill{font-size:.9rem;}
.lesson-time{font-size:.75rem;color:var(--text-muted);}
.xp-pill{background:rgba(108,99,255,.1);color:var(--primary);padding:2px 9px;border-radius:20px;font-size:.75rem;font-weight:800;}
.lesson-card-title-v2{font-size:1rem;font-weight:700;margin:0 0 5px;line-height:1.3;}
.lesson-card-excerpt{font-size:.82rem;color:var(--text-muted);margin:0 0 12px;line-height:1.5;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.lesson-card-footer-v2{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:10px;border-top:1px solid var(--border);}
.lesson-start-btn{padding:5px 12px;border-radius:20px;color:#fff;font-size:.78rem;font-weight:700;white-space:nowrap;}
.lesson-done-overlay{position:absolute;top:8px;left:8px;background:#22c55e;color:#fff;padding:3px 9px;border-radius:20px;font-size:.75rem;font-weight:700;pointer-events:none;z-index:2;}
.learn-no-results{text-align:center;padding:80px 20px;}
.no-results-icon{font-size:3.5rem;margin-bottom:12px;}
.learn-no-results h3{font-size:1.3rem;font-weight:700;margin:0 0 6px;}

/* Manage page */
.page-manage{padding:0;}
.manage-layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 70px);align-items:start;}
.manage-sidebar{background:var(--surface);border-right:1.5px solid var(--border);padding:24px 16px;display:flex;flex-direction:column;gap:6px;min-height:calc(100vh - 70px);position:sticky;top:70px;}
.manage-sidebar-header{display:flex;align-items:center;gap:10px;padding-bottom:16px;margin-bottom:12px;border-bottom:1.5px solid var(--border);}
.manage-sidebar-header h2{font-size:.95rem;font-weight:800;margin:0;}
.manage-nav{display:flex;flex-direction:column;gap:3px;}
.manage-nav-btn{display:flex;align-items:center;gap:8px;padding:10px 12px;border:none;border-radius:10px;background:transparent;color:var(--text-muted);font-weight:600;font-size:.875rem;cursor:pointer;text-align:left;width:100%;transition:all .15s;position:relative;}
.manage-nav-btn:hover{background:rgba(108,99,255,.08);color:var(--primary);}
.manage-nav-btn.active{background:var(--primary);color:#fff;}
.manage-sidebar-footer{margin-top:auto;padding-top:16px;border-top:1.5px solid var(--border);display:flex;flex-direction:column;gap:6px;}
.manage-main{padding:28px 32px;overflow:auto;}
.manage-panel{display:none;}
.manage-panel.active{display:block;}
.panel-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:16px;margin-bottom:20px;border-bottom:2px solid var(--border);gap:12px;flex-wrap:wrap;}
.panel-header h2{font-size:1.4rem;font-weight:800;margin:0;}
.panel-header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.form-input-sm,.form-select-sm{padding:7px 12px;border:1.5px solid var(--border);border-radius:8px;font-size:.875rem;background:var(--bg);color:var(--text);outline:none;transition:border-color .2s;}
.form-input-sm:focus{border-color:var(--primary);}
.manage-form-wrap{background:var(--bg);border:1.5px solid var(--border);border-radius:16px;padding:24px;margin-top:24px;}
.manage-form-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.manage-form-header h3{font-size:1.1rem;font-weight:800;margin:0;}
.manage-form{display:flex;flex-direction:column;gap:16px;}
.form-actions{display:flex;gap:10px;flex-wrap:wrap;padding-top:8px;}
.manage-table-wrap{overflow-x:auto;border-radius:12px;border:1.5px solid var(--border);}
.manage-table{width:100%;border-collapse:collapse;font-size:.875rem;}
.manage-table th{text-align:left;padding:11px 14px;background:var(--bg);color:var(--text-muted);font-weight:700;font-size:.75rem;text-transform:uppercase;border-bottom:2px solid var(--border);}
.manage-table td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle;}
.manage-table tr:last-child td{border-bottom:none;}
.manage-table tr:hover td{background:rgba(108,99,255,.03);}
.status-pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.73rem;font-weight:700;}
.status-publish,.status-active{background:#dcfce7;color:#16a34a;}
.status-draft{background:#fef9c3;color:#ca8a04;}
.role-badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.75rem;font-weight:700;}
.role-admin{background:rgba(239,68,68,.1);color:#dc2626;}
.role-coordinator{background:rgba(108,99,255,.1);color:var(--primary);}
.role-user{background:var(--border);color:var(--text-muted);}
.user-cell{display:flex;align-items:center;gap:10px;}
.user-avatar-sm{width:32px;height:32px;border-radius:50%;object-fit:cover;}
.lang-pill{display:inline-block;padding:2px 8px;border-radius:6px;font-size:.73rem;font-weight:700;text-transform:uppercase;}
.lang-html{background:#fff7ed;color:#f97316;}.lang-css{background:#eff6ff;color:#3b82f6;}.lang-javascript{background:#fefce8;color:#ca8a04;}.lang-python{background:#f0fdf4;color:#22c55e;}
.analytics-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px;margin-bottom:28px;}
.kpi-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:18px 12px;text-align:center;transition:transform .18s,box-shadow .18s;}
.kpi-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.kpi-num{font-size:1.8rem;font-weight:900;color:var(--primary);line-height:1;margin-bottom:5px;}
.kpi-label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px;}
.kpi-green .kpi-num{color:#22c55e;}.kpi-purple .kpi-num{color:#8b5cf6;}.kpi-gold .kpi-num{color:#f59e0b;}.kpi-blue .kpi-num{color:#3b82f6;}
.analytics-section{margin-bottom:28px;}
.analytics-section h3{font-size:1.05rem;font-weight:800;margin:0 0 14px;}
.chart-wrap{background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:16px;}
.bar-chart{display:flex;align-items:flex-end;gap:4px;height:120px;padding-bottom:20px;overflow-x:auto;}
.bar-col{display:flex;flex-direction:column;align-items:center;gap:3px;flex:1;min-width:20px;}
.bar-bar{background:linear-gradient(180deg,var(--primary),rgba(108,99,255,.35));border-radius:3px 3px 0 0;width:100%;min-height:4px;}
.bar-label{font-size:.6rem;color:var(--text-muted);white-space:nowrap;}
.activity-feed{display:flex;flex-direction:column;}
.activity-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);}
.activity-item:last-child{border-bottom:none;}
.activity-body{flex:1;font-size:.875rem;}
.activity-time{font-size:.75rem;color:var(--text-muted);white-space:nowrap;}
.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);}
.empty-icon{font-size:3.5rem;margin-bottom:12px;}
.empty-state h3{font-size:1.1rem;font-weight:700;margin:0 0 6px;color:var(--text);}
.games-manage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}
.game-manage-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;overflow:hidden;}
.gmc-header{padding:16px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.gmc-info h3{font-size:1rem;font-weight:700;margin:0 0 3px;}
.gmc-info p{font-size:.82rem;color:var(--text-muted);margin:0;}
.gmc-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border);background:var(--bg);}
.gmc-actions{display:flex;gap:6px;}
.badges-manage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;}
.badge-manage-card{display:flex;align-items:center;gap:12px;padding:14px;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;}
.bmc-icon{font-size:2.2rem;flex-shrink:0;}
.bmc-info{flex:1;min-width:0;}
.bmc-info strong{font-size:.9rem;font-weight:700;display:block;}
.bmc-info p{font-size:.75rem;color:var(--text-muted);margin:2px 0 0;}
.manage-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;}
.manage-modal.hidden{display:none!important;}
.manage-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);cursor:pointer;}
.manage-modal-box{position:relative;z-index:1;background:var(--surface);border-radius:18px;width:90%;max-width:520px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.3);}
.manage-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1.5px solid var(--border);}
.manage-modal-header h3{margin:0;font-size:1.05rem;font-weight:800;}
.manage-modal-body{padding:22px;display:flex;flex-direction:column;gap:14px;}
.manage-modal-footer{display:flex;gap:10px;padding:14px 22px;border-top:1.5px solid var(--border);justify-content:flex-end;}
.permissions-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px;background:var(--bg);border-radius:10px;border:1.5px solid var(--border);}
.perm-check{display:flex;align-items:center;gap:8px;font-size:.875rem;cursor:pointer;padding:3px 0;}
.perm-check input{accent-color:var(--primary);width:15px;height:15px;flex-shrink:0;}
.users-stats-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:.875rem;color:var(--text-muted);flex-wrap:wrap;gap:8px;}
.pagination{display:flex;gap:4px;}
.page-btn{width:30px;height:30px;border:1.5px solid var(--border);border-radius:8px;background:transparent;cursor:pointer;font-size:.82rem;font-weight:600;transition:all .15s;}
.page-btn:hover,.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.error-msg{background:rgba(239,68,68,.07);border:1.5px solid rgba(239,68,68,.25);border-radius:12px;padding:16px 20px;color:#dc2626;font-weight:600;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}

/* Toast */
.toast-msg{position:fixed;bottom:20px;right:20px;z-index:9999;padding:12px 20px;border-radius:10px;font-weight:600;font-size:.875rem;animation:slideUp .3s ease;pointer-events:none;}
.toast-success{background:#22c55e;color:#fff;}
.toast-error{background:#ef4444;color:#fff;}
.toast-info{background:var(--primary);color:#fff;}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* Responsive */
@media(max-width:960px){.games-grid{grid-template-columns:1fr 1fr;}.dashboard-quicklinks{grid-template-columns:repeat(2,1fr);}}
@media(max-width:768px){
  .site-nav{display:none;}.site-nav.open{display:flex;flex-direction:column;position:absolute;top:70px;left:0;right:0;background:var(--surface);border-bottom:1.5px solid var(--border);padding:12px 24px;gap:4px;}
  .mobile-menu-btn{display:flex;}
  .header-inner{flex-wrap:wrap;}
  .learn-hero-text h1{font-size:1.8rem;}
  .progress-overview-inner{grid-template-columns:1fr;}
  .manage-layout{grid-template-columns:1fr;}
  .manage-sidebar{min-height:auto;position:static;border-right:none;border-bottom:1.5px solid var(--border);flex-direction:row;flex-wrap:wrap;padding:12px 16px;gap:4px;}
  .manage-nav{flex-direction:row;flex-wrap:wrap;}
  .manage-nav-btn{width:auto;padding:6px 10px;font-size:.78rem;}
  .manage-sidebar-footer{flex-direction:row;border:none;margin-top:0;padding:0;}
  .footer-inner{grid-template-columns:1fr;}
  .dashboard-grid{grid-template-columns:1fr;}
  .games-grid{grid-template-columns:1fr;}
  .lessons-roadmap{grid-template-columns:1fr;}
  .mm-grid{grid-template-columns:repeat(3,1fr);}
  .permissions-grid{grid-template-columns:1fr;}
}
/* === Profile Page (Badges & Achievements) === */
.profile-layout{display:flex;flex-direction:column;gap:20px;max-width:900px;margin:0 auto;padding:24px;}
.profile-header-card{display:flex;align-items:center;gap:20px;flex-wrap:wrap;}
.profile-avatar{width:80px;height:80px;border-radius:50%;border:3px solid var(--primary);object-fit:cover;flex-shrink:0;}
.profile-header-info h2{font-size:1.3rem;font-weight:900;margin:0 0 8px;}
.profile-stats-row{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;font-size:.875rem;font-weight:700;color:var(--text-muted);}
.profile-stats-row span{display:inline-flex;align-items:center;gap:4px;}
.profile-badges-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;}
.profile-badge-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:18px 14px;border:1.5px solid var(--border);border-radius:14px;background:var(--bg);transition:transform .18s,box-shadow .18s;}
.profile-badge-card.earned{border-color:var(--primary);background:linear-gradient(135deg,rgba(108,99,255,.08),rgba(167,139,250,.04));}
.profile-badge-card.earned:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.profile-badge-card.locked{opacity:.6;}
.profile-badge-icon{font-size:2.4rem;line-height:1;}
.profile-badge-card.locked .profile-badge-icon{filter:grayscale(1);opacity:.5;}
.profile-badge-name{font-weight:800;font-size:.875rem;}
.profile-badge-desc{font-size:.72rem;color:var(--text-muted);min-height:28px;}
.profile-badge-earned-tag{font-size:.75rem;font-weight:800;color:#22c55e;margin-top:2px;}
.profile-badge-progress-track{width:100%;height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-top:4px;}
.profile-badge-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:3px;transition:width 1s cubic-bezier(.4,0,.2,1);}
.profile-badge-progress-label{font-size:.7rem;color:var(--text-muted);font-weight:700;margin-top:2px;}
@media(max-width:768px){
  .profile-header-card{flex-direction:column;text-align:center;}
  .profile-stats-row{justify-content:center;}
  .profile-badges-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));}
}
/* === Single Lesson Page === */
.page-lesson{padding-bottom:60px;}
.lesson-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:20px 0;border-bottom:1.5px solid var(--border);margin-bottom:24px;}
.lesson-back-link{font-weight:700;font-size:.9rem;color:var(--text-muted);}
.lesson-back-link:hover{color:var(--primary);}
.lesson-topbar-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.lesson-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;}
.lesson-title{font-size:1.8rem;font-weight:900;margin-bottom:16px;}
.lesson-instructions-box,.lesson-expected-box,.lesson-hint-box,.lesson-complete-box{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:16px;}
.lesson-instructions-box h3,.lesson-expected-box h3{font-size:.95rem;font-weight:800;margin:0 0 8px;}
.lesson-instructions-box p{margin:0;line-height:1.7;color:var(--text);}
.lesson-expected-box pre{background:var(--bg);border-radius:8px;padding:12px;font-family:var(--font-code);font-size:.85rem;overflow-x:auto;margin:0;}
.lesson-hint-text{margin:10px 0 0;padding:10px;background:var(--bg);border-radius:8px;font-size:.875rem;line-height:1.6;}
.lesson-complete-msg{margin:10px 0 0;font-weight:700;font-size:.9rem;}
.lesson-nav-row{display:flex;justify-content:space-between;gap:10px;margin-top:16px;}
.lesson-editor-col{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;min-height:500px;}
.lesson-editor-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1.5px solid var(--border);font-weight:700;font-size:.9rem;background:var(--bg);}
.lesson-editor-col .CodeMirror{flex:1;min-height:380px;font-size:.9rem;}
.lesson-editor-footer{padding:10px 16px;border-top:1.5px solid var(--border);font-size:.8rem;color:var(--text-muted);background:var(--bg);}
@media(max-width:900px){
  .lesson-layout{grid-template-columns:1fr;}
  .lesson-editor-col{min-height:400px;}
  .lesson-editor-col .CodeMirror{min-height:300px;}
}
/* === Premium / Monetization UI === */
.premium-badge{display:inline-flex;align-items:center;gap:3px;background:linear-gradient(135deg,#f59e0b,#fbbf24);color:#1a1a2e;font-size:.7rem;font-weight:800;padding:2px 9px;border-radius:20px;vertical-align:middle;margin-left:6px;}
.game-locked{position:relative;}
.premium-lock-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:40px 20px;min-height:200px;background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(108,99,255,.06));border-radius:12px;}
.premium-lock-icon{font-size:2.6rem;}
.premium-lock-overlay p{margin:0;color:var(--text-muted);font-size:.9rem;}
.lesson-locked-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:60px 20px;background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(108,99,255,.06));border-radius:14px;min-height:300px;}
.lesson-locked-overlay .premium-lock-icon{font-size:3.2rem;}
.lesson-locked-overlay h3{font-size:1.15rem;font-weight:800;margin:0;}
.lesson-locked-overlay p{margin:0;color:var(--text-muted);font-size:.9rem;max-width:320px;}
/* === Manage form tabs === */
.form-tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--border);margin-bottom:18px;flex-wrap:wrap;}
.form-tab{background:none;border:none;padding:10px 16px;font-size:.85rem;font-weight:700;color:var(--text-muted);cursor:pointer;border-bottom:2.5px solid transparent;border-radius:8px 8px 0 0;transition:color .15s,border-color .15s;}
.form-tab:hover{color:var(--text);background:var(--bg);}
.form-tab.active{color:var(--primary);border-bottom-color:var(--primary);}
.form-tab-panel{display:none;}
.form-tab-panel.active{display:block;}

/* === Content blocks repeater === */
.content-block{background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px;position:relative;}
.content-block-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.content-block-type{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);}
.content-block-actions{display:flex;gap:6px;}
.content-block-actions button{background:none;border:1.5px solid var(--border);border-radius:6px;width:28px;height:28px;cursor:pointer;font-size:.85rem;line-height:1;color:var(--text-muted);}
.content-block-actions button:hover{color:var(--text);background:var(--surface);}
.content-block textarea,.content-block input{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.9rem;background:var(--surface);color:var(--text);font-family:var(--font-main);}
.content-blocks-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;}

/* === Lesson content blocks (frontend rendering) === */
.lesson-block{margin-bottom:18px;}
.lesson-block-text p{line-height:1.7;margin:0;}
.lesson-block-image img{max-width:100%;border-radius:10px;display:block;}
.lesson-block-video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:10px;}
.lesson-block-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;}
.lesson-block-code{background:var(--bg);border:1.5px solid var(--border);border-radius:10px;overflow:hidden;}
.lesson-block-code-header{padding:8px 14px;font-size:.8rem;font-weight:700;border-bottom:1.5px solid var(--border);color:var(--text-muted);}
.lesson-block-code pre{margin:0;padding:14px;font-family:var(--font-code);font-size:.85rem;overflow-x:auto;}

/* === Prerequisites lock banner === */
.lesson-prereq-banner{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,rgba(245,158,11,.08),rgba(108,99,255,.08));border:1.5px solid var(--border);border-radius:12px;padding:16px 20px;margin-bottom:16px;}
.lesson-prereq-banner .icon{font-size:1.6rem;}
.lesson-prereq-banner p{margin:0;font-size:.875rem;}
.lesson-prereq-banner a{font-weight:700;}
/* === Interactive Run + Output === */
.lesson-editor-header-actions{display:flex;align-items:center;gap:8px;}
.lesson-output-wrap{border-top:1.5px solid var(--border);background:var(--bg);}
.lesson-output-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:var(--surface);border-bottom:1.5px solid var(--border);font-size:.8rem;font-weight:700;color:var(--text-muted);}
.lesson-output-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.95rem;padding:2px 6px;border-radius:6px;}
.lesson-output-close:hover{background:var(--bg);color:var(--text);}
.lesson-output{margin:0;padding:12px 14px;font-family:var(--font-code);font-size:.85rem;line-height:1.5;color:var(--text);max-height:240px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;}
.lesson-output-info{color:var(--text-muted);}
.lesson-output-success{color:#22c55e;}
.lesson-output-error{color:#ef4444;}
.lesson-preview{width:100%;height:240px;border:0;background:#fff;display:block;}
.lesson-grade{margin:0;padding:10px 14px;font-size:.875rem;line-height:1.4;border-top:1.5px solid var(--border);}
.lesson-grade pre{margin:6px 0 0;padding:8px 10px;background:var(--bg);border-radius:6px;font-family:var(--font-code);font-size:.8rem;white-space:pre-wrap;}
.lesson-grade-pass{background:rgba(34,197,94,.08);color:#16a34a;}
.lesson-grade-fail{background:rgba(239,68,68,.06);color:#dc2626;}
.lesson-complete-ready{animation:lesson-pulse 1.4s ease-in-out infinite;box-shadow:0 0 0 0 rgba(34,197,94,.4);}
@keyframes lesson-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.45);}70%{box-shadow:0 0 0 10px rgba(34,197,94,0);}100%{box-shadow:0 0 0 0 rgba(34,197,94,0);}}
/* === Parent Dashboard === */
.page-parent{padding:32px 0 60px;}
.parent-consent-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:rgba(245,158,11,.1);border:1.5px solid #f59e0b;border-radius:12px;padding:14px 18px;margin-bottom:24px;font-size:.9rem;color:var(--text);}
.parent-header h1{font-size:1.8rem;font-weight:900;margin:0 0 6px;}
.parent-header p{color:var(--text-muted);margin:0 0 24px;}
.parent-children-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-bottom:28px;}
.parent-child-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow-sm);}
.parent-child-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.parent-child-avatar{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.2rem;}
.parent-child-name{font-weight:800;}
.parent-child-username{font-size:.8rem;color:var(--text-muted);}
.parent-child-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;text-align:center;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:12px;}
.parent-child-stats .pc-num{display:block;font-weight:800;font-size:1.1rem;color:var(--primary);}
.parent-child-stats .pc-lbl{font-size:.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;}
.parent-child-controls label{display:block;font-size:.78rem;color:var(--text-muted);margin-bottom:5px;}
.parent-limit-row{display:flex;gap:8px;margin-bottom:10px;}
.parent-limit-input{flex:1;padding:7px 10px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);}
.parent-empty{grid-column:1/-1;text-align:center;padding:40px;color:var(--text-muted);background:var(--surface);border:1.5px dashed var(--border);border-radius:14px;}
.parent-addchild{max-width:640px;}
.parent-addchild h2{font-size:1.2rem;font-weight:800;margin:0 0 6px;}
.btn-ghost{background:none;border:1.5px solid var(--border);color:var(--text-muted);}
.btn-ghost:hover{color:var(--text);background:var(--bg);}
/* === Account type toggle (register) === */
.acct-type-toggle{display:flex;gap:10px;margin-bottom:10px;}
.acct-type-opt{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;border:1.5px solid var(--border);border-radius:10px;cursor:pointer;font-size:.85rem;font-weight:700;color:var(--text);background:var(--bg);transition:border-color .15s,background .15s;}
.acct-type-opt:has(input:checked){border-color:var(--primary);background:rgba(108,99,255,.08);}
.acct-type-opt input{accent-color:var(--primary);}
.acct-type-hint{font-size:.8rem;color:var(--text-muted);margin:0 0 14px;}
/* === Pricing page === */
.page-pricing{padding:40px 0 70px;}
.pricing-hero{text-align:center;max-width:640px;margin:0 auto 36px;}
.pricing-hero h1{font-size:2.2rem;font-weight:900;margin:0 0 10px;}
.pricing-hero p{color:var(--text-muted);font-size:1.05rem;margin:0 0 22px;}
.pricing-toggle{display:inline-flex;background:var(--bg);border:1.5px solid var(--border);border-radius:30px;padding:4px;gap:4px;}
.pricing-toggle-btn{border:none;background:none;padding:8px 20px;border-radius:24px;font-weight:700;font-size:.85rem;cursor:pointer;color:var(--text-muted);display:flex;align-items:center;gap:6px;}
.pricing-toggle-btn.active{background:var(--primary);color:#fff;}
.pricing-save{font-size:.7rem;background:#22c55e;color:#fff;padding:1px 7px;border-radius:10px;}
.pricing-toggle-btn.active .pricing-save{background:rgba(255,255,255,.25);}
.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;max-width:920px;margin:0 auto 30px;align-items:start;}
.pricing-card{position:relative;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:28px 24px;box-shadow:var(--shadow-sm);}
.pricing-card-featured{border-color:var(--primary);border-width:2px;box-shadow:var(--shadow);transform:translateY(-6px);}
.pricing-badge-popular{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-size:.72rem;font-weight:800;padding:4px 14px;border-radius:20px;text-transform:uppercase;letter-spacing:.04em;}
.pricing-tier-name{font-size:1.4rem;font-weight:900;margin:0 0 4px;}
.pricing-tier-tagline{color:var(--text-muted);font-size:.85rem;margin:0 0 18px;min-height:38px;}
.pricing-price{margin-bottom:18px;display:flex;align-items:baseline;gap:2px;flex-wrap:wrap;}
.pricing-currency{font-size:1.3rem;font-weight:800;color:var(--text);}
.pricing-amount{font-size:2.6rem;font-weight:900;color:var(--text);line-height:1;}
.pricing-period{color:var(--text-muted);font-weight:700;}
.pricing-annual-note{width:100%;font-size:.78rem;color:#22c55e;font-weight:700;margin-top:4px;}
.pricing-features{list-style:none;padding:0;margin:0 0 22px;}
.pricing-features li{padding:7px 0 7px 26px;position:relative;font-size:.88rem;border-bottom:1px solid var(--border);}
.pricing-features li:before{content:'✓';position:absolute;left:0;color:#22c55e;font-weight:900;}
.pricing-trial-cta{text-align:center;margin:0 auto 30px;padding:16px;background:rgba(108,99,255,.06);border-radius:12px;max-width:520px;font-weight:600;}
.pricing-coupon{max-width:520px;margin:0 auto 40px;}
.pricing-coupon summary{cursor:pointer;font-weight:700;color:var(--primary);font-size:.9rem;}
.pricing-coupon-box{display:flex;gap:8px;margin-top:12px;}
.pricing-coupon-box input{flex:1;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);}
.pricing-coupon-msg{margin-top:10px;font-size:.85rem;font-weight:600;}
.pricing-coupon-ok{color:#16a34a;}
.pricing-coupon-err{color:#dc2626;}
.pricing-faq{max-width:720px;margin:0 auto;}
.pricing-faq h2{font-size:1.5rem;font-weight:900;text-align:center;margin:0 0 22px;}
.pricing-faq-item{padding:16px 0;border-bottom:1px solid var(--border);}
.pricing-faq-item h3{font-size:1rem;font-weight:800;margin:0 0 6px;}
.pricing-faq-item p{color:var(--text-muted);font-size:.9rem;margin:0;line-height:1.6;}
/* === Legal / content pages === */
.container-narrow{max-width:760px;}
.page-legal{padding:40px 0 70px;}
.legal-content h1{font-size:2rem;font-weight:900;margin:0 0 20px;}
.legal-content h2{font-size:1.25rem;font-weight:800;margin:28px 0 10px;}
.legal-content p,.legal-content li{line-height:1.7;color:var(--text);}
.legal-content ul{padding-left:22px;margin:0 0 14px;}
.legal-content li{margin-bottom:6px;}
.legal-content .lead{font-size:1.15rem;color:var(--text-muted);margin-bottom:24px;}
.legal-notice{background:rgba(245,158,11,.1);border:1.5px solid #f59e0b;border-radius:12px;padding:14px 18px;margin-bottom:24px;font-size:.88rem;line-height:1.6;}

/* === Footer trust badges + company col === */
.footer-trust{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;padding:18px 0;border-top:1px solid rgba(255,255,255,.1);margin-top:10px;}
.trust-badge{font-size:.82rem;font-weight:700;opacity:.85;display:inline-flex;align-items:center;gap:4px;}

/* === Testimonials === */
.testimonials-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;}
.testimonial-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow-sm);margin:0;}
.testimonial-card blockquote{margin:0 0 14px;font-size:1rem;line-height:1.6;color:var(--text);}
.testimonial-card figcaption{display:flex;flex-direction:column;}
.testimonial-card figcaption strong{font-weight:800;}
.testimonial-card figcaption span{font-size:.82rem;color:var(--text-muted);}
/* === Courses listing === */
.page-courses,.page-single-course,.page-placement,.page-certificate{padding:40px 0 70px;}
.courses-hero{text-align:center;max-width:640px;margin:0 auto 36px;}
.courses-hero h1{font-size:2.2rem;font-weight:900;margin:0 0 8px;}
.courses-hero p{color:var(--text-muted);font-size:1.05rem;margin:0 0 16px;}
.courses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;}
.course-card{display:flex;gap:14px;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:18px;text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform .15s,box-shadow .15s;}
.course-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);}
.course-card-icon{font-size:2.4rem;flex-shrink:0;}
.course-card-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px;}
.course-level{font-size:.7rem;font-weight:800;padding:2px 9px;border-radius:12px;text-transform:uppercase;}
.course-level-beginner{background:rgba(34,197,94,.14);color:#16a34a;}
.course-level-intermediate{background:rgba(245,158,11,.14);color:#ca8a04;}
.course-level-advanced{background:rgba(239,68,68,.14);color:#dc2626;}
.course-age{font-size:.7rem;font-weight:700;padding:2px 9px;border-radius:12px;background:var(--bg);color:var(--text-muted);}
.course-card-title{font-size:1.1rem;font-weight:800;margin:0 0 6px;}
.course-card-desc{font-size:.85rem;color:var(--text-muted);margin:0 0 12px;line-height:1.5;}
.course-card-foot{display:flex;justify-content:space-between;font-size:.8rem;color:var(--text-muted);font-weight:700;}
.course-progress-mini{color:var(--primary);}
.course-progress-bar{height:6px;background:var(--border);border-radius:6px;overflow:hidden;margin-top:8px;}
.course-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:6px;}
.courses-empty,.certificate-empty{text-align:center;padding:50px;color:var(--text-muted);}

/* === Single course + skill tree === */
.course-back{display:inline-block;margin-bottom:18px;color:var(--text-muted);text-decoration:none;font-weight:700;font-size:.85rem;}
.single-course-head h1{font-size:2rem;font-weight:900;margin:0 0 8px;}
.single-course-desc{color:var(--text-muted);margin:0 0 14px;}
.single-course-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;align-items:center;}
.single-course-progress{display:flex;align-items:center;gap:12px;margin-bottom:8px;}
.single-course-progress .course-progress-bar{flex:1;}
.single-course-progress span{font-size:.8rem;font-weight:700;color:var(--text-muted);white-space:nowrap;}
.course-cert-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:rgba(245,158,11,.1);border:1.5px solid #f59e0b;border-radius:12px;padding:14px 18px;margin:18px 0;font-size:.95rem;}
.skill-tree{margin-top:26px;position:relative;}
.skill-node{display:flex;gap:16px;padding-bottom:8px;position:relative;}
.skill-node:not(:last-child):before{content:'';position:absolute;left:19px;top:40px;bottom:-8px;width:2px;background:var(--border);}
.skill-node-dot{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1rem;z-index:1;border:2px solid var(--border);background:var(--surface);color:var(--text-muted);}
.skill-node-done .skill-node-dot{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border-color:#16a34a;}
.skill-node-available .skill-node-dot{border-color:var(--primary);color:var(--primary);}
.skill-node-body{flex:1;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;}
.skill-node-locked .skill-node-body{opacity:.6;}
.skill-node-title{font-weight:700;font-size:.92rem;}
.skill-node-link{font-weight:800;font-size:.85rem;color:var(--primary);text-decoration:none;white-space:nowrap;}
.skill-node-locked{font-size:.78rem;color:var(--text-muted);white-space:nowrap;}

/* === Placement quiz === */
.placement-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:32px;text-align:center;box-shadow:var(--shadow-sm);}
.placement-card h1{font-size:1.7rem;font-weight:900;margin:0 0 8px;}
.placement-card > p{color:var(--text-muted);margin:0 0 24px;}
.placement-q h3{font-size:1.15rem;font-weight:800;margin:0 0 18px;}
.placement-opts{display:flex;flex-direction:column;gap:10px;max-width:360px;margin:0 auto;}
.placement-opt{padding:14px 20px;border:1.5px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);font-weight:700;font-size:.95rem;cursor:pointer;transition:border-color .15s,background .15s;}
.placement-opt:hover{border-color:var(--primary);background:rgba(108,99,255,.06);}
.placement-recommend-icon{font-size:3rem;margin-bottom:8px;}
.placement-recommend h2{font-size:1rem;color:var(--text-muted);font-weight:700;margin:0 0 4px;}
.placement-recommend h3{font-size:1.5rem;font-weight:900;margin:0 0 20px;}
.placement-recommend .btn{margin:6px;}

/* === Certificate === */
.certificate{background:linear-gradient(135deg,#fffbe9,#fff);border:3px solid #f59e0b;border-radius:18px;padding:8px;max-width:640px;margin:0 auto 24px;}
.certificate-inner{border:1.5px solid #f59e0b;border-radius:12px;padding:40px 30px;text-align:center;}
.certificate-seal{font-size:3.4rem;margin-bottom:10px;}
.certificate-kicker{font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;color:#ca8a04;font-weight:800;margin:0 0 18px;}
.certificate-presented{color:#6b7280;margin:6px 0;font-size:.95rem;}
.certificate-name{font-size:2rem;font-weight:900;margin:6px 0;color:#1a1a2e;}
.certificate-course{font-size:1.3rem;font-weight:800;margin:6px 0 18px;color:var(--primary);}
.certificate-date{color:#6b7280;font-size:.9rem;margin:0 0 18px;}
.certificate-brand{font-weight:800;color:#1a1a2e;}
.certificate-actions{text-align:center;display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}
@media print{.site-header,.site-footer,.certificate-actions,.course-back{display:none !important;}.certificate{border-color:#f59e0b;}}
/* === Lesson quiz (E30) === */
.lesson-quiz{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:20px;margin:20px 0;}
.lesson-quiz h3{font-size:1.1rem;font-weight:800;margin:0 0 16px;}
.quiz-question{padding:12px;border-radius:10px;margin-bottom:12px;border:1.5px solid transparent;}
.quiz-q-text{font-weight:700;margin:0 0 10px;}
.quiz-opts{display:flex;flex-direction:column;gap:7px;}
.quiz-opt{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid var(--border);border-radius:8px;cursor:pointer;font-size:.9rem;}
.quiz-opt:hover{border-color:var(--primary);}
.quiz-opt input{accent-color:var(--primary);}
.quiz-correct{background:rgba(34,197,94,.08);border-color:#22c55e;}
.quiz-wrong{background:rgba(239,68,68,.06);border-color:#ef4444;}
.lesson-quiz-result{margin-top:12px;padding:12px 14px;border-radius:10px;font-weight:700;font-size:.9rem;}
.quiz-result-pass{background:rgba(34,197,94,.1);color:#16a34a;}
.quiz-result-partial{background:rgba(245,158,11,.1);color:#ca8a04;}

/* === Block coding (E32) === */
.page-blocks{padding:30px 0 60px;}
.blocks-hero{text-align:center;max-width:600px;margin:0 auto 24px;}
.blocks-hero h1{font-size:1.9rem;font-weight:900;margin:0 0 8px;}
.blocks-hero p{color:var(--text-muted);margin:0;}
.blocks-workspace{display:grid;grid-template-columns:1fr;gap:16px;}
@media(min-width:900px){.blocks-workspace{grid-template-columns:1fr 360px;}}
#blockly-div{height:480px;border:1.5px solid var(--border);border-radius:14px;overflow:hidden;}
.blocks-side{display:flex;flex-direction:column;gap:12px;}
.blocks-actions{display:flex;gap:8px;flex-wrap:wrap;}
.blocks-output{background:#1a1929;color:#e8e6ff;border-radius:12px;padding:14px;font-family:var(--font-code);font-size:.85rem;min-height:120px;white-space:pre-wrap;overflow-y:auto;max-height:240px;}
.blocks-hint{font-size:.82rem;color:var(--text-muted);}
/* === Engagement: pet picker, streak freeze, league (Category F) === */
.pet-stage-label{font-size:.72rem;font-weight:800;color:var(--primary);text-transform:uppercase;letter-spacing:.04em;text-align:center;}
.pet-picker{display:flex;flex-direction:column;gap:6px;margin-top:10px;}
.pet-pick-opt{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);cursor:pointer;font-weight:700;font-size:.85rem;}
.pet-pick-opt:hover{border-color:var(--primary);background:rgba(108,99,255,.06);}
.streak-freeze-badge{text-align:center;font-size:.8rem;font-weight:700;color:#3b82f6;margin-top:8px;}
.league-list{display:flex;flex-direction:column;gap:6px;}
.league-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;font-size:.82rem;background:var(--bg);}
.league-rank{font-weight:800;width:20px;text-align:center;color:var(--text-muted);}
.league-avatar{width:26px;height:26px;border-radius:50%;}
.league-name{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.league-xp{font-weight:700;color:var(--primary);font-size:.78rem;}
.league-tier{font-size:.62rem;font-weight:800;padding:1px 6px;border-radius:10px;text-transform:uppercase;}
.league-tier-gold{background:rgba(245,200,66,.2);color:#b8860b;}
.league-tier-silver{background:rgba(148,163,184,.2);color:#64748b;}
.league-tier-bronze{background:rgba(180,120,80,.18);color:#9a6a43;}
.league-row.league-gold{border-left:3px solid #f5c842;}
/* === Project gallery (F37) === */
.page-gallery,.page-moderation{padding:40px 0 70px;}
.gallery-hero{text-align:center;max-width:600px;margin:0 auto 28px;}
.gallery-hero h1{font-size:2.1rem;font-weight:900;margin:0 0 8px;}
.gallery-hero p{color:var(--text-muted);}
.gallery-disabled,.gallery-empty{text-align:center;padding:50px;color:var(--text-muted);background:var(--surface);border:1.5px dashed var(--border);border-radius:14px;}
.gallery-submit-cta{text-align:center;margin-bottom:20px;}
.gallery-submit-form{max-width:560px;margin:0 auto 28px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:10px;}
.gallery-submit-form input,.gallery-submit-form textarea,.gallery-submit-form select{padding:10px 12px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:inherit;}
.gallery-submit-form .code-input{font-family:var(--font-code);font-size:.85rem;}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;}
.gallery-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow-sm);}
.gallery-card-lang{font-size:2rem;margin-bottom:8px;}
.gallery-card h3{font-size:1.05rem;font-weight:800;margin:0 0 6px;}
.gallery-card-desc{font-size:.85rem;color:var(--text-muted);margin:0 0 12px;line-height:1.5;}
.gallery-card-author{font-size:.78rem;font-weight:700;color:var(--primary);}

/* === Moderation === */
.mod-features{margin-bottom:24px;}
.mod-toggle{display:flex;align-items:center;gap:10px;padding:8px 0;font-weight:700;cursor:pointer;}
.mod-toggle input{accent-color:var(--primary);width:18px;height:18px;}
.mod-queue h3{margin:24px 0 12px;font-size:1.1rem;font-weight:800;}
.mod-item{display:flex;justify-content:space-between;gap:16px;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:10px;align-items:flex-start;}
.mod-item-body{flex:1;font-size:.9rem;}
.mod-item-body p{margin:6px 0;color:var(--text-muted);}
.mod-code{background:var(--bg);padding:8px;border-radius:6px;font-size:.78rem;max-height:120px;overflow:auto;}
.mod-actions{display:flex;gap:6px;flex-shrink:0;}
.mod-empty{color:var(--text-muted);font-style:italic;}

/* === Discussion (F38) === */
.lesson-discussion{margin:30px 0;padding:20px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;}
.lesson-discussion h3{font-size:1.1rem;font-weight:800;margin:0 0 14px;}
.discussion-compose{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;}
.discussion-compose textarea{padding:10px 12px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:inherit;resize:vertical;}
.discussion-compose button{align-self:flex-start;}
.discussion-item{padding:12px 0;border-bottom:1px solid var(--border);}
.discussion-author{font-weight:800;font-size:.85rem;color:var(--primary);margin-bottom:4px;}
.discussion-item p{margin:0;font-size:.9rem;line-height:1.5;}
.discussion-empty{color:var(--text-muted);font-style:italic;font-size:.88rem;}
/* === Accessibility (G41) === */
.skip-link{position:absolute;left:-9999px;top:0;z-index:10000;background:var(--primary);color:#fff;padding:10px 18px;border-radius:0 0 8px 0;font-weight:700;text-decoration:none;}
.skip-link:focus{left:0;}
/* Visible focus ring for keyboard users */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-radius:4px;}
/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}
}
/* Screen-reader-only utility */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* === Analytics dashboard (G42) === */
.page-analytics{padding:40px 0 70px;}
.analytics-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:24px;}
.analytics-header h1{font-size:1.8rem;font-weight:900;margin:0;}
.analytics-range{display:flex;gap:6px;}
.analytics-range button{padding:6px 14px;border:1.5px solid var(--border);border-radius:20px;background:var(--bg);color:var(--text-muted);font-weight:700;font-size:.82rem;cursor:pointer;}
.analytics-range button.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.analytics-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:28px;}
.analytics-card{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:20px;text-align:center;box-shadow:var(--shadow-sm);}
.analytics-card-num{font-size:2.2rem;font-weight:900;color:var(--primary);line-height:1;}
.analytics-card-label{font-size:.8rem;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-top:6px;}
.analytics-section{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:20px;margin-bottom:20px;}
.analytics-section h2{font-size:1.1rem;font-weight:800;margin:0 0 14px;}
.analytics-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:.85rem;}
.analytics-bar-label{width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.analytics-bar-track{flex:1;height:18px;background:var(--bg);border-radius:9px;overflow:hidden;}
.analytics-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:9px;}
.analytics-bar-val{width:50px;text-align:right;font-weight:700;color:var(--text-muted);}
.analytics-spark{display:flex;align-items:flex-end;gap:2px;height:60px;}
.analytics-spark-bar{flex:1;background:var(--primary);border-radius:2px 2px 0 0;min-height:2px;opacity:.75;}
/* === Library Session (Task 1) === */
.page-session{padding:50px 0 70px;}
.session-join-card{background:var(--surface);border:1.5px solid var(--border);border-radius:18px;padding:40px 30px;text-align:center;box-shadow:var(--shadow);max-width:480px;margin:0 auto;}
.session-emoji{font-size:3.4rem;margin-bottom:10px;}
.session-join-card h1{font-size:1.7rem;font-weight:900;margin:0 0 8px;}
.session-join-card > p{color:var(--text-muted);margin:0 0 22px;}
.session-join-card input{width:100%;padding:16px;font-size:1.3rem;text-align:center;letter-spacing:.15em;text-transform:uppercase;border:2px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);margin-bottom:14px;font-weight:800;}
.session-join-card input:focus{border-color:var(--primary);outline:none;}
.btn-lg{padding:14px 32px;font-size:1.05rem;width:100%;}
.session-parent-note{margin-top:20px;font-size:.85rem;color:var(--text-muted);background:rgba(108,99,255,.06);padding:12px;border-radius:10px;}
.session-playlist-head{text-align:center;margin-bottom:24px;}
.session-playlist-head h1{font-size:1.9rem;font-weight:900;margin:0 0 6px;}
.session-lessons{display:flex;flex-direction:column;gap:12px;max-width:560px;margin:0 auto 30px;}
.session-lesson-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:16px 18px;text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform .15s,border-color .15s;}
.session-lesson-card:hover{transform:translateX(4px);border-color:var(--primary);}
.session-lesson-num{width:30px;height:30px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0;}
.session-lesson-icon{font-size:1.5rem;}
.session-lesson-title{flex:1;font-weight:700;}
.session-lesson-arrow{color:var(--primary);font-weight:800;font-size:1.2rem;}
.session-cta-signup{text-align:center;padding:24px;background:rgba(108,99,255,.06);border-radius:14px;max-width:560px;margin:0 auto;}
.session-cta-signup p{margin:0 0 12px;font-weight:700;}
/* Admin session builder */
.session-lesson-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;max-height:260px;overflow-y:auto;border:1.5px solid var(--border);border-radius:10px;padding:12px;background:var(--bg);}
.session-pick{display:flex;align-items:center;gap:8px;font-size:.85rem;padding:4px;cursor:pointer;}
.session-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:10px;}
.session-row-info{font-size:.88rem;word-break:break-all;}
.session-row-actions{display:flex;gap:6px;flex-shrink:0;}
/* ============================================
   RESPONSIVE ENHANCEMENT LAYER (Task 4)
   Appended last so it cascades over base rules.
   ============================================ */

/* 1. Global guards: no horizontal scroll, smooth text scaling, sane media */
html{ -webkit-text-size-adjust:100%; }
body{ overflow-x:hidden; }
img,video,canvas,iframe,svg{ max-width:100%; height:auto; }
*,*::before,*::after{ min-width:0; }
pre,code{ overflow-x:auto; max-width:100%; }

/* 2. Fluid typography — headings scale smoothly between phone and desktop.
   These target the common heading patterns used across pages. */
.learn-hero-text h1,.learn-hero h1,.page-header h1,.courses-hero h1,.gallery-hero h1,
.pricing-hero h1,.session-join-card h1,.single-course-head h1,.legal-content h1{
  font-size:clamp(1.5rem, 4.5vw + 0.5rem, 2.4rem);
  line-height:1.15;
}
h2{ font-size:clamp(1.2rem, 2.5vw + 0.4rem, 1.6rem); }
.hero-stat-num,.analytics-card-num,.pc-num{ font-size:clamp(1.4rem, 4vw, 2.2rem); }

/* 3. Fluid container padding so content isn't cramped on small screens */
.container{ padding-left:clamp(14px, 4vw, 24px); padding-right:clamp(14px, 4vw, 24px); }

/* 4. Tablet range (max 900px): tighten multi-column grids to 2-up */
@media (max-width:900px){
  .courses-grid,.gallery-grid,.analytics-cards{ grid-template-columns:repeat(2,1fr); }
  .pricing-grid{ gap:16px; }
}

/* 5. Phone range (max 600px): single column everything, bigger touch targets */
@media (max-width:600px){
  .courses-grid,.gallery-grid,.analytics-cards,.parent-children-grid,
  .testimonials-grid,.session-lesson-picker{ grid-template-columns:1fr; }
  .pricing-grid{ grid-template-columns:1fr; }
  .pricing-card-featured{ transform:none; } /* avoid overlap on stacked cards */
  /* Touch targets: buttons & nav links at least 44px tall (WCAG/Apple HIG) */
  .btn,.nav-link,.manage-nav-btn,.placement-opt,.pricing-toggle-btn{ min-height:44px; }
  .btn-sm{ min-height:38px; }
  /* Stack the analytics + moderation rows */
  .mod-item,.session-row{ flex-direction:column; }
  .mod-actions,.session-row-actions{ width:100%; }
  /* Page padding breathing room */
  .page-inner{ padding-top:24px; padding-bottom:48px; }
  /* Single-course skill tree spacing */
  .skill-node-body{ flex-direction:column; align-items:flex-start; gap:6px; }
  /* Certificate scales down */
  .certificate-name{ font-size:1.5rem; }
  .certificate-course{ font-size:1.1rem; }
  /* Dashboard cards full width */
  .analytics-bar-label{ width:110px; }
}

/* 6. Small phone (max 380px): reduce hero + heading further, tighten cards */
@media (max-width:380px){
  .mm-grid{ grid-template-columns:repeat(3,1fr); } /* keep memory game playable */
  .pricing-amount{ font-size:2rem; }
  .session-join-card{ padding:28px 18px; }
  .session-join-card input{ font-size:1.1rem; }
  .course-card{ flex-direction:column; text-align:center; }
  .course-card-icon{ margin:0 auto; }
}

/* 7. Landscape-phone / very short viewports: trim vertical padding */
@media (max-height:480px) and (orientation:landscape){
  .page-inner{ padding-top:16px; padding-bottom:24px; }
  .session-join-card{ padding:20px; }
}
/* === Concept Runner (Task 6: 5-phase learn-before-perform) === */
.page-concept{padding:36px 0 70px;}
.concept-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:10px 0 20px;}
.concept-head h1{font-size:clamp(1.5rem,4vw,2.1rem);font-weight:900;margin:0;}
.concept-done-badge{background:rgba(34,197,94,.14);color:#16a34a;font-weight:800;font-size:.78rem;padding:4px 12px;border-radius:14px;}
/* progress dots */
.concept-progress{display:flex;justify-content:space-between;gap:6px;margin-bottom:26px;position:relative;}
.concept-progress:before{content:'';position:absolute;top:18px;left:5%;right:5%;height:2px;background:var(--border);z-index:0;}
.concept-dot{display:flex;flex-direction:column;align-items:center;gap:5px;z-index:1;flex:1;}
.concept-dot span{width:36px;height:36px;border-radius:50%;background:var(--surface);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--text-muted);transition:all .2s;}
.concept-dot label{font-size:.7rem;font-weight:700;color:var(--text-muted);text-align:center;}
.concept-dot.active span{border-color:var(--primary);color:var(--primary);transform:scale(1.12);}
.concept-dot.active label{color:var(--primary);}
.concept-dot.complete span{background:linear-gradient(135deg,#22c55e,#16a34a);border-color:#16a34a;color:#fff;}
/* card */
.concept-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:26px;box-shadow:var(--shadow-sm);animation:concept-fade .3s ease;}
@keyframes concept-fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.concept-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
.concept-card-head h2{font-size:1.3rem;font-weight:800;margin:0;}
.concept-mins{font-size:.78rem;font-weight:700;color:var(--text-muted);background:var(--bg);padding:4px 10px;border-radius:12px;white-space:nowrap;}
.concept-intro{font-size:1.02rem;line-height:1.6;margin:0 0 14px;}
.concept-prompt{font-weight:700;font-size:1.05rem;margin:0 0 16px;}
/* warm-up options */
.concept-opts{display:flex;flex-direction:column;gap:10px;max-width:420px;}
.concept-opt{padding:14px 18px;border:1.5px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);font-weight:700;font-size:.98rem;cursor:pointer;text-align:left;transition:all .15s;}
.concept-opt:hover:not(:disabled){border-color:var(--primary);}
.concept-opt.right{border-color:#22c55e;background:rgba(34,197,94,.1);color:#16a34a;}
.concept-opt.chosen-wrong{border-color:#f59e0b;background:rgba(245,158,11,.08);}
.concept-opt:disabled{cursor:default;opacity:.85;}
/* feedback (always encouraging, never harsh) */
.concept-feedback{margin-top:14px;padding:12px 16px;border-radius:10px;font-weight:600;font-size:.92rem;line-height:1.5;}
.concept-feedback.right{background:rgba(34,197,94,.1);color:#16a34a;}
.concept-feedback.soft{background:rgba(108,99,255,.08);color:var(--text);}
.concept-feedback.hidden{display:none;}
/* mini-lesson */
.concept-lesson{font-size:1rem;line-height:1.7;}
/* guided steps */
.concept-steps{margin:0 0 16px;padding-left:22px;}
.concept-steps li{margin-bottom:8px;line-height:1.5;}
/* code runner box */
.concept-runner-box{border:1.5px solid var(--border);border-radius:12px;overflow:hidden;margin-top:8px;}
.concept-editor-head{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:var(--bg);border-bottom:1.5px solid var(--border);font-weight:700;font-size:.85rem;}
.concept-code{width:100%;min-height:140px;border:0;padding:14px;font-family:var(--font-code,monospace);font-size:.9rem;line-height:1.5;resize:vertical;background:#1a1929;color:#e8e6ff;display:block;}
.concept-code:focus{outline:none;}
.concept-output{border-top:1.5px solid var(--border);}
.concept-output.hidden{display:none;}
.concept-output-label{padding:6px 14px;font-size:.75rem;font-weight:700;color:var(--text-muted);background:var(--bg);}
.concept-output-pre{margin:0;padding:12px 14px;font-family:var(--font-code,monospace);font-size:.85rem;white-space:pre-wrap;color:var(--text);max-height:200px;overflow-y:auto;}
.concept-output-pre.ok{color:#16a34a;}
.concept-output-pre.err{color:#dc2626;}
/* nav */
.concept-nav{display:flex;justify-content:space-between;gap:10px;margin-top:22px;}
.concept-nav .btn-primary{margin-left:auto;}
@media(max-width:600px){.concept-dot label{font-size:.6rem;}.concept-dot span{width:30px;height:30px;}.concept-card{padding:18px;}}
/* === Concept list on course page === */
.course-concepts{margin:24px 0 30px;}
.course-section-title{font-size:1.25rem;font-weight:800;margin:0 0 4px;}
.course-section-sub{color:var(--text-muted);font-size:.9rem;margin:0 0 16px;}
.concept-list{display:flex;flex-direction:column;gap:10px;}
.concept-list-item{display:flex;align-items:center;gap:14px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;padding:16px 18px;text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform .15s,border-color .15s;}
.concept-list-item:hover{transform:translateX(4px);border-color:var(--primary);}
.concept-list-item.done{border-color:#22c55e;background:rgba(34,197,94,.05);}
.concept-list-icon{font-size:1.6rem;}
.concept-list-title{flex:1;font-weight:700;}
.concept-list-arrow{color:var(--primary);font-weight:800;font-size:1.2rem;}
/* === Concept builder (admin) === */
.concept-admin-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--surface);border:1.5px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:8px;}
.concept-admin-actions{display:flex;gap:6px;flex-shrink:0;}
.concept-builder h3{margin:22px 0 10px;font-size:1rem;font-weight:800;color:var(--primary);border-top:1.5px solid var(--border);padding-top:16px;}
.concept-builder h3:first-of-type{border-top:none;padding-top:0;}
.concept-builder .code-input{font-family:var(--font-code,monospace);font-size:.85rem;}
/* === Concept reflection widget (non-code phases) === */
.concept-reflect-box{margin-top:8px;}
.concept-reflect-prompt{font-weight:700;margin-bottom:10px;line-height:1.5;}
.concept-reflect-input{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-family:inherit;font-size:.95rem;resize:vertical;margin-bottom:10px;}
.concept-reflect-input:focus{outline:none;border-color:var(--primary);}

/* ============================================
   COURSE-GROUPED GAME ENGINES (data-driven)
   ============================================ */
.games-course-group{margin-bottom:36px;}
.games-course-group-head{display:flex;align-items:center;gap:10px;margin:0 0 4px;}
.games-course-group-head h2{font-size:1.4rem;font-weight:900;margin:0;}
.games-course-group-sub{color:var(--text-muted);font-size:.9rem;margin:0 0 16px;}
.games-course-group-sub a{color:var(--primary);font-weight:700;text-decoration:none;}
.ge-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.ge-game-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:18px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;}
.ge-game-card.ge-playing{grid-column:1/-1;}
.ge-game-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px;}
.ge-game-head h3{font-size:1.05rem;font-weight:800;margin:0;}
.ge-engine-badge{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:10px;background:rgba(108,99,255,.12);color:var(--primary);white-space:nowrap;}
.ge-game-desc{font-size:.85rem;color:var(--text-muted);margin:0 0 14px;flex:1;line-height:1.5;}
.ge-game-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.ge-xp-chip{font-size:.75rem;font-weight:800;color:#16a34a;}
.ge-premium-chip{font-size:.65rem;font-weight:800;color:#b8860b;background:rgba(245,200,66,.2);padding:2px 8px;border-radius:10px;}
.ge-container{margin-top:14px;}
.ge-play-btn{width:100%;}
.ge-locked{text-align:center;padding:30px 16px;}
.ge-locked-icon{font-size:2.4rem;margin-bottom:8px;}
.ge-error{color:#dc2626;padding:14px;text-align:center;}
/* shared engine UI */
.ge-progress{font-size:.78rem;font-weight:800;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px;}
.ge-question,.ge-pp-prompt{font-size:1.1rem;font-weight:700;margin-bottom:14px;line-height:1.4;}
.ge-options{display:flex;flex-direction:column;gap:8px;}
.ge-opt{padding:12px 16px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-weight:700;font-size:.92rem;cursor:pointer;text-align:left;transition:all .15s;}
.ge-opt:hover:not(:disabled){border-color:var(--primary);}
.ge-opt.correct{border-color:#22c55e;background:rgba(34,197,94,.12);color:#16a34a;}
.ge-opt.wrong{border-color:#ef4444;background:rgba(239,68,68,.1);color:#dc2626;}
.ge-opt:disabled{cursor:default;}
.ge-fb{margin-top:12px;font-weight:700;font-size:.9rem;min-height:1.2em;}
.ge-fb-ok{color:#16a34a;}
.ge-fb-no{color:#dc2626;}
/* win banner */
.ge-win{text-align:center;padding:24px;}
.ge-win-emoji{font-size:3rem;}
.ge-win-msg{font-size:1.2rem;font-weight:800;margin:8px 0;}
.ge-win-xp{font-size:1rem;font-weight:800;color:#16a34a;margin-bottom:14px;}
/* memory match */
.ge-mm-status{font-weight:700;margin-bottom:12px;}
.ge-mm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.ge-mm-card{aspect-ratio:1;border:1.5px solid var(--border);border-radius:10px;background:var(--primary);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:6px;font-size:.78rem;font-weight:700;text-align:center;transition:all .15s;}
.ge-mm-card.hidden-card{background:linear-gradient(135deg,var(--primary),var(--secondary));font-size:1.4rem;}
.ge-mm-card.flipped{background:var(--surface);color:var(--text);border-color:var(--primary);}
.ge-mm-card.done{background:rgba(34,197,94,.15);color:#16a34a;border-color:#22c55e;cursor:default;}
.ge-mm-face{pointer-events:none;line-height:1.2;}
/* code sort */
.ge-cs-goal{font-weight:700;margin-bottom:12px;}
.ge-cs-list{list-style:none;padding:0;margin:0 0 14px;display:flex;flex-direction:column;gap:6px;}
.ge-cs-line{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#1a1929;color:#e8e6ff;border-radius:8px;cursor:grab;font-family:var(--font-code,monospace);font-size:.85rem;}
.ge-cs-line.dragging{opacity:.4;}
.ge-cs-grip{color:#6b7280;cursor:grab;}
.ge-cs-line code{background:none;color:inherit;padding:0;}
/* bug hunt */
.ge-bh-hint{font-weight:700;margin-bottom:12px;color:var(--text);}
.ge-bh-code{display:flex;flex-direction:column;gap:4px;}
.ge-bh-line{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#1a1929;color:#e8e6ff;border:1.5px solid transparent;border-radius:6px;cursor:pointer;font-family:var(--font-code,monospace);font-size:.85rem;text-align:left;}
.ge-bh-line:hover:not(:disabled){border-color:var(--primary);}
.ge-bh-line.correct{border-color:#22c55e;background:rgba(34,197,94,.15);}
.ge-bh-line.wrong{border-color:#ef4444;background:rgba(239,68,68,.15);}
.ge-bh-num{color:#6b7280;min-width:18px;}
.ge-bh-line code{background:none;color:inherit;padding:0;}
/* pattern pop */
.ge-pp-seq{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
.ge-pp-item{padding:10px 14px;background:var(--bg);border:1.5px solid var(--border);border-radius:10px;font-weight:800;font-size:1rem;}
.ge-pp-arrow{color:var(--text-muted);font-weight:800;}
.ge-pp-q{padding:10px 16px;background:rgba(108,99,255,.12);border:2px dashed var(--primary);border-radius:10px;font-weight:800;color:var(--primary);}
@media(max-width:600px){.ge-mm-grid{grid-template-columns:repeat(3,1fr);}.ge-cards-grid{grid-template-columns:1fr;}}
.course-games-cta{margin:18px 0 6px;}
.btn-full{width:100%;display:block;text-align:center;}

/* === Game builder (admin) === */
.game-admin-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--surface);border:1.5px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:8px;}
.game-admin-actions{display:flex;gap:6px;flex-shrink:0;}
.game-builder h3{margin-top:18px;}
.game-content-hint{white-space:pre-line;background:var(--bg);border:1.5px dashed var(--border);border-radius:8px;padding:10px 12px;font-size:.8rem;color:var(--text-muted);margin-bottom:8px;line-height:1.5;}
.game-builder .code-input{font-family:var(--font-code,monospace);font-size:.85rem;}

.sc-section{font-size:1rem;font-weight:800;margin:22px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--border);color:var(--primary);}
.sc-section:first-child{margin-top:0;}

/* Pricing admin */
.pricing-tier-card{background:var(--bg);border:1.5px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px;}
.pricing-tier-card h4{margin:0 0 12px;font-size:1.05rem;font-weight:800;}
.faq-row{background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:12px;margin-bottom:10px;position:relative;}
.faq-row .faq-remove{margin-top:4px;}

/* === Visibility admin === */
.vis-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
.vis-tab{padding:8px 16px;border:1.5px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-weight:700;font-size:.85rem;cursor:pointer;}
.vis-tab.active{background:var(--primary);color:#fff;border-color:var(--primary);}
#vis-search-wrap{margin-bottom:12px;}
#vis-search{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:.9rem;}
.vis-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;margin-bottom:7px;background:var(--surface);border-left-width:4px;}
.vis-row.vis-pub{border-left-color:#22c55e;}
.vis-row.vis-draft{border-left-color:#f59e0b;}
.vis-row.vis-hidden{border-left-color:#6b7280;opacity:.75;}
.vis-row.vis-sched{border-left-color:#3b82f6;}
.vis-title{font-weight:600;font-size:.9rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.vis-controls{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.vis-status{padding:6px 10px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-weight:700;font-size:.82rem;}
.vis-sched-input{padding:5px 8px;border:1.5px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:.8rem;}
.vis-saved{color:#16a34a;font-weight:800;font-size:.8rem;}

/* Visibility targeting */
.vis-row{flex-direction:column;align-items:stretch;}
.vis-row-main{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.vis-target-badge{font-size:.68rem;font-weight:800;color:#7c3aed;background:rgba(124,58,237,.1);padding:1px 7px;border-radius:8px;}
.vis-target-toggle{background:none;border:1.5px solid var(--border);border-radius:8px;padding:5px 9px;cursor:pointer;font-size:.85rem;}
.vis-target-toggle.on{background:rgba(124,58,237,.12);border-color:#7c3aed;}
.vis-target-panel{margin-top:12px;padding-top:12px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:10px;}
.vis-tgroup{display:flex;flex-wrap:wrap;align-items:center;gap:6px;}
.vis-tlabel{font-size:.78rem;font-weight:800;min-width:90px;color:var(--text-muted);}
.vis-soft{font-weight:600;color:#9ca3af;font-size:.72rem;}
.vis-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1.5px solid var(--border);border-radius:20px;font-size:.8rem;font-weight:600;cursor:pointer;background:var(--bg);}
.vis-chip.on{background:rgba(108,99,255,.12);border-color:var(--primary);color:var(--primary);}
.vis-chip input{margin:0;}
.vis-thelp{font-size:.74rem;color:var(--text-muted);margin:2px 0 0;line-height:1.5;}

/* Friendly empty states */
.aijc-empty{text-align:center;padding:36px 20px;border:2px dashed var(--border);border-radius:14px;background:var(--bg);margin:8px 0 16px;}
.aijc-empty-icon{font-size:2.6rem;line-height:1;margin-bottom:10px;}
.aijc-empty-title{font-weight:800;font-size:1.05rem;color:var(--text);margin:0 0 4px;}
.aijc-empty-sub{font-size:.88rem;color:var(--text-muted);margin:0;max-width:420px;margin-left:auto;margin-right:auto;line-height:1.5;}

/* AIJC mobile header fix */
@media (max-width:768px){
  .header-inner{flex-wrap:nowrap;gap:10px;padding:0 14px;}
  .site-logo{flex:1;min-width:0;}
  .logo-text{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .header-actions{margin-left:0;gap:6px;}
  /* Auth buttons folded into the dropdown menu by JS */
  .site-nav .nav-auth-group{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:10px;padding-top:12px;border-top:1.5px solid var(--border);}
  .site-nav .nav-auth-group .btn{width:100%;justify-content:center;min-height:46px;}
  .site-nav .nav-auth-group .nav-user{justify-content:center;padding:6px 0;}
  .site-nav.open .nav-link{padding:12px 8px;min-height:44px;display:flex;align-items:center;border-radius:8px;}
  .site-nav.open .nav-link:active{background:var(--bg);}
}
/* Larger touch targets on phones (Apple/Google >=44px) */
@media (max-width:600px){
  .btn-sm{min-height:44px;}
  .btn{min-height:46px;}
  .dark-toggle{width:42px;height:42px;}
  .mobile-menu-btn{min-height:42px;min-width:42px;font-size:1.25rem;}
}
/* Prevent iOS auto-zoom when focusing inputs (needs >=16px) */
@media (max-width:768px){
  input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=tel],input[type=url],input[type=datetime-local],input[type=date],textarea,select{font-size:16px;}
}

/* AIJC mobile auth polish */
@media (max-width:600px){
  .auth-container{max-width:100%;padding:0 14px;}
  .auth-card{padding:24px 20px;border-radius:16px;}
  .page-auth{padding:24px 0;}
  .auth-form .btn{min-height:48px;}
}

/* AIJC mobile polish v2 */
@media (max-width:768px){
  /* Reclaim vertical space in the hero on phones */
  .learn-hero{padding:44px 0 48px;}
  .learn-hero-inner{gap:28px;}
  /* Smooth momentum scrolling for any horizontal scroll region on iOS */
  pre,.table-scroll,.overflow-x-auto{-webkit-overflow-scrolling:touch;}
}
@media (max-width:380px){
  /* Tighter scaling on small phones */
  .learn-hero-text h1{font-size:1.55rem;}
  .learn-hero-stats{gap:18px;justify-content:space-around;width:100%;}
  .hero-stat-num{font-size:1.5rem;}
  .container,.header-inner{padding-left:12px;padding-right:12px;}
  .logo-text{font-size:.95rem;}
}

/* Visibility preview button */
.vis-preview-btn{display:inline-flex;align-items:center;gap:3px;padding:5px 9px;border:1.5px solid var(--border);border-radius:8px;font-size:.78rem;font-weight:700;color:var(--text-muted);text-decoration:none;white-space:nowrap;}
.vis-preview-btn:hover{border-color:var(--primary);color:var(--primary);}

/* === Article rich-text editor === */
.rte-toolbar{display:flex;flex-wrap:wrap;gap:4px;padding:8px;border:1.5px solid var(--border);border-bottom:none;border-radius:10px 10px 0 0;background:var(--bg);}
.rte-btn{padding:6px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:.82rem;cursor:pointer;min-width:34px;line-height:1;}
.rte-btn:hover{border-color:var(--primary);color:var(--primary);}
.rte-block{padding:6px 8px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:.82rem;cursor:pointer;}
.rte-area{min-height:280px;max-height:520px;overflow-y:auto;padding:16px 18px;border:1.5px solid var(--border);border-radius:0 0 10px 10px;background:var(--surface);color:var(--text);line-height:1.7;font-size:.95rem;}
.rte-area:focus{outline:none;border-color:var(--primary);}
.rte-area:empty:before{content:'Write your article here\u2026 use the toolbar for headings, bold, links and lists.';color:var(--text-muted);}
.rte-area h2{font-size:1.4rem;font-weight:800;margin:18px 0 8px;}
.rte-area h3{font-size:1.15rem;font-weight:700;margin:14px 0 6px;}
.rte-area blockquote{border-left:3px solid var(--primary);margin:12px 0;padding:6px 14px;color:var(--text-muted);font-style:italic;}
.rte-area ul,.rte-area ol{margin:8px 0;padding-left:24px;}
.rte-area a{color:var(--primary);text-decoration:underline;}

/* === Single article page === */
.page-article{padding:32px 0 60px;}
.article-head{margin:18px 0 28px;}
.article-cat-pill{display:inline-block;background:rgba(108,99,255,.12);color:var(--primary);font-weight:800;font-size:.78rem;padding:4px 12px;border-radius:20px;margin-bottom:12px;}
.page-article .article-head h1{font-size:2rem;font-weight:900;line-height:1.2;margin:0 0 12px;}
.article-meta-row{display:flex;gap:10px;align-items:center;color:var(--text-muted);font-size:.85rem;}
.article-body{font-size:1.05rem;line-height:1.8;color:var(--text);}
.article-body h2{font-size:1.5rem;font-weight:800;margin:28px 0 10px;}
.article-body h3{font-size:1.2rem;font-weight:700;margin:22px 0 8px;}
.article-body p{margin:0 0 16px;}
.article-body ul,.article-body ol{margin:0 0 16px;padding-left:26px;}
.article-body li{margin-bottom:6px;}
.article-body blockquote{border-left:4px solid var(--primary);margin:18px 0;padding:8px 18px;color:var(--text-muted);font-style:italic;background:var(--bg);border-radius:0 8px 8px 0;}
.article-body a{color:var(--primary);text-decoration:underline;}
.article-paywall{background:var(--bg);border:2px dashed var(--primary);border-radius:16px;padding:28px;text-align:center;margin-top:20px;}
.article-paywall h3{margin:0 0 8px;font-weight:800;}
.article-tags{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0;}
.article-tag{background:var(--bg);border:1.5px solid var(--border);color:var(--text-muted);font-size:.8rem;font-weight:600;padding:4px 12px;border-radius:20px;}
.article-footer-cta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:32px;padding-top:24px;border-top:1.5px solid var(--border);}
@media(max-width:600px){.page-article .article-head h1{font-size:1.5rem;}.article-body{font-size:1rem;}.article-footer-cta .btn{flex:1;}}

/* === Article images === */
.article-featured-wrap{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap;}
.article-featured-preview{width:160px;height:100px;border-radius:10px;border:1.5px solid var(--border);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--bg);}
.article-featured-preview.empty{border-style:dashed;}
.article-featured-preview span{color:var(--text-muted);font-size:.8rem;}
.article-featured-preview img{width:100%;height:100%;object-fit:cover;}
.article-featured-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-start;}
.article-hero-img{margin:20px 0 8px;border-radius:14px;overflow:hidden;}
.article-hero-img img{width:100%;height:auto;display:block;}
