/* ===== Shared Project Page Styles — matches tutorial.css ===== */
:root{--bg:#0f0f23;--bg-card:rgba(255,255,255,0.04);--bg-hover:rgba(255,255,255,0.08);--primary:#667eea;--secondary:#764ba2;--accent:#f093fb;--green:#43e97b;--red:#f5576c;--blue:#4facfe;--orange:#ffa726;--text:#fff;--text2:#a0aec0;--radius:14px;--transition:all 0.35s cubic-bezier(0.4,0,0.2,1)}
*,*::before,*::after{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);line-height:1.8;margin:0;padding:0}
a{color:var(--primary);text-decoration:none;transition:var(--transition)}
a:hover{opacity:0.85}
::selection{background:rgba(102,126,234,0.3);color:#fff}

::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.1);border-radius:3px}

/* Sidebar */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:rgba(15,15,35,0.98);border-right:1px solid rgba(255,255,255,0.08);padding:24px 0;overflow-y:auto;z-index:200;backdrop-filter:blur(20px)}
.sidebar-header{padding:0 20px 20px;border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:12px}
.sidebar-header h3{font-size:0.85rem;color:var(--primary);margin:0 0 6px}
.sidebar-header a{font-size:0.75rem;color:var(--text2)}
.toc-list{list-style:none;padding:0 16px;margin:0}
.toc-list li{margin-bottom:2px}
.toc-list a{display:block;padding:8px 14px;border-radius:8px;color:var(--text2);font-size:0.83rem;transition:var(--transition);border-left:2px solid transparent}
.toc-list a:hover,.toc-list a.active{background:var(--bg-hover);color:var(--text)}
.toc-list a.active{border-left-color:var(--primary);background:rgba(102,126,234,0.08)}
.progress-bar{height:3px;background:rgba(255,255,255,0.1);border-radius:2px;margin:16px 20px 0;overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:2px;transition:width 0.5s}

/* Mobile */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:199}
.mobile-sidebar-toggle{display:none;position:fixed;top:16px;left:16px;z-index:300;width:44px;height:44px;border-radius:12px;background:var(--bg-card);border:1px solid rgba(255,255,255,0.1);color:var(--text);font-size:1.2rem;cursor:pointer}
@media(max-width:1024px){
  .sidebar{transform:translateX(-100%);transition:transform 0.3s ease}
  .sidebar.open{transform:translateX(0)}
  .mobile-sidebar-toggle{display:flex;align-items:center;justify-content:center}
  .sidebar-overlay.show{display:block}
}

/* Main */
.main{padding:40px 56px 120px;margin-left:260px;max-width:900px}
@media(max-width:1024px){.main{margin-left:0;padding:80px 24px 60px}}
@media(max-width:640px){.main{padding:80px 16px 40px}}

/* Hero */
.project-hero{margin-bottom:48px}
.project-hero .badge{display:inline-block;padding:4px 14px;border-radius:100px;font-size:0.75rem;font-weight:700;margin-bottom:16px}
.project-hero h1{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;line-height:1.2;margin:0 0 12px;letter-spacing:-0.02em}
.project-hero p{font-size:1.1rem;color:var(--text2);max-width:700px;line-height:1.7;margin:0}
.project-meta{display:flex;gap:20px;margin-top:16px;flex-wrap:wrap}
.project-meta span{display:flex;align-items:center;gap:6px;font-size:0.85rem;color:var(--text2)}
.project-meta i{color:var(--primary)}

/* Sections */
section{margin-bottom:48px;scroll-margin-top:24px}
section h2{font-size:1.45rem;font-weight:700;margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid rgba(102,126,234,0.2);display:flex;align-items:center;gap:10px}
section h3{font-size:1.1rem;color:var(--accent);margin:24px 0 10px}
section h4{font-size:1rem;color:var(--primary);margin:18px 0 8px}
section p{color:var(--text2);margin:0 0 12px;line-height:1.85}
section ul,section ol{padding-left:22px;margin:0 0 14px}
section li{color:var(--text2);margin-bottom:6px;line-height:1.75}
section li strong{color:var(--text)}

