:root {
  --brand: #4f46e5;
  --brand-2: #7c3aed;
  --bg: #f5f6fb;
  --card-radius: 14px;
}
body { background: var(--bg); font-size: .95rem; }
.navbar-brand { font-weight: 700; letter-spacing: .2px; }
.navbar { background: linear-gradient(90deg, var(--brand), var(--brand-2)); }
.navbar .nav-link { color: rgba(255,255,255,.85) !important; border-radius: 8px; padding: .4rem .7rem !important; }
.navbar .nav-link.active, .navbar .nav-link:hover { color: #fff !important; background: rgba(255,255,255,.15); }
.card { border: 0; border-radius: var(--card-radius); box-shadow: 0 1px 3px rgba(20,20,60,.06), 0 4px 16px rgba(20,20,60,.04); }
.card-header { background: transparent; border-bottom: 1px solid #eef0f6; font-weight: 600; padding: .85rem 1.1rem; }
.stat { padding: 1rem 1.1rem; }
.stat .v { font-size: 1.6rem; font-weight: 700; line-height: 1.1; }
.stat .l { color: #6b7280; font-size: .8rem; text-transform: uppercase; letter-spacing: .4px; }
.stat .i { font-size: 1.6rem; opacity: .25; }
.countdown { background: linear-gradient(135deg, var(--brand), var(--brand-2)); color: #fff; }
.countdown .v { font-size: 2.2rem; }
.task { border-left: 4px solid #cbd5e1; border-radius: 10px; background: #fff; padding: .65rem .8rem; margin-bottom: .5rem; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.task.st-tamam { border-left-color: #16a34a; background: #f0fdf4; }
.task.st-kismen { border-left-color: #f59e0b; background: #fffbeb; }
.task.st-yapilmadi { border-left-color: #dc2626; background: #fef2f2; }
.task .meta { font-size: .8rem; color: #6b7280; }
.task.type-tekrar { border-left-style: double; border-left-width: 6px; }
.badge-type { font-weight: 500; }
.bt-konu { background: #e0e7ff; color: #3730a3; }
.bt-soru { background: #dcfce7; color: #166534; }
.bt-tekrar { background: #fef3c7; color: #92400e; }
.bt-tarama { background: #fce7f3; color: #9d174d; }
.bt-deneme { background: #fee2e2; color: #991b1b; }
.bt-video { background: #e0f2fe; color: #075985; }
.bt-yanlis_tekrar { background: #ffedd5; color: #9a3412; }
.bt-deneme_analizi { background: #ede9fe; color: #5b21b6; }
.lvl-guclu { background: #16a34a; color: #fff; }
.lvl-orta { background: #f59e0b; color: #fff; }
.lvl-zayif { background: #dc2626; color: #fff; }
.lvl-veri-yok { background: #e5e7eb; color: #4b5563; }
.row-guclu { background: #f0fdf4; }
.row-zayif { background: #fef2f2; }
.week-col { min-width: 220px; }
.week-grid { display: grid; grid-template-columns: repeat(7, minmax(200px, 1fr)); gap: .75rem; overflow-x: auto; padding-bottom: .5rem; }
.week-day { background: #fff; border-radius: 12px; padding: .6rem; min-height: 160px; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
.week-day.today { outline: 2px solid var(--brand); }
.week-day h6 { font-weight: 700; font-size: .9rem; margin-bottom: .5rem; }
.week-day .task { font-size: .85rem; padding: .45rem .55rem; }
.progress { height: .55rem; border-radius: 99px; }
.table > :not(caption) > * > * { padding: .45rem .6rem; }
.table thead th { font-size: .78rem; text-transform: uppercase; letter-spacing: .3px; color: #6b7280; font-weight: 600; }
.subject-card .topic-row:hover { background: #f8fafc; }
.topic-row a { text-decoration: none; }
.small-muted { font-size: .8rem; color: #6b7280; }
.btn-brand { background: var(--brand); color: #fff; }
.btn-brand:hover { background: #4338ca; color: #fff; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--brand), var(--brand-2)); }
.chart-box { position: relative; height: 260px; }
.chart-box.tall { height: 340px; }
.nav-pills .nav-link.active { background: var(--brand); }
.preview-table select, .preview-table input { font-size: .82rem; padding: .2rem .35rem; }
.preview-table td { vertical-align: middle; }
.unmatched { background: #fff7ed !important; }
@media (max-width: 768px) {
  .stat .v { font-size: 1.3rem; }
  .week-grid { grid-template-columns: repeat(7, 85vw); }
}
@media print {
  .no-print, .navbar, .btn, footer { display: none !important; }
  body { background: #fff; font-size: 11pt; }
  .card { box-shadow: none; border: 1px solid #ddd; break-inside: avoid; }
  .container, .container-fluid { max-width: 100% !important; }
  .chart-box { height: 220px; }
}

/* Öğrenci dokunuşları */
.cheer-card { background: linear-gradient(120deg, #fdf2f8 0%, #ede9fe 55%, #e0f2fe 100%); border: 0; }
.cheer-card h3 { color: #4c1d95; }
.quote-box { background: rgba(255,255,255,.65); border-radius: 14px; padding: 14px 16px; color: #3b0764; }
.chip { display: inline-flex; align-items: center; gap: 4px; background: #fff; border-radius: 999px; padding: 4px 12px; font-size: .875rem; box-shadow: 0 1px 3px rgba(76,29,149,.12); }
.chip-soft { background: rgba(255,255,255,.6); }
.special-day { background: #fff7ed; border-left: 4px solid #fb923c; border-radius: 8px; padding: 6px 10px; display: inline-block; }
.wave { display: inline-block; animation: wave 2.4s ease-in-out infinite; transform-origin: 70% 70%; }
@keyframes wave { 0%, 60%, 100% { transform: rotate(0); } 10%, 30% { transform: rotate(14deg); } 20% { transform: rotate(-8deg); } 40% { transform: rotate(-4deg); } 50% { transform: rotate(10deg); } }
.badge-tile { border-radius: 12px; padding: 12px; text-align: center; height: 100%; border: 1px solid #eee; }
.badge-tile.earned { background: linear-gradient(135deg, #fef3c7, #fce7f3); border-color: #fbcfe8; }
.badge-tile.locked { opacity: .55; filter: grayscale(.6); }
.login-quote { background: #f5f3ff; border-radius: 12px; padding: 12px 14px; font-size: .92rem; color: #4c1d95; text-align: center; }
.sparkles { position: fixed; inset: 0; pointer-events: none; overflow: hidden; }
.sparkles span { position: absolute; bottom: -40px; font-size: 1.4rem; opacity: .7; animation: floatup 14s linear infinite; }
.sparkles span:nth-child(1) { left: 8%; animation-delay: 0s; }
.sparkles span:nth-child(2) { left: 22%; animation-delay: 4s; font-size: 1.1rem; }
.sparkles span:nth-child(3) { left: 45%; animation-delay: 8s; }
.sparkles span:nth-child(4) { left: 65%; animation-delay: 2s; font-size: 1.2rem; }
.sparkles span:nth-child(5) { left: 80%; animation-delay: 6s; }
.sparkles span:nth-child(6) { left: 92%; animation-delay: 10s; font-size: 1.1rem; }
@keyframes floatup { from { transform: translateY(0) rotate(0); } to { transform: translateY(-110vh) rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .sparkles { display: none; } .wave { animation: none; } }

.bulk-table .num { width: 70px; }
.bulk-table td { padding: 4px 3px; }

/* Görevi kimin eklediği */
.task.by-guide { border-right: 4px solid #0d9488; background-image: linear-gradient(90deg, transparent 70%, rgba(13,148,136,.07)); }
.task.by-student { border-right: 4px solid #db2777; background-image: linear-gradient(90deg, transparent 70%, rgba(219,39,119,.06)); }
.by-badge-guide { background: #ccfbf1; color: #115e59; border: 1px solid #5eead4; }
.by-badge-student { background: #fce7f3; color: #9d174d; border: 1px solid #f9a8d4; }
.by-badge-coach { background: #e0e7ff; color: #3730a3; border: 1px solid #a5b4fc; }
.legend { font-size: .8rem; color: #64748b; }
.legend .sw { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: -1px; margin-right: 3px; }
.min-w-0 { min-width: 0; }
.note-private { background: #f8fafc; }
.note-new { box-shadow: 0 0 0 2px #fde68a; }
.note-body { white-space: pre-line; overflow-wrap: anywhere; }
