@import url('https://cdn.fontcdn.ir/Font/Persian/Vazir/Vazir.css');
:root{--bg:#f8f5ef;--card:#fffefa;--ink:#202020;--muted:#66615a;--line:#202020;--yellow:#ffd866;--soft-yellow:#fff0b8;--orange:#f28c00;--deep-orange:#d96b00;--blue:#cfe3f8;--pink:#f5b6b6;--green:#cfe8c8;--lav:#e2d8f4;--shadow:0 7px 0 rgba(32,32,32,.05),0 16px 32px rgba(63,47,28,.06)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Vazir',Tahoma,sans-serif;font-size:14px}button,input{font:inherit}button{cursor:pointer;border:0;background:none;color:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:264px;background:#fffdf8;border-left:1px solid #eee7dc;padding:26px 18px 18px;display:flex;flex-direction:column;gap:28px;flex-shrink:0}.brand,.teacher-mini,.profile-chip,.top-actions,.welcome-row,.panel-heading,.section-heading,.topbar,.filter-row,.big-session,.session-row,.team-top,.team-foot,.table-row,.progress-summary,.modal-actions{display:flex;align-items:center}.brand{gap:11px;padding:0 8px}.brand-mark{width:38px;height:38px;border:2px solid var(--ink);border-radius:13px;background:var(--yellow);display:grid;place-items:center;font-size:22px;box-shadow:3px 3px 0 var(--ink)}.brand strong{font-size:19px;display:block}.brand span,.teacher-mini span{font-size:11px;color:var(--muted);display:block;margin-top:1px}.teacher-mini{gap:10px;padding:12px 9px;border:1px solid #eee4d5;border-radius:18px;background:#fcfaf5}.teacher-mini strong{font-size:12px}.teacher-mini .icon-btn{margin-right:auto;font-size:15px;color:var(--muted)}.avatar{width:35px;height:35px;border-radius:13px;display:grid;place-items:center;font-weight:800}.avatar-orange{background:var(--orange)}.avatar-purple{background:var(--lav)}.main-nav{display:grid;gap:6px}.nav-item{width:100%;text-align:right;padding:12px 13px;border-radius:13px;display:flex;align-items:center;gap:13px;color:#716b63;font-weight:600}.nav-item span{font-size:19px;width:21px;text-align:center}.nav-item.active,.nav-item:hover{background:var(--soft-yellow);color:var(--ink)}.sidebar-tip{margin-top:auto;border:1.5px solid var(--ink);border-radius:20px;background:var(--lav);padding:18px 16px;position:relative;overflow:hidden}.sidebar-tip:after{content:'';position:absolute;width:60px;height:60px;border-radius:50%;background:#fff;left:-22px;bottom:-28px;opacity:.45}.tip-spark{font-size:23px;display:block;margin-bottom:9px}.sidebar-tip strong{font-size:13px}.sidebar-tip p{font-size:11px;line-height:1.9;margin:5px 0 10px;color:#4d4850}.text-link{color:var(--deep-orange);font-size:12px;font-weight:700;padding:0}.sidebar-bottom{border-top:1px solid #eee7dc;padding-top:14px}.main-content{flex:1;min-width:0}.topbar{height:79px;border-bottom:1px solid #eee7dc;padding:0 44px;justify-content:space-between;background:rgba(255,253,248,.6)}.breadcrumb{display:flex;gap:10px;color:#a09a91;font-size:12px}.breadcrumb strong{color:var(--ink)}.top-actions{gap:22px}.icon-btn{font-size:21px;padding:4px;position:relative}.notification i{width:6px;height:6px;background:var(--orange);border-radius:50%;position:absolute;right:3px;top:2px}.profile-chip{gap:9px;font-size:12px;font-weight:700}.profile-chip .avatar{width:31px;height:31px}.mobile-menu{display:none}.page-view{display:none;padding:39px 44px 60px;max-width:1450px;margin:auto}.active-view{display:block}.welcome-row{justify-content:space-between;margin-bottom:31px}.eyebrow{color:var(--deep-orange);font-size:11px;font-weight:800;margin:0 0 6px}.welcome-row h1,.section-heading h1{font-size:29px;margin:0;letter-spacing:-.8px}.wave{font-size:24px}.subtitle{color:var(--muted);margin:6px 0 0;font-size:12px}.primary-btn,.secondary-btn,.outline-btn,.select-btn{border-radius:12px;padding:11px 17px;font-weight:700;font-size:12px;transition:.2s}.primary-btn{background:var(--orange);color:#fff;border:1.5px solid var(--ink);box-shadow:3px 3px 0 var(--ink)}.primary-btn:hover{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}.secondary-btn{background:var(--soft-yellow);border:1px solid var(--ink)}.outline-btn,.select-btn{border:1px solid #d5cec3;background:#fffefa}.select-btn{color:var(--muted);font-size:11px;padding:8px 12px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:19px}.metric-card{min-height:143px;border:1.5px solid var(--ink);border-radius:22px;padding:17px;display:flex;gap:12px;position:relative;overflow:hidden;box-shadow:var(--shadow)}.metric-card.yellow{background:var(--yellow)}.metric-card.blue{background:var(--blue)}.metric-card.pink{background:var(--pink)}.metric-card.green{background:var(--green)}.metric-icon{font-size:22px;width:39px;height:39px;border-radius:14px;background:#fff8;display:grid;place-items:center;flex-shrink:0}.metric-card span{font-size:11px;display:block;margin-top:2px}.metric-card strong{font-size:27px;display:block;margin-top:8px;letter-spacing:-1px}.metric-card small{font-size:10px;font-weight:500;letter-spacing:0}.metric-card em{font-size:10px;font-style:normal;display:block;margin-top:5px}.metric-doodle{position:absolute;bottom:-9px;left:12px;font-size:39px;opacity:.14}.content-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:19px;margin-bottom:19px}.panel{background:var(--card);border:1px solid #e9e0d2;border-radius:22px;padding:22px;box-shadow:var(--shadow)}.panel-heading{justify-content:space-between;margin-bottom:14px}.panel h2{font-size:15px;margin:0 0 4px}.panel-heading p{font-size:11px;color:var(--muted);margin:0}.legend{display:flex;gap:20px;color:var(--muted);font-size:10px}.dot{width:8px;height:8px;border-radius:50%;background:var(--orange);display:inline-block;margin-left:5px}.dot.lavender{background:#9d86cc}.chart-wrap{height:225px;margin-top:8px}.chart-wrap svg{width:100%;height:100%;overflow:visible}.chart-wrap svg:before{content:''}.chart-wrap line{stroke:#eee8de}.chart-labels text{font-family:'Vazir';font-size:10px;fill:#938d84;text-anchor:middle}.ring-layout{display:flex;align-items:center;gap:29px;min-height:151px}.donut{width:137px;height:137px;border-radius:50%;background:conic-gradient(var(--orange) 0 38%,#7daedb 38% 88%,var(--pink) 88%);display:grid;place-items:center;position:relative;flex-shrink:0}.donut:after{content:'';position:absolute;inset:17px;background:var(--card);border-radius:50%}.donut div{z-index:1;text-align:center}.donut strong{font-size:28px;display:block}.donut span{font-size:10px;color:var(--muted)}.status-list{flex:1;display:grid;gap:15px}.status-list div{display:flex;align-items:center;gap:5px;font-size:11px}.status-list b{margin-right:auto;font-size:12px}.blue-dot{background:#7daedb}.pink-dot{background:var(--pink)}.mini-callout{background:#fff4cf;border-radius:13px;padding:9px 11px;display:flex;gap:9px;align-items:center}.mini-callout span{font-size:19px}.mini-callout p{font-size:10px;line-height:1.8;margin:0;color:#5f5544}.mini-callout strong{color:var(--deep-orange)}.lower-grid{grid-template-columns:1.55fr .8fr}.session-list{display:grid}.session-row{padding:13px 0;border-bottom:1px solid #eee8de;gap:13px}.session-row:last-child{border:0;padding-bottom:0}.session-date{width:42px;height:47px;background:#f8f4ec;border-radius:12px;text-align:center;padding-top:5px;flex-shrink:0}.session-date strong{font-size:17px;display:block;line-height:1.2}.session-date span{font-size:9px;color:var(--muted)}.session-info{flex:1;min-width:0}.session-info strong{display:block;font-size:12px}.session-info span{display:block;color:var(--muted);font-size:10px;margin-top:4px}.badge{padding:5px 8px;border-radius:8px;font-size:9px;font-weight:700;white-space:nowrap}.badge-green{background:var(--green);color:#28612f}.badge-yellow{background:var(--soft-yellow);color:#835f00}.badge-blue{background:var(--blue);color:#356289}.badge-pink{background:var(--pink);color:#854949}.badge-dark{background:var(--ink);color:#fff}.row-score{font-size:14px;width:58px;text-align:left}.row-score small{font-size:8px;font-weight:400;color:var(--muted)}.highlight-panel{background:var(--soft-yellow);border-color:var(--ink);position:relative;overflow:hidden}.highlight-art{font-size:55px;position:absolute;left:16px;top:15px;transform:rotate(-10deg)}.highlight-panel h2{font-size:21px;margin:21px 0 0}.highlight-panel p{font-size:11px;color:#5f574d;line-height:1.8}.progress-line{margin-top:34px}.progress-line div:first-child,.team-foot{justify-content:space-between;font-size:10px}.progress-line b,.team-foot b{color:var(--deep-orange)}.progress{height:7px;background:#fff;border-radius:10px;margin-top:7px;overflow:hidden}.progress i,.team-progress i,.table-progress i{height:100%;display:block;background:var(--orange);border-radius:inherit}.highlight-panel .secondary-btn{margin-top:23px;background:#fff}.section-heading{justify-content:space-between;margin-bottom:28px}.section-heading h1{font-size:27px}.session-board{padding:18px}.filter-row{gap:10px;margin-bottom:11px}.search{flex:1;border:1px solid #e4ddd2;border-radius:12px;padding:8px 12px;color:#a09a91}.search input{border:0;outline:0;background:transparent;margin-right:7px;width:85%;font-size:11px}.big-session{gap:17px;padding:17px 11px;border-bottom:1px solid #eee8de}.big-session:last-child{border:0}.big-session .large{width:65px;height:58px}.big-session .session-info{min-width:220px}.big-session>b{font-size:16px;width:70px;text-align:center}.big-session>b small{font-size:9px;color:var(--muted);font-weight:400;display:block}.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.team-card{border:1.5px solid var(--ink);border-radius:22px;padding:20px;min-height:210px;box-shadow:var(--shadow)}.orange-card{background:var(--yellow)}.blue-card{background:var(--blue)}.pink-card{background:var(--pink)}.lavender-card{background:var(--lav)}.team-top{justify-content:space-between}.team-icon{width:43px;height:43px;background:#fff9;border-radius:14px;display:grid;place-items:center;font-size:22px}.team-card h2{margin:18px 0 4px;font-size:18px}.team-card p{font-size:11px;color:#5e5a54}.team-progress{height:8px;background:#fff8;border-radius:10px;margin:27px 0 10px;overflow:hidden}.team-foot{font-size:10px}.progress-summary{gap:18px;margin-bottom:19px}.progress-big{display:flex;gap:14px;align-items:center;flex:1;background:var(--green);border-color:var(--ink)}.progress-big .metric-icon{background:#fff8}.progress-big>div>span{font-size:11px}.progress-big strong{font-size:30px;display:block;margin:3px 0}.progress-big p{font-size:10px;margin:0;color:#526052}.progress-big p b{color:#26732f}.insight{flex:1;display:flex;gap:14px;align-items:flex-start;background:var(--lav)}.insight>span{font-size:24px}.insight strong{font-size:13px}.insight p{font-size:11px;line-height:1.9;margin:5px 0 0;color:#5f5863}.progress-table{display:grid}.table-head,.table-row{grid-template-columns:1.2fr 1.4fr .6fr .7fr;display:grid;align-items:center;gap:15px;padding:14px 6px;border-bottom:1px solid #eee8de;font-size:11px}.table-head{color:#918b83;font-size:10px}.table-row:last-child{border:0}.table-progress{height:7px;background:#f0ebe3;border-radius:10px;overflow:hidden}.table-row>b{color:var(--deep-orange)}.rules-grid{display:grid;gap:17px;max-width:850px}.rule-card{display:flex;gap:17px;align-items:flex-start}.rule-number{background:var(--yellow);width:36px;height:36px;border:1px solid var(--ink);border-radius:12px;display:grid;place-items:center;font-weight:800;flex-shrink:0}.rule-card h2{margin:2px 0 5px;font-size:15px}.rule-card p{margin:0 0 15px;color:var(--muted);font-size:11px}.rule-card label{font-size:11px;font-weight:700}.rule-card input[type=number]{border:1px solid #d7d0c5;border-radius:9px;width:75px;padding:7px;margin-right:8px}.switch-label{display:flex;gap:9px;align-items:center}.switch-label input{display:none}.switch{width:36px;height:20px;background:var(--orange);border-radius:20px;position:relative}.switch:after{content:'';width:16px;height:16px;background:#fff;border-radius:50%;position:absolute;left:2px;top:2px}.modal-backdrop{position:fixed;inset:0;background:#211b1480;display:none;place-items:center;z-index:5;padding:20px}.modal-backdrop.show{display:grid}.modal{width:min(430px,100%);background:var(--card);border:1.5px solid var(--ink);border-radius:24px;padding:28px;box-shadow:10px 10px 0 #0002;position:relative}.close-btn{position:absolute;left:18px;top:15px;font-size:25px;color:var(--muted)}.modal-spark{font-size:30px;color:var(--orange)}.modal h2{font-size:22px;margin:10px 0 5px}.modal p{color:var(--muted);font-size:11px;margin:0 0 22px}.modal label{display:block;font-size:11px;font-weight:700;margin-top:13px}.modal input{display:block;width:100%;padding:11px 12px;border:1px solid #d9d0c4;border-radius:11px;margin-top:6px;outline-color:var(--orange);background:#fff}.modal-actions{justify-content:flex-start;gap:10px;margin-top:25px}.toast{position:fixed;bottom:23px;left:23px;background:var(--ink);color:#fff;border-radius:14px;padding:12px 16px;display:flex;gap:10px;align-items:center;transform:translateY(130px);transition:.3s;z-index:6}.toast.show{transform:translateY(0)}.toast>span{background:var(--green);color:#28612f;width:25px;height:25px;border-radius:50%;display:grid;place-items:center}.toast strong,.toast small{display:block}.toast strong{font-size:11px}.toast small{font-size:9px;color:#ddd;margin-top:2px}
@media(max-width:1100px){.sidebar{width:225px}.topbar,.page-view{padding-right:25px;padding-left:25px}.metric-grid{grid-template-columns:repeat(2,1fr)}.team-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.sidebar{position:fixed;right:0;top:0;bottom:0;z-index:4;transform:translateX(105%);transition:.25s;box-shadow:-10px 0 30px #0001}.sidebar.open{transform:translateX(0)}.mobile-menu{display:block}.topbar{height:65px;padding:0 17px}.breadcrumb{font-size:10px}.profile-chip span:not(.avatar){display:none}.top-actions{gap:11px}.page-view{padding:27px 17px 45px}.welcome-row,.section-heading{align-items:flex-start;gap:18px;flex-direction:column}.welcome-row h1,.section-heading h1{font-size:24px}.metric-grid,.content-grid,.lower-grid,.progress-summary{grid-template-columns:1fr;display:grid}.metric-card{min-height:125px}.panel{padding:17px}.chart-wrap{height:185px}.ring-layout{justify-content:center}.session-row{flex-wrap:wrap}.session-row .session-info{min-width:calc(100% - 60px)}.row-score{margin-right:auto}.big-session{flex-wrap:wrap}.big-session .session-info{min-width:calc(100% - 85px)}.big-session .badge{margin-right:auto}.big-session>b{margin-right:auto}.team-grid{grid-template-columns:1fr}.table-panel{overflow:auto}.progress-table{min-width:570px}.table-head,.table-row{grid-template-columns:1.2fr 1.4fr .6fr .7fr}.filter-row{flex-wrap:wrap}.search{min-width:100%}.sidebar-bottom{margin-top:auto}}

/* Teacher dashboard three-part workspace */
.app-shell{align-items:stretch}.secondary-panel{width:282px;flex-shrink:0;background:#fffdf8;border-right:1px solid #eee7dc;padding:29px 20px 18px;display:flex;flex-direction:column;gap:22px}.secondary-head{display:flex;align-items:center;justify-content:space-between}.secondary-head h2{font-size:20px;margin:0}.secondary-head .icon-btn{font-size:16px;color:var(--muted)}.top-search{width:235px;border:1px solid #e2dbd1;background:#fffefa;border-radius:11px;color:#999188;padding:8px 11px;font-size:15px}.top-search input{border:0;outline:0;background:transparent;width:calc(100% - 25px);font-size:10px;margin-right:7px}.nav-section-label{font-size:9px;color:#aaa197;font-weight:700;padding:0 13px;margin-top:-12px;margin-bottom:-17px}.calendar-card{border:1px solid #ece3d5;border-radius:18px;background:#fffefa;padding:15px 11px}.calendar-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:14px}.calendar-top button{font-size:18px;color:#928a80}.weekdays,.days{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:5px}.weekdays{color:#a39b91;font-size:9px;margin-bottom:7px}.days{font-size:10px;color:#5d574f}.days i{font-style:normal;width:24px;height:24px;display:grid;place-items:center;border-radius:8px;margin:auto}.days .today{background:var(--orange);color:#fff;border:1px solid var(--ink);font-weight:800}.secondary-block{border-top:1px solid #eee7dc;padding-top:17px}.secondary-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.secondary-title h3{font-size:13px;margin:0}.secondary-title .text-link{font-size:10px}.activity-list{display:grid;gap:16px}.activity{display:flex;gap:9px;align-items:flex-start}.activity-icon{width:31px;height:31px;border-radius:10px;display:grid;place-items:center;font-size:14px;flex-shrink:0}.orange-tint{background:var(--soft-yellow);color:var(--deep-orange)}.blue-tint{background:var(--blue);color:#356289}.green-tint{background:var(--green);color:#28612f}.activity strong{font-size:10px;display:block}.activity p{font-size:9px;color:#6f6960;margin:3px 0}.activity small{font-size:8px;color:#aaa197}.reminder-card{display:flex;gap:10px;align-items:flex-start;background:var(--lav);border:1px solid #d5c5eb;border-radius:17px;padding:13px 11px}.reminder-icon{background:#fff9;border-radius:10px;width:31px;height:31px;display:grid;place-items:center;font-size:18px}.reminder-card strong{font-size:10px}.reminder-card p{font-size:9px;line-height:1.7;color:#5c5365;margin:4px 0 5px}.reminder-card .text-link{font-size:9px}.secondary-footer{margin-top:auto;border-top:1px solid #eee7dc;padding-top:14px;color:#a39b91;font-size:9px;display:flex;gap:6px;align-items:center}.status-dot{width:7px;height:7px;border-radius:50%;background:#76b882}.focus-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:19px;margin-bottom:19px}.attention-panel{border-color:var(--ink);background:#fffefa}.soft-count{background:var(--soft-yellow);color:#846100;padding:5px 8px;border-radius:8px;font-size:9px;font-weight:700}.attention-item{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid #eee8de}.group-avatar{width:37px;height:37px;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:16px;flex-shrink:0}.pink-bg{background:var(--pink)}.lavender-bg{background:var(--lav)}.group-copy{flex:1;min-width:105px}.group-copy strong{display:block;font-size:11px}.group-copy span{display:block;font-size:9px;color:var(--muted);margin-top:3px}.tiny-progress{height:5px;background:#f0ebe3;border-radius:5px;overflow:hidden;margin-top:8px}.tiny-progress i{height:100%;display:block;background:var(--orange);border-radius:inherit}.attention-score{font-size:12px;color:#b46400;text-align:center}.attention-score small{display:block;color:#999188;font-size:8px;font-weight:400}.quick-btn{border:1px solid #d9d0c4;border-radius:8px;padding:6px 8px;color:var(--deep-orange);font-size:9px;background:#fff}.top-growth{background:var(--soft-yellow);border-color:var(--ink)}.more-btn{color:#999188;letter-spacing:2px}.growth-hero{display:flex;align-items:center;gap:10px;padding:8px 0 16px;border-bottom:1px solid #eadfbf}.growth-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#fff9;border:1px solid #fff;font-size:20px;color:var(--deep-orange)}.growth-hero div{flex:1}.growth-hero strong{display:block;font-size:12px}.growth-hero span{display:block;font-size:9px;color:#716550;margin-top:3px}.growth-hero>b{font-size:15px;color:var(--deep-orange)}.growth-row{display:grid;grid-template-columns:25px 75px 1fr 40px;gap:7px;align-items:center;padding:11px 0;border-bottom:1px solid #eadfbf;font-size:9px}.rank-bubble{width:21px;height:21px;border-radius:7px;background:#fff9;display:grid;place-items:center}.growth-row .tiny-progress{margin:0}.growth-row>b{font-size:10px;color:var(--deep-orange);text-align:left}.motivation-note{font-size:9px;color:#856c35;padding-top:13px;display:flex;gap:6px;align-items:center}.motivation-note:first-letter{font-size:17px}.chart-panel{min-height:338px}.chart-panel .legend span:last-child:before{content:'';display:inline-block;width:19px;border-top:3px dashed #6f9ec9;margin-left:5px;vertical-align:middle}.chart-panel .chart-wrap svg path:nth-of-type(2){stroke-dasharray:7 6}.chart-panel .chart-wrap svg circle{vector-effect:non-scaling-stroke}
@media(max-width:1280px){.secondary-panel{width:245px}.top-search{width:190px}.focus-grid{grid-template-columns:1.25fr 1fr}.attention-item{gap:7px}.attention-item .badge{display:none}}
@media(max-width:900px){.secondary-panel{display:none}.top-search{width:220px}.focus-grid{grid-template-columns:1fr}.app-shell{display:block}.main-content{width:100%}}
@media(max-width:560px){.top-search{display:none}.welcome-row .primary-btn{width:100%}.attention-item{flex-wrap:wrap}.attention-item .group-copy{min-width:calc(100% - 55px)}.attention-item .attention-score{margin-right:auto}.focus-grid{gap:14px}.secondary-panel{display:none}}
.chart-panel .chart-wrap svg path:nth-of-type(2){stroke-dasharray:none}.chart-panel .chart-wrap svg path:nth-of-type(3){stroke-dasharray:8 7}.chart-tooltip rect{fill:#202020;opacity:.94}.chart-tooltip text{font-family:'Vazir';fill:#fff;text-anchor:middle;font-size:10px}.chart-tooltip text+text{font-size:8px;fill:#ffd866}
.class-toolbar,.student-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:20px}.class-search{flex:1;max-width:420px}.class-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.class-card{border:3px dotted var(--accent,#c99000);border-radius:26px;padding:20px;min-height:315px;box-shadow:0 6px 0 var(--accent-soft,rgba(201,144,0,.28)),0 18px 34px rgba(63,47,28,.10);position:relative;overflow:hidden;transition:transform .18s,box-shadow .18s}.class-card:after{content:'';position:absolute;width:140px;height:140px;border-radius:50%;left:-52px;bottom:-75px;background:#fff8}.class-yellow{background:var(--yellow);--accent:#c99000;--accent-soft:rgba(201,144,0,.28)}.class-blue{background:var(--blue);--accent:#4f86c2;--accent-soft:rgba(79,134,192,.30)}.class-lavender{background:var(--lav);--accent:#8a6fc0;--accent-soft:rgba(138,111,192,.30)}.class-card-top{display:flex;align-items:center;justify-content:space-between}.class-illustration{width:50px;height:50px;border-radius:16px;background:#fffdf6;display:grid;place-items:center;font-size:25px;border:2px solid var(--accent,#c99000);box-shadow:2px 2px 0 var(--accent-soft,rgba(201,144,0,.28))}.class-card h2{font-size:17px;margin:18px 0 9px;position:relative;z-index:1;line-height:1.7}.class-year{display:inline-block;font-size:10px;color:#5c554b;margin:0;background:rgba(255,255,255,.72);border:1px solid rgba(32,32,32,.16);border-radius:999px;padding:4px 12px;font-weight:700}.class-stats{display:flex;gap:9px;margin-top:18px;position:relative;z-index:1}.class-stats span{font-size:9px;color:#5f594f;background:rgba(255,255,255,.72);border:1.2px solid rgba(32,32,32,.15);border-radius:14px;padding:8px 8px;text-align:center;min-width:62px;flex:1;font-weight:700}.class-stats b{font-size:17px;color:var(--ink);display:block;margin-bottom:2px}.class-progress{margin-top:23px;position:relative;z-index:1}.class-progress>div:first-child{display:flex;justify-content:space-between;font-size:9px}.class-progress .progress{height:7px;margin-top:7px;background:#fff9}.class-card .secondary-btn{position:absolute;right:20px;bottom:20px;background:#fffefa;z-index:1;font-size:10px;border:1.5px solid var(--ink);border-radius:13px;box-shadow:2px 2px 0 rgba(32,32,32,.14);font-weight:800;padding:9px 14px}.empty-class-card{min-height:315px;border:1.5px dashed #bdb3a3;border-radius:26px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fbf8f2;color:#786f65;transition:.18s}
.empty-class-card:hover{border-color:var(--deep-orange);background:#fdf9f1;transform:translateY(-3px);box-shadow:0 10px 0 rgba(32,32,32,.05),0 24px 40px rgba(63,47,28,.10)}.empty-class-card>div{width:50px;height:50px;border-radius:16px;background:var(--soft-yellow);display:grid;place-items:center;font-size:24px;margin-bottom:12px}.empty-class-card strong{font-size:13px;color:var(--ink)}.empty-class-card p{font-size:10px;line-height:1.8;margin:6px 20px 9px}.empty-state{display:none;text-align:center;padding:55px 20px;color:var(--muted)}.empty-state>div{width:51px;height:51px;border-radius:17px;background:var(--soft-yellow);display:grid;place-items:center;font-size:24px;margin:0 auto 13px}.empty-state h2{font-size:15px;color:var(--ink);margin:0 0 5px}.empty-state p{font-size:11px;margin:0}.detail-back{margin-bottom:17px}.class-detail-hero{background:var(--soft-yellow);border:3px dashed #e0a800;border-radius:26px;padding:27px 25px;display:flex;align-items:center;gap:18px;box-shadow:7px 7px 0 rgba(32,32,32,.08),0 18px 36px rgba(63,47,28,.08)}.detail-illustration{width:65px;height:65px;border-radius:20px;background:#fff9;display:grid;place-items:center;font-size:31px;border:1px solid var(--ink)}.detail-copy{flex:1}.detail-copy h1{font-size:24px;margin:3px 0}.detail-copy>p:last-child{font-size:11px;color:#6e6457;margin:5px 0 0}.detail-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.detail-metrics>div{background:var(--card);border:1px solid #ebe2d4;border-radius:17px;padding:15px 17px}.detail-metrics span{font-size:10px;color:var(--muted);display:block}.detail-metrics strong{display:block;font-size:23px;margin-top:5px}.detail-metrics .detail-progress strong{display:inline-block;margin-left:7px;color:var(--deep-orange)}.detail-progress .progress{height:7px;display:inline-block;width:55%;vertical-align:middle;margin:0;background:#f1e9dd}.segmented-tabs{display:flex;gap:4px;background:#f0ebe3;border-radius:14px;padding:4px;width:max-content;max-width:100%;margin-bottom:20px}.segmented-tabs button{padding:9px 15px;border-radius:10px;font-size:11px;color:#776f66}.segmented-tabs button.active{background:#fffefa;color:var(--ink);font-weight:800;box-shadow:0 2px 7px #4b392415}.detail-tab{display:none}.detail-tab.active{display:block}.detail-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.detail-toolbar h2{font-size:16px;margin:0 0 5px}.detail-toolbar p{font-size:10px;color:var(--muted);margin:0}.student-toolbar{margin-bottom:10px}.student-toolbar .select-btn{margin-right:0}.student-table{background:var(--card);border:1px solid #e9e0d2;border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}.student-head,.student-row{display:grid;grid-template-columns:1.4fr .55fr .6fr .85fr .8fr .95fr .5fr 1fr 84px;align-items:center;gap:10px;padding:14px 17px;font-size:10px}.student-head{background:#fbf8f2;color:#958d84;font-size:9px}.student-row{border-top:1px solid #eee8de;min-height:63px}.student-person{display:flex;align-items:center;gap:9px}.student-person strong{font-size:11px}.student-avatar{width:31px;height:31px;border-radius:11px;display:grid;place-items:center;font-weight:800}.avatar-pink{background:var(--pink)}.avatar-green{background:var(--green)}.student-row>span:not(.badge){color:#6d665e}.student-progress{height:6px;border-radius:8px;background:#efeae2;overflow:hidden}.student-progress i{display:block;height:100%;background:var(--orange);border-radius:inherit}.student-row>b{font-size:10px;color:var(--deep-orange)}.row-more{color:#a0988e;letter-spacing:2px}.tab-placeholder{min-height:250px;background:var(--card);border:1px dashed #d8cec0;border-radius:20px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}.tab-placeholder>div{width:51px;height:51px;border-radius:17px;background:var(--lav);display:grid;place-items:center;font-size:25px}.tab-placeholder h2{font-size:15px;margin:14px 0 5px}.tab-placeholder p{font-size:11px;color:var(--muted);margin:0}.student-modal select{display:block;width:100%;padding:11px 12px;border:1px solid #d9d0c4;border-radius:11px;margin-top:6px;outline-color:var(--orange);background:#fff}.validation-message{display:none;color:#a25d17;background:var(--soft-yellow);border-radius:9px;padding:8px 10px;font-size:10px;margin-top:12px}.validation-message.show{display:block}
@media(max-width:1100px){.class-grid{grid-template-columns:repeat(2,1fr)}.student-head,.student-row{grid-template-columns:1.3fr .5fr .55fr .75fr .75fr .9fr .45fr .9fr 78px}.detail-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.class-toolbar,.student-toolbar{flex-wrap:wrap}.class-search{max-width:none;min-width:100%}.class-grid{grid-template-columns:1fr}.class-card,.empty-class-card{min-height:290px}.class-detail-hero{align-items:flex-start;flex-wrap:wrap}.class-detail-hero .outline-btn{margin-right:auto}.detail-copy{min-width:calc(100% - 85px)}.detail-copy h1{font-size:20px}.detail-metrics{grid-template-columns:repeat(2,1fr);gap:9px}.detail-metrics>div{padding:12px}.detail-metrics strong{font-size:20px}.detail-progress{grid-column:span 2}.segmented-tabs{width:100%;overflow:auto}.segmented-tabs button{flex:1;white-space:nowrap;padding:9px 10px}.detail-toolbar{align-items:flex-start;gap:13px;flex-direction:column}.student-table{overflow-x:auto}.student-head,.student-row{min-width:850px}.student-toolbar .select-btn{flex:1}.student-toolbar>.filter-dropdown:last-child{display:none}}
/* Groups section */
.group-filter-row{display:flex;gap:10px;align-items:center;margin-bottom:20px}.group-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.visual-group-card{border:1.5px solid var(--ink);border-radius:24px;padding:19px;box-shadow:var(--shadow);position:relative;overflow:hidden}.group-yellow{background:var(--yellow)}.group-blue{background:var(--blue)}.group-pink{background:var(--pink)}.group-card-head{display:flex;justify-content:space-between;align-items:flex-start}.group-number{font-size:9px;color:#746b5e}.group-card-head h2{font-size:20px;margin:4px 0 0}.group-symbol{width:45px;height:45px;background:#fff9;border-radius:15px;display:grid;place-items:center;font-size:24px}.member-stack{display:flex;align-items:center;margin:22px 0 19px}.member-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:12px;border:2px solid #fffefa;font-weight:800;font-size:12px;margin-left:-7px}.member-stack .member-avatar:first-child{margin-right:0}.av-orange{background:var(--orange)}.av-purple{background:var(--lav)}.av-blue{background:#8dbbe2}.av-green{background:var(--green)}.av-pink{background:var(--pink)}.av-lav{background:#c6b3e8}.member-stack div{margin-right:8px}.member-stack strong,.member-stack small{display:block}.member-stack strong{font-size:10px}.member-stack small{font-size:9px;color:#6b6359;margin-top:3px}.group-score-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:13px 0;border-top:1px solid #0002;border-bottom:1px solid #0002}.group-score-row span{display:block;font-size:8px;color:#756c60}.group-score-row b{display:block;font-size:16px;margin-top:4px}.growth-green{color:#31753b}.growth-orange{color:#b76700}.group-card-progress{margin:15px 0 14px}.group-card-progress>div:first-child{display:flex;justify-content:space-between;font-size:9px}.group-card-progress .progress{height:7px;background:#fff9;margin-top:6px}.group-card-bottom{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.corrected-count{font-size:9px;color:#6d6257}.group-card-bottom .secondary-btn{margin-right:auto;background:#fffefa;padding:8px 10px;font-size:10px}.group-tools-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;margin-top:20px}.pairing-panel,.membership-panel{min-height:270px}.pair-illustration,.membership-icon{width:45px;height:45px;border-radius:15px;background:var(--soft-yellow);display:grid;place-items:center;font-size:24px;color:var(--deep-orange)}.pair-steps{display:flex;align-items:flex-start;justify-content:space-between;margin:22px 0 25px}.pair-step{text-align:center;min-width:70px}.pair-step span{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#f1ece4;color:#8b8278;margin:0 auto 8px;font-weight:800;font-size:11px}.pair-step.active span{background:var(--orange);color:#fff;border:1px solid var(--ink)}.pair-step strong,.pair-step small{display:block}.pair-step strong{font-size:9px}.pair-step small{font-size:8px;color:var(--muted);margin-top:4px}.pair-line{height:1px;background:#ded5c9;flex:1;margin:14px 5px 0}.membership-columns{display:grid;grid-template-columns:1fr 24px 1fr;gap:8px;align-items:center;margin:15px 0}.mini-label{font-size:9px;color:var(--muted);display:block;margin-bottom:7px}.membership-arrow{color:var(--deep-orange);font-size:20px;text-align:center}.member-chip{display:flex;align-items:center;gap:5px;font-size:9px;background:#fbf6ee;border-radius:9px;padding:5px;margin-bottom:5px}.member-chip.new{background:var(--soft-yellow)}.member-chip .member-avatar{width:23px;height:23px;font-size:9px;border:0;margin:0}.history-warning{display:flex;gap:7px;align-items:flex-start;background:var(--soft-yellow);color:#78602c;border-radius:10px;padding:9px;font-size:9px;line-height:1.7}.membership-meta{display:grid;grid-template-columns:1fr 1.45fr;gap:9px;margin:13px 0}.membership-meta label{font-size:9px;color:var(--muted)}.membership-meta input,.membership-meta select{display:block;width:100%;border:1px solid #ddd2c2;background:#fffefa;border-radius:8px;padding:8px 7px;margin-top:5px;font-size:9px}.confirm-membership{font-size:10px}.group-detail-hero{background:var(--yellow);border:1.5px solid var(--ink);border-radius:24px;padding:23px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow)}.group-detail-hero .detail-copy{flex:1}.group-detail-hero .badge{align-self:flex-start}.group-detail-members{margin-top:18px}.detail-member-list{display:flex;gap:12px;flex-wrap:wrap}.detail-member-list>div{display:flex;align-items:center;gap:8px;background:#fbf8f2;border-radius:12px;padding:8px 11px}.detail-member-list .member-avatar{margin:0}.detail-member-list strong{font-size:11px}.group-detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;margin-top:18px}.membership-timeline{position:relative;margin-top:14px;padding-right:11px}.membership-timeline:before{content:'';position:absolute;right:7px;top:6px;bottom:9px;border-right:1px dashed #cabdad}.timeline-item{position:relative;display:flex;gap:14px;padding-bottom:20px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{width:15px;height:15px;border-radius:50%;background:#d7cbbb;border:3px solid var(--card);outline:1px solid #d7cbbb;z-index:1;flex-shrink:0}.timeline-item.current .timeline-dot{background:var(--orange);outline-color:var(--orange)}.timeline-item strong{font-size:10px}.timeline-item p{font-size:10px;color:var(--muted);margin:5px 0 7px}.history-number{display:flex;align-items:baseline;gap:7px;margin:23px 0 18px}.history-number strong{font-size:30px}.history-number span{font-size:10px;color:var(--muted)}.history-number b{font-size:11px;color:#34803e;margin-right:auto}.mini-chart{height:93px;display:flex;align-items:flex-end;gap:10px;border-bottom:1px solid #ece3d8;padding:0 5px}.mini-chart i{display:block;flex:1;background:var(--orange);border-radius:7px 7px 0 0;opacity:.8}.session-history-panel{margin-top:18px}.session-history-row{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid #eee8de}.session-history-row>div{flex:1}.session-history-row strong{font-size:11px}.session-history-row p{font-size:9px;color:var(--muted);margin:4px 0 0}.audit-strip{display:flex;align-items:center;gap:10px;margin-top:18px;background:var(--lav);border-radius:16px;padding:12px 14px}.audit-icon{width:28px;height:28px;background:#fff9;border-radius:9px;display:grid;place-items:center;color:#4d7656}.audit-strip div{flex:1}.audit-strip strong{font-size:10px}.audit-strip p{font-size:9px;color:#5f5863;margin:3px 0}.audit-strip .text-link{font-size:9px}@media(max-width:1100px){.group-card-grid{grid-template-columns:repeat(2,1fr)}.group-tools-grid{grid-template-columns:1fr}.pairing-panel{min-height:auto}}@media(max-width:760px){.group-filter-row{flex-wrap:wrap}.group-filter-row .class-search{min-width:100%}.group-card-grid{grid-template-columns:1fr}.pair-steps{overflow-x:auto;justify-content:flex-start;padding-bottom:5px}.pair-step{min-width:92px}.pair-line{min-width:22px}.membership-columns{grid-template-columns:1fr 20px 1fr}.membership-meta{grid-template-columns:1fr}.group-detail-hero{align-items:flex-start;flex-wrap:wrap}.group-detail-hero .detail-copy{min-width:calc(100% - 80px)}.group-detail-hero .badge{margin-right:auto}.group-detail-grid{grid-template-columns:1fr}.session-history-row{flex-wrap:wrap}.session-history-row .badge{margin-right:auto}.audit-strip{align-items:flex-start;flex-wrap:wrap}.audit-strip .text-link{margin-right:auto}}
/* Session scoring */
.scoring-header{display:flex;align-items:center;justify-content:space-between;padding:20px 23px;border-color:var(--ink);background:#fffefa}.scoring-header-main{display:flex;align-items:center;gap:15px}.scoring-date{width:55px;height:60px;background:var(--yellow);border:1px solid var(--ink)}.scoring-header h1{font-size:22px;margin:2px 0 7px}.session-meta{display:flex;gap:16px;color:var(--muted);font-size:10px}.scoring-header-actions{display:flex;align-items:center;gap:9px}.scoring-note{display:flex;gap:9px;align-items:center;background:var(--soft-yellow);border-radius:14px;padding:10px 14px;margin:15px 0;font-size:10px;color:#6e6043}.scoring-note span{font-size:21px;color:var(--deep-orange)}.scoring-note p{margin:0}.scoring-layout{display:grid;grid-template-columns:1fr 255px;gap:18px;align-items:start}.scoring-board{min-width:0}.board-heading{display:flex;justify-content:space-between;align-items:center;margin:4px 0 13px}.board-heading h2{font-size:16px;margin:0 0 4px}.board-heading p{font-size:10px;color:var(--muted);margin:0}.score-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.score-group-card{border:1.5px solid var(--ink);border-radius:21px;padding:15px;box-shadow:var(--shadow)}.score-yellow{background:var(--yellow)}.score-blue{background:var(--blue)}.score-pink{background:var(--pink)}.score-group-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.score-group-top h2{font-size:17px;margin:3px 0}.score-group-top p{font-size:9px;color:#625b54;margin:0}.score-group-top .badge{margin-top:4px}.counter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:17px}.score-counter{background:#fff8;border-radius:11px;padding:8px 4px;text-align:center}.score-counter>span{font-size:8px;display:block;color:#6b6258;white-space:nowrap}.score-counter>div{display:flex;align-items:center;justify-content:center;gap:3px;margin-top:5px}.score-counter b{font-size:17px;min-width:19px}.counter-btn{width:28px;height:28px;border-radius:9px;background:#fffefa;border:1px solid #c9bdad;font-size:20px;line-height:1;color:var(--ink);display:grid;place-items:center}.counter-btn.plus{background:var(--orange);color:#fff;border-color:var(--ink)}.score-counter.attention .counter-btn.plus{background:#df8a83}.score-counter.neutral .counter-btn.plus{background:#78a8ce}.corrected-btn{margin:11px 0;width:100%;border:1px dashed #a99d8c;background:#fff8;border-radius:10px;padding:8px;font-size:9px;color:#665b4e;display:flex;align-items:center;justify-content:space-between}.corrected-btn span{font-size:16px}.live-score{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:6px;border-top:1px solid #0002;padding-top:11px}.live-score span{font-size:8px;color:#6c6258;display:block}.live-score strong,.live-score b{display:block;font-size:15px;margin-top:3px}.live-score strong{color:var(--deep-orange)}.live-score b{font-size:12px}.score-card-foot{border-top:1px solid #0002;margin-top:10px;padding-top:9px}.mini-status{font-size:8px;color:#6c6258}.mini-status i{display:inline-block;width:7px;height:7px;background:#5d9d68;border-radius:50%;margin-left:4px}.score-summary{position:sticky;top:15px}.live-dot{color:#5d9d68;font-size:9px}.preview-metric{padding:13px 0;border-bottom:1px solid #eee7dc}.preview-metric span,.preview-status>span{display:block;color:var(--muted);font-size:10px}.preview-metric strong{font-size:25px;display:block;margin-top:4px;color:var(--deep-orange)}.preview-metric .progress{height:8px;margin-top:8px;background:#f1ebe3}.preview-status{padding:14px 0}.preview-status strong{display:block;font-size:12px;margin-top:7px}.preview-status i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#77a6d1;margin-right:5px}.mobile-save-bar{display:none}.finalized-banner{display:none;background:var(--lav);border:1px solid #cbbbe1;border-radius:14px;padding:12px 15px;color:#564a63;font-size:11px;margin-top:17px}.finalized-banner.visible{display:block}.score-group-card.finalized{opacity:.82}.score-group-card.finalized .counter-btn{pointer-events:none;filter:grayscale(.4)}@media(max-width:1100px){.score-card-grid{grid-template-columns:repeat(2,1fr)}.scoring-layout{grid-template-columns:1fr}.score-summary{position:static;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.score-summary .panel-heading{grid-column:span 4}.score-summary .preview-metric{border-bottom:0;border-left:1px solid #eee7dc;padding:8px}.score-summary .preview-status{padding:8px}}@media(max-width:760px){.scoring-header{align-items:flex-start;flex-direction:column;gap:16px}.scoring-header-main{align-items:flex-start}.scoring-header h1{font-size:19px}.scoring-header-actions{width:100%;flex-wrap:wrap}.scoring-header-actions .primary-btn{flex:1}.scoring-header-actions .secondary-btn{order:3;width:100%}.session-meta{flex-direction:column;gap:4px}.score-card-grid{grid-template-columns:1fr}.score-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}.score-summary .panel-heading{grid-column:span 2}.score-summary .preview-metric{border-left:0;padding:9px;border-bottom:1px solid #eee7dc}.score-summary .preview-metric:last-of-type{grid-column:span 2}.score-summary .preview-status{grid-column:span 2}.mobile-save-bar{position:sticky;bottom:0;z-index:3;background:#fffdf8;border-top:1px solid #e7dfd4;padding:10px 17px;display:flex;gap:8px;margin:19px -17px -45px}.mobile-save-bar button{flex:1}.scoring-note{align-items:flex-start}.counter-btn{width:34px;height:34px}.score-counter b{font-size:18px}}
/* Authentication and API feedback */
.login-overlay{position:fixed;inset:0;background:var(--bg);z-index:20;display:grid;place-items:center;padding:20px}.login-overlay.hidden{display:none}.login-card{width:min(390px,100%);background:var(--card);border:1.5px solid var(--ink);border-radius:25px;padding:29px;box-shadow:var(--shadow)}.login-card .brand-mark{margin-bottom:20px}.login-card h1{font-size:24px;margin:4px 0}.login-card>p:not(.eyebrow){font-size:11px;color:var(--muted);margin:5px 0 21px}.login-card label{display:block;font-size:11px;font-weight:700;margin-top:13px}.login-card input{display:block;width:100%;padding:12px;border:1px solid #d9d0c4;border-radius:11px;margin-top:6px;outline-color:var(--orange);background:#fff}.login-card .primary-btn{width:100%;margin-top:20px}.login-card small{display:block;text-align:center;font-size:9px;color:#aaa197;margin-top:14px}.login-error{display:none;background:#fff0e6;color:#a25d17;border-radius:9px;font-size:10px;padding:8px;margin-top:12px}.login-error.show{display:block}.api-loading{opacity:.58;pointer-events:none}
/* Corrected answers */
.correction-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:19px}.correction-summary-card{border:1.5px solid var(--ink);border-radius:20px;padding:16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}.summary-orange{background:#ffd4a0}.summary-yellow{background:var(--yellow)}.summary-green{background:var(--green)}.summary-lavender{background:var(--lav)}.summary-icon{width:40px;height:40px;border-radius:13px;background:#fff9;display:grid;place-items:center;font-size:21px}.correction-summary-card span:not(.summary-icon){font-size:9px;display:block}.correction-summary-card strong{font-size:25px;display:block;margin:3px 0}.correction-summary-card small{font-size:8px;color:#6f665d}.correction-layout{display:grid;grid-template-columns:1.45fr .8fr;gap:18px;align-items:start}.correction-records{min-height:430px}.correction-search{width:175px;border:1px solid #e1d8cc;border-radius:10px;padding:7px 9px;color:#aaa197}.correction-search input{width:125px;border:0;background:transparent;outline:0;font-size:9px;margin-right:5px}.correction-empty{text-align:center;padding:70px 20px;color:var(--muted)}.correction-empty>div{width:56px;height:56px;border-radius:18px;background:var(--soft-yellow);display:grid;place-items:center;font-size:25px;margin:0 auto 14px}.correction-empty h2{font-size:15px;color:var(--ink);margin:0 0 5px}.correction-empty p{font-size:10px;margin:0 0 15px}.correction-record{border:1px solid #e8dfd2;border-radius:18px;margin-top:13px;overflow:hidden;background:#fffefa}.correction-record-head{display:flex;align-items:center;gap:11px;background:#fbf6ed;padding:13px 15px}.correction-record-head>div{flex:1}.correction-record-head strong{font-size:12px}.correction-record-head small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.correction-record-head time{font-size:9px;color:#999188}.correction-flow{display:grid;grid-template-columns:1fr 35px 1fr 35px 1fr;align-items:stretch;padding:14px;gap:6px}.flow-box{border-radius:12px;padding:11px;background:#f6eee4}.flow-box.feedback{background:var(--soft-yellow)}.flow-box.corrected{background:var(--green)}.flow-box span{font-size:9px;color:#81756a;display:block}.flow-box strong{display:block;font-size:11px;margin-top:7px}.flow-box p{font-size:9px;color:#6d6359;line-height:1.7;margin:5px 0 0}.flow-arrow{display:grid;place-items:center;color:var(--deep-orange);font-size:20px}.correction-record-foot{display:flex;align-items:center;gap:9px;border-top:1px solid #eee7dc;padding:10px 14px}.correction-record-foot span{font-size:9px}.correction-record-foot .teacher-note{margin-right:auto;color:var(--muted);max-width:50%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.correction-form-panel{position:sticky;top:15px}.form-celebration{width:49px;height:49px;border-radius:16px;background:var(--soft-yellow);display:grid;place-items:center;color:var(--deep-orange);font-size:25px}.correction-form-panel h2{font-size:17px;margin:14px 0 4px}.correction-form-panel>p{font-size:10px;color:var(--muted);margin:0 0 16px}.correction-form-panel label{display:block;font-size:10px;font-weight:700;margin-top:11px}.correction-form-panel input,.correction-form-panel select,.correction-form-panel textarea{display:block;width:100%;font:inherit;border:1px solid #d9d0c4;border-radius:10px;padding:9px 10px;margin-top:5px;background:#fffefa;outline-color:var(--orange);font-size:10px}.correction-form-panel textarea{min-height:54px;resize:vertical}.before-after-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.correction-effect{display:flex;justify-content:space-between;align-items:center;background:var(--green);border-radius:11px;padding:10px;margin-top:13px;font-size:9px;color:#45634a}.correction-effect strong{color:#2b7839;font-size:11px}.form-error{display:none;background:#fff0e6;color:#a25d17;border-radius:8px;padding:7px;font-size:9px;margin-top:9px}.form-error.show{display:block}.correction-success{background:var(--green);border:1px solid #9dcda2;border-radius:16px;padding:15px;display:flex;gap:10px;align-items:center;margin-top:13px}.correction-success span{font-size:23px}.correction-success strong{display:block;font-size:11px}.correction-success small{display:block;font-size:9px;color:#4b6d50;margin-top:3px}@media(max-width:1100px){.correction-summary-grid{grid-template-columns:repeat(2,1fr)}.correction-layout{grid-template-columns:1fr}.correction-form-panel{position:static}}@media(max-width:760px){.correction-summary-grid{grid-template-columns:1fr 1fr;gap:9px}.correction-summary-card{padding:12px}.correction-summary-card strong{font-size:20px}.correction-search{width:100%}.correction-flow{grid-template-columns:1fr;gap:4px}.flow-arrow{transform:rotate(-90deg);height:20px}.correction-record-head{align-items:flex-start;flex-wrap:wrap}.correction-record-head time{margin-right:auto}.correction-record-foot{flex-wrap:wrap}.correction-record-foot .teacher-note{max-width:100%;width:100%;margin:0}}
/* Private group learning profile */
.group-profile-header{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;background:var(--yellow);border:1.5px solid var(--ink)}.group-profile-identity{display:flex;align-items:center;gap:15px}.profile-group-mark{width:62px;height:62px;border-radius:20px;background:#fff9;border:1px solid var(--ink);display:grid;place-items:center;font-size:29px}.group-profile-header h1{font-size:25px;margin:3px 0 8px}.profile-members{display:flex;align-items:center;gap:5px;font-size:10px;color:#665e53}.profile-members .member-avatar{margin:0;width:28px;height:28px}.profile-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.profile-stat{background:var(--card);border:1px solid #e8dfd2;border-radius:17px;padding:16px}.profile-stat span,.profile-stat small{display:block;font-size:9px;color:var(--muted)}.profile-stat strong{display:block;font-size:25px;margin:4px 0;color:var(--ink)}.cumulative-stat{background:#fff2ca;border-color:#e6bc52}.improvement-stat{background:var(--green);border-color:#acd6ad}.improvement-stat strong{color:#2d7b38}.profile-tabs{display:flex;gap:5px;background:#f0ebe3;border-radius:14px;padding:4px;overflow:auto;margin-bottom:18px}.profile-tabs button{white-space:nowrap;border-radius:10px;padding:9px 14px;font-size:10px;color:#776f66}.profile-tabs button.active{background:#fffefa;color:var(--ink);font-weight:800}.profile-insight-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.profile-insight{border-radius:15px;padding:13px 15px}.profile-insight strong,.profile-insight span{display:block}.profile-insight strong{font-size:12px}.profile-insight span{font-size:9px;color:var(--muted);margin-top:5px}.orange-insight{background:#ffe0bb}.blue-insight{background:var(--blue)}.green-insight{background:var(--green)}.profile-chart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:18px}.profile-chart-card{min-height:220px}.chart-key{font-size:18px}.orange-key{color:var(--orange)}.green-key{color:#58a562}.blue-key{color:#6f9ec9}.profile-bars{height:135px;display:flex;align-items:flex-end;gap:8px;border-bottom:1px solid #ebe3d8;padding:10px 3px 0}.profile-bar-col{height:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px}.profile-bar-col span{font-size:8px;color:var(--muted)}.profile-bar-col i{width:70%;min-height:8px;border-radius:7px 7px 2px 2px;display:block}.profile-bar-col small{font-size:8px;color:#a49b90}.bar-orange{background:var(--orange)}.bar-green{background:#75ad7b}.bar-blue{background:#76a9d2}.profile-detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:15px;margin-bottom:18px}.profile-history-card{min-height:210px}.profile-list-row{display:flex;align-items:center;gap:10px;border-top:1px solid #eee7dc;padding:10px 0}.profile-list-row>div{flex:1}.profile-list-row strong,.profile-list-row small{display:block}.profile-list-row strong{font-size:10px}.profile-list-row small{font-size:9px;color:var(--muted);margin-top:4px}.profile-list-row .session-date{width:35px;height:39px}.timeline-mini{display:flex;gap:10px;position:relative;padding:8px 0 12px}.timeline-mini>i{width:17px;height:17px;border-radius:50%;background:#d9cdbf;outline:2px solid #fff;border:1px solid #c5b7a8;flex-shrink:0;font-style:normal;text-align:center;font-size:10px;color:#4f7756}.timeline-mini.positive>i{background:var(--green);border-color:#8ec094}.timeline-mini strong,.timeline-mini small,.timeline-mini span{display:block}.timeline-mini strong{font-size:10px}.timeline-mini small{font-size:8px;color:var(--muted);margin-top:3px}.timeline-mini span{font-size:9px;color:#6f665d;margin-top:4px}.profile-empty-mini{font-size:10px;color:var(--muted);text-align:center;padding:40px 15px}@media(max-width:1100px){.profile-stat-grid{grid-template-columns:repeat(2,1fr)}.profile-chart-grid{grid-template-columns:1fr 1fr}.profile-chart-card:last-child{grid-column:span 2}}@media(max-width:760px){.group-profile-header{align-items:flex-start;flex-wrap:wrap;gap:13px}.group-profile-header h1{font-size:21px}.group-profile-header>.badge{margin-right:auto}.profile-stat-grid{grid-template-columns:1fr 1fr;gap:9px}.profile-stat{padding:12px}.profile-stat strong{font-size:20px}.profile-tabs{margin-left:-17px;margin-right:-17px;border-radius:0;padding-right:17px;padding-left:17px}.profile-insight-row,.profile-chart-grid,.profile-detail-grid{grid-template-columns:1fr}.profile-chart-card:last-child{grid-column:auto}}
/* Score history and audit */
.audit-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.audit-summary-card{border:1.5px solid #202020;border-radius:22px;padding:20px;display:flex;gap:14px;align-items:flex-start;box-shadow:0 7px 0 rgba(32,32,32,.06)}.audit-summary-card>span{font-size:24px}.audit-summary-card small{display:block;color:#66615A}.audit-summary-card strong{display:block;font-size:30px;margin:5px 0}.audit-summary-card p{margin:0;color:#66615A;font-size:12px}.audit-yellow{background:#FFF0B8}.audit-blue{background:#CFE3F8}.audit-orange{background:#FFD9A3}.audit-lavender{background:#E2D8F4}.audit-filter-bar{display:flex;gap:12px;align-items:end;margin-bottom:20px;padding:18px;flex-wrap:wrap}.audit-filter-bar label{display:flex;flex-direction:column;gap:7px;color:#66615A;font-size:13px;flex:1;min-width:220px}.audit-filter-bar input,.audit-filter-bar select{border:1px solid #202020;border-radius:14px;padding:12px;background:#fff;font:inherit;color:#202020}.audit-timeline-panel{padding:24px}.audit-timeline{display:grid;gap:14px}.audit-event{display:grid;grid-template-columns:44px 1fr auto;gap:15px;align-items:start;border:1px solid #202020;border-radius:20px;padding:17px;background:#fff}.audit-event-icon{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;font-size:19px}.audit-event-body{min-width:0}.audit-event-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.audit-event-head strong{font-size:16px}.audit-event-meta{color:#66615A;font-size:13px;margin:7px 0}.audit-event-values{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.audit-value{background:#f7f3ec;border-radius:10px;padding:7px 10px;font-size:13px}.audit-diff{font-weight:700;color:#D96B00}.audit-event-side{text-align:left;color:#66615A;font-size:12px}.audit-event-note{margin-top:10px;background:#fff8df;border-radius:12px;padding:9px;color:#66615A;font-size:13px}.audit-event-yellow .audit-event-icon{background:#FFF0B8}.audit-event-blue .audit-event-icon{background:#CFE3F8}.audit-event-orange .audit-event-icon{background:#FFD9A3}.audit-event-green .audit-event-icon{background:#CFE8C8}.audit-event-coral .audit-event-icon{background:#F5B6B6}.audit-pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:20px}.audit-loading{display:grid;gap:12px}.audit-loading i{height:76px;border-radius:18px;background:linear-gradient(90deg,#f3efe7,#fff,#f3efe7);background-size:200% 100%;animation:auditShimmer 1.2s infinite}@keyframes auditShimmer{to{background-position:-200% 0}}.audit-empty{text-align:center;padding:42px;color:#66615A}.audit-empty strong{display:block;color:#202020;font-size:18px;margin-bottom:8px}.audit-error{background:#fff0ee;border:1px solid #dca8a8;border-radius:16px;padding:18px;color:#7a4545}@media(max-width:900px){.audit-summary-grid{grid-template-columns:repeat(2,1fr)}.audit-event{grid-template-columns:40px 1fr}.audit-event-side{grid-column:2;text-align:right}}@media(max-width:600px){.audit-summary-grid{grid-template-columns:1fr}.audit-filter-bar{align-items:stretch}.audit-filter-bar label{min-width:100%}.audit-filter-bar button{width:100%}.audit-timeline-panel{padding:15px}.audit-event-values{display:grid}.audit-event{padding:13px}}
/* Settings workspace */
.settings-toolbar{display:flex;gap:18px;align-items:end;flex-wrap:wrap;padding:18px;margin-bottom:18px}.settings-toolbar label{display:flex;flex-direction:column;gap:7px;color:#66615A;min-width:230px}.settings-toolbar select,.settings-fields input,.settings-actions input{border:1px solid #202020;border-radius:13px;padding:11px;background:#fff;font:inherit}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.settings-card{padding:22px}.settings-card:first-child{grid-column:1/-1;background:#fffaf0}.settings-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#FFF0B8;font-size:22px}.settings-icon.orange{background:#FFD9A3}.settings-icon.green{background:#CFE8C8}.settings-icon.blue{background:#CFE3F8}.settings-icon.lavender{background:#E2D8F4}.settings-icon.pink{background:#F5B6B6}.formula-preview{display:flex;align-items:center;gap:18px;background:#FFF0B8;border-radius:16px;padding:14px;margin:16px 0;flex-wrap:wrap}.formula-preview span{font-family:monospace;color:#66615A}.formula-preview b{color:#D96B00}.settings-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.settings-fields label,.threshold-fields label{display:flex;flex-direction:column;gap:7px;color:#66615A;font-size:13px}.settings-actions{display:flex;gap:10px;align-items:center;margin-top:16px}.settings-actions input{flex:1}.mode-options{display:grid;gap:10px;margin:15px 0}.mode-options label{display:flex;gap:10px;align-items:flex-start;padding:13px;border:1px solid #202020;border-radius:15px;background:#fff}.mode-options label:has(input:checked){background:#FFF0B8}.mode-options strong,.mode-options small{display:block}.mode-options small{color:#66615A;margin-top:4px}.settings-switch{margin:16px 0}.threshold-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.status-preview{display:flex;gap:8px;flex-wrap:wrap;margin:17px 0}.status-preview span{padding:8px 12px;border-radius:999px;font-size:12px}.status-yellow{background:#FFF0B8}.status-coral{background:#F5B6B6}.status-green{background:#CFE8C8}.backup-list{display:grid;gap:8px;margin:14px 0;color:#66615A}.backup-item{display:flex;justify-content:space-between;gap:8px;align-items:center;background:#faf7f0;border-radius:13px;padding:10px;font-size:13px}.account-summary{display:flex;gap:12px;align-items:center;margin:14px 0}.account-summary small,.account-summary span{display:block;color:#66615A;font-size:12px;margin-top:3px}.settings-message{margin-top:18px;padding:14px;border-radius:15px;background:#CFE8C8;display:none}.settings-message.show{display:block}.settings-save-state{background:#CFE8C8;border-radius:999px;padding:9px 13px;color:#315b2c;font-size:12px}@media(max-width:800px){.settings-grid{grid-template-columns:1fr}.settings-card:first-child{grid-column:auto}.settings-fields,.threshold-fields{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.settings-fields,.threshold-fields{grid-template-columns:1fr}.settings-actions{flex-direction:column;align-items:stretch}.settings-actions input{width:auto}.settings-actions button{width:100%}}
.export-filter{padding:22px;margin-bottom:18px}.export-filter>label{display:inline-flex;flex-direction:column;gap:7px;min-width:240px;color:#66615A;margin:10px 12px 4px 0}.export-filter select{border:1px solid #202020;border-radius:13px;padding:11px;font:inherit;background:#fff}.export-actions{display:flex;gap:10px;margin-top:14px}.export-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:18px}.export-card{padding:22px;min-height:220px;display:flex;flex-direction:column;align-items:flex-start}.export-card p{color:#66615A;line-height:1.8;min-height:55px}.export-card strong{font-size:13px;margin-bottom:16px}.export-card button{margin-top:auto}.export-icon{width:48px;height:48px;border-radius:16px;background:#fff;display:grid;place-items:center;font-size:25px;margin-bottom:13px}.pastel-yellow{background:#FFF0B8}.pastel-blue{background:#CFE3F8}.pastel-lavender{background:#E2D8F4}.pastel-green{background:#CFE8C8}.pastel-coral{background:#F5B6B6}.export-history-panel,.backup-history-panel{padding:22px;margin-bottom:18px}.export-row,.backup-row{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid #e6e0d7}.export-row small,.backup-row small{display:block;color:#66615A}.export-empty{padding:28px;text-align:center;color:#66615A;background:#faf7f0;border-radius:15px}.export-status{padding:6px 10px;border-radius:999px;font-size:12px;background:#CFE8C8;width:max-content}.export-status.failed{background:#F5B6B6}.export-status.processing{background:#FFF0B8}@media(max-width:850px){.export-card-grid{grid-template-columns:repeat(2,1fr)}.export-row,.backup-row{grid-template-columns:1fr 1fr}.export-row button,.backup-row button{grid-column:2}}@media(max-width:560px){.export-card-grid{grid-template-columns:1fr}.export-actions{flex-direction:column}.export-actions button{width:100%}.export-filter>label{display:flex;margin-right:0}}
.sidebar,.secondary-panel{position:relative;border-color:transparent}.sidebar:after,.secondary-panel:after{content:'';position:absolute;top:18px;bottom:18px;width:0;border-width:0 2px 0 0;border-style:dashed;border-color:#8f8578;pointer-events:none}.sidebar:after{left:0}.secondary-panel:after{right:0}.sidebar{box-shadow:none}.secondary-panel{box-shadow:none}
.site-footer{width:100%;box-sizing:border-box;background:#fffdf8;border-top:2px dashed #8f8578;padding:14px 24px;text-align:center;color:#66615A;font-size:12px;direction:rtl}
.session-form-error{display:none;background:#F5B6B6;color:#7d3e3e;border-radius:11px;padding:9px 11px;font-size:11px;margin-top:12px}.session-form-error.show{display:block}
.jalali-picker{display:none;position:fixed;z-index:50;width:250px;background:#fffdf8;border:1.5px solid #202020;border-radius:18px;padding:12px;box-shadow:0 12px 28px #20202022;direction:rtl}.jalali-picker.show{display:block}.jalali-picker-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.jalali-picker-head strong{font-size:13px}.jalali-picker-head button{border:0;background:#FFF0B8;border-radius:10px;width:30px;height:30px;font-size:20px;cursor:pointer}.jalali-weekdays,.jalali-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.jalali-weekdays span{font-size:9px;color:#66615A;padding:5px 0}.jalali-days i{height:28px}.jalali-days button{border:0;background:transparent;border-radius:9px;height:28px;font:inherit;font-size:10px;cursor:pointer}.jalali-days button:hover{background:#FFF0B8}.jalali-days button.today{background:#F28C00;color:#202020;font-weight:700}@media(max-width:560px){.jalali-picker{position:fixed!important;left:50%!important;top:50%!important;transform:translate(-50%,-50%)}}
.progress-filters{display:flex;align-items:end;gap:12px;flex-wrap:wrap;padding:16px 18px;margin-bottom:18px}.progress-filters label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:11px}.progress-filters select,.progress-filters input{min-width:145px;padding:10px 12px;border:1px solid #d9d0c4;border-radius:12px;background:#fff;font:inherit;outline-color:var(--orange)}.progress-filters .filter-check{flex-direction:row;align-items:center;margin-right:auto;padding-bottom:10px}.progress-filters .filter-check input{min-width:auto}.progress-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:18px}.progress-summary-card{border:1.5px solid var(--ink);border-radius:20px;padding:16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}.progress-summary-card .summary-icon{width:42px;height:42px;border-radius:14px;background:#fff9;display:grid;place-items:center;font-size:20px}.progress-summary-card small,.progress-summary-card span:not(.summary-icon){display:block;font-size:10px;color:var(--muted)}.progress-summary-card strong{display:block;font-size:24px;margin:4px 0}.pastel-orange{background:#ffd4a0}.progress-chart-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;margin-bottom:18px}.analytics-chart{padding:20px;min-height:270px}.analytics-lines{height:185px;display:flex;align-items:end;gap:10px;padding:16px 8px 0;background:repeating-linear-gradient(to top,transparent 0,transparent 44px,#eee5da 45px);border-radius:14px}.analytics-line-point{flex:1;min-width:10px;position:relative;height:100%;display:flex;align-items:end;justify-content:center;gap:3px}.analytics-line-point i{display:block;width:9px;border-radius:10px 10px 3px 3px;background:var(--orange);min-height:7px}.analytics-line-point i.secondary{background:#79a9d6}.analytics-line-point small{position:absolute;bottom:-17px;font-size:8px;color:var(--muted)}.rate-bars{height:185px;display:flex;align-items:end;gap:12px;padding:16px 8px 0;background:repeating-linear-gradient(to top,transparent 0,transparent 44px,#eee5da 45px);border-radius:14px}.rate-bars .rate-col{flex:1;text-align:center;min-width:20px}.rate-col i{display:block;background:#79a9d6;border-radius:10px 10px 3px 3px;min-height:7px}.rate-col span,.rate-col small{font-size:9px;display:block;margin-top:5px}.chart-empty{width:100%;text-align:center;align-self:center;color:var(--muted);font-size:11px;padding:25px}.chart-accessible{font-size:10px;color:var(--muted);margin:18px 0 0}.progress-report-grid{display:grid;grid-template-columns:1.5fr .8fr;gap:18px;margin-bottom:18px}.comparison-panel,.needs-practice-panel,.most-improved-panel{padding:20px}.comparison-row{display:grid;grid-template-columns:1.2fr .8fr .8fr .8fr auto;gap:10px;align-items:center;border-bottom:1px solid #eee7dc;padding:13px 0;font-size:11px}.comparison-row:last-child{border-bottom:0}.comparison-row strong{display:block}.comparison-row small{display:block;color:var(--muted);margin-top:4px}.comparison-bar{height:7px;background:#eee7dc;border-radius:99px;overflow:hidden;margin-top:7px}.comparison-bar i{display:block;height:100%;background:var(--orange);border-radius:99px}.practice-item,.improved-item{padding:13px 0;border-bottom:1px solid #eee7dc}.practice-item:last-child,.improved-item:last-child{border-bottom:0}.practice-item strong,.improved-item strong{font-size:12px}.practice-item small,.improved-item small{display:block;color:var(--muted);line-height:1.8;margin-top:4px}.improved-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.improved-item{background:#f7f4ec;border:1px solid #eee4d6;border-radius:15px;padding:14px}.improved-item b{display:block;color:#d96b00;font-size:18px;margin:6px 0}.analytics-loading{display:flex;gap:8px;justify-content:center;padding:40px}.analytics-loading i{width:10px;height:10px;border-radius:50%;background:var(--yellow);animation:pulse 1s infinite}.analytics-loading i:nth-child(2){animation-delay:.2s}.analytics-loading i:nth-child(3){animation-delay:.4s}.analytics-state{display:none;padding:13px;border-radius:14px;background:var(--green);margin-top:15px;color:#315b2c}.analytics-state.show{display:block}@media(max-width:900px){.progress-summary-grid{grid-template-columns:repeat(2,1fr)}.progress-chart-grid,.progress-report-grid{grid-template-columns:1fr}.improved-list{grid-template-columns:1fr 1fr}}@media(max-width:560px){.progress-summary-grid{grid-template-columns:1fr}.progress-filters{align-items:stretch}.progress-filters label,.progress-filters select,.progress-filters input{width:100%;min-width:0}.progress-filters .filter-check{margin-right:0}.comparison-row{grid-template-columns:1fr 1fr}.comparison-row .comparison-bar{grid-column:1/-1}.improved-list{grid-template-columns:1fr}.analytics-chart{padding:14px}}
.comparison-section{border-radius:18px;padding:14px 16px;margin-top:12px;border:1px solid #202020}.comparison-section-green{background:#CFE8C8 !important}.comparison-section-yellow{background:#FFF0B8 !important}.comparison-section-red{background:#F5B6B6 !important}.comparison-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px}.comparison-section-head h3{margin:0;font-size:13px}.comparison-section-head p{margin:4px 0 0;color:#66615A;font-size:10px}.comparison-section-head>span{border-radius:999px;background:#fff9;padding:7px 10px;font-size:10px}.comparison-section .comparison-row{border-bottom-color:#ffffffaa}.comparison-section-empty{text-align:center;color:#66615A;font-size:11px;padding:18px 8px}.comparison-section-green .rate-status{background:#CFE8C8;color:#315b2c}.comparison-section-yellow .rate-status{background:#FFF0B8;color:#765a00}.comparison-section-red .rate-status{background:#F5B6B6;color:#8b3e3e}.rate-status{border-radius:999px;padding:6px 9px;font-size:9px;white-space:nowrap}
.dashboard-empty{text-align:center;padding:28px 16px;color:#999188;font-size:11px}
.chart-empty{text-align:center;padding:70px 16px;color:#999188;font-size:11px}
.days .other{opacity:.3}
.days .has-session{background:var(--green);color:#1d4a24;font-weight:800;box-shadow:inset 0 0 0 1.5px var(--ink)}
.detail-group-card{display:flex;align-items:center;gap:14px;border:1px solid #e8dfd2;border-radius:16px;padding:13px 15px;margin-top:11px;background:#fffefa;flex-wrap:wrap}
.detail-group-card>div:first-child{min-width:150px}
.detail-group-card>div:first-child strong{display:block;font-size:13px}
.detail-group-card>div:first-child span{display:block;font-size:9px;color:#999188;margin-top:3px}
.detail-group-stats{display:flex;gap:14px;margin-left:auto;font-size:9px;color:#7a7268}
.detail-group-stats b{color:var(--ink);font-size:12px;margin-right:3px}
.reports-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}
.reports-stats>div{border:1px solid #e8dfd2;border-radius:14px;padding:12px 14px;background:#fffefa;text-align:center}
.reports-stats span{display:block;font-size:9px;color:#999188}
.reports-stats b{display:block;font-size:19px;margin-top:5px}
.group-card-grid .dashboard-empty{grid-column:1/-1}
.class-grid .dashboard-empty{grid-column:1/-1}
.leaderboard-panel{position:relative;margin:4px auto 26px;max-width:940px;border:3px dashed var(--deep-orange);border-radius:30px;background:radial-gradient(circle at 6% -8%,#ffe9b3 0,transparent 36%),radial-gradient(circle at 98% 6%,#ffe1c4 0,transparent 32%),linear-gradient(180deg,#fffdf6 0%,#fff7e0 100%);box-shadow:0 0 0 5px #fffefa,0 0 0 6.5px #efdba8,0 16px 34px rgba(217,107,0,.10);padding:22px 26px 24px}
.leaderboard-panel::before,.leaderboard-panel::after{position:absolute;font-size:19px;color:var(--orange);opacity:.7;pointer-events:none}
.leaderboard-panel::before{content:'✦';top:14px;right:22px}
.leaderboard-panel::after{content:'✧';bottom:14px;left:22px}
.leaderboard-panel .panel-heading{justify-content:center;position:relative;padding:2px 0 16px;border-bottom:2px dashed #f0d9a8;margin-bottom:18px}
.leaderboard-panel .panel-heading h2{display:flex;align-items:center;gap:8px;font-size:20px}
.leaderboard-panel .panel-heading p{font-size:10px}
.leaderboard-panel .more-btn{position:absolute;left:0;top:0;background:#fffefa;border:1.5px solid #e8d9b4;border-radius:12px;width:34px;height:30px;font-size:11px;letter-spacing:1px;color:#8a7c5c}
.leaderboard-panel .more-btn:hover{background:var(--soft-yellow);color:var(--deep-orange)}
.leaderboard-layout{display:flex;flex-direction:column;align-items:center;gap:20px}
.leaderboard-podium{display:grid;grid-template-columns:1fr 1.18fr 1fr;gap:10px;align-items:end;width:min(480px,100%)}
.leaderboard-podium>.dashboard-empty{grid-column:1/-1;width:100%}
.podium-slot{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0;min-width:0;animation:lbRise .5s ease both}
.podium-second{animation-delay:.05s}.podium-first{animation-delay:.12s}.podium-third{animation-delay:.19s}
@keyframes lbRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.podium-person{display:flex;flex-direction:column;align-items:center;gap:5px;margin-bottom:10px;position:relative}
.podium-person strong{font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.podium-person small{font-size:9px;color:var(--muted)}
.podium-avatar{width:46px;height:46px;border-radius:16px;font-size:17px;margin:0;border:2px solid #fffefa;box-shadow:0 3px 0 rgba(32,32,32,.12)}
.podium-first .podium-avatar{width:56px;height:56px;border-radius:19px;font-size:20px;border-color:#fff3cf;box-shadow:0 0 0 3px #ffd866,0 4px 0 rgba(32,32,32,.14)}
.podium-first .podium-person::before{content:'👑';position:absolute;top:-17px;left:50%;transform:translateX(-50%);font-size:15px;filter:drop-shadow(0 2px 0 rgba(32,32,32,.10))}
.podium-block{width:100%;border:1.5px solid var(--ink);border-radius:16px 16px 9px 9px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:11px 6px;gap:3px;color:#fff;position:relative;overflow:hidden}
.podium-block::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#ffffff2e 0%,transparent 42%);pointer-events:none}
.podium-block b{font-size:21px;line-height:1;position:relative;z-index:1}
.podium-block span{font-size:9px;background:#ffffff52;border-radius:9px;padding:2px 8px;font-weight:800;position:relative;z-index:1}
.podium-first .podium-block{height:128px;background:linear-gradient(180deg,#ffb54d,#f28c00);box-shadow:0 6px 0 rgba(217,107,0,.18)}
.podium-second .podium-block{height:92px;background:linear-gradient(180deg,#ffc978,#eb9a2b)}
.podium-third .podium-block{height:68px;background:linear-gradient(180deg,#ffe3a6,#f3b64e);color:#7a5410}
.podium-third .podium-block b{color:#7a5410}
.podium-block.podium-empty{background:#f6f0e4;color:#b3a68f;border-style:dashed}
.podium-slot:hover .podium-block{filter:brightness(1.05)}
.podium-slot[data-group]{cursor:pointer;transition:transform .15s}
.podium-slot[data-group]:hover{transform:translateY(-3px)}
.leaderboard-list{display:grid;gap:9px;width:min(600px,100%)}
.leaderboard-list:empty{display:none}
.leaderboard-row{display:flex;align-items:center;gap:11px;border:1.5px solid #ecdfc2;border-radius:16px;padding:10px 14px;background:#fffefa;text-align:right;transition:background .15s,border-color .15s,transform .15s;animation:lbRise .45s ease both}
.leaderboard-row:hover{background:var(--soft-yellow);border-color:#e2bc52;transform:translateX(-3px)}
.leader-rank{width:28px;height:28px;border-radius:10px;background:var(--soft-yellow);border:1px solid #f0d9a8;color:var(--deep-orange);display:grid;place-items:center;font-size:11px;font-weight:800;flex-shrink:0}
.lb-avatar{width:34px;height:34px;border-radius:12px;flex-shrink:0;margin:0}
.leader-copy{flex:1;min-width:0}
.leader-copy strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.leader-copy small{display:block;font-size:9px;color:var(--muted);margin-top:2px}
.leader-progress{font-size:10px;font-weight:800;color:#31753b;background:var(--green);border-radius:10px;padding:5px 9px;flex-shrink:0}
.leader-progress.negative{background:var(--pink);color:#9c3d3d}
.leader-score{font-size:10px;font-weight:800;background:var(--soft-yellow);border-radius:10px;padding:5px 9px;flex-shrink:0;color:var(--deep-orange)}
@media(max-width:560px){.leaderboard-podium{grid-template-columns:1fr 1fr}.podium-third{display:none}.leaderboard-panel{padding:18px 14px 20px;border-radius:24px}}
.class-card{cursor:pointer;transition:transform .15s,box-shadow .15s}
.class-card:hover{transform:translateY(-4px);box-shadow:0 10px 0 var(--accent-soft,rgba(201,144,0,.28)),0 28px 46px rgba(63,47,28,.14)}
.class-card .card-delete-btn{position:absolute;bottom:19px;left:19px;width:30px;height:30px;border-radius:10px;background:#fffefa;border:1.5px solid #e8c9c9;color:#b04848;font-size:12px;font-weight:800;display:grid;place-items:center;z-index:2;transition:background .15s,border-color .15s}
.class-card .card-delete-btn:hover{background:var(--pink);border-color:#d98a8a}
.class-card .card-delete-btn:disabled{opacity:.5;pointer-events:none}
.filter-dropdown{position:relative;display:inline-block}
.filter-dropdown .dropdown-menu{display:none;position:absolute;top:calc(100% + 6px);inset-inline-start:0;min-width:180px;max-height:280px;overflow:auto;background:#fffefa;border:1.5px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);padding:6px;z-index:40;list-style:none;margin:0}
.filter-dropdown.open .dropdown-menu{display:block}
.dropdown-menu li{margin:0}
.dropdown-menu li button{width:100%;text-align:right;padding:9px 12px;border-radius:10px;font-size:11px;display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--ink)}
.dropdown-menu li button:hover{background:var(--soft-yellow)}
.dropdown-menu li button.active{background:var(--soft-yellow);font-weight:800;color:var(--deep-orange)}
.detail-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.student-code,.student-grade,.student-major{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-progress-cell{display:flex;align-items:center;gap:7px}
.student-progress-cell .student-progress{flex:1;min-width:0}
.student-progress-cell b{font-size:10px;min-width:24px;text-align:left}
.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px}
.row-icon-btn{width:26px;height:26px;border-radius:8px;border:1px solid #e2d9cc;background:#fffefa;display:grid;place-items:center;font-size:11px;color:var(--muted);transition:.15s;padding:0}
.row-icon-btn:hover{background:var(--soft-yellow);border-color:var(--ink);color:var(--ink)}
.row-icon-btn.row-danger:hover{background:#f7d7d7;border-color:#d98a8a;color:#8c1c1c}
.row-more{letter-spacing:0}
.student-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-top:13px}
.student-modal-grid label{margin-top:0}
@media(max-width:430px){.student-modal-grid{grid-template-columns:1fr}}


/* ---------- students roster view ---------- */
.roster-context{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end;justify-content:space-between;margin-bottom:16px}
.roster-context-fields{display:flex;gap:14px;flex-wrap:wrap}
.roster-context-fields label{margin-top:0;display:flex;flex-direction:column;gap:6px;font-size:10px;font-weight:700;color:var(--muted)}
.roster-context-fields input{min-width:210px}
.roster-context-note{margin:0;font-size:10px;color:#8a8378;max-width:44ch;line-height:1.9}
.roster-add-panel{margin-bottom:16px;padding:0;overflow:hidden;border:1.5px solid var(--ink);border-radius:22px;background:var(--card)}
.roster-add-panel[hidden]{display:none}
.roster-add-head{display:flex;align-items:center;gap:13px;padding:15px 18px;background:linear-gradient(135deg,#fff3dc,#ffe9c0);border-bottom:1.5px solid var(--ink)}
.roster-add-icon{width:44px;height:44px;border-radius:15px;background:var(--deep-orange);border:1.5px solid var(--ink);color:#fff;display:grid;place-items:center;font-size:22px;font-weight:800;box-shadow:3px 3px 0 rgba(32,32,32,.16);flex-shrink:0}
.roster-add-titles h3{margin:0;font-size:15px}
.roster-add-titles p{margin:3px 0 0;font-size:10px;color:#7a7266;line-height:1.8}
.roster-add-grid{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:12px;padding:16px 18px 0}
.roster-add-field{display:flex;flex-direction:column;gap:6px;margin-top:0;font-size:10px;font-weight:800;color:#6d655a}
.roster-add-field input{border:1.5px solid #d9d0c4;border-radius:13px;padding:11px 13px;background:#fff;font:inherit;font-size:12px;width:100%;outline-color:var(--orange);transition:border-color .15s,box-shadow .15s}
.roster-add-field input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(242,140,0,.18);outline:none}
.roster-add-field input::placeholder{color:#b0a99e;font-size:11px}
.roster-add-panel .validation-message{margin:12px 18px 0}
.roster-add-actions{display:flex;align-items:center;gap:14px;padding:14px 18px 16px;margin-top:0}
@media(max-width:1000px){.roster-add-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.roster-add-grid{grid-template-columns:1fr}}
.roster-batch-bar{display:none;align-items:center;gap:12px;flex-wrap:wrap;border:1.5px solid var(--ink);background:#fffefa;border-radius:16px;padding:10px 14px;margin-bottom:14px;box-shadow:var(--shadow)}
.roster-batch-bar.show{display:flex}
.roster-batch-bar span{font-size:11px;font-weight:800}
.roster-table-wrap{overflow-x:auto}
.roster-table{width:100%;border-collapse:collapse;min-width:860px}
.roster-table th{text-align:right;font-size:9px;color:var(--muted);font-weight:700;padding:0 10px 10px;border-bottom:1.5px solid var(--ink);white-space:nowrap}
.roster-table td{padding:11px 10px;border-bottom:1px solid #efe7da;font-size:11px;vertical-align:middle}
.roster-table tbody tr:last-child td{border-bottom:0}
.roster-table tbody tr:hover{background:#fffaf0}
.roster-table .roster-check-col{width:34px;padding-inline:4px 0}
.roster-table .student-person{display:flex;align-items:center;gap:9px}
.roster-classes{max-width:240px}
.class-chip{display:inline-block;background:var(--blue);border:1px solid var(--ink);border-radius:999px;padding:2px 9px;font-size:9px;margin:2px 2px 0 0;white-space:nowrap}
.class-chip.home{background:var(--yellow)}
.class-chip.none{background:#f1ece2;border-style:dashed;border-color:#c9c1b4;color:var(--muted)}
.roster-empty-cell{text-align:center;color:var(--muted);padding:26px 10px;font-size:12px}
.roster-class-list{display:grid;gap:9px;margin-top:15px;max-height:320px;overflow:auto;padding-left:4px}
.roster-class-option{display:flex;align-items:center;gap:11px;border:1.5px solid var(--ink);border-radius:14px;padding:11px 13px;background:#fffefa;cursor:pointer;transition:.15s}
.roster-class-option:hover{background:var(--soft-yellow)}
.roster-class-option.disabled{opacity:.75;background:#f4f1ea;cursor:default}
.roster-class-option.disabled:hover{background:#f4f1ea}
.roster-class-option input{width:16px;height:16px;accent-color:var(--deep-orange)}
.roster-class-option strong{display:block;font-size:12px}
.roster-class-option small{display:block;font-size:9px;color:var(--muted);margin-top:2px}
@media(max-width:760px){.roster-toolbar>.filter-dropdown:last-child{display:block}.roster-context{flex-direction:column;align-items:stretch}}
.roster-promote-group{display:flex;align-items:center;gap:8px}
.roster-promote-select{border:1.5px solid var(--ink);border-radius:12px;padding:9px 10px;font-family:inherit;font-size:10px;font-weight:700;background:#fffefa;color:var(--ink);min-width:110px}
.cohort-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:start}
.cohort-card{border:3px dotted var(--accent,#c19a1e);border-radius:26px;box-shadow:0 6px 0 var(--accent-soft,rgba(193,154,30,.3)),0 18px 34px rgba(63,47,28,.10);position:relative;overflow:hidden;transition:transform .18s,box-shadow .18s;cursor:pointer}
.cohort-card:hover{transform:translateY(-4px);box-shadow:0 10px 0 var(--accent-soft,rgba(193,154,30,.3)),0 28px 46px rgba(63,47,28,.14)}
.cohort-card:focus-visible{outline:2px solid var(--deep-orange);outline-offset:2px}
.cohort-blue{background:var(--blue);--accent:#4f86c2;--accent-soft:rgba(79,134,192,.30)}
.cohort-lav{background:var(--lav);--accent:#8a6fc0;--accent-soft:rgba(138,111,192,.30)}
.cohort-green{background:var(--green);--accent:#5a9653;--accent-soft:rgba(90,150,83,.30)}
.cohort-coral{background:var(--pink);--accent:#c96a6a;--accent-soft:rgba(201,106,106,.30)}
.cohort-peach{background:#ffd4a0;--accent:#cd8534;--accent-soft:rgba(205,133,52,.30)}
.cohort-yellow{background:var(--soft-yellow);--accent:#c19a1e;--accent-soft:rgba(193,154,30,.32)}
.cohort-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding:16px 16px 12px;user-select:none}
.cohort-symbol{width:46px;height:46px;border-radius:16px;background:#fffdf6;border:2px solid var(--accent,#c19a1e);box-shadow:2px 2px 0 var(--accent-soft,rgba(193,154,30,.3));display:grid;place-items:center;font-size:22px;flex-shrink:0}
.cohort-copy{flex:1;min-width:0}
.cohort-copy strong{display:block;font-size:15px;font-weight:800;line-height:1.7}
.cohort-copy small{display:block;font-size:9.5px;color:#6b6359;margin-top:3px}
.cohort-arrow{font-size:16px;color:var(--accent,#c19a1e);font-weight:800;margin-inline-start:auto;flex-shrink:0;transition:transform .18s}
.cohort-card:hover .cohort-arrow{transform:translateX(-4px)}
.cohort-actions{display:flex;align-items:center;gap:8px;padding:0 16px 15px}
.cohort-promote{order:0;background:#fffefa!important;font-size:10px!important;font-weight:800;padding:9px 12px!important;flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border:2px solid var(--accent,#c19a1e);border-radius:12px;box-shadow:2px 2px 0 var(--accent-soft,rgba(193,154,30,.3));transition:.15s;margin:0}
.cohort-promote:hover{background:var(--soft-yellow)!important;transform:translateY(-1px);box-shadow:3px 3px 0 var(--accent-soft,rgba(193,154,30,.3))}
.cohort-icon-btn{width:34px;height:34px;border-radius:12px;background:#fffefa;border:2px solid var(--accent,#c19a1e);box-shadow:2px 2px 0 var(--accent-soft,rgba(193,154,30,.3));display:grid;place-items:center;font-size:13px;font-weight:800;transition:.15s;flex-shrink:0}
.cohort-icon-btn:hover{transform:translateY(-1px);box-shadow:3px 3px 0 var(--accent-soft,rgba(193,154,30,.3));background:#fff}
.cohort-danger{--accent:#c96a6a;--accent-soft:rgba(201,106,106,.32)}
.cohort-hero{display:flex;align-items:center;gap:15px;flex-wrap:wrap;border:3px dotted var(--accent,#c19a1e);border-radius:26px;padding:18px 20px;box-shadow:0 6px 0 var(--accent-soft,rgba(193,154,30,.3)),0 18px 34px rgba(63,47,28,.10);position:relative;overflow:hidden;margin-bottom:14px}
.cohort-hero-icon{width:52px;height:52px;border-radius:17px;background:#fffdf6;border:2px solid var(--accent,#c19a1e);box-shadow:2px 2px 0 var(--accent-soft,rgba(193,154,30,.3));display:grid;place-items:center;font-size:25px;flex-shrink:0}
.cohort-hero-copy{flex:1;min-width:180px}
.cohort-hero-copy h1{margin:2px 0 3px;font-size:20px}
.cohort-hero-copy p:not(.eyebrow){margin:0;font-size:10.5px;color:#5f594f}
.cohort-hero-actions{display:flex;gap:9px;flex-wrap:wrap}
.cohort-hero-actions .secondary-btn{border:2px solid var(--accent,#c19a1e);box-shadow:2px 2px 0 var(--accent-soft,rgba(193,154,30,.3));font-size:11px;font-weight:800}
.cohort-danger-btn{--accent:#c96a6a;--accent-soft:rgba(201,106,106,.32)}
.cohort-detail-panel{padding:16px}
.cohort-detail-head{display:flex;align-items:center;gap:12px;padding:0 2px 10px;border-bottom:1px solid #efe7da;margin-bottom:12px}
.cohort-select-all{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:700;cursor:pointer;margin:0}
.cohort-select-all input{width:15px;height:15px;accent-color:var(--deep-orange)}
.cohort-body-hint{font-size:9px;color:var(--muted);margin-inline-start:auto}
.cohort-detail-panel .roster-table{min-width:620px}
.cohort-detail-panel .roster-table th{border-bottom-color:#e6dcc8}
.cohort-empty-state{grid-column:1/-1;text-align:center;padding:30px 16px}
.roster-empty-state{text-align:center;padding:30px 16px;grid-column:1/-1}
@media(max-width:1100px){.cohort-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.roster-promote-group{width:100%}.cohort-grid{grid-template-columns:1fr}.cohort-actions{flex-wrap:wrap}.cohort-hero-actions{width:100%}}

/* ---------- study groups ---------- */
.group-chip{display:inline-block;background:var(--blue);border:1.5px solid #4f86c2;border-radius:999px;padding:3px 10px;font-size:9.5px;font-weight:800;color:#2f5e8f;white-space:nowrap}
.group-chip.none{background:#f1ece2;border-style:dashed;border-color:#c9c1b4;color:var(--muted);font-weight:600}
.cohort-groups-panel{margin-bottom:14px}
.cohort-groups-panel .panel-heading{justify-content:space-between}
.cohort-groups-panel .panel-heading h2{margin:0;font-size:15px}
.cohort-groups-panel .panel-heading p{margin:3px 0 0;font-size:10px;color:var(--muted)}
.cohort-groups-empty{padding:22px 12px;text-align:center;font-size:11px;color:var(--muted);background:#fbf8f2;border:1.5px dashed #d9d0c4;border-radius:16px}
.cohort-group-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:2px dotted var(--accent,#4f86c2);border-radius:18px;padding:11px 13px;margin-top:9px;background:#fffefa;box-shadow:0 3px 0 var(--accent-soft,rgba(79,134,192,.22))}
.cgr-symbol{width:38px;height:38px;border-radius:13px;background:#fffdf6;border:2px solid var(--accent,#4f86c2);box-shadow:2px 2px 0 var(--accent-soft,rgba(79,134,192,.22));display:grid;place-items:center;font-size:17px;flex-shrink:0}
.cgr-copy{flex:1;min-width:140px}
.cgr-copy strong{display:block;font-size:13px;font-weight:800}
.cgr-copy small{display:block;font-size:9.5px;color:#6b6359;margin-top:2px}
.cgr-members{display:flex;gap:4px;flex-wrap:wrap}
.cgr-actions{display:flex;gap:7px;margin-inline-start:auto}
.sgc-blue{--accent:#4f86c2;--accent-soft:rgba(79,134,192,.30)}
.sgc-lav{--accent:#8a6fc0;--accent-soft:rgba(138,111,192,.30)}
.sgc-green{--accent:#5a9653;--accent-soft:rgba(90,150,83,.30)}
.sgc-coral{--accent:#c96a6a;--accent-soft:rgba(201,106,106,.30)}
.sgc-peach{--accent:#cd8534;--accent-soft:rgba(205,133,52,.30)}
.sgc-yellow{--accent:#c19a1e;--accent-soft:rgba(193,154,30,.32)}
.study-group-card{border:3px dotted var(--accent,#4f86c2);border-radius:24px;background:var(--card);padding:16px 17px;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.25)),0 18px 34px rgba(63,47,28,.08);display:flex;flex-direction:column;gap:12px;transition:transform .18s,box-shadow .18s}
.study-group-card:hover{transform:translateY(-3px);box-shadow:0 9px 0 var(--accent-soft,rgba(79,134,192,.28)),0 26px 44px rgba(63,47,28,.12)}
.sgc-head{display:flex;align-items:center;gap:11px}
.sgc-symbol{width:44px;height:44px;border-radius:15px;background:#fffdf6;border:2px solid var(--accent,#4f86c2);box-shadow:2px 2px 0 var(--accent-soft,rgba(79,134,192,.25));display:grid;place-items:center;font-size:20px;flex-shrink:0}
.sgc-title{flex:1;min-width:0}
.sgc-title h2{margin:0;font-size:15px;font-weight:800;line-height:1.6}
.sgc-title small{display:block;font-size:9.5px;color:#6b6359;margin-top:2px}
.sgc-actions{display:flex;gap:7px}
.sgc-leader{display:flex;align-items:center;gap:10px;background:#fffefa;border:1.5px solid #efe7da;border-radius:14px;padding:9px 11px}
.sgc-leader-avatar{width:34px;height:34px;border-radius:12px;background:var(--orange);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;flex-shrink:0}
.sgc-leader small{display:block;font-size:9px;color:var(--muted)}
.sgc-leader strong{display:block;font-size:12px;font-weight:800;margin-top:1px}
.sgc-leader-none{font-size:10px;color:var(--muted);font-weight:600}
.sgc-members{display:flex;flex-wrap:wrap;gap:6px}
.sgc-member{background:var(--soft-yellow);border:1.5px solid rgba(32,32,32,.14);border-radius:999px;padding:4px 10px;font-size:9.5px;font-weight:700;white-space:nowrap}
.sgc-member.is-leader{background:#fff;border-color:var(--accent,#4f86c2);color:#3d3831}
.sgc-member.none{background:#f1ece2;border-style:dashed;border-color:#c9c1b4;color:var(--muted);font-weight:600}
.sgc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sgc-hint{font-size:9px;color:var(--muted)}
.study-group-modal{max-height:88vh;overflow:auto}
.study-group-cohort-field{display:block}
.study-group-cohort-field select{width:100%;border:1.5px solid #d9d0c4;border-radius:13px;padding:11px 13px;background:#fff;font:inherit;font-size:12px;outline-color:var(--orange)}
.study-group-members{margin-top:12px}
.study-group-members-head{display:flex;align-items:center;justify-content:space-between;font-size:10px;font-weight:800;color:#6d655a;margin-bottom:7px}
#studyGroupMemberList{display:grid;gap:7px;max-height:270px;overflow:auto;padding-left:4px}
.study-group-row{display:flex;align-items:center;gap:10px;border:1.5px solid #e8e0d4;background:#fbf9f4;border-radius:14px;padding:9px 12px;cursor:pointer;transition:border-color .15s,background .15s}
.study-group-row.checked{border-color:var(--orange);background:#fff8ec}
.study-group-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--deep-orange);flex-shrink:0}
.sg-member-name{flex:1;font-size:11.5px;font-weight:700;min-width:0}
.sg-member-code{font-size:10px;color:var(--muted)}
.sg-leader-pick{display:flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;color:#6d655a;white-space:nowrap}
.sg-leader-radio{accent-color:var(--deep-orange);width:14px;height:14px}
.sg-leader-radio:disabled{opacity:.35}
.random-group-btn{border:none;cursor:pointer;border-radius:14px;padding:11px 18px;font:inherit;font-size:12.5px;font-weight:800;color:#fff;background:linear-gradient(135deg,#9b7ede,#6a4fc7 60%,#4b3591);box-shadow:0 4px 0 #3a2870,0 12px 24px rgba(106,79,199,.35);transition:transform .15s,box-shadow .15s;white-space:nowrap}
.random-group-btn:hover{transform:translateY(-2px);box-shadow:0 6px 0 #3a2870,0 16px 30px rgba(106,79,199,.42)}
.random-group-btn:active{transform:translateY(1px);box-shadow:0 2px 0 #3a2870}
.random-group-btn:disabled{opacity:.6;cursor:wait;transform:none}
.random-group-modal{max-height:88vh;overflow:auto}
.rg-hero{display:flex;gap:12px;align-items:center;background:linear-gradient(135deg,#f3edff,#e4d7ff);border:3px dotted #8a6fc0;border-radius:18px;padding:12px 14px;margin-bottom:12px}
.rg-dice{width:52px;height:52px;border-radius:17px;background:linear-gradient(135deg,#9b7ede,#6a4fc7);display:grid;place-items:center;font-size:26px;box-shadow:0 4px 0 #3a2870;flex-shrink:0}
.rg-hero h2{margin:0;font-size:16px;font-weight:800}
.rg-hero p{margin:3px 0 0;font-size:10.5px;color:#5d5470;font-weight:600}
.rg-modes{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rg-mode{border:2px solid #e8e0d4;background:#fbf9f4;border-radius:16px;padding:12px;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,background .15s,transform .15s}
.rg-mode:hover{transform:translateY(-2px)}
.rg-mode.active{border-color:#6a4fc7;border-style:dotted;background:#f6f1ff;box-shadow:0 4px 0 rgba(106,79,199,.25)}
.rg-mode-icon{font-size:22px;line-height:1}
.rg-mode strong{font-size:12px;font-weight:800}
.rg-mode small{font-size:9.5px;color:#6d655a}
.rg-mode input{width:100%;box-sizing:border-box;border:1.5px solid #d9d0c4;border-radius:11px;padding:9px 11px;font:inherit;font-size:12px;background:#fff;outline-color:#6a4fc7}
.rg-mode input:disabled{opacity:.45;background:#f1ece2}
.rg-hint{font-size:10px;color:#6d655a;margin:10px 2px 0;line-height:1.9}
.rg-preview{display:flex;align-items:center;gap:9px;margin-top:9px;border:2px dashed #c9c1b4;border-radius:14px;padding:10px 12px;font-size:11px;font-weight:700;color:#6d655a;background:#fbf9f4;line-height:1.9}
.rg-preview.ok{border-color:#6a4fc7;border-style:dotted;background:#f6f1ff;color:#3d3560}
.rg-preview-icon{font-size:17px;flex-shrink:0}
@media(max-width:640px){.rg-modes{grid-template-columns:1fr}}
/* ---- session workspace (sw-) ---- */
.sw-strip{border:3px dotted var(--accent,#4f86c2);border-radius:22px;background:var(--card);padding:14px 16px;margin-bottom:16px;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.25))}
.sw-strip-top{display:flex;gap:10px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:10px}
.sw-strip-top label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:800;color:#6d655a;min-width:220px;flex:1}
.sw-strip-top select{border:1.5px solid #d9d0c4;border-radius:11px;padding:9px 11px;font:inherit;font-size:13px;background:#fff}
.sw-session-chips{display:flex;gap:9px;overflow-x:auto;padding-bottom:4px}
.sw-chip{flex:0 0 auto;display:flex;flex-direction:column;gap:2px;align-items:flex-start;border:2px solid #e8e0d4;background:#fbf9f4;border-radius:15px;padding:9px 13px;cursor:pointer;font:inherit;transition:transform .15s,border-color .15s,background .15s;text-align:right}
.sw-chip:hover{transform:translateY(-2px)}
.sw-chip.active{border-color:var(--orange);border-style:dotted;background:#fff7e8;box-shadow:0 4px 0 rgba(242,140,0,.25)}
.sw-chip-dot{width:9px;height:9px;border-radius:50%;background:#ffd866}
.sw-chip-dot.fin{background:#5a9653}
.sw-chip-topic{font-size:12.5px;font-weight:800}
.sw-chip small{font-size:10px;color:#6d655a}
.sw-chip-top{color:#b97b00!important;font-weight:800}
.sw-chip-empty{font-size:11px;color:#999188}
.sw-tabs{display:flex;gap:8px;margin-bottom:14px}
.sw-tabs button{flex:1;border:2px solid #e8e0d4;background:#fbf9f4;border-radius:14px;padding:10px;font:inherit;font-size:13px;font-weight:800;cursor:pointer;color:#6d655a}
.sw-tabs button.active{border-color:var(--ink);border-style:dotted;background:var(--yellow);color:var(--ink);box-shadow:0 4px 0 rgba(32,32,32,.15)}
.sw-pane{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media(max-width:1100px){.sw-pane{grid-template-columns:1fr}}
.sw-breakdown{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.sw-breakdown span{font-size:10.5px;background:#fbf9f4;border:1.5px dashed #c9c1b4;border-radius:11px;padding:5px 10px;color:#6d655a}
.sw-breakdown b{color:var(--ink)}
.sw-counters{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:10px 0}
.sw-counters.inline{grid-template-columns:repeat(4,minmax(86px,1fr));margin:0;flex:1}
.sw-counter{display:flex;align-items:center;justify-content:space-between;gap:4px;border:2px solid #e8e0d4;border-radius:13px;padding:5px 7px;background:#fff}
.sw-counter-body{display:flex;flex-direction:column;align-items:center;line-height:1.5}
.sw-counter-body b{font-size:15px}
.sw-counter-body small{font-size:8.5px;color:#999188;white-space:nowrap}
.sw-step{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--ink);background:var(--soft-yellow,#fff0b8);font-size:15px;font-weight:800;cursor:pointer;line-height:1;flex-shrink:0}
.sw-step:hover{background:var(--yellow)}
.sw-step:active{transform:scale(.92)}
.sw-student-group{grid-column:1/-1;border:2px dashed #c9c1b4;border-radius:18px;padding:12px;background:#fffefa}
.sw-student-group h4{margin:0 0 10px;font-size:13px;display:flex;justify-content:space-between;align-items:center}
.sw-student-group h4 span{font-size:10px;color:#999188;font-weight:400}
.sw-student{display:flex;gap:10px;align-items:center;border:1.5px solid #eee5d6;border-radius:14px;padding:8px 10px;margin-bottom:8px;background:#fff}
.sw-student-id{min-width:110px}
.sw-student-id strong{display:block;font-size:12.5px}
.sw-student-id small{font-size:9.5px;color:#999188}
.sw-total{font-size:16px;min-width:34px;text-align:center}
.sw-total.dirty{color:var(--deep-orange)}
.sw-del{border:none;background:none;font-size:16px;cursor:pointer;opacity:.65}
.sw-del:hover{opacity:1;transform:scale(1.15)}
.sw-tops{margin-top:14px;border-top:2px dashed #e8e0d4;padding-top:12px}
.sw-tops-title{font-size:12px;margin:12px 0 8px;color:#6d655a}
.sw-top{display:flex;gap:10px;align-items:center;border:1.5px solid #eee5d6;border-radius:13px;padding:7px 11px;margin-bottom:7px;background:#fff}
.sw-top div{flex:1}
.sw-top strong{display:block;font-size:12.5px}
.sw-top small{font-size:9.5px;color:#999188}
.sw-top b{font-size:15px;color:#b97b00}
.sw-medal{font-size:19px}
.sw-leaders-panel{margin-top:0;border:3px dotted var(--accent,#4f86c2);border-radius:22px;background:var(--card);padding:15px 16px;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.22))}
.sw-leaders-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
@media(max-width:900px){.sw-leaders-row{grid-template-columns:1fr}}
/* ---- leaderboard: podium + ranked list ---- */
.lb-podium{display:flex;align-items:flex-end;justify-content:center;gap:10px;margin:6px 0 12px}
.lb-podium.solo{justify-content:center}
.lb-place{flex:1;max-width:150px;display:flex;flex-direction:column;align-items:center;gap:3px;cursor:default}
.lb-place[data-trend-group]{cursor:pointer}
.lb-avatar{width:46px;height:46px;font-size:19px;border:2px solid var(--ink)}
.lb-place strong{font-size:12px;text-align:center}
.lb-xp{font-size:11.5px;font-weight:800;background:var(--yellow);border:1.5px solid var(--ink);border-radius:11px;padding:2px 10px;white-space:nowrap}
.lb-place small{font-size:9px;color:#999188}
.lb-bar{width:100%;border:1.5px solid var(--ink);border-radius:12px 12px 8px 8px;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;margin-top:5px}
.lb-bar b{font-size:20px}
.lb-1 .lb-bar{height:88px;background:linear-gradient(180deg,#ffd866,#ffdf8e)}
.lb-2 .lb-bar{height:66px;background:linear-gradient(180deg,#e3ddd0,#f1ece2)}
.lb-3 .lb-bar{height:54px;background:linear-gradient(180deg,#eec39a,#f6dcc0)}
.lb-1 .lb-avatar{width:54px;height:54px;font-size:22px}
.lb-list{display:flex;flex-direction:column;gap:7px}
.lb-row{display:flex;align-items:center;gap:9px;border:1.5px solid #eee5d6;border-radius:13px;padding:6px 11px;background:#fff}
.lb-row[data-trend-group]{cursor:pointer}
.lb-row:hover,.lb-place[data-trend-group]:hover{filter:brightness(.97)}
.lb-rank{font-size:13px;font-weight:800;color:#999188;min-width:20px;text-align:center}
.lb-row strong{font-size:12.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-row small{font-size:9.5px;color:#999188;white-space:nowrap}
.member-avatar.mini{width:30px;height:30px;font-size:14px}
.sw-session-row{display:flex;gap:12px;align-items:center}
.sw-session-row .session-info{flex:1}
.sw-tops-line{font-size:10.5px;color:#6d655a;margin-top:3px}
.sw-row-score{text-align:center}
.sw-row-score b{display:block;font-size:15px}
.sw-row-score small{font-size:9px;color:#999188}
.sw-score-btn{flex-shrink:0}
.sw-top-students{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:12px}
@media(max-width:760px){.sw-top-students{grid-template-columns:1fr}.sw-counters.inline{grid-template-columns:repeat(2,1fr)}.sw-student{flex-wrap:wrap}}
#sessionClassInput{width:100%;box-sizing:border-box;border:1.5px solid #d9d0c4;border-radius:11px;padding:9px 11px;font:inherit;font-size:13px;background:#fff;margin-top:6px}
/* ---- session workspace layout fixes ---- */
#scoreCardGrid{display:block}
#swGroupsPane{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
@media(max-width:900px){#swGroupsPane{grid-template-columns:1fr}}
#swStudentsPane{display:flex;flex-direction:column;gap:12px}
#swGroupsPane[hidden],#swStudentsPane[hidden]{display:none}
#scoringView .score-summary .preview-metric{padding:8px 0}
#scoringView .score-summary .preview-status{padding:9px 0}
.sw-podium{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
@media(max-width:900px){.sw-podium{grid-template-columns:1fr}}
.sw-podium-box{border:3px dotted var(--accent,#4f86c2);border-radius:18px;background:var(--card);padding:10px 12px;box-shadow:0 4px 0 var(--accent-soft,rgba(79,134,192,.22))}
.sw-podium-box h4{margin:0 0 8px;font-size:12px}
.sw-podium-items{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.sw-podium-item{flex:0 0 auto;display:flex;align-items:center;gap:7px;border:1.5px solid #eee5d6;border-radius:12px;padding:5px 10px;background:#fff}
.sw-podium-item strong{display:block;font-size:11.5px;white-space:nowrap}
.sw-podium-item small{font-size:9.5px;color:#b97b00;font-weight:800;white-space:nowrap}
/* ---- compact scoring cards (workspace only) ---- */
#swGroupsPane .study-group-card{padding:12px 14px;border-radius:18px}
#swGroupsPane .study-group-card:hover{transform:none}
#swGroupsPane .sgc-head strong{font-size:13px}
#swGroupsPane .sw-breakdown{margin:8px 0 2px}
#swGroupsPane .sw-breakdown span{font-size:10px;padding:4px 9px}
#swGroupsPane .sw-counters{gap:8px;margin:8px 0 2px}
#swGroupsPane .sw-counter{padding:4px 6px;border-radius:11px}
#swGroupsPane .sw-step{width:24px;height:24px;font-size:13px}
#swGroupsPane .sw-counter-body b{font-size:13px}
#swGroupsPane .sw-counter-body small{font-size:8px}
.sw-members{margin-top:8px;border-top:1.5px dashed #e8e0d4;padding-top:6px}
.sw-members summary{cursor:pointer;font-size:11px;color:#6d655a;font-weight:700;list-style:none}
.sw-members summary::-webkit-details-marker{display:none}
.sw-members summary::before{content:'◂ '}
.sw-members[open] summary::before{content:'▾ '}
.sw-members .sgc-members{margin-top:8px}
#swStudentsPane .sw-student{padding:7px 10px;margin-bottom:0}
#swStudentsPane .sw-counter{padding:3px 5px}
#swStudentsPane .sw-step{width:22px;height:22px;font-size:12px}
#swStudentsPane .sw-counter-body b{font-size:12px}
#swStudentsPane .sw-counter-body small{font-size:7.5px}
#swStudentsPane .sw-student-id{min-width:95px}
#swStudentsPane .sw-student-group{padding:10px}
#swStudentsPane .sw-counters.inline{gap:6px}
.sw-student-score{flex:1;min-width:0}
.sw-manual-row{display:flex;align-items:center;gap:6px;font-size:10.5px;color:#6d655a;margin-top:8px;flex-wrap:wrap}
.sw-manual-row>span:first-child{font-weight:800}
.sw-manual{width:62px;border:1.5px solid #d9d0c4;border-radius:9px;padding:5px 8px;font:inherit;font-size:12px;background:#fff}
.sw-manual:focus{outline:2px solid var(--yellow);border-color:var(--ink)}
.sw-manual-row.small{margin-top:6px;font-size:10px}
.sw-manual-row.small .sw-manual{width:54px;padding:4px 6px;font-size:11px}
.sw-gcounters{display:flex;flex-direction:column;gap:6px;margin:8px 0 2px}
.sw-gc{display:flex;align-items:center;justify-content:space-between;gap:6px;border:2px solid #e8e0d4;border-radius:11px;padding:3px 5px;background:#fff}
.sw-gc>span:first-child{font-size:10.5px;color:#6d655a;font-weight:800}
.sw-gc-ctrl{display:flex;align-items:center;gap:7px}
.sw-gc-ctrl .sw-val{font-size:14px;min-width:26px;text-align:center}
.sw-gc .sw-step{width:24px;height:24px;font-size:13px}
.sw-student{flex-wrap:wrap}
.sw-student-score{flex:1 1 270px}
.sw-counters.inline{grid-template-columns:repeat(4,minmax(62px,1fr))}
#swStudentsPane .sw-student-id{min-width:0;flex:1 1 110px}
.sw-chip-del{border:none;background:none;cursor:pointer;font-size:12px;opacity:.6;flex-shrink:0}
.sw-chip-del:hover{opacity:1;transform:scale(1.2)}
.sw-chip-wrap{display:flex;gap:4px;align-items:stretch;flex:0 0 auto}
.sw-strip-actions{display:flex;gap:8px}
.sw-session-card{display:flex;gap:13px;align-items:center;border:3px dotted var(--accent,#4f86c2);border-radius:20px;background:var(--card);padding:13px 15px;margin-bottom:12px;box-shadow:0 5px 0 var(--accent-soft,rgba(79,134,192,.22));transition:transform .15s}
.sw-session-card:hover{transform:translateY(-2px)}
.sw-session-date{flex:0 0 auto;width:56px;height:62px;border-radius:15px;background:var(--yellow);border:1.5px solid var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.4}
.sw-session-date strong{font-size:19px}
.sw-session-date span{font-size:9.5px;color:#6d655a}
.sw-session-main{flex:1;min-width:0}
.sw-session-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px}
.sw-session-title strong{font-size:14px}
.sw-session-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:5px}
.sw-session-chips span{font-size:10px;background:#fbf9f4;border:1.5px dashed #c9c1b4;border-radius:10px;padding:3px 9px;color:#6d655a}
.sw-session-actions{display:flex;flex-direction:column;gap:7px;align-items:stretch;flex-shrink:0}
.sw-session-actions .sw-score-btn{white-space:nowrap}
.sw-session-actions .sw-del{text-align:center}
@media(max-width:640px){.sw-session-card{flex-wrap:wrap}.sw-session-actions{flex-direction:row;width:100%}.sw-session-actions .sw-score-btn{flex:1}}
/* ---- progress page redesign ---- */
#progressView .section-heading.progress-header{background:linear-gradient(135deg,#ffd866 0%,#ffe9a8 55%,#fff6dd 100%);border:2px solid var(--ink);border-radius:24px;padding:22px 24px;box-shadow:var(--shadow);position:relative;overflow:hidden}
#progressView .progress-header::after{content:'✦';position:absolute;left:22px;top:8px;font-size:64px;opacity:.16;transform:rotate(12deg)}
#progressView .progress-header h1{font-size:26px}
#progressView .progress-header h1::before{content:'📊 '}
.progress-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.progress-summary-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.progress-summary-grid{grid-template-columns:1fr}}
.progress-summary-card{position:relative;overflow:hidden;background:var(--card);border:1.5px solid var(--ink)!important;border-radius:20px;box-shadow:var(--shadow);transition:transform .15s}
.progress-summary-card:hover{transform:translateY(-3px)}
.progress-summary-card::before{content:'';position:absolute;top:0;right:0;left:0;height:6px;background:var(--stripe,linear-gradient(90deg,#ffd866,#f28c00))}
.progress-summary-card:nth-child(1){--stripe:linear-gradient(90deg,#ffd866,#f28c00)}
.progress-summary-card:nth-child(2){--stripe:linear-gradient(90deg,#8fd694,#5a9653)}
.progress-summary-card:nth-child(3){--stripe:linear-gradient(90deg,#a9ccf2,#4f86c2)}
.progress-summary-card:nth-child(4){--stripe:linear-gradient(90deg,#d3bdf0,#8a6fc0)}
.progress-summary-card:nth-child(5){--stripe:linear-gradient(90deg,#f2a0a0,#c96a6a)}
.progress-summary-card:nth-child(6){--stripe:linear-gradient(90deg,#f2c078,#cd8534)}
.progress-summary-card .summary-icon{width:46px;height:46px;border-radius:15px;display:inline-flex;align-items:center;justify-content:center;font-size:23px;border:1.5px solid var(--ink);background:linear-gradient(135deg,#fff6dd,#ffe9a8);flex-shrink:0}
.progress-summary-card:nth-child(2) .summary-icon{background:linear-gradient(135deg,#e4f4e1,#cfe8c8)}
.progress-summary-card:nth-child(3) .summary-icon{background:linear-gradient(135deg,#e3effc,#cfe3f8)}
.progress-summary-card:nth-child(4) .summary-icon{background:linear-gradient(135deg,#efe9fa,#e2d8f4)}
.progress-summary-card:nth-child(5) .summary-icon{background:linear-gradient(135deg,#fbe3e3,#f5b6b6)}
.progress-summary-card:nth-child(6) .summary-icon{background:linear-gradient(135deg,#fdf0dc,#ffe3b3)}
.comparison-row.trend-open{cursor:pointer}
.comparison-row.trend-open:hover{transform:translateY(-2px);box-shadow:0 6px 0 rgba(32,32,32,.08),0 18px 34px rgba(63,47,28,.12)}
.trend-hint{font-size:9.5px;font-weight:800;background:var(--yellow);border:1.5px solid var(--ink);border-radius:10px;padding:2px 9px;white-space:nowrap}
.trend-link{background:none;border:none;padding:0;color:#b97b00;font-weight:800;cursor:pointer;font:inherit}
.trend-link:hover{text-decoration:underline}
/* ---- group trend modal ---- */
.trend-modal{width:min(780px,95vw);max-height:92vh;overflow-y:auto}
.trend-modal .eyebrow{color:#b97b00;font-weight:800;font-size:11px}
.trend-modal h2{font-size:22px;margin:2px 0 4px}
.trend-modal>p{font-size:11.5px;color:#6d655a;margin:0 0 4px}
.trend-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
@media(max-width:640px){.trend-stats{grid-template-columns:repeat(2,1fr)}}
.trend-stats>div{border:1.5px solid #e8e0d4;border-radius:14px;padding:9px 12px;background:#fffefa;text-align:center}
.trend-stats span{display:block;font-size:9.5px;color:#999188}
.trend-stats b{display:block;font-size:16px;margin-top:3px}
.trend-chart-wrap{border:3px dotted var(--accent,#4f86c2);border-radius:20px;background:#fff;padding:14px 12px 6px;box-shadow:0 5px 0 var(--accent-soft,rgba(79,134,192,.22))}
.trend-svg{width:100%;height:auto;display:block}
.trend-legend{display:flex;gap:14px;justify-content:center;font-size:10px;color:#6d655a;padding:4px 0 8px}
.trend-sec{font-size:13px;margin:16px 0 8px}
.trend-rows{display:flex;flex-direction:column;gap:8px}
.trend-row{display:flex;gap:10px;align-items:center;border:1.5px solid #eee5d6;border-radius:13px;padding:8px 12px;background:#fff}
.trend-row-date{font-size:10.5px;color:#999188;min-width:86px}
.trend-row-main{flex:1;min-width:0}
.trend-row-main strong{display:block;font-size:12.5px}
.trend-row-main small{font-size:9.5px;color:#999188}
.trend-row b{font-size:15px}
.trend-row b.pos{color:#2e7d32}
.trend-row b.neg{color:#c0392b}
.trend-cum{font-size:9.5px;color:#999188}
/* ---- class report tab ---- */
.rep-hero{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(135deg,#ffd866 0%,#ffe9a8 55%,#fff6dd 100%);border:2px solid var(--ink);border-radius:22px;padding:16px 20px;box-shadow:var(--shadow);margin-bottom:14px;flex-wrap:wrap}
.rep-hero h2{font-size:18px;margin:0 0 4px}
.rep-hero p{font-size:11px;color:#6d655a;margin:0}
.rep-hero-badge{font-size:14px;font-weight:800;background:#fff;border:1.5px solid var(--ink);border-radius:13px;padding:7px 14px;white-space:nowrap}
.rep-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:6px}
@media(max-width:640px){.rep-stats{grid-template-columns:repeat(2,1fr)}}
.rep-stats>div{background:var(--card);border:1.5px solid var(--ink);border-radius:16px;padding:10px 12px;text-align:center;box-shadow:0 3px 0 rgba(32,32,32,.08)}
.rep-stats .rep-ico{font-size:20px;display:block}
.rep-stats span{font-size:9px;color:#999188;display:block}
.rep-stats b{display:block;font-size:17px;margin-top:2px}
.rep-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media(max-width:640px){.rep-groups{grid-template-columns:1fr}}
.rep-boards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
@media(max-width:900px){.rep-boards{grid-template-columns:1fr}}
.rep-board{border:3px dotted var(--accent,#4f86c2);border-radius:22px;background:var(--card);padding:14px 15px;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.22))}
.rep-board .panel-heading{margin-bottom:10px}
.rep-group{border:3px dotted var(--accent,#4f86c2);border-radius:18px;background:var(--card);padding:11px 13px;box-shadow:0 4px 0 var(--accent-soft,rgba(79,134,192,.22));cursor:pointer;transition:transform .15s}
.rep-group:hover{transform:translateY(-2px)}
.rep-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.rep-group-head strong{font-size:13px}
.rep-group>small{font-size:10px;color:#999188}
.rep-group-nums{display:flex;gap:8px;align-items:center;margin-top:7px;font-size:11px;font-weight:800;flex-wrap:wrap}
.progress-pick-class{border:3px dotted var(--accent,#4f86c2);border-radius:22px;background:var(--card);padding:34px 20px;text-align:center;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.25))}
.progress-pick-class .big{font-size:42px;display:block;margin-bottom:10px}
.progress-pick-class h3{font-size:17px;margin:0 0 6px}
.progress-pick-class p{font-size:11.5px;color:#6d655a;margin:0}
.export-preview-panel{border:3px dotted var(--accent,#4f86c2);border-radius:22px;background:var(--card);padding:16px 17px;box-shadow:0 6px 0 var(--accent-soft,rgba(79,134,192,.22));margin-bottom:18px}
.export-preview-panel[hidden]{display:none}
.export-preview-table{width:100%;border-collapse:collapse;font-size:10.5px;min-width:760px}
.export-preview-table th{background:#f7f1e6;border:1px solid #e6ddcf;padding:8px 10px;text-align:right;white-space:nowrap}
.export-preview-table td{border:1px solid #eee5d6;padding:7px 10px;white-space:nowrap;background:#fff}

/* ---- multi-teacher (admin) ---- */
.teachers-panel{padding:22px;margin-bottom:18px}
.teachers-hint{padding:14px 18px;margin-bottom:18px}
.teacher-row{grid-template-columns:1.6fr auto auto auto auto;gap:14px}
.teacher-row strong{display:block}
.teacher-row .export-status.is-on{background:#CFE8C8}
.teacher-row .export-status.is-off{background:#F5B6B6}
.teacher-class-count{font-size:12.5px;color:#66615A;white-space:nowrap}
.teacher-since{white-space:nowrap}
.teacher-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.class-assign-row{display:flex;align-items:center;gap:8px;margin:10px 0 2px;font-size:12px;color:#66615A}
.class-assign-row select{flex:1;padding:7px 9px;border-radius:11px;border:1px solid #e6ded2;background:#fffdf8;font-family:inherit;font-size:12.5px;color:#2f2b26;cursor:pointer}
.class-assign-row select:hover{border-color:#d8cfc0}
@media(max-width:850px){.teacher-row{grid-template-columns:1fr 1fr}.teacher-actions{grid-column:1/-1;justify-content:flex-start}}

/* ---- class card tidy layout ---- */
.class-green{background:var(--green);--accent:#5a9653;--accent-soft:rgba(90,150,83,.30)}
.class-card{display:flex;flex-direction:column}
.class-card h2{margin-top:16px}
.class-stats{margin-top:16px}
.class-card-footer{margin-top:auto;padding-top:18px;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}
.class-card-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}
.class-card .secondary-btn{position:static;right:auto;bottom:auto;margin:0;background:#fffefa;font-size:11px;border:1.5px solid var(--ink);border-radius:13px;box-shadow:2px 2px 0 rgba(32,32,32,.14);font-weight:800;padding:9px 14px;z-index:1}
.class-card .card-delete-btn{position:static;bottom:auto;left:auto;width:34px;height:34px;flex:0 0 auto}
.class-assign-row{margin:0;display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:#5c554b;background:rgba(255,255,255,.72);border:1px solid rgba(32,32,32,.14);border-radius:14px;padding:6px 8px 6px 11px}
.class-assign-row>span{white-space:nowrap}
.class-assign-row select{flex:1;min-width:0;padding:6px 8px;border-radius:10px;border:1px solid rgba(32,32,32,.16);background:#fff;font-family:inherit;font-size:11.5px;font-weight:700;color:var(--ink);cursor:pointer}
.class-assign-row select:focus{outline:2px solid var(--accent,rgba(201,144,0,.5));outline-offset:1px}
.class-assign-row select:hover{border-color:rgba(32,32,32,.3)}

/* ---- profile dropdown ---- */
.profile-wrap{position:relative}
.profile-caret{font-size:10px;color:var(--muted)}
.profile-menu{position:absolute;top:calc(100% + 12px);left:0;width:250px;background:#fffefa;border:1.5px solid var(--ink);border-radius:18px;box-shadow:6px 6px 0 rgba(32,32,32,.12),0 24px 42px rgba(63,47,28,.18);padding:12px;display:none;flex-direction:column;gap:5px;z-index:30}
.profile-menu.open{display:flex}
.profile-menu-head{display:flex;align-items:center;gap:11px;padding:8px 8px 12px;border-bottom:1px solid #eee7dc;margin-bottom:5px}
.profile-menu-head .avatar{width:42px;height:42px;flex:0 0 auto;font-size:17px}
.profile-menu-head strong{display:block;font-size:13px}
.profile-menu-head small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px;word-break:break-all}
.profile-role{display:inline-block;margin-top:6px;font-size:9.5px;font-weight:800;background:var(--soft-yellow);border:1px solid rgba(32,32,32,.14);border-radius:999px;padding:2px 10px}
.profile-menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:right;padding:10px 11px;border-radius:12px;font-size:12.5px;font-weight:700;color:#4d473f}
.profile-menu-item span{font-size:16px;width:20px;text-align:center}
.profile-menu-item:hover{background:var(--soft-yellow);color:var(--ink)}
.profile-menu-item.danger{color:#b04848}
.profile-menu-item.danger:hover{background:var(--pink);color:#7c2222}

/* ---- topbar school brand chip ---- */
.breadcrumb b{font-weight:400;color:#c9c1b5;font-size:11px}
.school-chip{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#ffd866 0%,#ffe9a8 55%,#fff3d0 100%);border:1.5px solid var(--ink);border-radius:12px;padding:6px 13px 6px 11px;font-weight:800;font-size:12.5px;color:var(--ink);box-shadow:3px 3px 0 rgba(32,32,32,.16);transition:.18s;white-space:nowrap}
.school-chip .school-mark{width:24px;height:24px;flex:0 0 auto;background:rgba(255,255,255,.75);border:1px solid var(--ink);border-radius:8px;display:grid;place-items:center;font-size:13px}
.school-chip:hover{transform:translateY(-1px);box-shadow:3px 4px 0 rgba(32,32,32,.24)}
.school-chip:active{transform:translateY(1px);box-shadow:1px 1px 0 rgba(32,32,32,.2)}

/* ---- notification dropdown ---- */
.notif-wrap{position:relative}
.notif-bell{font-size:15px}
.notif-menu{position:absolute;top:calc(100% + 12px);left:0;width:318px;background:#fffefa;border:1.5px solid var(--ink);border-radius:18px;box-shadow:6px 6px 0 rgba(32,32,32,.12),0 24px 42px rgba(63,47,28,.18);padding:12px;display:none;flex-direction:column;gap:9px;z-index:30}
.notif-menu.open{display:flex}
.notif-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 6px;border-bottom:1px solid #eee7dc}
.notif-head strong{font-size:13px}
.notif-head span{font-size:10px;color:var(--muted);font-weight:800}
.notif-list{display:flex;flex-direction:column;gap:7px;max-height:272px;overflow:auto}
.notif-item{display:flex;align-items:flex-start;gap:9px;background:#fbf6ed;border-radius:12px;padding:9px 11px}
.notif-item .notif-mini{width:28px;height:28px;flex:0 0 auto;background:#fff;border:1px solid #e8dfd2;border-radius:9px;display:grid;place-items:center;font-size:12px}
.notif-item strong{font-size:11.5px;display:block}
.notif-item p{margin:2px 0 0;font-size:10px;color:var(--muted)}
.notif-item small{display:block;margin-top:3px;font-size:9px;color:#999188}
.notif-empty{font-size:10.5px;color:var(--muted);text-align:center;padding:22px 8px;line-height:1.7}
.notif-footer{width:100%;text-align:center;background:var(--soft-yellow);border:1px solid #e3c77a;border-radius:11px;padding:9px;font-size:11px;font-weight:800;color:#7a5c14;transition:.15s}
.notif-footer:hover{background:var(--yellow)}
@media(max-width:760px){.notif-menu{position:fixed;left:12px;right:12px;top:60px;width:auto}.school-chip{font-size:11.5px;padding:5px 11px 5px 9px}.school-chip .school-mark{width:21px;height:21px;font-size:11px}}

/* ---- progress page vertical rhythm ---- */
#progressView .progress-summary-grid{gap:24px 16px;margin-bottom:26px}
#progressView .progress-summary-card{padding:18px 18px 17px}
#progressView .progress-filters{margin-bottom:24px}
#progressView .progress-report-grid{gap:22px;margin-bottom:24px}
#progressView .most-improved-panel{margin-bottom:24px}
@media(max-width:900px){#progressView .progress-summary-grid{gap:20px 15px}}
@media(max-width:560px){#progressView .progress-summary-grid{gap:16px 15px;margin-bottom:22px}}

/* ---- progress page: leaders row + report panels spacing ---- */
#progressView .sw-leaders-row{gap:20px;margin:24px 0 26px}
#progressView .sw-leaders-panel{padding:18px}
#progressView .sw-leaders-panel .dashboard-empty{padding:22px 10px}
@media(max-width:900px){#progressView .sw-leaders-row{grid-template-columns:1fr;gap:16px;margin:20px 0 24px}}

/* ---- dashboard redesign ---- */
.dash-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:6px 0 24px}
.dash-stat{background:var(--card);border:1.5px solid var(--ink);border-radius:20px;padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow);cursor:pointer;transition:transform .15s}
.dash-stat:hover{transform:translateY(-3px)}
.dash-stat .dash-stat-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:20px;border:1.5px solid var(--ink);flex-shrink:0}
.dash-stat strong{display:block;font-size:22px}
.dash-stat span{font-size:10.5px;color:#6d655a;font-weight:700}
.ds-blue .dash-stat-icon{background:linear-gradient(135deg,#e3effc,#cfe3f8)}
.ds-green .dash-stat-icon{background:linear-gradient(135deg,#e4f4e1,#cfe8c8)}
.ds-orange .dash-stat-icon{background:linear-gradient(135deg,#fff1dd,#ffe0b3)}
.ds-yellow .dash-stat-icon{background:linear-gradient(135deg,#fff6dd,#ffe9a8)}
.ds-pink .dash-stat-icon{background:linear-gradient(135deg,#fbe3e3,#f5b6b6)}
.best-class-row{display:flex;align-items:center;gap:12px;width:100%;background:var(--card);border:1.5px solid #eee5d6;border-radius:16px;padding:10px 12px;margin-bottom:9px;cursor:pointer;font:inherit;text-align:right}
.best-class-row:last-child{margin-bottom:0}
.best-class-row:hover{border-color:var(--ink);filter:brightness(.985)}
.best-rank{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;font-size:17px;border:1.5px solid var(--ink);background:#fff;flex-shrink:0}
.bc-gold{background:linear-gradient(135deg,#fff6dd,#ffe9a8)}
.bc-silver{background:linear-gradient(135deg,#f1f3f6,#e3e8ef)}
.bc-bronze{background:linear-gradient(135deg,#f8ecd9,#eed3ab)}
.best-copy{flex:1;min-width:0}
.best-copy strong{display:block;font-size:13px}
.best-copy small{font-size:9.5px;color:#999188;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.best-nums{display:flex;align-items:center;gap:8px;flex-shrink:0}
.best-nums b{font-size:13px;color:#b97b00}
#dashboardView .lower-grid{grid-template-columns:1fr}
@media(max-width:980px){.dash-stats{grid-template-columns:repeat(2,1fr)}}

/* ---- podium medals: gold / silver / bronze ---- */
.podium-first .podium-block{height:148px;background:linear-gradient(180deg,#ffe9a3 0%,#ffd35c 38%,#eab21b 78%,#cf9708 100%);color:#6b4a00;box-shadow:0 8px 0 rgba(190,140,0,.26)}
.podium-second .podium-block{height:104px;background:linear-gradient(180deg,#fbfcfe 0%,#e4eaf2 40%,#c6d0dc 78%,#aab8c8 100%);color:#46536b;box-shadow:0 6px 0 rgba(120,135,155,.22)}
.podium-third .podium-block{height:72px;background:linear-gradient(180deg,#f0cba6 0%,#d59d62 45%,#b97b41 80%,#9c6127 100%);color:#3f230a;box-shadow:0 5px 0 rgba(140,90,40,.24)}
.podium-third .podium-block b{color:#3f230a}
.podium-block span{background:rgba(255,255,255,.55)}
.podium-first .podium-block b{font-size:24px;color:#6b4a00}
.podium-block.podium-empty{color:#b3a68f}
.podium-second .podium-avatar{box-shadow:0 0 0 3px #cfd9e5,0 4px 0 rgba(32,32,32,.10)}
.podium-third .podium-avatar{box-shadow:0 0 0 3px #d9a56d,0 4px 0 rgba(32,32,32,.10)}
@media(max-width:560px){.podium-first .podium-block{height:130px}.podium-second .podium-block{height:96px}.podium-third .podium-block{height:68px}}

/* ---- student progress chart ---- */
.student-trend-panel{margin-top:24px;padding:20px}
.student-trend-panel .panel-heading{align-items:flex-start;gap:14px;flex-wrap:wrap}
.student-pick{display:flex;flex-direction:column;gap:6px;font-size:10px;color:var(--muted);font-weight:700;flex-shrink:0}
.student-pick select{min-width:220px;max-width:340px;padding:9px 12px;border:1.5px solid var(--ink);border-radius:12px;background:#fffefa;font:inherit;font-size:12px;color:inherit}
.student-trend-stats{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 16px}
.student-stat{display:flex;align-items:center;gap:9px;background:#fffefa;border:1.5px solid #eee5d6;border-radius:15px;padding:8px 13px;font-size:10.5px;color:#6d655a;font-weight:700}
.student-stat .ss-ico{width:32px;height:32px;border-radius:11px;display:grid;place-items:center;border:1.5px solid var(--ink);font-size:14px;flex-shrink:0}
.student-stat b{display:block;font-size:14px;color:var(--ink);font-weight:800}
.st-yellow .ss-ico{background:linear-gradient(135deg,#fff6dd,#ffe9a8)}
.st-blue .ss-ico{background:linear-gradient(135deg,#e3effc,#cfe3f8)}
.st-green .ss-ico{background:linear-gradient(135deg,#e4f4e1,#cfe8c8)}
.st-pink .ss-ico{background:linear-gradient(135deg,#fbe3e3,#f5b6b6)}
.st-lavender .ss-ico{background:linear-gradient(135deg,#efe9fa,#e2d8f4)}
.student-trend-chart{min-height:240px}
.student-trend-chart svg{width:100%;height:auto;display:block}
.student-trend-chart .chart-empty{padding:60px 16px}
@media(max-width:700px){.student-pick{width:100%}.student-pick select{width:100%;max-width:none}}

/* ---- topbar redesign ---- */
.topbar{position:sticky;top:0;z-index:45;height:78px;padding:0 34px;gap:18px;background:linear-gradient(180deg,rgba(255,253,248,.97),rgba(255,251,242,.93));backdrop-filter:blur(8px);border-bottom:2px dashed #e8ddc8;box-shadow:0 10px 26px rgba(63,47,28,.06)}
.brand-cluster{display:flex;align-items:center;gap:12px;padding:6px 14px 6px 8px;border:1.5px solid var(--ink);border-radius:18px;background:linear-gradient(135deg,#fffdf8,#fff6e2);box-shadow:3px 3px 0 rgba(32,32,32,.15);transition:transform .16s,box-shadow .16s;min-width:0}
.brand-cluster:hover{transform:translateY(-1px);box-shadow:3px 5px 0 rgba(32,32,32,.2)}
.brand-cluster:active{transform:translateY(1px);box-shadow:1px 1px 0 rgba(32,32,32,.18)}
.brand-logo{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;font-size:21px;background:linear-gradient(135deg,#ffd866,#ffe9a8 55%,#fff3d0);border:1.5px solid var(--ink);box-shadow:inset 0 -3px 0 rgba(32,32,32,.06);flex-shrink:0}
.brand-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.3;gap:2px;min-width:0}
.brand-name{font-size:13.5px;font-weight:800;white-space:nowrap;color:var(--ink)}
.brand-crumb{display:flex;align-items:center;gap:6px;color:#8a8175;font-size:10.5px;font-weight:700;min-width:0}
.brand-crumb i{width:6px;height:6px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 2px #ffe3b3;flex-shrink:0}
.brand-crumb b{color:var(--ink);font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.top-actions{gap:14px}
.top-search{display:flex;align-items:center;gap:7px;width:272px;padding:9px 12px;border:1.5px solid #e2d9ca;border-radius:14px;background:#fffefa;color:#a69d90;transition:.16s}
.top-search:focus-within{border-color:var(--ink);box-shadow:3px 3px 0 rgba(32,32,32,.12);background:#fff}
.top-search .search-ico{font-size:15px;line-height:1;color:#9a9082}
.top-search input{width:100%;border:0;outline:0;background:transparent;font-size:11px;margin:0}
.top-actions .icon-btn{width:42px;height:42px;border-radius:14px;border:1.5px solid var(--ink);background:linear-gradient(135deg,#fffdf8,#fff4e0);box-shadow:3px 3px 0 rgba(32,32,32,.13);display:grid;place-items:center;font-size:16px;padding:0;transition:transform .16s,box-shadow .16s}
.top-actions .icon-btn:hover{transform:translateY(-1px);box-shadow:3px 5px 0 rgba(32,32,32,.18)}
.notif-bell{font-size:16px}
.profile-chip{border:1.5px solid var(--ink);border-radius:16px;padding:5px 12px 5px 6px;background:linear-gradient(135deg,#fffdf8,#fff4e0);box-shadow:3px 3px 0 rgba(32,32,32,.13);gap:9px;font-size:11.5px;transition:transform .16s,box-shadow .16s}
.profile-chip:hover{transform:translateY(-1px);box-shadow:3px 5px 0 rgba(32,32,32,.18)}
.profile-chip .avatar{width:30px;height:30px;border:1.5px solid var(--ink);border-radius:10px}
@media(max-width:900px){.top-search{width:200px}}
@media(max-width:760px){.topbar{height:62px;padding:0 13px;gap:10px;border-bottom-width:1.5px}.brand-cluster{padding:4px 9px 4px 5px;gap:9px;border-radius:15px}.brand-logo{width:35px;height:35px;font-size:17px;border-radius:11px}.brand-name{font-size:11.5px}.brand-crumb{font-size:9.5px}.brand-crumb b{max-width:120px}.top-search{display:none}.profile-chip{padding:4px}.profile-chip span:not(.avatar){display:none}}
@media(max-width:1020px) and (min-width:761px){.brand-name{font-size:12.5px}.brand-crumb b{max-width:130px}}

/* ---- secondary panel redesign ---- */
.secondary-panel{width:296px;padding:24px 16px 16px;gap:16px;background:transparent;border:0}
.secondary-head{padding:2px 6px 0}
.secondary-head h2{font-size:18px;display:flex;align-items:center;gap:8px}
.secondary-head h2::before{content:'';width:9px;height:9px;border-radius:3px;background:var(--orange);box-shadow:0 0 0 2px #ffe3b3}
.secondary-head .icon-btn{width:32px;height:32px;border-radius:10px;border:1.5px solid var(--ink);background:#fffefa;box-shadow:2px 2px 0 rgba(32,32,32,.12);font-size:13px;display:grid;place-items:center;padding:0;color:var(--ink)}
.calendar-card{border:1.5px solid var(--ink);border-radius:20px;background:linear-gradient(160deg,#fffefa 0%,#fff8e9 100%);padding:14px 12px 13px;box-shadow:3px 3px 0 rgba(32,32,32,.12)}
.calendar-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:8px}
.calendar-top strong{font-size:12.5px;background:#fff;border:1.5px solid var(--ink);border-radius:11px;padding:4px 12px;box-shadow:2px 2px 0 rgba(32,32,32,.1)}
.calendar-top button{width:28px;height:28px;border-radius:9px;border:1.5px solid #e6dcc9;background:#fffefa;color:#7d7468;font-size:16px;display:grid;place-items:center;transition:.15s}
.calendar-top button:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-1px)}
.weekdays{color:#a39b91;font-size:9px;margin-bottom:6px;font-weight:800}
.weekdays,.days{gap:3px}
.days i{width:27px;height:27px;border-radius:9px;font-size:10.5px;color:#5f5850;transition:.15s;cursor:default}
.days i:not(.other):hover{background:#fff3d0}
.days .today{background:linear-gradient(135deg,#ffd866,#ffe9a8);color:var(--ink);border:1.5px solid var(--ink);font-weight:800;box-shadow:2px 2px 0 rgba(32,32,32,.14)}
.days .has-session:not(.today){background:#e2f3dd;color:#2c5b2a;font-weight:800;box-shadow:inset 0 0 0 1.5px #9dc79a}
.days .other{opacity:.28}
.secondary-block{border-top:0;padding-top:4px}
.secondary-title{padding:0 4px;margin-bottom:9px}
.secondary-title h3{font-size:12.5px;display:flex;align-items:center;gap:6px}
.secondary-title h3::before{content:'✦';color:var(--orange);font-size:12px}
.secondary-title .text-link{font-size:9.5px;background:#fffefa;border:1.5px solid #e6dcc9;border-radius:9px;padding:3px 8px;font-weight:800}
.secondary-title .text-link:hover{border-color:var(--ink)}
.activity-list{gap:9px}
.activity{gap:10px;background:#fffefa;border:1.5px solid #f0e7d8;border-radius:14px;padding:9px 10px;transition:.15s}
.activity:hover{border-color:#d9c9ae;transform:translateY(-1px);box-shadow:2px 3px 0 rgba(32,32,32,.06)}
.activity-icon{width:32px;height:32px;border-radius:10px;font-size:15px;border:1.5px solid var(--ink);box-shadow:inset 0 -2px 0 rgba(32,32,32,.05)}
.activity strong{font-size:10.5px;color:var(--ink);line-height:1.5}
.activity p{font-size:9px;color:#7a7268;margin:2px 0 3px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.activity small{font-size:8px;color:#b0a89d}
.blue-tint{background:linear-gradient(135deg,#e3effc,#cfe3f8)}
.orange-tint{background:linear-gradient(135deg,#fff1dd,#ffe0b3)}
.green-tint{background:linear-gradient(135deg,#e4f4e1,#cfe8c8)}
.yellow-tint{background:linear-gradient(135deg,#fff6dd,#ffe9a8)}
.lavender-tint{background:linear-gradient(135deg,#efe9fa,#e2d8f4)}
.reminder-card{flex-direction:column;gap:10px;background:linear-gradient(160deg,#efe9fa 0%,#f7f2ff 100%);border:1.5px solid var(--ink);border-radius:18px;padding:13px 13px 12px;box-shadow:3px 3px 0 rgba(32,32,32,.12);position:relative;overflow:hidden}
.reminder-card::after{content:'✦';position:absolute;left:10px;top:2px;font-size:44px;color:#fff;opacity:.5;pointer-events:none}
.reminder-icon{width:34px;height:34px;border-radius:11px;border:1.5px solid var(--ink);background:#fff;box-shadow:2px 2px 0 rgba(32,32,32,.1);display:grid;place-items:center;font-size:16px}
.reminder-card strong{font-size:11px;display:block;margin-bottom:2px}
.reminder-card p{font-size:9.5px;line-height:1.8;color:#5c5365;margin:0 0 8px}
.reminder-card .text-link{display:inline-block;background:#fff;border:1.5px solid var(--ink);border-radius:10px;padding:4px 10px;font-size:9.5px;font-weight:800;color:var(--ink);box-shadow:2px 2px 0 rgba(32,32,32,.12);transition:.15s}
.reminder-card .text-link:hover{transform:translateY(-1px);box-shadow:2px 3px 0 rgba(32,32,32,.16)}
.secondary-footer{margin-top:auto;border-top:1.5px dashed #e6dcc9;padding:12px 4px 0;color:#9a9185;font-size:9px;font-weight:700}
@media(max-width:1020px){.secondary-panel{width:264px;padding:20px 12px 14px}}

/* ---- sidebar redesign ---- */
.sidebar{background:linear-gradient(180deg,#fffdf8 0%,#fffaef 100%);border-left:0;padding:24px 16px 16px;gap:20px}
.sidebar .brand{padding:4px 6px;gap:12px}
.brand-mark{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:20px;background:linear-gradient(135deg,#ffd866,#ffe9a8 55%,#fff3d0);border:1.5px solid var(--ink);box-shadow:3px 3px 0 rgba(32,32,32,.15);color:var(--ink);flex-shrink:0}
.brand strong{font-size:18px;letter-spacing:-.2px}
.brand span{font-size:10.5px;color:#948b7e;font-weight:700}
.teacher-mini{border:1.5px solid var(--ink);border-radius:16px;background:#fffefa;padding:10px;box-shadow:3px 3px 0 rgba(32,32,32,.1)}
.teacher-mini .avatar{width:34px;height:34px;border:1.5px solid var(--ink);border-radius:11px}
.teacher-mini strong{font-size:12px}
.teacher-mini span{font-size:9.5px;color:#948b7e}
.teacher-mini .icon-btn{width:32px;height:32px;border:1.5px solid #e6dcc9;border-radius:10px;background:#fffefa;display:grid;place-items:center;font-size:14px;color:#8a8175;padding:0;transition:transform .15s,color .15s,border-color .15s}
.teacher-mini .icon-btn:hover{border-color:var(--ink);color:var(--ink);transform:rotate(20deg)}
.sidebar .main-nav{gap:5px}
.sidebar .nav-item{padding:8px 9px;border-radius:14px;gap:11px;font-size:12.5px;font-weight:700;border:1.5px solid transparent;transition:transform .14s,background .14s,border-color .14s,box-shadow .14s}
.sidebar .nav-item span{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:15px;background:#f7f1e6;border:1.5px solid #eee3d2;flex-shrink:0;transition:background .14s,border-color .14s}
.sidebar .nav-item:hover{background:#fff6dd;border-color:#ecd9a4;transform:translateX(-2px)}
.sidebar .nav-item:hover span{border-color:#e0c886;background:#fff}
.sidebar .nav-item.active{background:linear-gradient(135deg,#ffe9a8,#ffd866 60%,#ffdf8e);border-color:var(--ink);box-shadow:3px 3px 0 rgba(32,32,32,.16);color:var(--ink)}
.sidebar .nav-item.active span{background:#fff;border-color:var(--ink);box-shadow:2px 2px 0 rgba(32,32,32,.1)}
.nav-section-label{margin:8px 0 -6px;padding:0 12px;font-size:9px;color:#a59c8f;letter-spacing:.3px}
.sidebar-tip{margin-top:auto;border:1.5px solid var(--ink);border-radius:18px;background:linear-gradient(160deg,#efe9fa,#f7f2ff);box-shadow:3px 3px 0 rgba(32,32,32,.12);padding:16px 14px}
.sidebar-tip:after{background:#fff;opacity:.55}
.tip-spark{font-size:20px;margin-bottom:6px}
.sidebar-tip strong{font-size:12px}
.sidebar-tip p{font-size:10px;line-height:1.9;margin:4px 0 9px}
.sidebar-tip .text-link{display:inline-block;background:#fff;border:1.5px solid var(--ink);border-radius:10px;padding:4px 10px;font-size:9.5px;font-weight:800;box-shadow:2px 2px 0 rgba(32,32,32,.12);transition:.15s}
.sidebar-tip .text-link:hover{transform:translateY(-1px);box-shadow:2px 3px 0 rgba(32,32,32,.16)}
.sidebar-bottom{border-top:1.5px dashed #e6dcc9;padding-top:12px}
.sidebar-bottom .nav-item{color:#a15b5b;font-weight:800}
.sidebar-bottom .nav-item span{background:#fbecec;border-color:#f0d3d3;color:#b26464}
.sidebar-bottom .nav-item:hover{background:#fbecec;border-color:#e8bcbc}

/* ---- support card ---- */
.support-card{margin-top:18px;display:flex;gap:20px;align-items:center;background:linear-gradient(135deg,#efe9fa 0%,#f9f5ff 55%,#fff8e9 100%);border:1.5px solid var(--ink)!important;border-radius:22px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.support-card::after{content:'✦';position:absolute;left:18px;top:2px;font-size:80px;color:#fff;opacity:.5;pointer-events:none}
.support-art{width:76px;height:76px;border-radius:22px;display:grid;place-items:center;font-size:34px;background:linear-gradient(135deg,#ffd866,#ffe9a8 55%,#fff3d0);border:1.5px solid var(--ink);box-shadow:3px 3px 0 rgba(32,32,32,.15);flex-shrink:0}
.support-copy{flex:1;min-width:0;position:relative;z-index:1}
.support-copy .eyebrow{margin:0 0 4px}
.support-copy h2{font-size:17px;margin:0 0 6px}
.support-note{font-size:11px;color:#6d655a;margin:0 0 14px;line-height:1.9}
.support-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.support-phone{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1.5px solid var(--ink);border-radius:13px;padding:9px 16px;font-weight:800;font-size:13px;color:var(--ink);text-decoration:none;box-shadow:3px 3px 0 rgba(32,32,32,.14);transition:.15s;letter-spacing:.5px}
.support-phone:hover{transform:translateY(-2px);box-shadow:3px 5px 0 rgba(32,32,32,.18)}
.support-card .secondary-btn{background:#fff;border:1.5px solid var(--ink);border-radius:13px;font-size:11px;padding:9px 14px;box-shadow:3px 3px 0 rgba(32,32,32,.1)}
.support-card .secondary-btn.copied{background:var(--green)}
@media(max-width:600px){.support-card{flex-direction:column;align-items:flex-start;padding:18px}}

/* ---- support card border ---- */
.support-card{border:3.5px dotted var(--ink)!important;box-shadow:4px 4px 0 rgba(32,32,32,.14),var(--shadow)}

/* ---- teachers paper panel ---- */
#teachersView .teachers-panel{position:relative;border:1px solid #e7dcc7!important;border-radius:6px;padding:26px 24px 24px;background-color:#fffdf5;background-image:radial-gradient(rgba(32,32,32,.055) 1px,transparent 1px),radial-gradient(rgba(32,32,32,.03) 1px,transparent 1px),linear-gradient(180deg,#fffefa,#fffcf0);background-size:24px 24px,24px 24px,100% 100%;background-position:0 0,12px 12px,0 0;box-shadow:0 1px 0 #fff inset,0 -2px 0 #f4ead6 inset,0 12px 26px rgba(32,32,32,.09),0 2px 4px rgba(32,32,32,.05)}
#teachersView .teachers-panel::before{content:'';position:absolute;top:-11px;left:50%;width:104px;height:24px;transform:translateX(-50%) rotate(-2deg);background:linear-gradient(180deg,rgba(255,232,160,.85),rgba(255,214,102,.7));border-left:1px dashed rgba(32,32,32,.14);border-right:1px dashed rgba(32,32,32,.14);box-shadow:0 2px 4px rgba(32,32,32,.08);opacity:.9;pointer-events:none}
#teachersView .teachers-panel .panel-heading{border-bottom:1px dashed #e6dcc9;padding-bottom:14px}

/* ---- dashboard paper panels ---- */
#dashboardView .panel{position:relative;border:1px solid #e7dcc7!important;border-radius:9px;background-color:#fffdf5;background-image:radial-gradient(rgba(32,32,32,.055) 1px,transparent 1px),radial-gradient(rgba(32,32,32,.028) 1px,transparent 1px),linear-gradient(180deg,#fffefa,#fffcf0);background-size:24px 24px,24px 24px,100% 100%;background-position:0 0,12px 12px,0 0;box-shadow:0 1px 0 #fff inset,0 -2px 0 #f4ead6 inset,0 12px 26px rgba(32,32,32,.08),0 2px 4px rgba(32,32,32,.05)}
#dashboardView .attention-panel{border-color:var(--ink)!important}
#dashboardView .panel>.panel-heading{border-bottom:1px dashed #eadfca;padding-bottom:12px}
.paper-tape{position:absolute;top:-11px;left:50%;width:92px;height:23px;z-index:3;transform:translateX(-50%) rotate(-2deg);background:linear-gradient(180deg,rgba(255,232,164,.92),rgba(255,214,102,.8));border-left:1px dashed rgba(32,32,32,.16);border-right:1px dashed rgba(32,32,32,.16);box-shadow:0 2px 4px rgba(32,32,32,.1);pointer-events:none;opacity:.95}
.leaderboard-panel .paper-tape{transform:translateX(-50%) rotate(2deg)}
.session-panel .paper-tape{transform:translateX(-50%) rotate(-2.5deg)}
.attention-panel .paper-tape{transform:translateX(-50%) rotate(2.5deg)}
.best-classes-panel .paper-tape{transform:translateX(-50%) rotate(-1.8deg)}
.punch{display:none}
#dashboardView .dash-stat{position:relative;background-color:#fffdf5;background-image:radial-gradient(rgba(32,32,32,.05) 1px,transparent 1px);background-size:18px 18px;border:1px solid #e7dcc7;border-radius:10px;box-shadow:0 1px 0 #fff inset,0 10px 20px rgba(32,32,32,.07),0 2px 3px rgba(32,32,32,.05)}
#dashboardView .dash-stat::before{content:'';position:absolute;top:-7px;left:50%;width:14px;height:14px;border-radius:50%;transform:translateX(-50%);background:#fffdf5;border:2.5px solid #c9bda6;box-shadow:inset 0 3px 4px rgba(32,32,32,.28),0 1px 0 #fff}
#dashboardView .dash-stat.ds-blue::before{border-color:#7ea7d9}
#dashboardView .dash-stat.ds-green::before{border-color:#8cbf87}
#dashboardView .dash-stat.ds-orange::before{border-color:#f0b24b}
#dashboardView .dash-stat.ds-yellow::before{border-color:#e5c34a}
#dashboardView .dash-stat.ds-pink::before{border-color:#e59aa8}

/* ---- responsive fixes ---- */
@media(max-width:760px){#sidebar.sidebar{position:fixed;right:0;top:0;bottom:0;z-index:60;box-shadow:-10px 0 34px rgba(32,32,32,.18)}#sidebar.sidebar.open{transform:translateX(0)}}
.focus-grid>*,.content-grid>*,.leaderboard-layout>*,.progress-summary-grid>*,.sw-leaders-row>*{min-width:0}

/* ---- responsive layout fixes ---- */
@media(max-width:1199px) and (min-width:901px){#dashboardView .dash-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){
 .mobile-menu{display:inline-flex!important}
 #sidebar.sidebar{position:fixed;right:0;top:0;bottom:0;width:272px;max-width:86vw;z-index:60;transform:translateX(105%);transition:transform .25s;overflow-y:auto;overscroll-behavior:contain}
 #sidebar.sidebar.open{transform:translateX(0)}
 html:has(#sidebar.open),body:has(#sidebar.open){overflow:hidden}
 #sidebar .brand,#sidebar .teacher-mini,#sidebar .main-nav,#sidebar .sidebar-tip,#sidebar .sidebar-bottom{flex-shrink:0}
 .main-content{width:100%;min-width:0}
 .topbar{height:64px;padding:0 16px;gap:10px}
 .brand-copy{min-width:0;max-width:150px}
 .brand-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .top-search{display:none}
 #dashboardView .dash-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 #dashboardView .dash-stat:last-child{grid-column:1/-1}
 .page-view{padding:24px 16px 52px}
 .section-heading{flex-wrap:wrap;gap:12px}
 .section-heading .primary-btn{width:100%}
 .welcome-row{flex-wrap:wrap;gap:14px}
 .welcome-row .primary-btn{width:100%}
 .leaderboard-panel{padding:18px 14px 20px}
 .panel{padding:18px}
 .modal{width:calc(100vw - 28px);max-height:calc(100dvh - 36px);overflow-y:auto;padding:22px}
 .modal-actions button{flex:1}
 .table-wrap,.sw-table-wrap,.progress-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
}
@media(max-width:560px){
 .dash-stat{padding:11px 12px;gap:10px}
 .dash-stat .dash-stat-icon{width:38px;height:38px;font-size:17px}
 .dash-stat strong{font-size:19px}
 .topbar{padding:0 12px}
}

/* ---- drawer backdrop ---- */
.sidebar-backdrop{position:fixed;inset:0;background:rgba(30,26,20,.42);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:55;opacity:0;pointer-events:none;transition:opacity .22s}
.sidebar-backdrop.show{opacity:1;pointer-events:auto}
@media(min-width:901px){.sidebar-backdrop{display:none}}

/* ---- student bulk delete ---- */
.student-bulk-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:10px 14px;border:1.5px dashed #d9cdb6;border-radius:14px;background:#fffdf6}
.student-bulk-bar .bulk-all{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:800;color:#5f584e;cursor:pointer;user-select:none}
.student-bulk-bar input[type=checkbox]{width:17px;height:17px;accent-color:#f0a500;cursor:pointer}
.bulk-count{font-size:10.5px;color:#948b7e;font-weight:700}
.bulk-delete{margin-inline-start:auto;border:1.5px solid var(--ink);background:#fbecec;color:#a1433f;border-radius:12px;padding:8px 14px;font-weight:800;font-size:11px;cursor:pointer;box-shadow:2px 2px 0 rgba(32,32,32,.12);transition:.15s}
.bulk-delete:hover:not(:disabled){transform:translateY(-1px);background:#f7dcdc}
.bulk-delete:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.stu-bulk-check{width:16px;height:16px;accent-color:#f0a500;cursor:pointer;flex-shrink:0;margin-inline-end:2px}
.profile-chip{white-space:nowrap}
#topbarTeacherName{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}

/* ---- topbar fit ---- */
.brand-cluster{flex-shrink:0}
@media(max-width:1320px){.top-search{display:none}}

/* ---- scoring rules strip ---- */
.sw-rules{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px}
.sw-rule-chip{display:inline-flex;align-items:center;gap:4px;background:#fffefa;border:1px dashed #d9cfbe;border-radius:9px;padding:3px 9px;font-size:10.5px;color:#5d564d;white-space:nowrap}
.sw-rule-ver{font-size:9.5px;color:#8a8175;background:#f5efe2;border-radius:8px;padding:3px 8px;white-space:nowrap}
.sw-rule-new{font-size:9.5px;color:#8a5a00;background:#fff1c9;border:1px dashed #e0b64c;border-radius:8px;padding:3px 8px}

/* ---- student report card ---- */

.report-modal{width:min(900px,96vw);max-height:92vh;overflow-y:auto}
.report-modal .eyebrow{color:#b97b00;font-weight:800;font-size:11px;margin:0}
.report-modal h2{font-size:23px;margin:2px 0 4px}
.report-modal>p{font-size:11px;color:#6d655a;margin:0 0 4px}
.report-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:9px;margin:13px 0 10px;padding:11px 12px;border:1.5px dashed #e0d5c2;border-radius:14px;background:#fffbf1}
.report-filters label{display:flex;flex-direction:column;gap:4px;font-size:9.5px;color:#8c8275}
.report-filters input{width:148px;border:1.5px solid #e2d9cc;border-radius:10px;background:#fffefa;padding:7px 9px;font:inherit;font-size:11px;color:var(--ink)}
.report-filters input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 2px #ffd86655}
.report-filters .primary-btn,.report-filters .secondary-btn{padding:8px 12px;font-size:10.5px}
.report-hint{font-size:9.5px;color:#93897b;margin-inline-start:auto;padding-bottom:8px}
.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.report-stat{border:1.5px solid #e5dccd;border-radius:14px;background:#fffefa;padding:10px 11px;box-shadow:2px 2px 0 #0000000d}
.report-stat span{display:block;font-size:9.5px;color:#8c8275}
.report-stat b{display:block;font-size:21px;margin:3px 0 2px}
.report-stat small{display:block;font-size:8.5px;color:#a1978a}
.report-chart{border:1.5px solid var(--ink);border-radius:18px;padding:12px 12px 7px;background:#fffefa;margin:12px 0;box-shadow:2px 2px 0 #00000012}
.report-chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.report-chart-head h3{font-size:13px;margin:0}
.report-summary-group-title{grid-column:1/-1;margin:8px 0 -2px;padding:9px 12px;border-radius:12px;background:#f4f0e6;border-right:4px solid #4f86c2;font-size:12px}
.report-summary-group-title.exam-group-title{border-color:#e2a10f;background:#fff6df}.report-summary-group-title.final-group-title{border-color:#5a9653;background:#edf5e9}
.report-series{border:1.5px solid #d8e5e8;border-radius:18px;padding:12px;margin:12px 0;background:#fbfdfc}
.report-series .report-chart-head{align-items:center}.report-series .report-chart-head small{display:block;margin-top:3px;color:#81796f;font-size:9px}
.report-series.exam-series{border-color:#ead7aa;background:#fffdf6}.report-series.final-series{border-color:#cfe1c9;background:#fcfefb}
.login-overlay{z-index:100;background:radial-gradient(circle at 15% 18%,#d9ebf2 0 9%,transparent 9.5%),radial-gradient(circle at 86% 76%,#ffebb1 0 11%,transparent 11.5%),#f3eee2}
.login-card{position:relative;isolation:isolate;overflow:visible;width:min(430px,100%);padding:38px 34px 30px;border:2px solid #37342e;border-radius:3px;background:repeating-linear-gradient(180deg,#fffdf5 0 36px,#dce8e8 37px,#fffdf5 38px);box-shadow:8px 9px 0 #37342e24,0 20px 50px #44372320;clip-path:polygon(0 1%,14% 2%,31% 1%,48% 2%,66% 1%,84% 2%,100% 1%,99% 18%,100% 36%,99% 54%,100% 73%,99% 88%,100% 100%,82% 99%,63% 100%,44% 99%,25% 100%,0 99%,1% 80%,0 61%,1% 40%,0 20%)}
.login-card::before{content:'';position:absolute;z-index:2;top:1px;left:50%;width:104px;height:24px;transform:translateX(-50%) rotate(-3deg);background:linear-gradient(180deg,#f5dc91dd,#eacb6ddd);border:1px dashed #927c4c88;box-shadow:0 2px 5px #392d1725}
.login-card::after{content:'✏️  📐  📝';position:absolute;z-index:0;left:16px;bottom:18px;opacity:.22;font-size:26px;transform:rotate(-9deg);pointer-events:none}
.login-card>*{position:relative;z-index:1}.login-card .brand-mark{background:#ffd866;border-radius:12px;box-shadow:3px 3px 0 #37342e}
.login-password-field{display:flex;align-items:center;position:relative}.login-password-field input{padding-left:48px!important}.login-password-field button{position:absolute;left:8px;top:50%;transform:translateY(-50%);width:34px;height:32px;border:1px solid #d9d0c4;border-radius:9px;background:#fff8df;font-size:16px}
.topbar{z-index:10!important}.modal-backdrop{z-index:80!important}.quiz-picker-backdrop{z-index:90!important}
.report-summary-group-title{padding-inline:13px}
@media(max-width:560px){.login-card{padding:34px 24px 25px}.login-card::after{font-size:21px}}
.report-modes{display:flex;gap:4px;background:#f3ecdd;border-radius:10px;padding:3px}
.report-modes button{border:0;background:transparent;font:inherit;font-size:10px;padding:5px 9px;border-radius:8px;cursor:pointer;color:#6d655a}
.report-modes button.active{background:#fffefa;color:#202020;box-shadow:0 1px 0 #00000014;font-weight:800}
.report-svg{width:100%;height:auto;display:block}
.report-table-wrap{overflow-x:auto;margin:0 0 6px}
.report-table{width:100%;border-collapse:collapse;font-size:10.5px;min-width:620px}
.report-table th{text-align:right;font-size:9.5px;color:#8c8275;padding:8px 6px;border-bottom:1.5px dashed #d9cfbe;white-space:nowrap}
.report-table td{padding:8px 6px;border-bottom:1px solid #f0e9dd;vertical-align:top}
.report-table tfoot td{font-weight:800;background:#fff7e4;border-top:1.5px solid var(--ink)}
.report-table .pos{color:#2c6b2f}
.report-table .neg{color:#b13a3a}
.report-muted{font-size:8.5px;color:#a1978a}
@media(max-width:760px){
  .report-summary{grid-template-columns:repeat(2,1fr)}
  .report-filters input{width:120px}
  .report-hint{margin-inline-start:0}
}
@media print{
  body *{visibility:hidden!important}
  #studentReportModal,#studentReportModal *{visibility:visible!important}
  #studentReportModal{position:absolute!important;inset:0;display:block!important;background:#fff;padding:0;overflow:visible}
  #studentReportModal .modal{box-shadow:none;border:0;width:100%;max-height:none;overflow:visible}
  #studentReportModal .close-btn,#studentReportModal .report-filters,#studentReportModal .modal-actions,#studentReportModal .report-modes{display:none!important}
}

/* progress page report entry */
.student-pick-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.report-open-btn{border:1.5px solid var(--ink);border-radius:12px;background:#ffe9a8;color:var(--ink);font:inherit;font-size:11px;font-weight:800;padding:9px 13px;cursor:pointer;box-shadow:2px 2px 0 rgba(32,32,32,.15);white-space:nowrap;transition:.15s}
.report-open-btn:hover{background:#ffd866;transform:translateY(-1px)}
@media(max-width:640px){.student-pick-row{width:100%}.report-open-btn{width:100%;padding:10px}}
.student-person .row-report-inline{border:1px solid #e6dcc9;background:#fff7e0;border-radius:7px;font-size:10px;line-height:1;padding:3px 5px;cursor:pointer;color:#8a5a00;flex-shrink:0}
.student-person .row-report-inline:hover{background:#ffe28a;border-color:#c99a2e}
.student-person strong{cursor:pointer}

/* progress comparison switch: groups / individual students */
.comparison-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.comparison-switch{display:flex;gap:3px;background:#f3ecdd;border-radius:10px;padding:3px}
.comparison-switch button{border:0;background:transparent;font:inherit;font-size:10px;padding:5px 9px;border-radius:8px;cursor:pointer;color:#6d655a;white-space:nowrap}
.comparison-switch button.active{background:#fffefa;color:var(--ink);font-weight:800;box-shadow:0 1px 0 #00000014}
#reportMatchCount[hidden],#studentMatchCount[hidden],#progressGroupRows[hidden],#progressStudentRows[hidden]{display:none!important}
.student-cmp-row{cursor:pointer}
.student-cmp-row:hover{background:#fffaf0}
@media(max-width:640px){.comparison-head-actions{width:100%;justify-content:space-between}.comparison-switch{flex:1}.comparison-switch button{flex:1}}

.cmp-report-link{display:inline-block;margin-top:5px;font-size:9px;background:#fff1c9;border:1px solid #e0c07a;border-radius:7px;padding:2px 7px;color:#8a5a00;font-weight:800}
.student-cmp-row:hover .cmp-report-link{background:#ffe28a}

.cmp-sub{display:block;font-size:8.5px;color:#a1978a;margin-top:2px;font-weight:600}

/* compact student comparison on phones */
@media(max-width:640px){
  .student-cmp-row{grid-template-columns:1fr 1fr;gap:2px 10px;padding:11px 0}
  .student-cmp-row>div:first-child{grid-column:1/-1}
  .student-cmp-row>div:nth-child(3){display:none}
  .student-cmp-row .rate-status{font-size:9.5px}
  .student-cmp-row .comparison-bar{margin-top:6px}
}

/* bucket donut overview: groups + students */
.cmp-donut-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:2px}
.cmp-donut-card{border:1px solid #202020;background:#fffdf8;border-radius:18px;padding:12px 14px;box-shadow:0 2px 0 #00000008}
.cmp-donut-head{display:flex;align-items:center;gap:9px;margin-bottom:8px}
.cmp-donut-head .cmp-donut-ico{width:30px;height:30px;display:grid;place-items:center;background:#f3ecdd;border-radius:10px;font-size:15px;flex:none}
.cmp-donut-head h3{margin:0;font-size:12px;font-weight:800;color:var(--ink)}
.cmp-donut-head small{color:#8d8377;font-size:9.5px;font-weight:600}
.cmp-donut-wrap{display:flex;align-items:center;gap:14px}
.cmp-donut-fig{position:relative;width:96px;flex:none}
.cmp-donut-fig svg{display:block;width:100%;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12))}
.cmp-donut-hole{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;gap:1px}
.cmp-donut-hole strong{font-size:17px;color:var(--ink)}
.cmp-donut-hole small{font-size:9px;color:#8d8377;font-weight:700}
.cmp-donut-legend{list-style:none;margin:0;padding:0;flex:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.cmp-donut-legend li{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:700;color:var(--ink);min-width:0}
.cmp-donut-legend .dot{width:11px;height:11px;border-radius:4px;background:var(--c);flex:none;box-shadow:0 1px 0 rgba(0,0,0,.12)}
.cmp-donut-legend .lbl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmp-donut-legend b{margin-right:auto;color:var(--c);font-size:11.5px;min-width:22px;text-align:center}
.cmp-donut-legend small{color:#a1978a;font-size:9px;width:36px;text-align:left;flex:none}
.cmp-donut-empty{display:flex;align-items:center;justify-content:center;gap:7px;color:#8d8377;font-size:10.5px;font-weight:700;padding:18px 2px;text-align:center}
@media(max-width:760px){.cmp-donut-row{grid-template-columns:1fr}.cmp-donut-card{padding:11px 12px}.cmp-donut-fig{width:84px}}

/* session scope: per-session comparison + class average chip */
.cmp-scope-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}
.cmp-avg-chip{display:flex;align-items:center;gap:9px;background:#fff6e3;border:1px solid #e3cd96;border-radius:14px;padding:6px 12px;margin-inline-start:auto;box-shadow:0 1px 0 rgba(0,0,0,.05)}
.cmp-avg-chip .ico{display:grid;place-items:center;width:30px;height:30px;background:#ffefc2;border-radius:10px;font-size:15px;flex:none}
.cmp-avg-chip small{display:block;font-size:9px;color:#93804f;font-weight:700;text-align:right}
.cmp-avg-chip strong{font-size:12.5px;color:#8a5a00;font-weight:800}
.cmp-session-strip{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 6px;scrollbar-width:thin}
.cmp-session-chip{display:flex;align-items:center;gap:8px;border:1px solid #202020;background:#fffdf8;border-radius:13px;padding:6px 10px;cursor:pointer;white-space:nowrap;font:inherit;box-shadow:0 1px 0 rgba(0,0,0,.06)}
.cmp-session-chip .chip-ico{display:grid;place-items:center;width:26px;height:26px;background:#f3ecdd;border-radius:9px;font-size:13px;flex:none}
.cmp-session-chip .chip-t{display:flex;flex-direction:column;gap:1px;align-items:flex-start}
.cmp-session-chip strong{font-size:10.5px;color:var(--ink)}
.cmp-session-chip small{color:#8d8377;font-size:9px;font-weight:700}
.cmp-session-chip.active{background:#fff1c9;border-color:#cfa33a;box-shadow:0 2px 0 rgba(207,163,58,.35)}
.cmp-session-empty{color:#8d8377;font-size:10.5px;font-weight:700;padding:12px 4px}
.cmp-session-banner{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#fff4dd,#fffaf1);border:1px dashed #cfa33a;border-radius:14px;padding:8px 12px;margin-top:2px}
.cmp-session-banner .bn-ico{display:grid;place-items:center;width:34px;height:34px;background:#ffe9ad;border-radius:11px;font-size:16px;flex:none}
.cmp-session-banner strong{font-size:12px;color:#6d4a00}
.cmp-session-banner small{display:block;color:#9b8856;font-size:9.5px;font-weight:700}
.cmp-back{margin-inline-start:auto;border:1px solid #202020;background:#fffdf8;border-radius:10px;font:inherit;font-size:10px;font-weight:800;padding:5px 10px;cursor:pointer;white-space:nowrap}
.cmp-back:hover{background:#fff1c9}
.cmp-session-banner[hidden],#cmpSessionStrip[hidden]{display:none!important}
@media(max-width:640px){.cmp-avg-chip{margin-inline-start:0;width:100%;justify-content:flex-start}.cmp-session-banner{flex-wrap:wrap}}

/* quiz/exam status chips (session workspace students tab) */
.sw-status-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.sw-status-chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 9px;font-size:9.5px;font-weight:800;border:1px solid #202020;background:#fffdf8;color:#6d655a;cursor:pointer;font-family:inherit}
.sw-status-chip.on{background:#e8f6ec;border-color:#3f9d63;color:#22783f}
.sw-status-chip.off{background:#f4f1ea;border-color:#d9d0c4;color:#8d8377}
.sw-status-chip.exam-on{background:#ece9fb;border-color:#7a6bd6;color:#5646b8;cursor:default}
.sw-status-chip.exam-off{background:#fff3e3;border-color:#dfa745;color:#a06b1a;cursor:default}
.sw-quiz-chip{font-weight:800;color:#5646b8;background:#f1eefc;border:1px dashed #b3a8ea;border-radius:9px;padding:3px 8px;font-size:10px}
.sw-manual-title{font-weight:800;color:#6d655a}
.sw-final-chip{flex-basis:100%;font-size:10px;font-weight:800;color:#8a5a00;background:#fff4dd;border:1px solid #e3cd96;border-radius:9px;padding:3px 9px}
.sw-counters.inline{grid-template-columns:repeat(3,minmax(62px,1fr))}


/* quiz/exam chips on student comparison rows */
.cmp-chips{display:flex;gap:5px;flex-wrap:wrap;align-items:center;min-width:0}
.cmp-chip{display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:3px 8px;font-size:9px;font-weight:800;white-space:nowrap}
.cmp-chip.ask-ok{background:#e8f6ec;color:#22783f;border:1px solid #bfe3cb}
.cmp-chip.ask-no{background:#f4f1ea;color:#8d8377;border:1px solid #ddd4c6}
.cmp-chip.quiz-chip{background:#f1eefc;color:#5646b8;border:1px solid #d8d0f2}
.cmp-chip.exam-chip{background:#fff4dd;color:#a06b1a;border:1px solid #e8cf9f}
@media(max-width:760px){.cmp-chips{flex-basis:100%;order:9}}


/* report-card status chips */
.rc-chip{display:inline-block;border-radius:999px;padding:2px 7px;font-size:8.5px;font-weight:800;background:#f4f1ea;color:#8d8377;border:1px solid #ddd4c6;white-space:nowrap}
.rc-chip:not(.off){background:#e8f6ec;color:#22783f;border-color:#bfe3cb}
.rc-final{color:#8a5a00;font-size:12px}

.rc-chip.warn{background:#fff3e3;color:#a06b1a;border-color:#e8cf9f}


/* tiny screens: student scoring row wrapping */
@media(max-width:640px){.sw-manual-row.small{flex-wrap:wrap}.sw-manual-row.small .sw-manual{width:58px}.sw-quiz-chip{flex-basis:100%}.sw-status-chip{padding:3px 7px;font-size:9px}.sw-final-chip{font-size:9.5px}}

@media(max-width:640px){#swStudentsPane .sw-counters.inline{grid-template-columns:repeat(3,minmax(0,1fr))}.sw-counter-body{min-width:0}.sw-counter small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;max-width:100%}}

.quiz-picker-backdrop{z-index:20;background:rgba(39,37,33,.58);backdrop-filter:blur(5px)}
.quiz-picker-modal{width:min(540px,100%);max-height:min(92vh,760px);overflow:auto;position:relative;direction:rtl;text-align:right;background:repeating-linear-gradient(0deg,rgba(210,196,166,.13) 0,rgba(210,196,166,.13) 1px,transparent 1px,transparent 32px),linear-gradient(145deg,#fffdf5 0%,#fff8e5 100%);border:2px solid #302e29;border-radius:24px;padding:28px;box-shadow:8px 8px 0 rgba(48,46,41,.16);animation:quizModalIn .24s ease-out}
@keyframes quizModalIn{from{opacity:0;transform:translateY(15px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.quiz-picker-close{position:absolute;left:17px;top:15px;width:34px;height:34px;border-radius:12px;background:#fff;border:1px solid #ddd2c2;font-size:24px;line-height:1;color:#69615a}
.quiz-picker-kicker{display:inline-flex;gap:6px;align-items:center;border-radius:999px;background:#e6f1f5;color:#385965;padding:6px 11px;font-size:10px;font-weight:800;border:1px solid #c6dce3}
.quiz-picker-modal h2{font-size:22px;margin:13px 0 5px;letter-spacing:-.4px}
.quiz-picker-intro{font-size:11px;color:var(--muted);line-height:1.9;margin:0 0 17px}
.quiz-picker-range{display:grid;grid-template-columns:1fr auto;gap:8px 10px;align-items:end;padding:12px;background:#fffefb;border:1.5px dashed #d9cba9;border-radius:15px}
.quiz-picker-range label{font-size:10px;font-weight:800;display:grid;gap:5px}
.quiz-picker-range input{min-width:0;border:1px solid #d8ceba;border-radius:9px;padding:9px 10px;background:#fffefa;outline-color:#7fa9bb;font-size:12px}
.quiz-picker-range small{grid-column:1/-1;color:#766f62;font-size:9px}
.quiz-range-save{border:1px solid #35352f;border-radius:9px;padding:9px 13px;background:#dcecf0;color:#2c4750;font-size:10px;font-weight:800;box-shadow:0 2px 0 #35352f}
.quiz-picker-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:13px 0}
.quiz-picker-stats>div{border:1px solid #e8dfd2;border-radius:15px;background:#fffefa;padding:10px;text-align:center}
.quiz-picker-stats b{display:block;font-size:22px;line-height:1.25}
.quiz-picker-stats span{font-size:9px;color:#716a61}
.quiz-picker-stats>div:nth-child(2){background:#e9f2f4}.quiz-picker-stats>div:nth-child(3){background:#fff0bf}
.quiz-draw-stage{min-height:136px;border:1.5px solid #34322d;border-radius:17px;background:repeating-linear-gradient(0deg,transparent 0,transparent 31px,rgba(130,169,183,.13) 31px,rgba(130,169,183,.13) 32px),linear-gradient(135deg,#fffdf6,#fff6dc);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;overflow:hidden}
.quiz-draw-dice{font-size:28px;margin-bottom:6px;filter:drop-shadow(0 3px 0 #0002)}
.quiz-draw-stage strong{font-size:23px;line-height:1.55;color:#292b2c;transition:transform .12s ease}
.quiz-draw-stage small{font-size:10px;color:#69665f;line-height:1.8;margin-top:4px}
.quiz-draw-stage.rolling strong{animation:quizNameRoll .13s infinite alternate;color:#bd6b28}
@keyframes quizNameRoll{to{transform:translateY(-3px);filter:blur(.35px)}}
.quiz-draw-stage.complete{background:linear-gradient(135deg,#e8f4e6,#f8f5e9)}.quiz-draw-stage.complete strong{font-size:17px;color:#3d6840}
.quiz-picker-actions{display:flex;flex-wrap:wrap;gap:9px;justify-content:center;margin-top:15px}
.quiz-picker-actions button{border-radius:12px;padding:11px 15px;font-size:11px;font-weight:800;transition:transform .15s,box-shadow .15s}
.quiz-draw-btn{background:linear-gradient(115deg,#ffdf76,#ffd05a);color:#302d26;box-shadow:0 3px 0 #40392b;border:1px solid #40392b}
.quiz-confirm-btn{background:linear-gradient(115deg,#dcebd4,#c9e1bd);color:#2e5232;box-shadow:0 3px 0 #3d5639;border:1px solid #3d5639}
.quiz-cancel-btn,.quiz-picker-dismiss{background:#fffefa;border:1px solid #d2c8b6;color:#514a3e}
.quiz-new-round-btn{background:linear-gradient(115deg,#dcecf0,#c9e2e9);color:#31515c;box-shadow:0 3px 0 #405960;border:1px solid #405960}
.quiz-picker-actions button:hover,.quiz-range-save:hover{transform:translateY(-2px)}
.quiz-picker-actions button:disabled{opacity:.55;cursor:wait}
.quiz-picker-dismiss{display:block;margin:14px auto 0;border-radius:10px;padding:7px 14px;font-size:10px}
.sw-strip-actions{flex-wrap:wrap;justify-content:flex-end}
#swQuizPickerBtn.quiz-picker-launch{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:43px;padding:8px 13px;border:1.5px solid #38352d;border-radius:12px;background:linear-gradient(115deg,#ffdf78 0%,#ffd55f 58%,#f7c94e 100%);color:#302d26;font-size:11px;font-weight:800;box-shadow:0 3px 0 #38352d,0 6px 13px rgba(87,72,39,.13);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}
#swQuizPickerBtn.quiz-picker-launch:hover{transform:translateY(-2px);box-shadow:0 5px 0 #38352d,0 9px 16px rgba(87,72,39,.17);filter:saturate(1.04)}
#swQuizPickerBtn.quiz-picker-launch:active{transform:translateY(1px);box-shadow:0 1px 0 #38352d}
#swQuizPickerBtn.quiz-picker-launch:focus-visible{outline:3px solid #8db7c4;outline-offset:3px}
.quiz-launch-icon{width:23px;height:23px;border-radius:7px;display:grid;place-items:center;background:#fff8df;color:#b56736;border:1px solid rgba(56,53,45,.16);font-size:14px}
.quiz-launch-dice{font-size:17px;line-height:1;filter:drop-shadow(0 1px 1px rgba(55,47,31,.18))}
.quiz-draw-btn{background:linear-gradient(115deg,#ffdf78,#f7c94e);color:#302d26;box-shadow:0 3px 0 #38352d;border-color:#38352d}
.quiz-confirm-btn{background:linear-gradient(115deg,#dcebd4,#c9e1bd);color:#2e5232;box-shadow:0 3px 0 #3d5639;border-color:#3d5639}
.quiz-new-round-btn{background:linear-gradient(115deg,#dcecf0,#c9e2e9);color:#31515c;box-shadow:0 3px 0 #405960;border-color:#405960}
@media(max-width:600px){.quiz-picker-modal{padding:22px 16px;border-radius:22px}.quiz-picker-modal h2{font-size:19px}.quiz-picker-stats b{font-size:19px}.quiz-draw-stage strong{font-size:19px}.sw-strip-actions{width:100%;justify-content:stretch}.sw-strip-actions button{flex:1 1 auto}.quiz-picker-range{grid-template-columns:1fr}.quiz-range-save{width:100%}}

.report-average-row td{background:#edf5e9;border-top:1px dashed #aac8a2;font-weight:800}
.report-assessment-table{margin:14px 0 20px}.report-assessment-table>h3{font-size:13px;margin:0 0 8px;padding:9px 12px;border-radius:11px;background:#f1f6f5;border-right:4px solid #4f86c2}.report-assessment-table:nth-child(2)>h3{background:#fff7e3;border-color:#e2a10f}.report-assessment-table:nth-child(3)>h3{background:#edf5e9;border-color:#5a9653}
.report-assessment-table{overflow:hidden;border:1.5px solid #ded6c8;border-radius:18px;background:#fffefa;box-shadow:0 3px 0 #25221b0b}
.assessment-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;background:#edf5f5;border-bottom:1px solid #e3ded3}
.report-assessment-table:nth-child(2) .assessment-section-head{background:#fff5de}.report-assessment-table:nth-child(3) .assessment-section-head{background:#edf5e9}
.assessment-section-head h3{margin:0;font-size:13px}.assessment-section-head>span{border:1px solid #d7cfbf;background:#fffefa;border-radius:999px;padding:4px 9px;font-size:9px;font-weight:800;color:#71695d}
.assessment-session-list{padding:5px 13px}.assessment-session-row{display:grid;grid-template-columns:92px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 3px;border-bottom:1px dashed #e8e1d6}.assessment-session-row:last-child{border-bottom:0}
.assessment-session-date{font-size:10px;color:#7d7468;white-space:nowrap}.assessment-session-name{min-width:0}.assessment-session-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.assessment-session-meta{display:block;margin-top:4px;color:#8c8275;font-size:9px}
.assessment-session-grade{min-width:88px;text-align:center;border:1px solid #d5e5dc;background:#eff8f0;border-radius:12px;padding:7px 10px;font-size:15px}.report-assessment-table:nth-child(2) .assessment-session-grade{border-color:#efdfb8;background:#fff8e6}.assessment-session-grade small{display:block;font-size:8px;color:#847b6f;font-weight:600}
.assessment-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 13px;background:#faf8f2;border-top:1px solid #eee7dc}.assessment-totals>div{display:grid;gap:3px;text-align:center;padding:7px 4px;border-radius:10px;background:#fffefa}.assessment-totals small{font-size:8px;color:#81786c}.assessment-totals b{font-size:13px}.assessment-totals .average{background:#eaf4e8}
.assessment-totals b small{font-size:8px;color:#81786c}.assessment-empty{padding:20px;text-align:center;color:#8c8275;font-size:10px;background:#fffefa}
.login-card{clip-path:none;border-radius:5px 2px 4px 3px}.login-card::before{top:-12px}
@media(max-width:560px){.assessment-session-row{grid-template-columns:72px minmax(0,1fr) auto;gap:7px;padding:9px 0}.assessment-session-grade{min-width:67px;padding:6px 7px}.assessment-totals{gap:5px;padding:8px}.assessment-totals>div{padding:6px 2px}}
body.login-active{height:100vh;overflow:hidden}.login-overlay:not(.hidden){overflow:hidden;min-height:100vh;min-height:100dvh}
.profile-panel-hidden{display:none!important}.profile-tabs [data-profile-tab]{transition:background .15s,color .15s,transform .15s}.profile-tabs [data-profile-tab]:focus-visible{outline:2px solid #4f86c2;outline-offset:2px}
.trend-modal .close-btn{z-index:8;pointer-events:auto}.modal-backdrop.show{pointer-events:auto}
@media(min-width:700px){.login-card{max-height:none;padding:38px 34px 30px}.login-card .brand-mark{margin-bottom:20px}.login-card label{margin-top:13px}.login-card input{padding:12px}.login-card .primary-btn{margin-top:20px}}
#dashboardView .dashboard-mode-switch{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid #e8dfd2;border-radius:12px;background:#f7f3eb;flex-shrink:0}
#dashboardView .dashboard-mode-switch button{border:0;border-radius:9px;padding:7px 10px;background:transparent;color:#746b60;font-size:10px;white-space:nowrap;cursor:pointer;transition:background .18s ease,color .18s ease,box-shadow .18s ease}
#dashboardView .dashboard-mode-switch button.active{background:#fffefa;color:var(--ink);font-weight:800;box-shadow:0 2px 7px #4b392415}
#dashboardView .attention-heading-actions{display:flex;align-items:center;gap:9px}
#dashboardView .dashboard-mode-switch.compact button{padding:6px 8px;font-size:9px}
@media(max-width:760px){#dashboardView .leaderboard-panel>.panel-heading{align-items:flex-start;flex-wrap:wrap;gap:9px}#dashboardView .leaderboard-panel>.panel-heading .dashboard-mode-switch{margin-right:auto}#dashboardView .attention-panel>.panel-heading{align-items:flex-start;flex-wrap:wrap;gap:9px}#dashboardView .attention-heading-actions{width:100%;justify-content:space-between}#dashboardView .dashboard-mode-switch button{padding:7px 8px;font-size:9px}}

.comparison-section-unknown{background:#eef1f4!important;border-color:#c7d0d8!important}.comparison-section-unknown .rate-status{background:#fff;color:#59636d}.practice-data-note{display:grid;gap:6px;margin-top:11px;padding:12px 14px;border:1px dashed #aeb9c2;border-radius:14px;background:#f1f4f6;color:#53606a}.practice-data-note strong{font-size:11px}.practice-data-note small{font-size:10px;line-height:1.8;color:#69747d}

/* Class-scoped dashboard */
.dashboard-best-classes{margin-bottom:19px}.class-dash-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:18px 0}.class-dash-stats article{background:var(--card);border:1px solid #ebe2d4;border-radius:17px;padding:14px 17px}.class-dash-stats span{display:block;color:var(--muted);font-size:10px}.class-dash-stats strong{display:block;font-size:23px;margin-top:5px}.class-dash-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.class-dash-panel{padding:18px}.class-dash-panel .panel-heading{margin-bottom:8px}.class-dash-panel .panel-heading h2{font-size:15px;margin:0 0 4px}.class-dash-panel .panel-heading p{font-size:10px;color:var(--muted);margin:0}.class-dash-rank{display:grid;grid-template-columns:30px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px 3px;border-top:1px solid #eee8de}.class-dash-rank>span{width:25px;height:25px;border-radius:9px;background:var(--soft-yellow);display:grid;place-items:center;font-weight:800}.class-dash-rank strong{font-size:11px}.class-dash-rank small{font-size:9px;color:var(--muted)}.class-dash-rank b{font-size:10px;color:var(--deep-orange);white-space:nowrap}.class-dash-sessions{grid-column:1/-1}.class-dash-sessions .session-row:last-child{border-bottom:0}@media(max-width:760px){.class-dash-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.class-dash-grid{grid-template-columns:1fr}.class-dash-sessions{grid-column:auto}.class-dash-rank{grid-template-columns:27px minmax(0,1fr) auto}.class-dash-rank small{display:none}}

/* Desktop dashboard: stationery-inspired two-column cards */
#bestClassesList,#recentSessionList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
#bestClassesList .best-class-row{position:relative;overflow:hidden;min-height:92px;margin:0;padding:15px 14px 13px;border:1.5px dashed #d8c6a7;border-radius:17px;background:repeating-linear-gradient(0deg,#fffdf7 0,#fffdf7 23px,#f3ede0 24px,#fffdf7 25px);box-shadow:0 4px 0 rgba(95,72,38,.07);transition:transform .18s,box-shadow .18s,border-color .18s}
#bestClassesList .best-class-row:before{content:"";position:absolute;top:0;right:50%;transform:translateX(50%);width:54px;height:11px;background:#f7d978b8;border:1px solid #e8c85e;border-top:0;clip-path:polygon(0 0,100% 0,92% 100%,8% 100%);opacity:.85}
#bestClassesList .best-class-row:after{content:"✎";position:absolute;left:12px;top:9px;color:#d98b27;font-size:19px;opacity:.22;transform:rotate(-18deg);pointer-events:none}
#bestClassesList .best-class-row:hover{transform:translateY(-3px);border-color:#d3a64c;box-shadow:0 7px 0 rgba(95,72,38,.09),0 12px 20px rgba(95,72,38,.08)}
#bestClassesList .best-rank{border-radius:50%;box-shadow:0 3px 0 rgba(32,32,32,.1)}
#bestClassesList .best-copy strong{font-size:13px;line-height:1.6}
#bestClassesList .best-copy small{white-space:normal;line-height:1.8}
#bestClassesList .best-nums{align-self:center}
#recentSessionList .session-row{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr) auto;grid-template-rows:auto auto;grid-template-areas:"date info score" "date badge score";align-items:center;gap:5px 11px;min-height:91px;margin:0;padding:13px 12px;border:1.5px dashed #d8c6a7;border-radius:17px;background:repeating-linear-gradient(0deg,#fffdf8 0,#fffdf8 23px,#f3ede0 24px,#fffdf8 25px);box-shadow:0 4px 0 rgba(95,72,38,.06);overflow:hidden}
#recentSessionList .session-row:before{content:"📚";position:absolute;left:8px;top:5px;font-size:17px;opacity:.2;transform:rotate(-12deg);pointer-events:none}
#recentSessionList .session-row:hover{border-color:#d3a64c;transform:translateY(-2px);box-shadow:0 7px 0 rgba(95,72,38,.08)}
#recentSessionList .session-date{grid-area:date;width:45px;height:52px;border:1px solid #e9cf8a;border-radius:11px;background:linear-gradient(180deg,#fff7dc,#ffe9a8);box-shadow:0 2px 0 #e7d8b9}
#recentSessionList .session-info{grid-area:info;min-width:0;align-self:end}
#recentSessionList .session-info strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#recentSessionList .session-info span{font-size:9px;line-height:1.7;white-space:normal}
#recentSessionList .session-row>.badge{grid-area:badge;justify-self:start;font-size:8px;padding:4px 7px}
#recentSessionList .row-score{grid-area:score;align-self:center;white-space:nowrap;border-right:1px solid #e8dece;padding-right:10px;font-size:12px}
#recentSessionList .row-score small{display:block;font-size:8px;color:var(--muted);font-weight:500}
.class-dash-podium{width:100%;max-width:none;margin:10px auto 14px;gap:8px}
.class-dash-podium .podium-person strong{max-width:145px;font-size:11px}
.class-dash-podium .podium-block{border-radius:14px 14px 7px 7px}
.class-dash-podium .podium-first .podium-block{height:124px}
.class-dash-podium .podium-second .podium-block{height:90px}
.class-dash-podium .podium-third .podium-block{height:67px}
.class-dash-ranking{width:100%;max-width:none;margin-top:10px}
.class-dash-ranking:empty{display:none}
.class-dash-ranking .leaderboard-row{min-width:0;padding:9px 10px;gap:8px;background:repeating-linear-gradient(0deg,#fffefa 0,#fffefa 22px,#f3ede0 23px,#fffefa 24px);border-style:dashed}
.class-dash-ranking .leader-score{white-space:nowrap}
.class-dash-session-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.class-dash-session-list .session-row{border:1px dashed #d8c6a7;border-radius:15px;padding:11px;background:#fffdf8}
@media(max-width:620px){#bestClassesList,#recentSessionList,.class-dash-session-list{grid-template-columns:1fr}}

/* Dashboard: best classes podium beside the all-classes session feed */
#dashboardView .dashboard-feature-row{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:stretch;gap:18px;margin:0 0 20px}
#dashboardView .dashboard-feature-row>.panel{min-width:0;margin:0;height:100%;padding:20px;background-color:#fffdf7;background-image:radial-gradient(rgba(70,55,35,.035) .8px,transparent .8px),linear-gradient(180deg,#fffefa,#fffaf0);background-size:18px 18px,100% 100%;box-shadow:0 1px 0 #fff inset,0 5px 0 rgba(32,32,32,.045),0 14px 24px rgba(63,47,28,.065)}
#dashboardView .dashboard-feature-row>.panel>.panel-heading{min-height:48px;margin-bottom:13px;border-bottom:1px dashed #eadfca;padding-bottom:11px}
#dashboardView .class-podium{width:100%;max-width:none;gap:8px;margin:17px auto 13px;align-items:end}
#dashboardView .class-podium .podium-person{max-width:100%}
#dashboardView .class-podium .podium-person strong{max-width:150px;font-size:11px}
#dashboardView .class-podium .podium-person small{max-width:160px;line-height:1.6;white-space:normal}
#dashboardView .class-podium .podium-avatar{font-size:21px;background:linear-gradient(135deg,#fff4ce,#f6df9e)}
#dashboardView .class-podium .podium-first .podium-block{height:116px;background:linear-gradient(180deg,#ffeaa8,#f5bd3e 58%,#d89c13);color:#684900}
#dashboardView .class-podium .podium-second .podium-block{height:88px;background:linear-gradient(180deg,#fbfcfe,#dbe2eb 60%,#aab8c8);color:#46536b}
#dashboardView .class-podium .podium-third .podium-block{height:65px;background:linear-gradient(180deg,#f3d4b2,#d39a62 62%,#a96c35);color:#45260d}
#dashboardView .class-podium .podium-block b{font-size:22px}
#dashboardView .class-podium .podium-block span{font-size:9px}
#dashboardView .class-podium .podium-slot[data-class]{cursor:pointer;transition:transform .16s ease}
#dashboardView .class-podium .podium-slot[data-class]:hover{transform:translateY(-3px)}
#dashboardView .best-classes-rest{width:100%;max-width:none;gap:7px;margin-top:10px}
#dashboardView .best-classes-rest:empty{display:none}
#dashboardView .best-classes-rest .leaderboard-row{padding:8px 10px;border-radius:12px;background:linear-gradient(105deg,#fffefa,#fff7df);border-color:#eadfca}
#dashboardView .best-classes-rest .leader-copy small{white-space:normal;line-height:1.7}
#dashboardView .dashboard-recent-panel #recentSessionList{grid-template-columns:1fr;gap:9px}
#dashboardView .dashboard-recent-panel #recentSessionList .session-row{min-height:73px;padding:10px 11px;background:repeating-linear-gradient(0deg,#fffefa 0,#fffefa 20px,#f5efdf 21px,#fffefa 22px);border:1px solid #e8dfd0;border-radius:13px;box-shadow:0 2px 0 rgba(95,72,38,.05)}
#dashboardView .dashboard-recent-panel #recentSessionList .session-info span{line-height:1.65}
#dashboardView .dashboard-recent-panel #recentSessionList .session-row:before{content:"✎";font-size:15px;left:6px;top:1px;opacity:.16}
#dashboardView .dashboard-recent-panel #recentSessionList .session-date{width:43px;height:47px}
#dashboardView .dashboard-recent-panel #recentSessionList .row-score{font-size:11px}
@media(max-width:980px){#dashboardView .dashboard-feature-row{grid-template-columns:1fr}}

/* Direct destinations for global dashboard totals */
.directory-view .section-heading{margin-bottom:20px}
.directory-search{max-width:520px;margin-bottom:16px}
.directory-list{display:grid;gap:10px}
.directory-row{width:100%;min-width:0;display:flex;align-items:center;gap:13px;text-align:right;padding:13px 15px;border:1px solid #e4d9c6;border-radius:15px;background:repeating-linear-gradient(0deg,#fffefa 0,#fffefa 22px,#f5f0e5 23px,#fffefa 24px);box-shadow:0 3px 0 rgba(32,32,32,.04);color:var(--ink);transition:transform .16s,border-color .16s,box-shadow .16s}
button.directory-row:hover,.directory-group-row:hover{transform:translateY(-2px);border-color:#d6b866;box-shadow:0 6px 0 rgba(32,32,32,.05)}
.directory-avatar{width:40px;height:40px;flex:0 0 40px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#fff0b8,#ffdf80);border:1px solid #e8c968;font-weight:800}
.group-directory-avatar{font-size:20px;background:linear-gradient(135deg,#e8e0f4,#d7c9ec);border-color:#c5b4e0}
.directory-row-main{min-width:0;flex:1}
.directory-row-main strong,.directory-row-main small{display:block}
.directory-row-main strong{font-size:12px}
.directory-row-main small{margin-top:4px;font-size:9px;color:var(--muted);line-height:1.7}
.directory-row-meta,.directory-row-action{flex-shrink:0;font-size:10px;color:var(--deep-orange);font-weight:700}
.directory-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.directory-group-row{align-items:flex-start}
.directory-group-row .secondary-btn{flex-shrink:0;padding:8px 10px;font-size:9px}
.directory-members{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.directory-session-row .directory-date{flex:0 0 78px;color:var(--muted);font-size:10px}
.directory-session-row .badge{flex-shrink:0}
@media(max-width:760px){.directory-group-grid{grid-template-columns:1fr}.directory-row{gap:9px;padding:11px}.directory-row-meta{display:none}.directory-session-row .directory-date{flex-basis:58px}.directory-group-row{flex-wrap:wrap}.directory-group-row .directory-row-main{min-width:calc(100% - 60px)}.directory-group-row .secondary-btn{margin-right:49px}}

/* Choose a class before opening class-specific rosters */
.directory-class-picker{margin-top:16px}
.directory-picker-prompt{margin:0 0 12px;color:#72685a;font-size:12px;font-weight:700}
.directory-class-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.directory-class-card{width:100%;min-width:0;display:flex;align-items:center;gap:12px;padding:15px 16px;text-align:right;border:1.5px solid #e2d4bd;border-radius:17px;background:repeating-linear-gradient(0deg,#fffefa 0,#fffefa 23px,#f5f0e5 24px,#fffefa 25px);box-shadow:0 4px 0 rgba(32,32,32,.045);transition:transform .17s,border-color .17s,box-shadow .17s}
.directory-class-card:hover{transform:translateY(-3px);border-color:#d2ad58;box-shadow:0 7px 0 rgba(32,32,32,.06),0 12px 22px rgba(70,55,35,.08)}
.directory-class-icon{width:43px;height:43px;flex:0 0 43px;display:grid;place-items:center;border:1px solid #e3ca7e;border-radius:14px;background:linear-gradient(135deg,#fff3cc,#ffe39a);font-size:21px}
.directory-class-copy{min-width:0;flex:1}
.directory-class-copy strong,.directory-class-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.directory-class-copy strong{font-size:12px}
.directory-class-copy small{margin-top:4px;color:var(--muted);font-size:9px}
.directory-class-count{font-size:9px;color:#766b59;white-space:nowrap}
.directory-class-arrow{color:var(--deep-orange);font-size:17px;font-weight:800}
.directory-class-content[hidden],.directory-class-picker[hidden]{display:none!important}
.directory-class-context{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 14px;padding:12px 15px;border:1px solid #ead9ad;border-radius:13px;background:linear-gradient(100deg,#fff9e8,#fffdf8)}
.directory-class-context strong{font-size:12px}
@media(max-width:760px){.directory-class-grid{grid-template-columns:1fr}.directory-class-card{padding:13px}.directory-class-count{margin-right:auto}}

/* Student roster template download */
.template-download-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:9px 13px;border:1.5px solid #826b2a;border-radius:13px;background:linear-gradient(135deg,#fff4c8,#ffe39a);color:#59430e;text-decoration:none;font-size:11px;font-weight:800;box-shadow:0 3px 0 #d5bb68,0 6px 12px rgba(92,70,18,.08);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}
.template-download-btn:before{content:"✦";width:22px;height:22px;display:grid;place-items:center;border-radius:8px;background:#fffdf4;border:1px solid #e5ca75;color:#c48014;font-size:13px}
.template-download-btn:hover{transform:translateY(-2px);filter:saturate(1.08);box-shadow:0 5px 0 #d5bb68,0 9px 16px rgba(92,70,18,.12)}
.template-download-btn:active{transform:translateY(1px);box-shadow:0 1px 0 #d5bb68}
@media(max-width:760px){.template-download-btn{min-height:38px;padding:8px 10px}.detail-toolbar-actions{width:100%}.detail-toolbar-actions>*{flex:1}}