/* Code blocks */
pre{background:#0a0a14;border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:20px;overflow-x:auto;margin:16px 0;position:relative;font-family:'JetBrains Mono',monospace;font-size:0.82rem;line-height:1.65}
pre code{word-break:break-word;overflow-wrap:break-word;hyphens:none;color:#e0e0e0}
pre .kw{color:#569cd6}
pre .fn{color:#dcdcaa}
pre .st{color:#ce9178}
pre .cm{color:#6a9955}
pre .nu{color:#b5cea8}
pre .cl{color:#4ec9b0}
pre .op{color:#d4d4d4}
.copy-btn{position:absolute;top:10px;right:10px;padding:5px 12px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:6px;color:var(--text2);font-size:0.72rem;cursor:pointer;transition:var(--transition)}
.copy-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}

/* Boxes */
.box{background:var(--bg-card);border:1px solid rgba(255,255,255,0.06);border-radius:var(--radius);padding:20px 24px;margin:16px 0}
.box.info{border-left:3px solid var(--blue)}
.box.tip{border-left:3px solid var(--green)}
.box.warn{border-left:3px solid var(--orange)}
.box.danger{border-left:3px solid var(--red)}
.box h4{margin:0 0 8px;font-size:0.95rem}
.box p,.box li{font-size:0.88rem;color:var(--text2)}
.box ul{padding-left:18px;margin:0}
.box li{margin-bottom:4px}

/* Project delivery console */
.project-delivery-console{background:linear-gradient(135deg,rgba(102,126,234,0.08),rgba(67,233,123,0.045));border:1px solid rgba(102,126,234,0.22);border-radius:var(--radius);padding:26px;margin:0 0 48px}
.project-delivery-console h2{border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:20px}
.project-complete-panel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 18px;padding:14px 16px;border-radius:12px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06)}
.project-complete-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:10px;border:1px solid rgba(102,126,234,0.35);background:rgba(102,126,234,0.16);color:var(--text);font-weight:700;cursor:pointer;transition:var(--transition)}
.project-complete-btn:hover{transform:translateY(-1px);background:rgba(102,126,234,0.26)}
.project-complete-btn.done{border-color:rgba(67,233,123,0.45);background:rgba(67,233,123,0.18);color:var(--green)}
.project-complete-panel span{font-size:0.8rem;color:var(--text2)}
.project-console-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.project-console-card{background:rgba(0,0,0,0.18);border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:16px 18px}
.project-console-card h3{font-size:0.98rem;margin:0 0 8px;color:var(--accent)}
.project-console-card p{font-size:0.84rem;line-height:1.7;color:var(--text2)}
.project-console-card code{font-family:'JetBrains Mono',monospace;color:var(--green);word-break:break-word}

/* Project research reproduction layer */
.project-research-layer{background:linear-gradient(135deg,rgba(240,147,251,0.075),rgba(79,172,254,0.055));border:1px solid rgba(240,147,251,0.22);border-radius:var(--radius);padding:26px;margin:0 0 48px}
.project-research-layer h2{border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:14px}
.project-research-layer>p{font-size:0.9rem;color:var(--text2);margin-bottom:18px}
.project-research-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.project-research-card{background:rgba(0,0,0,0.18);border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:16px 18px}
.project-research-card h3{font-size:0.98rem;margin:0 0 8px;color:var(--accent)}
.project-research-card p,.project-research-card li{font-size:0.84rem;line-height:1.7;color:var(--text2)}
.project-research-card ul{padding-left:18px;margin:0}

/* Frontier reproducibility bootcamp */
.frontier-repro-bootcamp{background:linear-gradient(135deg,rgba(240,147,251,0.10),rgba(102,126,234,0.07));border:1px solid rgba(240,147,251,0.24);border-radius:var(--radius);padding:26px;margin:0 0 48px}
.frontier-repro-bootcamp h2{border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:14px}
.frontier-repro-bootcamp>p{font-size:0.9rem;color:var(--text2);margin-bottom:16px}
.frontier-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.frontier-meta span{display:inline-flex;border:1px solid rgba(240,147,251,0.25);background:rgba(240,147,251,0.08);color:#fbd6ff;border-radius:999px;padding:5px 10px;font-size:0.72rem;font-weight:800}
.frontier-week-grid,.frontier-lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.frontier-week,.frontier-lab-card,.frontier-command-card{padding:15px;border-radius:14px;border:1px solid rgba(255,255,255,0.08);background:rgba(0,0,0,0.18)}
.frontier-week b,.frontier-lab-card h3,.frontier-command-card h3{display:block;font-size:0.9rem;margin-bottom:7px;color:#fff}
.frontier-week p,.frontier-lab-card li{color:var(--text2);font-size:0.82rem;line-height:1.65}
.frontier-lab-card ul{padding-left:18px;margin:0}
.frontier-command-card pre{margin-bottom:0}
@media(max-width:760px){.frontier-week-grid,.frontier-lab-grid{grid-template-columns:1fr}.frontier-repro-bootcamp{padding:20px}}

/* Project scoring rubric */
.project-score-rubric{background:linear-gradient(135deg,rgba(255,167,38,0.075),rgba(67,233,123,0.045));border:1px solid rgba(255,167,38,0.22);border-radius:var(--radius);padding:26px;margin:48px 0}
.project-score-rubric h2{border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:14px}
.project-score-rubric>p{font-size:0.9rem;color:var(--text2);margin-bottom:18px}
.score-rubric-grid{display:grid;gap:12px}
.score-rubric-row{display:grid;grid-template-columns:1fr 150px 44px;gap:14px;align-items:center;padding:13px 14px;border-radius:12px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06)}
.score-rubric-row span{font-size:0.82rem;color:var(--text2);line-height:1.55}.score-rubric-row b{display:block;color:var(--text);font-size:0.9rem;margin-bottom:2px}
.score-rubric-row input{width:100%;accent-color:var(--orange)}.score-rubric-row em{font-style:normal;color:var(--orange);font-size:0.82rem;font-weight:800;text-align:right}
.score-rubric-result{margin-top:14px;padding:12px 14px;border-radius:12px;background:rgba(245,87,108,0.08);border:1px solid rgba(245,87,108,0.18);color:var(--text2);font-size:0.86rem}
.score-rubric-result.progress{background:rgba(255,167,38,0.08);border-color:rgba(255,167,38,0.24);color:var(--orange)}
.score-rubric-result.ready{background:rgba(67,233,123,0.08);border-color:rgba(67,233,123,0.24);color:var(--green)}
.score-rubric-advice{margin-top:10px;color:var(--text2);font-size:0.84rem;line-height:1.65}
.score-rubric-advice strong{color:var(--text)}
@media(max-width:760px){.score-rubric-row{grid-template-columns:1fr}.score-rubric-row em{text-align:left}}

/* Project mastery assessment */
.project-mastery-panel{background:linear-gradient(135deg,rgba(67,233,123,0.075),rgba(79,172,254,0.055));border:1px solid rgba(67,233,123,0.22);border-radius:var(--radius);padding:26px;margin:48px 0}
.project-mastery-panel h2{border-bottom:1px solid rgba(255,255,255,0.08);margin-bottom:14px}
.project-mastery-panel p{font-size:0.9rem;color:var(--text2)}
.project-mastery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin:16px 0}
.project-mastery-card{background:rgba(0,0,0,0.18);border:1px solid rgba(255,255,255,0.06);border-radius:12px;padding:16px 18px}
.project-mastery-card h3{font-size:0.98rem;margin:0 0 8px;color:var(--green)}
.project-mastery-card p,.project-mastery-card li{font-size:0.84rem;line-height:1.7;color:var(--text2)}
.project-mastery-card ol{padding-left:18px;margin:0}
.project-mastery-checklist{display:grid;gap:10px;margin-top:18px}
.project-mastery-check{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06);cursor:pointer}
.project-mastery-check input{margin-top:5px;accent-color:var(--green)}
.project-mastery-check span{color:var(--text2);font-size:0.84rem;line-height:1.65}
.project-mastery-check b{display:block;color:var(--text);font-size:0.9rem;margin-bottom:2px}
.project-mastery-score{margin-top:14px;padding:12px 14px;border-radius:12px;background:rgba(245,87,108,0.08);border:1px solid rgba(245,87,108,0.18);color:var(--text2);font-size:0.86rem}
.project-mastery-score.ready{background:rgba(67,233,123,0.08);border-color:rgba(67,233,123,0.24);color:var(--green)}

/* Tables */
table{width:100%;border-collapse:collapse;margin:16px 0;max-width:100%;overflow-x:auto;display:table}
th,td{padding:10px 14px;text-align:left;border-bottom:1px solid rgba(255,255,255,0.06)}
th{color:var(--primary);font-weight:600;font-size:0.85rem}
td{color:var(--text2);font-size:0.85rem}

/* Animations */
.animate-in{opacity:0;transform:translateY(20px);transition:opacity 0.5s ease-out,transform 0.5s ease-out}
.animate-in.visible{opacity:1;transform:translateY(0)}

/* Section nav dots */
.section-nav{position:fixed;right:24px;top:50%;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;gap:8px}
.section-nav a{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,0.12);transition:var(--transition);cursor:pointer}
.section-nav a.active,.section-nav a:hover{background:var(--primary);transform:scale(1.3)}
@media(max-width:1200px){.section-nav{display:none}}

/* Page nav */
.page-nav{display:flex;justify-content:space-between;margin-top:60px;padding-top:24px;border-top:1px solid rgba(255,255,255,0.06);flex-wrap:wrap;gap:12px}
.page-nav a{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;background:var(--bg-card);border-radius:10px;color:var(--text);font-size:0.9rem;transition:var(--transition)}
.page-nav a:hover{background:var(--bg-hover);transform:translateY(-2px)}

/* File tree */
.file-tree{background:#0a0a14;border-radius:12px;padding:20px;font-family:'JetBrains Mono',monospace;font-size:0.82rem;line-height:2;color:var(--text2);margin:16px 0;border:1px solid rgba(255,255,255,0.06)}
.file-tree .dir{color:var(--blue)}
.file-tree .file{color:var(--text2)}
.file-tree .comment{color:#6a9955}

/* Check list */
.checklist{list-style:none;padding:0}
.checklist li{padding:8px 0 8px 28px;position:relative;color:var(--text2)}
.checklist li::before{content:'☐';position:absolute;left:0;color:var(--primary);font-size:1rem}

/* Print */
@media print{
  .sidebar,.section-nav,.mobile-sidebar-toggle{display:none!important}
  .main{margin-left:0!important;padding:20px!important}
}
