:root{
  --cha-red:#ed1c24;
  --cha-red-dark:#b90f18;
  --cha-charcoal:#4f4c4d;
  --cha-dark:#1f1f22;
  --cha-soft:#f7f4f2;
  --cha-light:#fffafa;
  --muted:#6b7280;
  --line:#e5e7eb;
  --white:#ffffff;
  --success:#166534;
  --warning:#92400e;
  --thumb-size:20mm;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f6f6f7;color:#1f2937;line-height:1.5}
a{color:var(--cha-red);text-decoration:none}
a:hover{text-decoration:underline}
.topbar{background:rgba(31,31,34,.98);color:white;padding:12px 28px;display:flex;justify-content:space-between;align-items:center;gap:20px;position:sticky;top:0;z-index:5;box-shadow:0 8px 24px rgba(0,0,0,.16);border-bottom:4px solid var(--cha-red)}
.brand{display:flex;align-items:center;gap:14px;min-width:260px}
.brand span{display:block;font-size:12px;color:#e5e7eb;margin-top:2px}
.brand strong{letter-spacing:0;font-size:16px}
.brand-logo{width:98px;max-height:58px;object-fit:contain;background:white;border-radius:6px;padding:7px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
nav{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
nav a{color:white;font-weight:700;font-size:13px;padding:8px 10px;border-radius:6px;transition:.2s;text-decoration:none}
nav a:hover{background:rgba(255,255,255,.12);text-decoration:none}
.logout-link{background:var(--cha-red)}
.logout-link:hover{background:var(--cha-red-dark)}
.container{max-width:1180px;margin:26px auto;padding:0 18px}
.footer{text-align:center;padding:30px;color:var(--muted)}
.card{background:white;border:1px solid var(--line);border-radius:8px;padding:22px;box-shadow:0 10px 24px rgba(31,31,34,.05);margin-bottom:18px}
.card.with-thumb{padding:14px;overflow:hidden;display:grid;grid-template-columns:var(--thumb-size) 1fr;gap:12px;align-items:start;min-height:0}
.card-thumb{width:var(--thumb-size);height:var(--thumb-size);object-fit:cover;background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;box-shadow:0 4px 10px rgba(31,31,34,.05)}
.card-body{padding:0;display:flex;flex-direction:column;flex:1;min-width:0}
.card-body .actions{margin-top:auto}
.hero.has-thumb{display:flex;align-items:center;justify-content:space-between;gap:20px}
.hero.has-thumb>div:first-child{flex:1;min-width:0}
.hero-thumb{width:var(--thumb-size);height:var(--thumb-size);object-fit:cover;border-radius:8px;background:white;border:1px solid rgba(255,255,255,.45);box-shadow:0 8px 18px rgba(31,31,34,.12);flex:0 0 auto}
.hero{background:linear-gradient(135deg,var(--cha-red),var(--cha-red-dark) 46%,var(--cha-charcoal));color:white;border-radius:8px;padding:32px;margin-bottom:22px;box-shadow:0 16px 34px rgba(237,28,36,.18)}
.hero p{max-width:780px;color:#ffe5e7;margin-bottom:0}
.hero h1{margin:4px 0 10px;font-size:34px;line-height:1.15}
.eyebrow{display:inline-block;text-transform:uppercase;font-size:12px;font-weight:900;letter-spacing:0;color:inherit;opacity:.85}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.thumbnail-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;align-items:stretch}
.thumbnail-grid .card.with-thumb{min-height:132px}
.thumbnail-grid .course-title{font-size:16px;line-height:1.25;margin:0 0 6px}
.thumbnail-grid .card-body p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:13px;margin:8px 0}
.thumbnail-grid .card-body small{font-size:11px}
.thumbnail-grid .badge{font-size:11px;padding:4px 7px}
.two-col{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.stat{background:white;border-radius:8px;padding:20px;border-left:6px solid var(--cha-red);box-shadow:0 8px 20px rgba(0,0,0,.04)}
.stat span{color:var(--cha-charcoal);font-weight:800;font-size:13px;text-transform:uppercase}
.stat strong{font-size:30px;display:block;color:var(--cha-dark);margin-top:6px;line-height:1.2}
.stat .stat-text{font-size:24px;word-break:break-word}
.btn{display:inline-flex;align-items:center;justify-content:center;background:var(--cha-red);color:white!important;border:0;border-radius:6px;padding:10px 15px;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(237,28,36,.16);text-decoration:none;min-height:40px}
.btn:hover{background:var(--cha-red-dark);text-decoration:none}
.btn.secondary{background:var(--cha-charcoal);box-shadow:none}
.btn.light{background:#f3f4f6;color:#111!important;box-shadow:none}
.btn.danger{background:#991b1b;box-shadow:none}
.btn.danger:hover{background:#7f1d1d}
.btn.small{padding:7px 10px;font-size:13px;min-height:32px}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.portal-actions{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.action-card{display:flex;gap:10px;align-items:center;background:white;border:1px solid var(--line);border-radius:8px;padding:10px;color:var(--cha-dark);box-shadow:0 8px 20px rgba(31,31,34,.04);text-decoration:none;min-height:calc(var(--thumb-size) + 20px)}
.action-card:hover{border-color:#fecdd3;box-shadow:0 12px 26px rgba(31,31,34,.08);text-decoration:none}
.action-card img{width:var(--thumb-size);height:var(--thumb-size);border-radius:8px;object-fit:cover;background:#fff1f2;flex:0 0 auto}
.action-card strong{display:block;color:var(--cha-dark);line-height:1.2}
.action-card span{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.thumb-row{display:flex;gap:12px;align-items:center}
.thumb-row img{width:var(--thumb-size);height:var(--thumb-size);border-radius:8px;object-fit:cover;border:1px solid #fecdd3;background:#fff1f2;flex:0 0 auto}
.section-title-thumb{display:flex;align-items:center;gap:10px;margin-bottom:12px;min-height:var(--thumb-size)}
.section-title-thumb h2,.section-title-thumb h3{margin:0;line-height:1.2}
.section-title-thumb img{width:var(--thumb-size);height:var(--thumb-size);object-fit:cover;border-radius:8px;border:1px solid #fecdd3;background:#fff1f2;flex:0 0 auto}
.inline-form{display:inline-flex;margin:0}
.delete-panel{position:relative}
.delete-panel summary{list-style:none}
.delete-panel summary::-webkit-details-marker{display:none}
.delete-panel[open]{width:100%}
.delete-panel form{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:12px;margin-top:10px;min-width:260px}
.delete-warning{background:#fee2e2;color:#7f1d1d;border:1px solid #fecaca;border-radius:6px;padding:10px;margin-bottom:10px;font-size:13px}
.delete-panel textarea{margin-bottom:10px}
.hero-delete{max-width:360px}
.hero-delete form{background:white}
input,select,textarea{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:6px;margin:7px 0 14px;background:white;font:inherit}
select[multiple]{min-height:120px}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(237,28,36,.15);border-color:var(--cha-red)}
label{font-weight:800;font-size:14px;color:#374151}
.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.alert{padding:12px 14px;border-radius:6px;margin-bottom:14px;font-weight:700}
.alert.ok{background:#e9f8ee;color:var(--success)}
.alert.error{background:#fee2e2;color:#991b1b}
.badge{display:inline-flex;align-items:center;background:#fff1f2;border:1px solid #fecdd3;color:var(--cha-red-dark);padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;margin:2px 4px 2px 0}
.light-badge{background:#f3f4f6!important;color:#374151!important;border-color:#e5e7eb!important}
.muted{color:var(--muted)}
table{width:100%;border-collapse:collapse;background:white;border-radius:8px;overflow:hidden}
th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);vertical-align:top}
th{background:#fafafa;color:#374151;font-size:13px;text-transform:uppercase}
tr:last-child td{border-bottom:0}
.course-title{font-size:22px;margin:0 0 6px}
.lesson{border-left:5px solid var(--cha-red);padding-left:14px;margin:18px 0}
.compact{margin:12px 0}
.file-item,.result-row{padding:12px;border:1px solid var(--line);border-radius:8px;margin:8px 0;display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff}
.file-summary{display:flex;gap:12px;align-items:center;min-width:0}
.file-thumb{width:var(--thumb-size);height:var(--thumb-size);border-radius:8px;object-fit:cover;border:1px solid #fecdd3;background:#fff1f2;flex:0 0 auto}
.file-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.login-wrap{max-width:500px;margin:42px auto}
.login-card{background:white;padding:34px;border-radius:8px;box-shadow:0 18px 46px rgba(31,31,34,.10);border-top:6px solid var(--cha-red)}
.login-logo-wrap{text-align:center;margin-bottom:12px}
.login-logo-wrap img{width:230px;max-width:80%;height:auto}
.login-card h1{text-align:center;color:var(--cha-dark);margin-bottom:8px}
.login-card .muted{text-align:center}
.narrow-card{max-width:620px;margin-left:auto;margin-right:auto}
.breadcrumbs{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-weight:700}
.breadcrumbs a{color:var(--cha-red-dark)}
.file-hero{display:flex;justify-content:space-between;align-items:center;gap:18px}
.file-toolbar{padding:16px 18px}
.folder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;align-items:stretch}
.folder-card{display:flex;flex-direction:column;gap:10px;background:white;border:1px solid var(--line);border-radius:8px;padding:12px;box-shadow:0 8px 20px rgba(0,0,0,.04);height:100%;min-height:150px;transition:.18s ease}
.folder-card:hover{border-color:#fecdd3;box-shadow:0 14px 28px rgba(31,31,34,.08);transform:translateY(-2px)}
.folder-card-main{display:flex;align-items:center;justify-content:space-between;gap:10px}
.folder-card-body{flex:1}
.folder-card h3{margin:0 0 6px;color:var(--cha-dark);font-size:16px;line-height:1.25}
.folder-card p{margin:0 0 8px;color:#4b5563;font-size:13px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.folder-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto}
.folder-thumb{width:var(--thumb-size);height:var(--thumb-size);border-radius:8px;object-fit:cover;border:1px solid #fecdd3;background:#fff1f2;box-shadow:0 4px 10px rgba(31,31,34,.05);flex:0 0 auto}
.folder-icon{min-width:44px;height:44px;border-radius:8px;background:#fff1f2;border:1px solid #fecdd3;color:var(--cha-red-dark);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900}
.upload-card,.create-folder-card{border-left:6px solid var(--cha-red)}
.date-heading{border-bottom:1px solid var(--line);padding-bottom:8px;margin-top:24px}
.calendar-event{display:flex;gap:16px;border:1px solid var(--line);border-radius:8px;padding:16px;margin:12px 0;background:#fff;box-shadow:0 8px 20px rgba(0,0,0,.035)}
.calendar-datebox{min-width:66px;height:66px;border-radius:8px;background:linear-gradient(135deg,var(--cha-red),var(--cha-red-dark));color:white;text-align:center;display:flex;flex-direction:column;justify-content:center;box-shadow:0 8px 18px rgba(237,28,36,.18)}
.calendar-datebox strong{font-size:26px;line-height:1}
.calendar-datebox span{font-size:13px;text-transform:uppercase;font-weight:800}
.calendar-event h3{margin:0 0 8px}
.event-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:14px}
.student-hero{display:flex;justify-content:space-between;align-items:center;gap:20px}
.hero-id-card{background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:16px 18px;min-width:220px}
.hero-id-card span{display:block;font-size:12px;text-transform:uppercase;font-weight:900;color:#ffe5e7}
.hero-id-card strong{display:block;font-size:26px;line-height:1.2;word-break:break-word}
.student-profile-band{display:flex;justify-content:space-between;gap:18px;align-items:center;background:#1f1f22;color:white;border-radius:8px;padding:22px;margin-bottom:18px;border-left:6px solid var(--cha-red)}
.student-profile-band h2{margin:3px 0}
.student-profile-band p{margin:0;color:#e5e7eb}
.profile-chips{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.profile-chips span{background:white;color:var(--cha-dark);border-radius:999px;padding:7px 11px;font-weight:900}
.info-list{display:grid;grid-template-columns:120px 1fr;gap:10px;margin:0}
.info-list dt{font-weight:900;color:var(--cha-charcoal)}
.info-list dd{margin:0}
.sor-sheet{border-top:6px solid var(--cha-red)}
.sor-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.sor-brand{display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:center}
.sor-brand img{width:150px;max-height:92px;object-fit:contain;border:1px solid var(--line);border-radius:8px;background:white;padding:8px}
.sor-brand h2{margin:2px 0 4px;color:var(--cha-dark)}
.sor-brand p{grid-column:1 / -1;margin:4px 0 0}
.record-filter{max-width:520px}
@media(max-width:760px){
  .topbar{align-items:flex-start;flex-direction:column;padding:12px 18px}
  .brand{min-width:0}.brand-logo{width:86px}.brand strong{font-size:15px}
  nav{justify-content:flex-start}
  nav a{font-size:13px;padding:8px}
  .container{margin:18px auto}
  .hero h1{font-size:28px}
  .row,.two-col{grid-template-columns:1fr}
  .file-item,.result-row,.calendar-event,.student-hero,.student-profile-band,.sor-header,.file-hero,.hero.has-thumb{align-items:flex-start;flex-direction:column}
  .file-summary{align-items:flex-start}
  .sor-brand{grid-template-columns:1fr}
  .sor-brand img{width:180px}
  .thumbnail-grid{grid-template-columns:1fr}
  .card.with-thumb{grid-template-columns:var(--thumb-size) 1fr}
  .card-thumb{width:var(--thumb-size);height:var(--thumb-size)}
  .hero-thumb{width:var(--thumb-size);height:var(--thumb-size)}
  .action-card{align-items:center}
  .folder-grid{grid-template-columns:1fr}
  .calendar-datebox{width:66px}
  table{display:block;overflow-x:auto;white-space:nowrap}
}
@media print{
  .topbar,.footer,.print-hide,.actions{display:none!important}
  body{background:white}
  .container{max-width:100%;margin:0;padding:0}
  .card,.hero,.student-profile-band{box-shadow:none;border:1px solid #ddd;color:#111;background:white}
  .sor-brand{grid-template-columns:170px 1fr}
  .sor-brand img{width:170px;border:0;padding:0}
}
