@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap');
:root {
  --bg:#F7F6F2; --card:#fff; --text:#16182B; --accent:#5B3DF5; --muted:#585A72;
  --paper:#F7F6F2; --surface:#FFFFFF; --ink:#16182B; --ink-soft:#585A72;
  --line:#E4E1D8; --violet:#5B3DF5; --violet-ink:#3E28B8; --violet-tint:#EEEBFD;
  --signal:#FF7A45; --signal-tint:#FFEEE4; --mint:#0EA57A;
  --font-display:'Space Grotesk',Segoe UI,Arial,sans-serif;
  --font-body:'Inter',Segoe UI,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior-x:none;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}
body{margin:0;background:var(--app-bg, var(--bg));color:var(--app-text, var(--text));font-family:var(--font-body);-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:auto}
h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.01em}
img,video,canvas,svg,iframe{max-width:100%;height:auto}
a,button,input,select,textarea,[role="button"]{touch-action:manipulation}
button,.btn,.sidebar a,.navbar-actions a,.navbar-actions button,.notif-bell,.user-menu summary{min-height:44px;min-width:44px}
input,select,textarea{font-size:16px}
.main,.card,.navbar,.top,.actions,.grid,table,.teacher-panel,.teacher-main-body,.v2-hero,.v2-rates,.student-hero-layout,.student-hero-kpis,.student-assignment-alert,.student-action-grid,.student-trend-grid,.lesson-builder-grid,.lesson-builder-top,.parent-wa-links,.parent-wa-actions{min-width:0}
.layout{min-height:100vh}
.sidebar{
  background:var(--surface);
  color:var(--ink-soft);
  padding:20px;
  height:100vh;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  position:fixed;
  top:0;
  left:0;
  width:240px;
  z-index:80;
  border-right:1px solid var(--line);
}
.sidebar a{display:block;color:var(--ink-soft);text-decoration:none;padding:8px 0}
.sidebar a:hover{color:var(--violet-ink);background:var(--violet-tint)}
.sidebar-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.sidebar-brand{display:grid;justify-items:center;align-content:start;text-align:center;gap:8px;margin-bottom:14px;width:100%}
.sidebar-top.sidebar-brand{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;text-align:center}
.sidebar-logo{width:112px;height:112px;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(22,24,43,.12))}
.sidebar-top.sidebar-brand .sidebar-logo{display:block;margin:0 auto}
.sidebar-top.sidebar-brand p{width:100%;text-align:center}
.sidebar-brand p{margin:0;color:var(--ink);font-family:var(--font-display);font-size:14px;font-weight:700;letter-spacing:.2px}
.sidebar a{display:flex;align-items:center;gap:10px;padding:10px 8px;border-radius:8px}
.nav-icon{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;opacity:.95}
.nav-icon svg{width:18px;height:18px;fill:currentColor}
.sidebar a.active{
  background:var(--violet-tint);
  color:var(--violet-ink);
  border:1px solid #DCD5FB;
  font-weight:700;
}
.main{padding:20px;margin-left:240px}
.dashboard-page .main{padding-top:8px}
.navbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:nowrap;background:var(--app-panel, var(--card));border:1px solid var(--app-border, var(--line));padding:12px 16px;border-radius:12px;margin-bottom:16px}
.navbar-user{display:flex;align-items:center;gap:10px;min-height:36px}
.navbar-actions{display:inline-flex;align-items:center;gap:10px;margin-left:auto;flex:0 0 auto}
.navbar-actions form{margin:0;display:flex;align-items:center}
.notif-menu{position:relative}
.notif-bell{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:0 0 48px;width:48px;height:48px;border-radius:12px;border:1px solid var(--line);background:#fff;position:relative;text-decoration:none}
.notif-bell::-webkit-details-marker{display:none}
.notif-bell-icon{font-size:22px;line-height:1}
.notif-bell-count{position:absolute;top:-7px;right:-7px;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:var(--signal);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}
.notif-panel{position:absolute;right:0;top:calc(100% + 8px);width:min(360px,88vw);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 14px 30px rgba(22,24,43,.14);padding:10px;z-index:130}
.notif-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.notif-panel-head strong{font-family:var(--font-display);font-size:14px;color:var(--ink)}
.notif-panel-head a{font-size:12px;color:var(--violet);text-decoration:none}
.notif-list{display:grid;gap:6px;max-height:340px;overflow:auto;padding-top:8px}
.notif-item{display:grid;gap:2px;text-decoration:none;padding:8px;border-radius:8px;border:1px solid var(--line);background:#fff}
.notif-item strong{font-size:13px;color:var(--ink);line-height:1.3}
.notif-item span{font-size:12px;color:var(--ink-soft);line-height:1.35}
.notif-item.is-unread{background:var(--violet-tint);border-color:#DCD5FB}
.notif-item:hover{background:var(--paper)}
.notif-empty{font-size:12px;color:var(--ink-soft);padding:8px}
.user-menu{position:relative}
.user-menu summary{list-style:none}
.user-menu summary::-webkit-details-marker{display:none}
.user-menu-panel{
  position:absolute;
  right:0;
  top:calc(100% + 8px);
  background:#fff;
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px;
  min-width:170px;
  box-shadow:0 10px 24px rgba(22,24,43,.12);
  z-index:120;
}
.btn-logout{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  height:40px;
  gap:6px;
  border-radius:10px;
  padding:9px 14px;
  font-weight:700;
  background:var(--signal);
  border:1px solid var(--signal);
  color:#fff;
}
.btn-logout:hover{
  background:#e8622f;
  border-color:#e8622f;
}
.logout-icon{font-size:14px;line-height:1}
.global-menu-toggle{
  display:none;
  align-items:center;
  justify-content:center;
  margin-right:8px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--ink);
  border-radius:8px;
  width:32px;
  height:32px;
  cursor:pointer;
}
.mobile-sidebar-backdrop{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(2,6,23,.45);
  z-index:70;
}
body.sidebar-hidden .layout{grid-template-columns:1fr}
body.sidebar-hidden .sidebar{display:none}
body.sidebar-hidden .main{margin-left:0}
.card{background:var(--app-panel, var(--card));border:1px solid var(--app-border, var(--line));border-radius:12px;padding:16px;box-shadow:0 2px 8px rgba(22,24,43,.05);margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.btn{background:var(--app-primary, var(--violet));color:#fff;border:1px solid var(--app-primary, var(--violet));border-radius:8px;padding:8px 12px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center;line-height:1.3;font-family:var(--font-display);font-weight:600;transition:filter .15s}
.btn:hover{filter:brightness(0.88)}
.btn-danger{background:var(--signal);border-color:var(--signal)}
.btn-danger:hover{background:#e8622f;border-color:#e8622f}
input,select,textarea{width:100%;padding:8px;border:1px solid var(--line);border-radius:8px;margin-bottom:10px;background:#fff;color:var(--ink);font-family:var(--font-body)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px var(--violet-tint)}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden}
th,td{padding:10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}
th{color:var(--app-muted, var(--ink-soft));font-weight:600}
.actions{display:flex;gap:8px}
.top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.footer{margin-top:20px;color:var(--muted);font-size:12px}
.badge{padding:2px 8px;border-radius:999px;background:var(--violet-tint);color:var(--app-primary, var(--violet-ink));font-size:12px}
body.play-compact .layout{grid-template-columns:1fr}
body.play-compact .sidebar{display:none}
body.play-compact .main{padding:8px;margin-left:0}
body.play-compact .navbar{padding:8px 10px;margin-bottom:8px}
body.play-compact .top{margin-bottom:6px}
body.play-compact .footer{display:none}
body.lesson-fullscreen .layout{grid-template-columns:1fr}
body.lesson-fullscreen .sidebar{display:none !important}
body.lesson-fullscreen .main{margin-left:0 !important}
body.lesson-fullscreen .mobile-sidebar-backdrop{display:none !important}
@media (max-width: 960px){
  .layout{min-height:100vh}
  .global-menu-toggle{display:inline-flex}
  .main{margin-left:0}
  .sidebar{
    display:block;
    position:fixed;
    top:0;
    left:0;
    width:min(82vw,320px);
    height:100vh;
    z-index:90;
    transform:translateX(-100%);
    transition:transform .2s ease;
    overflow:auto;
  }
  body.sidebar-hidden .sidebar{display:none}
  body.mobile-sidebar-open .sidebar{transform:translateX(0)}
  body.mobile-sidebar-open .mobile-sidebar-backdrop{display:block}
  .grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 768px){
  .main{padding:12px 10px}
  .top,.actions,.v2-hero,.v2-rates,.lesson-builder-top,.parent-wa-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .navbar{
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    gap:8px;
  }
  .navbar-user{
    flex-wrap:nowrap;
    min-width:0;
    gap:8px;
  }
  .navbar-user strong{
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    max-width:46vw;
  }
  .navbar-actions{
    display:inline-flex;
    flex-wrap:nowrap;
    gap:6px;
    margin-left:auto;
  }
  .navbar-actions form{flex:0 0 auto}
  .btn-logout{
    white-space:nowrap;
    padding:9px 10px;
    height:38px;
  }
  .notif-menu{
    position:static;
  }
  .notif-panel{
    position:fixed;
    left:50%;
    right:auto;
    top:84px;
    transform:translateX(-50%);
    width:min(360px, calc(100vw - 24px));
    max-height:70vh;
    z-index:1500;
  }
  .grid,
  .summary-stats,
  .signal-grid,
  .weekly-grid,
  .v2-metrics,
  .v2-grid,
  .weekly-v2,
  .teacher-bottom-grid,
  .parent-wa-links,
  .activity-grid,
  .lesson-builder-grid,
  .builder-tabs,
  .student-hero-layout,
  .student-hero-kpis,
  .student-action-grid,
  .student-trend-grid,
  .heatmap-grid,
  .student-flow-card .signal-list{
    grid-template-columns:1fr !important;
  }
  .student-assignment-alert{
    grid-template-columns:1fr;
    text-align:left;
  }
  .student-assignment-alert-action{justify-content:stretch}
  .student-assignment-alert-action .btn{width:100%;min-height:48px;font-size:1.05rem;padding:0.9rem 1.1rem}
  .table-responsive,table{
    display:block;
    width:100%;
  }
  th,td{
    word-break:break-word;
    overflow-wrap:anywhere;
  }
}
.pwa-standalone .navbar{padding-top:max(12px, env(safe-area-inset-top))}
.pwa-standalone .main{padding-bottom:max(16px, env(safe-area-inset-bottom))}
.pwa-standalone .sidebar{padding-bottom:max(16px, env(safe-area-inset-bottom))}
.is-offline .toast{display:none}
.is-offline .navbar::after{
  content:"Cevrimdisi";
  margin-left:12px;
  background:#fee2e2;
  color:#991b1b;
  border:1px solid #fecaca;
  padding:6px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.modal{position:fixed;inset:0;background:rgba(22,24,43,.45);display:none;align-items:center;justify-content:center;z-index:1000}
.modal.open{display:flex}
.modal-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;max-width:520px;width:100%}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.modal-head strong{font-family:var(--font-display)}

.teacher-panel{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}
.teacher-main{background:linear-gradient(160deg,#edf4ff,#eff3f9);border:1px solid #d8e3f6;padding:22px;border-radius:28px}
.teacher-main-head{display:inline-block;padding:10px 18px;border-radius:999px;background:#d8e1ee;color:#46566e;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.teacher-main-body{margin-top:22px;display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start}
.teacher-main h1{font-size:56px;line-height:1.05;margin:0 0 14px;font-weight:800;color:#14213d}
.teacher-main p{margin:0;color:#55657c;font-size:18px}
.class-summary{background:rgba(255,255,255,.35);border:1px solid #d2dff2;border-radius:30px;padding:22px}
.class-summary h3{margin:0 0 4px;font-size:34px;color:#1f2b43}
.class-summary p{font-size:17px;margin-bottom:14px}
.ratio-row{display:grid;grid-template-columns:110px 1fr 56px;align-items:center;gap:10px;margin-top:8px}
.ratio-row span{font-weight:700;color:#55657c}
.ratio-row strong{font-size:28px;color:#22304a}
.ratio-track{height:14px;background:#d8e0ea;border-radius:999px;overflow:hidden}
.ratio-track div{height:100%;background:#2f7ff8;border-radius:999px}
.summary-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.summary-stats article{background:#fff;border:1px solid #d7e0ed;border-radius:22px;padding:16px}
.summary-stats span{display:block;font-size:13px;letter-spacing:.6px;text-transform:uppercase;color:#667890;font-weight:800}
.summary-stats strong{display:block;font-size:36px;margin-top:4px;color:#15233d}
.highlight-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}
.highlight-cards .card{margin:0;border-radius:22px;border:1px solid #d8e2f0;box-shadow:none}
.highlight-cards span{display:block;font-size:13px;font-weight:800;text-transform:uppercase;color:#687b95;letter-spacing:.6px}
.highlight-cards h4{margin:6px 0 4px;font-size:34px;line-height:1.05;color:#172742}
.highlight-cards p{font-size:14px}
.teacher-side{display:grid;gap:16px}
.class-signals,.weekly-summary{border-radius:26px;border:1px solid #dce5f1;background:linear-gradient(160deg,#f6f8fc,#edf3f9)}
.class-signals h2,.weekly-summary h2{font-size:44px;margin:0 0 12px;color:#142742}
.signal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.signal-box{border-radius:22px;border:2px solid #d8e0ec;padding:14px;background:#fff}
.signal-box span{display:block;font-size:12px;letter-spacing:.8px;text-transform:uppercase;color:#657991;font-weight:800}
.signal-box h3{margin:4px 0 8px;font-size:34px;color:#16263f;line-height:1.05}
.signal-box p{margin-top:8px;font-size:14px;color:#516177}
.signal-support{border-color:#b8d2ff}
.signal-motivation{border-color:#aae7cd}
.signal-focus{border-color:#f2d291}
.signal-status{border-color:#d3c2f9}
.weekly-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.weekly-grid article{background:#fff;border:1px solid #d8e3f2;border-radius:18px;padding:12px}
.weekly-grid span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:#6e8198;font-weight:800}
.weekly-grid h4{margin:5px 0;font-size:34px;line-height:1.05;color:#183158}
.weekly-grid p{margin:0;font-size:14px;color:#5f7087}

@media (max-width: 1520px){
  .teacher-panel{grid-template-columns:1fr}
}
@media (max-width: 1200px){
  .teacher-main-body{grid-template-columns:1fr}
  .summary-stats{grid-template-columns:repeat(2,1fr)}
  .highlight-cards{grid-template-columns:1fr}
  .signal-grid{grid-template-columns:1fr}
  .weekly-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 760px){
  .teacher-main h1,.class-summary h3,.highlight-cards h4,.class-signals h2,.weekly-summary h2,.signal-box h3,.weekly-grid h4{font-size:30px}
  .summary-stats{grid-template-columns:1fr}
  .weekly-grid{grid-template-columns:1fr}
}

.teacher-v2{display:grid;gap:14px}
.teacher-v2-compact{gap:10px}
.teacher-v2-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}
.teacher-v2-main{display:grid;gap:10px}
.soft-surface{border:1px solid #e5e7eb !important}
.soft-surface-blue{background:#f8fafc !important}
.soft-surface-mint{background:#f9fafb !important}
.soft-surface-peach{background:#f9fafb !important}
.soft-surface-lilac{background:#f8fafc !important}
.soft-surface-sky{background:#f8fafc !important}
.soft-surface-yellow{background:#f9fafb !important}
.soft-surface-rose{background:#f9fafb !important}
.v2-hero{display:flex;justify-content:space-between;align-items:center;border:1px solid #e6e8ee;background:#fff}
.teacher-v2 .card{border-radius:6px}
.v2-hero h1{margin:0;font-size:24px;line-height:1.2;color:#111827}
.v2-hero p{margin:6px 0 0;color:#6b7280;font-size:14px}
.v2-rates{display:flex;gap:14px;align-items:stretch;min-width:360px}
.v2-rate-item{display:grid;gap:6px;min-width:170px}
.v2-rate-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.v2-rates span{display:block;font-size:12px;color:#6b7280}
.v2-rates strong{display:block;font-size:18px;color:#111827}
.v2-rate-bar{height:8px;background:#e2e8f0;border-radius:999px;overflow:hidden}
.v2-rate-bar i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#06b6d4);border-radius:999px}
.v2-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.v2-metrics article{margin:0;padding:14px;border:1px solid #e6e8ee;background:#fff}
.v2-metrics article{transition:transform .2s ease,box-shadow .2s ease}
.v2-metrics article:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(15,23,42,.08)}
.v2-metrics span{display:block;font-size:12px;color:#6b7280}
.v2-metrics strong{display:block;font-size:24px;line-height:1.1;margin-top:4px}
.v2-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.v2-grid h2,.teacher-v2 > section > h2{margin:0 0 12px;font-size:18px;color:#111827}
.signal-list{display:grid;gap:10px}
.signal-list div{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #f0f2f6}
.signal-list div{padding-left:0}
.signal-list div:last-child{border-bottom:none}
.signal-list span{font-size:13px;color:#6b7280}
.signal-list strong{font-size:14px;color:#111827;font-weight:600;text-align:right}
.note-list{display:grid;gap:10px}
.note-list article{padding:10px;border:1px solid #eef0f5;border-radius:6px;background:#fafbfc}
.note-list article:nth-child(1){background:#fff}
.note-list article:nth-child(2){background:#fff}
.note-list article:nth-child(3){background:#fff}
.note-list span{display:block;font-size:12px;color:#6b7280;margin-bottom:4px}
.note-list p{margin:0;font-size:14px;color:#1f2937}
.weekly-v2{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.weekly-v2 article{padding:12px;border:1px solid #edf0f5;border-radius:6px;background:#fff}
.weekly-v2 article:nth-child(1){background:#fff}
.weekly-v2 article:nth-child(2){background:#fff}
.weekly-v2 article:nth-child(3){background:#fff}
.weekly-v2 article:nth-child(4){background:#fff}
.weekly-v2 span{display:block;font-size:12px;color:#6b7280}
.weekly-v2 strong{display:block;margin:6px 0;font-size:16px;color:#111827}
.weekly-v2 p{margin:0;font-size:13px;color:#6b7280}
.teacher-bottom-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:stretch}
.teacher-bottom-grid > .card{height:100%;margin-bottom:0}
.weekly-compact .weekly-v2{grid-template-columns:1fr}
.parent-whatsapp-panel{display:grid;gap:8px}
.parent-wa-help{margin:0;font-size:12px;color:#475569}
.parent-wa-form{display:grid;gap:8px}
.parent-wa-row{display:grid;gap:6px}
.parent-wa-row label{font-size:12px;font-weight:700;color:#334155}
.parent-wa-upload{display:grid;gap:4px}
.parent-wa-upload small{font-size:11px;color:#6b7280}
.parent-wa-checkbox{display:flex !important;align-items:center;gap:8px}
.parent-wa-checkbox input{width:auto;margin:0}
.parent-wa-actions{display:flex;justify-content:flex-end}
.parent-wa-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.parent-wa-links a{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd5e1;border-radius:8px;padding:8px;background:#fff;color:#0f172a;text-decoration:none;font-size:12px;font-weight:700}
.pdf-status{display:none;background:#0f172a;color:#e2e8f0;border:1px solid #1e293b;border-radius:10px;padding:10px 12px;font-size:13px}
.pdf-status.show{display:block}

.teacher-v2-compact .card{padding:12px}
.teacher-v2-compact .v2-hero{padding:12px 14px}
.teacher-v2-compact .v2-hero h1{font-size:19px}
.teacher-v2-compact .v2-hero p{font-size:12px;margin-top:4px}
.teacher-v2-compact .v2-rates{gap:10px;min-width:320px}
.teacher-v2-compact .v2-rate-item{min-width:150px}
.teacher-v2-compact .v2-rates span{font-size:11px}
.teacher-v2-compact .v2-rates strong{font-size:16px}
.teacher-v2-compact .v2-rate-bar{height:7px}
.teacher-v2-compact .v2-metrics{gap:8px}
.teacher-v2-compact .v2-metrics article{padding:10px 12px}
.teacher-v2-compact .v2-metrics span{font-size:11px}
.teacher-v2-compact .v2-metrics strong{font-size:18px}
.teacher-v2-compact .v2-grid{gap:8px}
.teacher-v2-compact .v2-grid h2,.teacher-v2-compact > section > h2{font-size:15px;margin-bottom:8px}
.teacher-v2-compact .signal-list{gap:4px}
.teacher-v2-compact .signal-list div{padding:6px 0}
.teacher-v2-compact .signal-list span{font-size:12px}
.teacher-v2-compact .signal-list strong{font-size:12px}
.teacher-v2-compact .note-list{gap:6px}
.teacher-v2-compact .note-list article{padding:8px}
.teacher-v2-compact .note-list span{font-size:11px}
.teacher-v2-compact .note-list p{font-size:12px;line-height:1.35}
.teacher-v2-compact .weekly-v2{gap:8px}
.teacher-v2-compact .weekly-v2 article{padding:9px}
.teacher-v2-compact .weekly-v2 span{font-size:11px}
.teacher-v2-compact .weekly-v2 strong{font-size:14px;margin:4px 0}
.teacher-v2-compact .weekly-v2 p{font-size:12px}
.teacher-top10{position:static}
.teacher-top10 h2{margin:0 0 10px;font-size:15px}
.teacher-top10-list{display:grid;gap:8px}
.teacher-top10-item{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:8px;border:1px solid #e7ecf4;border-radius:8px;background:#fff}
.teacher-top10-rank{width:28px;height:28px;border-radius:999px;background:#334155;color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px}
.teacher-top10-rank.rank-1{background:linear-gradient(135deg,#f59e0b,#f97316)}
.teacher-top10-rank.rank-2{background:linear-gradient(135deg,#94a3b8,#64748b)}
.teacher-top10-rank.rank-3{background:linear-gradient(135deg,#fb7185,#e11d48)}
.teacher-top10-main strong{display:block;font-size:12px;color:#111827}
.teacher-top10-main span{display:block;font-size:10px;color:#6b7280}
.teacher-top10-xp{font-size:11px;font-weight:700;color:#0f766e}

@media (max-width: 1300px){
  .v2-metrics{grid-template-columns:repeat(3,1fr)}
  .weekly-v2{grid-template-columns:repeat(2,1fr)}
  .v2-grid{grid-template-columns:1fr}
}
@media (max-width: 900px){
  .v2-grid{grid-template-columns:1fr}
  .v2-metrics{grid-template-columns:repeat(2,1fr)}
  .teacher-v2-layout{grid-template-columns:1fr}
  .teacher-bottom-grid{grid-template-columns:1fr}
  .parent-wa-links{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 640px){
  .v2-hero{display:block}
  .v2-rates{margin-top:10px;min-width:0;display:grid}
  .v2-rate-item{min-width:0}
  .v2-metrics,.weekly-v2{grid-template-columns:1fr}
  .v2-hero h1{font-size:20px}
}

.bulk-upload-overlay{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.25);z-index:2000}
.bulk-upload-overlay.open{display:flex}
.bulk-upload-overlay-card{width:min(420px,90vw);background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:22px;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,.18)}
.bulk-upload-overlay-card strong{display:block;font-size:18px;margin-top:10px}
.bulk-upload-overlay-card p{margin:8px 0 0;color:#6b7280;font-size:14px}
.bulk-spinner{width:42px;height:42px;margin:0 auto;border:4px solid #dbeafe;border-top-color:#2563eb;border-radius:50%;animation:spin .8s linear infinite}
#students-page-content.is-blurred{filter:blur(5px);pointer-events:none;user-select:none}
@keyframes spin{to{transform:rotate(360deg)}}

.app-pagination{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:14px}
.page-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 10px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#111827;text-decoration:none;font-size:13px;line-height:1}
.page-btn.active{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:600}
.page-btn.disabled{opacity:.5;pointer-events:none}
.page-dot{padding:0 4px;color:#6b7280;font-size:12px}

.activity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:12px}
.activity-item{border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow:hidden}
.activity-item img{width:100%;max-width:180px;aspect-ratio:1/1;object-fit:cover;display:block;background:#f3f4f6;margin:12px auto 0;border-radius:8px}
.activity-body{padding:10px}
.activity-body h3{margin:0 0 10px;font-size:16px;text-align:center}
.activity-body .actions{justify-content:center;align-items:center}
@media (max-width:1100px){.activity-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:700px){.activity-grid{grid-template-columns:1fr}}

.lesson-builder{border:1px solid #dbe2ea;border-radius:10px;background:#f8fafc;padding:10px;margin-bottom:14px}
.lesson-builder-top{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}
.lesson-builder-top input{margin:0}
.lesson-builder-grid{display:grid;grid-template-columns:240px 1fr 300px;gap:10px}
.builder-left,.builder-center,.builder-right{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px}
.builder-left h4,.builder-right h4{margin:0 0 8px}
#slide_list{margin-top:8px;display:grid;gap:6px;max-height:480px;overflow:auto}
.slide-list-item{width:100%;text-align:left;padding:8px;border:1px solid #dbe2ea;background:#f8fafc;border-radius:8px;cursor:pointer}
.slide-list-item.active{background:#dbeafe;border-color:#93c5fd}
.builder-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px}
.tab-btn{border:1px solid #cbd5e1;background:#f1f5f9;border-radius:8px;padding:8px;cursor:pointer}
.tab-btn.active{background:#dbeafe;border-color:#93c5fd}
.builder-panel{margin-bottom:8px}
.builder-panel input,.builder-panel textarea,.builder-panel select,.builder-right input,.builder-right textarea,.builder-right select{margin-bottom:8px}
.builder-preview{border:1px dashed #cbd5e1;padding:8px;border-radius:8px;background:#f8fafc}
@media (max-width:1300px){.lesson-builder-grid{grid-template-columns:1fr}}

.notification-tabs-card{padding:10px 12px}
.notification-tabs{display:flex;gap:8px;flex-wrap:wrap}
.notification-tab-btn{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;transition:.2s}
.notification-tab-btn:hover{background:#f8fafc}
.notification-tab-btn.is-active{background:#4c1d95;color:#fff;border-color:#4c1d95}
.notification-recent{margin-top:14px}
.notification-recent h3{margin:0 0 8px;font-size:15px;color:#111827}
.notification-recent-list{display:grid;gap:8px}
.notification-recent-item{border:1px solid #e2e8f0;background:#fff;border-radius:10px;padding:10px}
.notification-recent-item header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.notification-recent-item header strong{font-size:14px;color:#111827}
.notification-recent-item header span{font-size:11px;color:#475569;background:#f1f5f9;border-radius:999px;padding:2px 8px;font-weight:700}
.notification-recent-item p{margin:0;font-size:13px;color:#334155;line-height:1.45;white-space:pre-line}

.dashboard-shell{position:relative}
.dashboard-actions-bar{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;padding:0 0 18px}
.widget-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;align-items:start}
.dashboard-widget{position:relative;grid-column:span 12;min-width:0;overflow:hidden;user-select:none}
.dashboard-widget.is-hidden{display:none}
.widget-span-1{grid-column:span 1}
.widget-span-2{grid-column:span 2}
.widget-span-3{grid-column:span 3}
.widget-span-4{grid-column:span 4}
.widget-span-5{grid-column:span 5}
.widget-span-6{grid-column:span 6}
.widget-span-7{grid-column:span 7}
.widget-span-8{grid-column:span 8}
.widget-span-9{grid-column:span 9}
.widget-span-10{grid-column:span 10}
.widget-span-11{grid-column:span 11}
.widget-span-12{grid-column:span 12}
.dashboard-shell.is-editing .dashboard-widget{
  animation:widget-jiggle 2.8s ease-in-out infinite;
  transform-origin:center center;
  cursor:grab;
}
.dashboard-widget.is-dragging{opacity:.72;transform:scale(.99)}
.widget-drag-placeholder{border:2px dashed #93c5fd;background:rgba(219,234,254,.45);box-shadow:none;outline:2px solid rgba(59,130,246,.18)}
.widget-drag-placeholder::after{content:'Buraya bırak';position:absolute;inset:0;display:grid;place-items:center;color:#2563eb;font-size:12px;font-weight:700}
.widget-drop-active{outline:2px solid #60a5fa;outline-offset:2px}
@keyframes widget-jiggle{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-0.5px)}
}
.widget-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.widget-head strong{display:block;font-size:15px;line-height:1.2}
.widget-head span{display:block;margin-top:2px;color:#64748b;font-size:12px}
.widget-toggle{
  border:1px solid #cbd5e1;
  background:#fff;
  color:#0f172a;
  border-radius:999px;
  padding:6px 10px;
  font-size:12px;
  font-weight:700;
  cursor:pointer;
}
.widget-toggle-remove{
  width:28px;
  height:28px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-color:#fecaca;
  background:#fff1f2;
  color:#dc2626;
}
.widget-toggle-remove::before{content:"−";font-size:20px;line-height:1;font-weight:900}
.widget-resize-handle{
  position:absolute;
  right:8px;
  bottom:8px;
  width:22px;
  height:22px;
  border-radius:8px;
  background:linear-gradient(135deg,#f97316,#ea580c);
  box-shadow:0 6px 16px rgba(249,115,22,.28);
  cursor:se-resize;
  display:none;
}
.dashboard-shell.is-editing .widget-resize-handle{display:block}
.widget-kpi{padding:12px;border-radius:16px;background:linear-gradient(135deg,#f8fbff,#fff);min-height:64px}
.widget-kpi strong{display:block;font-size:24px;line-height:1.1;color:#0f172a}
.widget-kpi span{display:block;margin-top:4px;font-size:12px;color:#64748b;font-weight:700}
.qr-mobile-widget{display:none !important;align-items:center;justify-content:space-between;gap:14px;text-decoration:none;border:1px solid #bfdbfe;background:linear-gradient(135deg,#eff6ff 0%,#fff 100%);padding:14px;border-radius:18px}
.widget-grid > .dashboard-widget-qr{display:none !important}
.qr-mobile-widget .widget-head{margin:0 0 10px}
.qr-mobile-widget-text{display:flex;flex-direction:column;gap:4px;justify-content:center;min-width:0;flex:1 1 auto;text-align:center}
.qr-mobile-widget span{font-size:13px;font-weight:700;color:#2563eb}
.qr-mobile-widget strong{font-size:22px;line-height:1.1;color:#0f172a}
.qr-mobile-widget small{font-size:12px;color:#475569}
.qr-mobile-widget-img{width:72px;height:72px;flex:0 0 72px;object-fit:contain}
.teacher-top10-list{display:grid;gap:8px}
.teacher-top10-item{display:grid;grid-template-columns:28px 1fr auto;gap:8px;align-items:center;padding:8px;border:1px solid #e7ecf4;border-radius:8px;background:#fff}
.teacher-top10-rank{width:28px;height:28px;border-radius:999px;background:#334155;color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px}
.teacher-top10-rank.rank-1{background:linear-gradient(135deg,#f59e0b,#f97316)}
.teacher-top10-rank.rank-2{background:linear-gradient(135deg,#94a3b8,#64748b)}
.teacher-top10-rank.rank-3{background:linear-gradient(135deg,#fb7185,#e11d48)}
.teacher-top10-main strong{display:block;font-size:12px;color:#111827}
.teacher-top10-main span{display:block;font-size:10px;color:#6b7280}
.teacher-top10-xp{font-size:11px;font-weight:700;color:#0f766e}
.widget-library{
  position:fixed;
  left:50%;
  bottom:18px;
  transform:translate(-50%,120%);
  width:min(560px,calc(100vw - 24px));
  max-height:min(52vh,540px);
  overflow:auto;
  z-index:115;
  transition:transform .2s ease;
}
.widget-library.open{transform:translate(-50%,0)}
.widget-library .panel-header{cursor:grab}
.widget-library.is-dragging .panel-header{cursor:grabbing}
.library-list{display:grid;gap:10px}
.library-item{
  width:100%;
  text-align:left;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid #dbe4ee;
  background:#fff;
  cursor:pointer;
}
.library-item strong{display:block}
.library-item span{display:block;font-size:12px;color:#64748b;margin-top:2px}
.library-empty{color:#64748b;font-size:13px;margin:0}
.v2-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.v2-grid .card{min-width:0}
@media (max-width: 1300px){
  .widget-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .v2-grid{grid-template-columns:1fr}
  .widget-span-6,.widget-span-7,.widget-span-8,.widget-span-9,.widget-span-10,.widget-span-11,.widget-span-12{grid-column:span 6}
}
@media (max-width: 900px){
  .widget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .widget-span-1,.widget-span-2,.widget-span-3,.widget-span-4,.widget-span-5,.widget-span-6,.widget-span-7,.widget-span-8,.widget-span-9,.widget-span-10,.widget-span-11,.widget-span-12{grid-column:span 2}
  .v2-grid{grid-template-columns:1fr}
  .signal-list{grid-template-columns:1fr}
}
@media (max-width: 640px){
  .widget-grid{grid-template-columns:1fr}
  .widget-span-1,.widget-span-2,.widget-span-3,.widget-span-4,.widget-span-5,.widget-span-6,.widget-span-7,.widget-span-8,.widget-span-9,.widget-span-10,.widget-span-11,.widget-span-12{grid-column:span 1}
  .widget-grid > .dashboard-widget-qr{display:flex !important;order:-999}
  .widget-library{bottom:12px}
  .signal-list{grid-template-columns:1fr}
}


/* Modern teacher/admin shell */
.sidebar-pro{background:var(--app-surface, var(--surface));box-shadow:none;border-right:1px solid var(--app-border, var(--line))}
.sidebar-pro .sidebar-logo--brand{width:124px;height:124px;filter:drop-shadow(0 6px 14px rgba(22,24,43,.12));margin-bottom:6px}
.sidebar-pro .sidebar-brand p,.sidebar-pro .student-sidebar-top p{font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:.2px;color:var(--ink);opacity:1}
.sidebar-pro a{background:transparent;color:var(--ink-soft);border:1px solid transparent;border-left:3px solid transparent;margin:2px 0;padding:12px 12px;border-radius:10px;transition:all .15s ease}
.sidebar-pro a:hover{background:var(--violet-tint);color:var(--app-primary, var(--violet-ink));transform:none}
.sidebar-pro a.active{background:var(--violet-tint);color:var(--app-primary, var(--violet-ink));border-color:transparent;border-left-color:var(--app-primary, var(--violet));box-shadow:none;font-weight:700}
.sidebar-pro .nav-icon svg{fill:currentColor}

.dashboard-shell{max-width:100%;display:grid;gap:18px;position:relative}
.dashboard-hero{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:8px;
  align-items:flex-start;
  background:linear-gradient(135deg,#f8fbff 0%,#eef6ff 38%,#ffffff 72%,#f6fcff 100%);
  border:1px solid #dbe5f1;
  border-radius:28px;
  padding:20px 22px;
  box-shadow:0 18px 42px rgba(15,23,42,.05), inset 0 1px 0 rgba(255,255,255,.7);
}
.dashboard-hero h1{margin:0;font-size:24px;line-height:1.15;color:#162033}
.dashboard-hero p{margin:0;color:#64748b;font-size:13px;max-width:72ch}
.dashboard-hero-rates{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px;min-width:min(420px,100%)}
.class-tabs-strip{display:flex;gap:10px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-top:-6px;padding:0 2px 8px}
.class-tabs-strip::-webkit-scrollbar{height:0}
.class-tab{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:42px;padding:10px 18px;border-radius:14px;border:1px solid #dbe4ee;background:#fff;color:#475569;text-decoration:none;font-weight:700;box-shadow:0 8px 20px rgba(15,23,42,.04);white-space:nowrap}
.class-tab.active{background:linear-gradient(135deg,#f59e0b,#f97316);border-color:#f59e0b;color:#fff;box-shadow:0 12px 28px rgba(245,158,11,.26);transform:translateY(-1px)}
.rate-card{background:#fff;border:1px solid #dfe8f5;border-radius:22px;padding:16px 16px 14px;box-shadow:0 10px 26px rgba(15,23,42,.05)}
.rate-card span{display:block;font-size:13px;font-weight:700;color:#74839b}
.rate-card strong{display:block;font-size:28px;margin-top:6px;color:#162033}
.rate-track{height:10px;background:#e7eef8;border-radius:999px;overflow:hidden;margin-top:10px}
.rate-track i{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#0ea5e9)}
.widget-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.dashboard-main-layout{display:grid;grid-template-columns:minmax(0,1fr) clamp(240px,20vw,320px);gap:18px;align-items:start}
.dashboard-left-rail{display:none}
.dashboard-center-column{min-width:0;display:block}
.dashboard-right-column{min-width:0;align-self:start;position:sticky;top:16px}
.dashboard-sidebar-stack{display:grid;gap:12px;background:linear-gradient(180deg,#f7f8fb 0%,#eef2f7 100%);border:1px solid #dbe4ef;border-radius:24px;padding:12px;box-shadow:0 14px 36px rgba(15,23,42,.05);min-height:calc(100vh - 140px);align-content:start}
.dashboard-sidebar-stack > .dashboard-widget{margin-bottom:0}
.dashboard-sidebar-stack > .dashboard-widget + .dashboard-widget{margin-top:0}
.dashboard-sidebar-stack > .dashboard-widget:not(.dashboard-leaderboard-panel){min-height:170px}
.dashboard-sidebar-stack > .dashboard-widget .metric-card{padding:16px 18px}
.dashboard-sidebar-stack > .dashboard-widget .widget-head{margin-bottom:0}
.dashboard-widget-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:10px;align-items:start;grid-auto-flow:row dense;grid-auto-rows:10px}
.dashboard-widget-stack{display:grid;gap:12px;grid-auto-rows:min-content;align-content:start}
.dashboard-widget-stack--stats{grid-column:span 8;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-self:start}
.dashboard-widget-stack--stats > .dashboard-widget{height:auto;min-height:170px}
.dashboard-widget{position:relative;background:#fff;border:1px solid #d9e4f2;border-radius:24px;padding:14px;box-shadow:0 14px 36px rgba(15,23,42,.06);min-height:170px;display:flex;flex-direction:column;gap:12px;text-decoration:none;color:inherit;overflow:hidden;grid-row-end:span var(--widget-row-span, 18)}
.dashboard-widget-hero{min-height:210px}
.dashboard-widget-side{min-height:150px}
.dashboard-widget-wide{grid-column:span 12;min-height:170px;height:auto}
.dashboard-leaderboard-panel{height:393.2px;min-height:393.2px;background:rgba(248,250,252,.92)}
.dashboard-sidebar-stack > .dashboard-leaderboard-panel{height:393.2px;min-height:393.2px}
.dashboard-leaderboard-panel .widget-head{margin-bottom:2px}
.dashboard-leaderboard-panel .widget-head strong{font-size:12.5px;line-height:1.15}
.dashboard-leaderboard-panel .widget-head span{font-size:10px;line-height:1.15}
.dashboard-leaderboard-panel .teacher-top10-list{display:grid;grid-template-rows:repeat(5,minmax(0,1fr));gap:8px;flex:1;min-height:0}
.dashboard-leaderboard-panel .teacher-top10-item{grid-template-columns:24px 1fr auto;padding:8px 10px;gap:8px;min-height:0;height:100%;border-radius:14px;align-items:center}
.dashboard-leaderboard-panel .teacher-top10-main{display:flex;flex-direction:column;justify-content:center;min-height:0}
.dashboard-leaderboard-panel .teacher-top10-rank{width:24px;height:24px;font-size:10.5px}
.dashboard-leaderboard-panel .teacher-top10-main strong{font-size:11px;line-height:1.12}
.dashboard-leaderboard-panel .teacher-top10-main span{font-size:9px;line-height:1.08}
.dashboard-leaderboard-panel .teacher-top10-xp{font-size:9px}
.dashboard-widget-grid > .widget-span-6{grid-column:span 6}
.dashboard-widget-grid > .widget-span-12{grid-column:span 12}
.dashboard-widget-grid > .dashboard-notes-widget{
  grid-column:span 4;
  height:415px;
  min-height:415px;
  align-self:start;
}
.dashboard-widget-grid > .dashboard-chart-widget{
  grid-column:span 4;
  height:415px;
  min-height:415px;
  align-self:start;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact{
  grid-column:span 4;
  height:170px;
  min-height:170px;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric{
  height:170px;
  min-height:170px;
}
.dashboard-widget-grid > .dashboard-widget--compact-tile{
  height:170px;
  min-height:170px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.dashboard-widget-grid > .dashboard-widget--compact-tile > .widget-head{
  flex:0 0 auto;
  min-height:36px;
  margin-bottom:0;
}
.dashboard-widget-grid > .dashboard-widget--compact-tile > .metric-card,
.dashboard-widget-grid > .dashboard-widget--compact-tile > .chart-widget-body{
  flex:1;
  min-height:0;
}
.dashboard-widget-grid > .dashboard-widget--compact-tile .widget-resize-handle{
  bottom:8px;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head{margin-bottom:4px}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head strong{font-size:13px}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head span{font-size:10px}
.dashboard-widget-grid > .dashboard-widget--compact-metric .metric-card{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:12px 14px;
  gap:8px;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .metric-card strong{
  font-size:30px;
  line-height:1;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .metric-card span{
  font-size:12px;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .metric-card--stacked{
  justify-content:flex-start;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .active-top3-list{
  display:grid;
  gap:4px;
  margin-top:auto;
  padding-top:4px;
  border-top:1px solid #e5edf8;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .active-top3-item{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:11px;
  line-height:1.2;
  color:#334155;
  min-width:0;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .active-top3-item strong{
  font-size:11px;
  line-height:1;
  color:#0f172a;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .active-top3-item span{
  font-size:11px;
  line-height:1.2;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head{margin-bottom:4px}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head strong{font-size:13px}
.dashboard-widget-grid > .dashboard-widget--compact-metric .widget-head span{font-size:10px}
.dashboard-widget-grid > .dashboard-notes-widget .widget-head{margin-bottom:0}
.dashboard-widget-grid > .dashboard-notes-widget .widget-head strong{font-size:13px}
.dashboard-widget-grid > .dashboard-notes-widget .widget-head span{font-size:10px}
.dashboard-widget-grid > .dashboard-notes-widget .note-list{grid-template-columns:1fr;gap:6px;flex:1;overflow:hidden}
.dashboard-widget-grid > .dashboard-notes-widget .note-list article{min-height:0;padding:8px 10px;border-radius:12px}
.dashboard-widget-grid > .dashboard-notes-widget .note-list span{font-size:11px}
.dashboard-widget-grid > .dashboard-notes-widget .note-list p{font-size:12px;line-height:1.25;margin-top:3px}
.dashboard-widget-grid > .dashboard-chart-widget .widget-head{margin-bottom:0}
.dashboard-widget-grid > .dashboard-chart-widget .widget-head strong{font-size:13px}
.dashboard-widget-grid > .dashboard-chart-widget .widget-head span{font-size:10px}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-widget-body{
  grid-template-columns:1fr;
  gap:4px;
  align-content:start;
  padding-top:2px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bar-row{
  grid-template-columns:84px 1fr 28px;
  gap:6px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bar-label{
  font-size:11px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bars{
  gap:4px;
  align-content:start;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bar-track{
  height:10px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bar-value{
  font-size:11px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .widget-head{
  margin-bottom:4px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .widget-head strong{
  font-size:13px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .widget-head span,
.dashboard-widget-grid > .dashboard-chart-widget--compact .widget-class-tag{
  display:none;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bars{
  margin-top:2px;
}
.dashboard-widget-grid > .dashboard-chart-widget--compact .chart-bar-row:last-child{
  margin-bottom:0;
}
.chart-widget-body{flex:1;display:grid;grid-template-columns:1.05fr .95fr;gap:12px;align-items:stretch;min-height:0;overflow:hidden}
@keyframes chart-donut-in{from{opacity:0;transform:scale(.82) rotate(-90deg)}to{opacity:1;transform:scale(1) rotate(-90deg)}}
.chart-donut{
  position:relative;
  width:min(100%,200px);
  aspect-ratio:1/1;
  margin:auto;
  border-radius:50%;
  background:conic-gradient(
    var(--violet) 0 calc(var(--p1,25) * 1%),
    var(--mint) 0 calc((var(--p1,25) + var(--p2,25)) * 1%),
    var(--signal) 0 calc((var(--p1,25) + var(--p2,25) + var(--p3,25)) * 1%),
    #C7C4D6 0 100%
  );
  -webkit-mask-image:radial-gradient(circle, transparent 62%, #000 63%);
  mask-image:radial-gradient(circle, transparent 62%, #000 63%);
  filter:drop-shadow(0 14px 24px rgba(91,61,245,.16));
  transform:rotate(-90deg);
  animation:chart-donut-in .7s cubic-bezier(.2,.8,.2,1) both;
}
.chart-donut-hole{
  position:absolute;
  inset:31%;
  border-radius:50%;
  background:var(--surface,#fff);
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 2px 8px rgba(22,24,43,.06);
  transform:rotate(90deg);
}
.chart-donut-center{display:grid;justify-items:center;gap:1px;line-height:1}
.chart-donut-center strong{font-family:var(--font-display);font-size:19px;color:var(--ink,#16182B)}
.chart-donut-center span{font-size:9px;color:var(--ink-soft,#585A72);max-width:64px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chart-legend{display:grid;gap:8px;align-content:center}
.chart-legend-item{display:grid;grid-template-columns:10px 1fr auto;gap:9px;align-items:center;background:var(--surface,#fff);border:1px solid var(--line,#e5edf8);border-radius:12px;padding:9px 12px;min-width:0;transition:border-color .15s,background .15s}
.chart-legend-item:hover{border-color:var(--violet);background:var(--violet-tint,#EEEBFD)}
.chart-legend-item strong{font-size:12px;line-height:1.1;font-weight:600;color:var(--ink,#16182B)}
.chart-legend-item small{font-size:12px;color:var(--violet-ink,#3E28B8);font-weight:700;font-family:var(--font-display)}
.chart-dot{width:9px;height:9px;border-radius:999px;display:inline-block}
.chart-dot-1{background:var(--violet)}.chart-dot-2{background:var(--mint)}.chart-dot-3{background:var(--signal)}.chart-dot-4{background:#C7C4D6}
.chart-radial{display:grid;gap:9px;align-content:center}
.chart-radial-row,.chart-bar-row{display:grid;grid-template-columns:92px 1fr 34px;gap:8px;align-items:center}
.chart-radial-label,.chart-bar-label{font-size:12px;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chart-radial-bar,.chart-bar-track{height:12px;border-radius:999px;background:#eaf1fb;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(219,234,254,.7)}
.chart-radial-bar i,.chart-bar-track i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#2563eb,#0ea5e9)}
.chart-bar-row{grid-template-columns:120px 1fr 34px}
.chart-bars{display:grid;gap:10px;align-content:center}
.chart-bar-value,.chart-radial-value{font-size:12px;font-weight:800;color:#0f172a;text-align:right}
.chart-column{
  height:100%;
  min-height:0;
  display:flex;
  align-items:stretch;
  overflow:hidden;
}
.chart-column-bars{
  width:100%;
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(68px,1fr));
  gap:8px;
  align-items:end;
  min-height:0;
  overflow:hidden;
}
.chart-column--inline{align-items:flex-end}
.chart-column-item{
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  height:100%;
  overflow:hidden;
}
.chart-column-value{
  font-family:var(--font-display);
  font-size:12px;
  font-weight:700;
  color:var(--violet-ink,#3E28B8);
  line-height:1;
}
.chart-column-track{
  width:100%;
  min-width:24px;
  height:clamp(98px, 18vh, 142px);
  max-height:100%;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:8px 6px 6px;
  border-radius:14px;
  background:var(--paper,#F7F6F2);
  border:1px solid var(--line,#e0eaf7);
}
@keyframes chart-column-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.chart-column-track i{
  width:100%;
  border-radius:10px 10px 6px 6px;
  background:linear-gradient(180deg,var(--violet) 0%,var(--violet-ink) 100%);
  box-shadow:0 10px 20px rgba(91,61,245,.18);
  min-height:8px;
  transform-origin:bottom;
  animation:chart-column-grow .6s cubic-bezier(.2,.8,.2,1) both;
}
.chart-column-label{
  font-size:10.5px;
  color:var(--ink-soft,#585A72);
  text-align:center;
  line-height:1.15;
  min-height:2.1em;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  word-break:break-word;
  overflow:hidden;
}
.dashboard-widget-qr{display:none !important;background:linear-gradient(135deg,#eff6ff 0%,#ffffff 100%)}
.widget-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.widget-head strong{display:block;font-size:14px;color:#172033}
.widget-head span{display:block;font-size:11px;color:#74839b;margin-top:3px}
.widget-toggle{display:none;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid #fca5a5;background:#fff;color:#dc2626;font-size:22px;line-height:1;cursor:pointer}
.is-editing .widget-toggle{display:inline-flex}
.metric-card{flex:1;display:flex;flex-direction:column;justify-content:center;gap:6px;background:linear-gradient(180deg,#f8fbff 0%,#ffffff 100%);border:1px solid #edf2f8;border-radius:18px;padding:16px 18px}
.metric-card strong{font-size:28px;line-height:1;color:#162033}
.metric-card span{font-size:15px;color:#74839b;font-weight:700}
.qr-widget-body{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1;background:linear-gradient(135deg,#f8fbff 0%,#ffffff 100%);border:1px solid #edf2f8;border-radius:18px;padding:16px 18px}
.qr-widget-body small{display:block;color:#74839b;font-weight:700}
.qr-widget-body h3{margin:4px 0 6px;font-size:20px;color:#162033}
.qr-widget-body p{margin:0;color:#64748b}
.qr-widget-body img{width:104px;height:104px;object-fit:contain;filter:drop-shadow(0 14px 20px rgba(15,23,42,.08))}
.signal-list,.note-list,.teacher-top10-list{display:grid;gap:8px;flex:1;min-height:0;overflow:visible}
.note-list,.teacher-top10-list{align-content:stretch}
.note-list{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);gap:8px}
.note-list article{display:flex;flex-direction:column;justify-content:space-between;min-height:0;height:100%}
.signal-list div,.note-list article,.teacher-top10-item{background:#f8fbff;border:1px solid #e5edf8;border-radius:16px;padding:10px 12px;min-height:0}
.signal-list{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:10px}.signal-list div{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:52px}
.signal-list span,.note-list span,.teacher-top10-main span{color:#74839b;font-size:13px}
.signal-list strong,.teacher-top10-main strong{color:#172033}
.note-list p{margin:4px 0 0;color:#334155;line-height:1.35;min-height:0;font-size:13px;overflow-wrap:anywhere}
.teacher-top10-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;min-height:52px;padding:10px 12px}
.teacher-top10-main{min-width:0}
.teacher-top10-main strong,.teacher-top10-main span{display:block;overflow-wrap:anywhere}
.teacher-top10-list{align-content:start;overflow:visible;padding-right:2px}
.dashboard-sidebar-placeholder{min-height:320px;display:flex}
.sidebar-placeholder-card{border:1px dashed #cbd5e1;border-radius:18px;background:rgba(255,255,255,.55);padding:14px 16px;min-height:120px;display:flex;flex-direction:column;justify-content:flex-start;gap:6px;flex:1}
.sidebar-placeholder-card--dark{background:#050505;border-color:#050505;color:#fff}
.sidebar-placeholder-card--dark strong,.sidebar-placeholder-card--dark span{color:#fff}
.sidebar-placeholder-card strong{font-size:14px;color:#162033}
.sidebar-placeholder-card span{font-size:12px;color:#64748b;line-height:1.4}
.teacher-top10-rank{width:34px;height:34px;border-radius:999px;background:#e2e8f0;display:flex;align-items:center;justify-content:center;font-weight:800;color:#334155}
.teacher-top10-xp{font-weight:800;color:#0f766e}
.dashboard-actions-bar{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding-top:6px}
.widget-library-panel{position:fixed;left:50%;bottom:18px;transform:translate(-50%,120%);width:min(920px,calc(100vw - 24px));max-height:min(48vh,440px);overflow:auto;background:#fff;border:1px solid #d9e4f2;border-radius:24px;box-shadow:0 20px 60px rgba(15,23,42,.14);padding:16px;transition:transform .22s ease;z-index:120}
.widget-library-panel.collapsed{transform:translate(-50%,calc(100% + 16px)) !important}
.widget-library-panel.fab-only{transform:translate(-50%,calc(100% - 40px)) !important;overflow:visible}
.widget-library-panel.open{transform:translate(-50%,0)}
.widget-library-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px;cursor:grab}
.widget-library-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.widget-library-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.widget-library-head strong{display:block;font-size:14px;color:#162033}
.widget-library-head span{display:block;font-size:11px;color:#74839b;margin-top:4px}
.widget-library-close,.widget-library-minimize{width:34px;height:34px;border-radius:999px;border:1px solid #fca5a5;background:#fff;color:#dc2626;font-size:20px;line-height:1;cursor:pointer;flex:0 0 auto}
.widget-library-fab{
  position:absolute;
  left:50%;
  bottom:8px;
  transform:translateX(-50%);
  width:42px;
  height:42px;
  border-radius:999px;
  border:1px solid #cbd5e1;
  background:#fff;
  color:#0f172a;
  display:none;
  align-items:center;
  justify-content:center;
  font-size:18px;
  box-shadow:0 12px 26px rgba(15,23,42,.14);
  cursor:pointer;
}
.widget-library-panel.fab-only .widget-library-fab{display:inline-flex}
.widget-library-panel.fab-only .widget-library-head,
.widget-library-panel.fab-only .widget-library-list{display:none}
.widget-library-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;max-height:calc(48vh - 84px);overflow:auto;scrollbar-width:thin}
.widget-library-item{width:100%;text-align:left;border:1px solid #d9e4f2;background:#f8fbff;border-radius:18px;padding:12px;cursor:pointer}
.widget-library-item strong{display:block;font-size:14px;color:#162033}
.widget-library-item span{display:block;margin-top:4px;color:#64748b;font-size:11px}
.widget-library-empty{margin:0;color:#64748b}
.widget-span-1{grid-column:span 1}.widget-span-2{grid-column:span 2}.widget-span-3{grid-column:span 3}.widget-span-4{grid-column:span 4}.widget-span-5{grid-column:span 5}.widget-span-6{grid-column:span 6}.widget-span-7{grid-column:span 7}.widget-span-8{grid-column:span 8}.widget-span-9{grid-column:span 9}.widget-span-10{grid-column:span 10}.widget-span-11{grid-column:span 11}.widget-span-12{grid-column:span 12}
.widget-resize-handle{display:none;position:absolute;right:10px;bottom:10px;width:18px;height:18px;border-radius:4px;background:linear-gradient(135deg,#f97316,#fb923c);box-shadow:0 8px 18px rgba(249,115,22,.28);cursor:nwse-resize}
.widget-resize-handle::before{content:'';position:absolute;inset:4px;border-right:2px solid rgba(255,255,255,.9);border-bottom:2px solid rgba(255,255,255,.9);border-radius:1px}
.is-editing .dashboard-widget{animation:widget-jiggle 0.45s infinite alternate}
@keyframes widget-jiggle{0%,100%{transform:translateY(0)}50%{transform:translateY(-1px)}}
@media (min-width: 1181px){
  .dashboard-main-layout{
    grid-template-columns:minmax(0,1fr) clamp(260px,19vw,340px);
  }
  .dashboard-right-column{
    top:14px;
  }
  .dashboard-leaderboard-panel{
    width:100%;
  }
  .dashboard-widget-grid > .dashboard-chart-widget{
    min-width:0;
  }
  .dashboard-widget-grid > .dashboard-chart-widget .chart-widget-body{
    min-width:0;
  }
}
@media (max-width: 1520px) and (min-width: 1181px){
  .dashboard-widget-grid,.widget-grid{grid-template-columns:repeat(8,minmax(0,1fr))}
  .dashboard-widget{grid-column:span 4}
  .dashboard-widget.dashboard-widget-wide,
  .dashboard-widget.dashboard-widget-hero{grid-column:span 8}
  .dashboard-widget-stack--stats{grid-column:span 8}
}
@media (max-width: 1180px){
  .dashboard-hero{flex-direction:column}
  .dashboard-hero-rates{min-width:0;width:100%}
  .dashboard-main-layout{grid-template-columns:1fr}
  .dashboard-left-rail{display:none}
  .dashboard-right-column{position:static}
  .dashboard-sidebar-stack{min-height:auto}
  .dashboard-widget-grid,.widget-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .dashboard-widget-wide,.dashboard-widget{grid-column:span 6}
  .dashboard-widget-stack--stats{grid-column:span 12;grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-widget-grid > .dashboard-notes-widget{grid-column:span 6}
  .dashboard-widget-grid > .dashboard-chart-widget{grid-column:span 6}
  .dashboard-widget-grid > .dashboard-widget-qr{display:none !important}
}
@media (max-width: 760px){
  .sidebar-pro .sidebar-logo--brand{width:96px;height:96px}
  .sidebar-pro .sidebar-brand p,
  .sidebar-pro .student-sidebar-top p,
  .sidebar-pro a{
    font-size:12px;
  }
  .sidebar-pro a{
    padding:10px 10px;
    border-radius:12px;
    margin:3px 0;
  }
  .sidebar-pro .nav-icon{
    width:18px;
    height:18px;
  }
  .sidebar-pro .nav-icon svg{
    width:16px;
    height:16px;
  }
  .dashboard-hero{padding:18px;border-radius:22px}
  .dashboard-hero h1{font-size:24px}
  .dashboard-main-layout{grid-template-columns:1fr}
  .dashboard-left-rail{display:none}
  .dashboard-center-column{display:block}
  .dashboard-right-column{display:block;position:static}
  .dashboard-sidebar-stack{min-height:auto}
  .dashboard-widget-grid,.widget-grid{grid-template-columns:1fr}
  .dashboard-widget,.dashboard-widget-wide{grid-column:span 1}
  .dashboard-widget-grid > .dashboard-notes-widget{grid-column:span 1}
  .dashboard-widget-grid > .dashboard-chart-widget{grid-column:span 1}
  .dashboard-widget-stack--stats{grid-column:span 1;grid-template-columns:1fr}
  .dashboard-widget-stack--stats > .dashboard-widget{grid-column:span 1}
  .dashboard-widget-grid > .dashboard-widget-qr{display:flex !important;grid-column:span 1;order:-999}
  .widget-library-panel{right:10px;left:10px;top:auto;bottom:16px;width:auto;max-height:55vh}
}
