:root{--sage-green: #265c2f;--sage-dark: #0f2f1d;--sage-light: #487c42;--sage-lighter: #6b8861;--parchment-light: #f7f4ec;--parchment-dark: #f3e8d6;--cream: #f5f1e8;--warm-white: #fdfcf9;--text-dark: #2d3a2d;--line: #e7e1cf;--chart-success: #3d7a47;--chart-warning: #c4a35a;--chart-danger: #a65d4c}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Gentium Plus,georgia,serif;background:radial-gradient(ellipse at center,var(--parchment-light) 0%,var(--parchment-dark) 100%);color:var(--text-dark);line-height:1.6;min-height:100vh}.dashboard-header{background:linear-gradient(135deg,var(--sage-dark) 0%,var(--sage-green) 100%);color:var(--warm-white);padding:2rem 2.5rem;position:relative}.dashboard-header:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M30 5 Q20 15 10 30 Q20 45 30 55 Q40 45 50 30 Q40 15 30 5' stroke='%23ffffff' stroke-width='0.5' fill='none' opacity='0.05'/%3E%3C/svg%3E");opacity:.3}.header-content{max-width:1400px;margin:0 auto;position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.header-title h1{font-family:palatino,georgia,serif;font-size:1.8rem;font-weight:400;margin-bottom:.25rem}.header-subtitle{opacity:.9;font-size:1rem}.header-meta{text-align:right;font-size:.9rem}.header-meta span{display:block;opacity:.85}.container{max-width:1400px;margin:0 auto;padding:2rem}.view-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;flex-wrap:wrap;border-bottom:2px solid var(--line);padding-bottom:1rem}.tab-btn{font-family:Gentium Plus,georgia,serif;padding:.6rem 1.2rem;border:1px solid var(--line);border-bottom:none;background:var(--warm-white);color:var(--sage-green);cursor:pointer;border-radius:8px 8px 0 0;font-size:.95rem;transition:all .2s ease}.tab-btn:hover{background:var(--cream)}.tab-btn.active{background:var(--sage-green);color:#fff;border-color:var(--sage-green)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:var(--warm-white);padding:1.1rem;border-radius:12px;box-shadow:0 2px 8px #00000014;text-align:center;border:1px solid var(--line);transition:transform .2s ease}.stat-card:hover{transform:translateY(-2px)}.stat-icon{font-size:1.3rem;margin-bottom:.4rem}.stat-number{font-family:palatino,georgia,serif;font-size:2rem;color:var(--sage-green);line-height:1.1}.stat-label{font-size:.8rem;opacity:.8;text-transform:uppercase;letter-spacing:.5px}.view-panel{display:none}.view-panel.active{display:block}.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:2rem}@media (max-width: 1024px){.dashboard-grid{grid-template-columns:1fr}}.chart-card{background:var(--warm-white);border-radius:12px;box-shadow:0 2px 8px #00000014;border:1px solid var(--line);overflow:hidden}.chart-header{background:linear-gradient(to right,var(--cream),var(--warm-white));padding:1rem 1.25rem;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.5rem}.chart-header h3{font-family:palatino,georgia,serif;font-size:1.1rem;font-weight:400;color:var(--sage-dark);margin:0}.chart-body{padding:1.25rem}.chart-container{position:relative;height:280px}.full-width{grid-column:1 / -1}.assignment-table{width:100%;border-collapse:collapse;font-size:.9rem}.assignment-table th,.assignment-table td{padding:.6rem .8rem;text-align:left;border-bottom:1px solid var(--line)}.assignment-table th{background:var(--cream);font-family:palatino,georgia,serif;font-weight:400;position:sticky;top:0}.assignment-table tr:hover td{background:var(--parchment-light)}.table-scroll{max-height:500px;overflow-y:auto}.badge{display:inline-block;padding:.15rem .5rem;border-radius:10px;font-size:.75rem}.badge-math{background:#f8e1dc;color:#8b4d3a}.badge-history{background:#dce8dc;color:#3d5c3d}.badge-ela{background:#e8e4d8;color:#6b5c3d}.badge-science{background:#d8e4e8;color:#3d5c6b}.badge-religion,.badge-guitar{background:#e8dce8;color:#5c3d5c}.badge-success{background:#d4edda;color:#155724}.badge-warning{background:#fff3cd;color:#856404}.badge-danger{background:#f8d7da;color:#721c24}.badge-secondary{background:#e2e3e5;color:#383d41}.badge-info{background:#d1ecf1;color:#0c5460}.analysis-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.analysis-card{background:var(--warm-white);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014;border:1px solid var(--line)}.analysis-header{padding:.85rem 1.25rem;font-family:palatino,georgia,serif;color:#fff;display:flex;align-items:center;gap:.5rem;font-size:.95rem}.analysis-header.strength{background:var(--chart-success)}.analysis-header.weakness{background:var(--chart-danger)}.analysis-header.developing{background:var(--chart-warning);color:var(--sage-dark)}.analysis-header.subject{background:var(--sage-green)}.analysis-body{padding:1.25rem}.analysis-body ul{list-style:none}.analysis-body li{padding:.5rem 0;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:.5rem;font-size:.95rem}.analysis-body li:last-child{border-bottom:none}.analysis-body li:before{content:">";color:var(--sage-green);font-weight:700;font-size:1.1rem}.skill-item{margin-bottom:.9rem}.skill-label{display:flex;justify-content:space-between;margin-bottom:.25rem;font-size:.85rem}.skill-bar{background:var(--line);border-radius:6px;height:10px;overflow:hidden}.skill-fill{height:100%;border-radius:6px;transition:width .5s ease}.skill-fill.high{background:var(--chart-success)}.skill-fill.medium{background:var(--chart-warning)}.skill-fill.low{background:var(--chart-danger)}.recommendations-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}.recommendation-card{background:var(--warm-white);border-radius:12px;padding:1.1rem;border:1px solid var(--line)}.recommendation-card h4{font-family:palatino,georgia,serif;color:var(--sage-green);font-weight:400;margin-bottom:.4rem;font-size:.95rem}.recommendation-card p{font-size:.85rem;line-height:1.5}.priority-tag{display:inline-block;font-size:.7rem;padding:.15rem .45rem;border-radius:4px;margin-bottom:.4rem}.priority-high{background:#f8d7da;color:#721c24}.priority-medium{background:#fff3cd;color:#856404}.priority-low{background:#d4edda;color:#155724}.quote-box{background:var(--cream);border-left:4px solid var(--sage-green);padding:.9rem;margin:.6rem 0;font-style:italic;border-radius:0 8px 8px 0;font-size:.95rem}.quote-attribution{font-size:.8rem;color:var(--sage-light);margin-top:.4rem;font-style:normal}.teacher-feedback{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem}.feedback-item{background:var(--cream);padding:.6rem 1rem;border-radius:8px;font-size:.9rem}.feedback-emoji{font-size:1.2rem;margin-right:.3rem}.timeline{position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:.5rem;top:0;bottom:0;width:2px;background:var(--line)}.timeline-item{position:relative;padding-bottom:1.25rem}.timeline-dot{position:absolute;left:-1.75rem;width:12px;height:12px;border-radius:50%;background:var(--sage-green);border:2px solid var(--warm-white)}.timeline-content{background:var(--warm-white);padding:.9rem;border-radius:8px;border:1px solid var(--line)}.timeline-date{font-size:.75rem;color:var(--sage-light);margin-bottom:.2rem}.evidence-badge{cursor:help;font-size:.8rem;opacity:.7;margin-left:.3rem;transition:opacity .2s ease}.evidence-badge:hover{opacity:1}.dashboard-footer{text-align:center;padding:2rem;color:var(--sage-light);font-size:.85rem;border-top:1px solid var(--line);margin-top:2rem}.dashboard-footer a{color:var(--sage-green);text-decoration:none}.empty-state{text-align:center;padding:3rem 2rem;color:var(--sage-light)}.empty-state-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-state h3{font-family:palatino,georgia,serif;font-weight:400;margin-bottom:.5rem;color:var(--text-dark)}.empty-state p{font-size:.9rem;max-width:400px;margin:0 auto}.student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-bottom:2rem}.student-card{background:var(--warm-white);border-radius:12px;box-shadow:0 2px 8px #00000014;border:1px solid var(--line);overflow:hidden;transition:transform .2s ease,box-shadow .2s ease;text-decoration:none;color:inherit;display:block}.student-card:hover{transform:translateY(-4px);box-shadow:0 4px 16px #0000001f}.student-card-header{background:linear-gradient(135deg,var(--sage-dark) 0%,var(--sage-green) 100%);color:#fff;padding:1.25rem}.student-card-header h2{font-family:palatino,georgia,serif;font-size:1.3rem;font-weight:400;margin-bottom:.25rem}.student-card-header .grade{font-size:.9rem;opacity:.85}.student-card-body{padding:1.25rem}.student-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.student-meta .badge{font-size:.7rem;padding:.2rem .6rem}.student-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;text-align:center;margin-bottom:1rem}.student-stat{padding:.5rem;background:var(--cream);border-radius:8px}.student-stat-value{font-family:palatino,georgia,serif;font-size:1.2rem;color:var(--sage-green)}.student-stat-label{font-size:.7rem;text-transform:uppercase;opacity:.7}.data-completeness{display:flex;align-items:center;gap:.5rem;font-size:.8rem}.completeness-bar{flex:1;height:6px;background:var(--line);border-radius:3px;overflow:hidden}.completeness-fill{height:100%;border-radius:3px;transition:width .3s ease}.completeness-fill.high{background:var(--chart-success)}.completeness-fill.medium{background:var(--chart-warning)}.completeness-fill.low{background:var(--chart-danger)}.status-active{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--chart-success)}.status-active:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--chart-success)}.status-inactive{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--sage-light)}.status-inactive:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--line)}.progress-indicator{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border-radius:6px;font-size:.75rem}.progress-strong{background:#3d7a471a;color:var(--chart-success)}.progress-developing{background:#c4a35a1a;color:var(--chart-warning)}.progress-needs-attention{background:#a65d4c1a;color:var(--chart-danger)}.progress-no-data{background:var(--cream);color:var(--sage-light)}.session-log{margin-top:1rem}.session-entry{display:flex;align-items:center;gap:1rem;padding:.75rem;background:var(--cream);border-radius:8px;margin-bottom:.5rem}.session-date{font-size:.8rem;color:var(--sage-light);min-width:80px}.session-rating{font-family:palatino,georgia,serif;font-size:1.1rem;color:var(--sage-green);min-width:40px}.session-notes{flex:1;font-size:.85rem}.card-section-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.8px;color:var(--sage-light);margin-bottom:.5rem;font-weight:600}.engagement-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem}.engagement-metric{background:var(--cream);border-radius:8px;padding:.6rem .4rem;text-align:center}.engagement-value{font-family:palatino,georgia,serif;font-size:1.3rem;color:var(--sage-green);line-height:1.2}.engagement-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.5px;color:var(--sage-light);margin-top:.15rem}.progress-section{background:var(--parchment-light);border-radius:8px;padding:.75rem;margin-bottom:1rem;font-size:.9rem;color:var(--text-dark)}.progress-section .no-data{color:var(--sage-light);font-style:italic}.data-maturity{display:flex;align-items:center;gap:1rem;font-size:.8rem;padding-top:.5rem;border-top:1px solid var(--line)}.maturity-item{display:flex;align-items:center;gap:.35rem}.maturity-dot{width:10px;height:10px;border-radius:50%;border:2px solid var(--sage-green)}.maturity-dot.filled{background:var(--sage-green)}.maturity-dot.empty{background:transparent}.maturity-label{color:var(--sage-light);font-size:.75rem}.status-new{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;color:#0c5460;background:#d1ecf1;padding:.15rem .5rem;border-radius:4px}@media print{.view-tabs{display:none}.view-panel{display:block!important;page-break-inside:avoid}.student-card{break-inside:avoid}}.view-panel-react{display:block}
