:root{
  --primary:#0058FF;
  --primary-dark:#0047CC;
  --ink:#131523;
  --white:#FFFFFF;
  --accent-200:#E5EFFE;
  --accent-100:#F2F7FF;

  --green:#18A377;      --green-100:#E8FBF5;
  --orange:#C77700;     --orange-bright:#F99600; --orange-100:#FFF4E5;
  --iris:#5260C4;       --iris-100:#E6E8FF;
  --sky:#4594CC;        --sky-100:#E6F4FF;
  --red:#BD0F23;        --red-100:#FEE7E9;

  --n700:#5A607F; --n500:#7E84A3; --n300:#D7DBEC; --n200:#E6E9F4;
  --gray600:#999999; --gray300:#CCCCCC; --gray100:#F3F3F4; --gray50:#FAFAFA;

  /* Barvy kategorií podle App\Entity\CategoryColor (colorKey) */
  --cat-primary:var(--primary);  --cat-primary-bg:var(--accent-200); --cat-primary-ink:var(--primary-dark);
  --cat-green:var(--green);      --cat-green-bg:var(--green-100);    --cat-green-ink:var(--green);
  --cat-iris:var(--iris);        --cat-iris-bg:var(--iris-100);      --cat-iris-ink:var(--iris);
  --cat-orange:var(--orange);    --cat-orange-bg:var(--orange-100);  --cat-orange-ink:var(--orange);
  --cat-sky:var(--sky);          --cat-sky-bg:var(--sky-100);        --cat-sky-ink:var(--sky);

  --radius-s:8px; --radius-m:12px; --radius-l:16px;
  --shadow-card:0 1px 2px rgba(19,21,35,.06);
  --shadow-card-hover:0 14px 28px rgba(19,21,35,.10);
  --header-h:64px;
  --nav-h:57px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--ink);
  background:var(--gray50);
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
h1,h2,h3,h4,p{margin:0;}
button,input{font-family:inherit;}
svg{display:block;}
img{max-width:100%;display:block;}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px;}

/* Typography scale — z DESIGN.md */
.t-h1{font-size:28px;line-height:42px;font-weight:800;}
.t-h2{font-size:24px;line-height:36px;font-weight:700;}
.t-h3{font-size:18px;line-height:27px;font-weight:700;}
.t-h4,.t-h5{font-size:14px;line-height:18px;font-weight:600;}
.t-body1{font-size:14px;line-height:21px;font-weight:400;}
.t-body2{font-size:12px;line-height:18px;font-weight:400;}
.t-body3{font-size:14px;line-height:21px;font-weight:500;}
.t-caption1{font-size:14px;line-height:21px;font-weight:600;}
.t-caption2{font-size:12px;line-height:18px;font-weight:700;}
.t-caption3{font-size:11px;line-height:13px;font-weight:500;}
.t-small{font-size:10px;line-height:15px;font-weight:400;}
.t-btn1{font-size:14px;line-height:21px;font-weight:600;}
.t-btn2{font-size:12px;line-height:16px;font-weight:600;}

.wrap{max-width:1280px;margin:0 auto;padding-left:24px;padding-right:24px;}

/* Header */
.site-header{position:sticky;top:0;z-index:50;background:var(--ink);height:var(--header-h);}
.site-header .wrap{height:100%;display:flex;align-items:center;gap:24px;}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.brand-mark{width:22px;height:25px;color:var(--primary);}
.brand-word{display:flex;flex-direction:column;line-height:1;}
.brand-word .name{color:#fff;letter-spacing:.2px;}
.brand-word .tag{color:var(--n500);letter-spacing:1.6px;text-transform:uppercase;margin-top:3px;}

.header-search{flex:1;max-width:420px;position:relative;}
.header-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--n500);pointer-events:none;}
.header-search input{
  width:100%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
  border-radius:10px;padding:9px 14px 9px 36px;color:#fff;
}
.header-search input::placeholder{color:var(--n500);}
.header-search input:focus{outline:none;border-color:var(--primary);background:rgba(255,255,255,.12);}

.header-right{display:flex;align-items:center;gap:16px;margin-left:auto;flex-shrink:0;}
.header-link{color:var(--n300);white-space:nowrap;background:none;border:0;cursor:pointer;}
.header-link:hover{color:#fff;}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;}

/* Hero */
.hero{background:linear-gradient(180deg,var(--accent-100) 0%,var(--gray50) 100%);border-bottom:1px solid var(--n200);}
.hero .wrap{padding-top:48px;padding-bottom:36px;display:flex;flex-direction:column;gap:16px;}
.eyebrow{display:inline-flex;align-items:center;gap:6px;color:var(--primary-dark);text-transform:uppercase;letter-spacing:1px;}
.hero h1{max-width:620px;}
.hero .lead{max-width:560px;color:var(--n700);}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px;}
.hero-stats{display:flex;gap:36px;flex-wrap:wrap;margin-top:22px;}
.stat .num{color:var(--ink);}
.stat .label{color:var(--n500);margin-top:3px;}
.hero-progress{margin-top:18px;max-width:420px;}
.hero-progress .row{display:flex;justify-content:space-between;margin-bottom:8px;color:var(--n700);}
.progress-track{height:8px;border-radius:99px;background:var(--n200);overflow:hidden;}
.progress-fill{height:100%;background:var(--primary);border-radius:99px;transition:width .25s ease;}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:10px;padding:12px 20px;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s,transform .08s;cursor:pointer;}
.btn:active{transform:translateY(1px);}
.btn svg{width:16px;height:16px;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-primary:hover{background:var(--primary-dark);}
.btn-primary:disabled{background:var(--n300);cursor:not-allowed;}
.btn-outline{background:#fff;color:var(--ink);border-color:var(--n300);}
.btn-outline:hover{border-color:var(--n500);background:var(--gray100);}
.btn-block{width:100%;justify-content:center;}

/* Category nav */
.category-nav{position:sticky;top:var(--header-h);z-index:40;background:rgba(250,250,250,.92);backdrop-filter:blur(6px);border-bottom:1px solid var(--n200);}
.category-nav .wrap{display:flex;gap:8px;padding-top:10px;padding-bottom:10px;overflow-x:auto;scrollbar-width:none;}
.category-nav .wrap::-webkit-scrollbar{display:none;}
.pill{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:99px;border:1px solid var(--n200);background:#fff;color:var(--n700);white-space:nowrap;flex-shrink:0;cursor:pointer;}
.pill svg{width:14px;height:14px;}
.pill .count{opacity:.65;}
.pill.active{color:#fff;}
.pill[data-cat="all"].active{background:var(--ink);border-color:var(--ink);}
.pill.active[data-color="primary"]{background:var(--cat-primary);border-color:var(--cat-primary);}
.pill.active[data-color="green"]{background:var(--cat-green);border-color:var(--cat-green);}
.pill.active[data-color="iris"]{background:var(--cat-iris);border-color:var(--cat-iris);}
.pill.active[data-color="orange"]{background:var(--cat-orange);border-color:var(--cat-orange);}
.pill.active[data-color="sky"]{background:var(--cat-sky);border-color:var(--cat-sky);}

/* Layout */
.layout{max-width:1280px;margin:0 auto;padding:32px 24px 8px;display:grid;grid-template-columns:240px 1fr;gap:40px;align-items:start;}
.toc{position:sticky;top:calc(var(--header-h) + var(--nav-h) + 20px);display:flex;flex-direction:column;gap:2px;}
.toc-label{color:var(--n500);text-transform:uppercase;letter-spacing:1px;padding:0 12px 8px;}
.toc a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--n700);}
.toc a:hover{background:var(--gray100);}
.toc a.active{background:var(--accent-100);color:var(--primary-dark);}
.toc .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.toc .toc-name{flex:1;}
.toc .progress{color:var(--n500);flex-shrink:0;}
.toc a.active .progress{color:var(--primary-dark);}

/* Chapters */
.chapter{padding-bottom:52px;scroll-margin-top:150px;}
.chapter-head{display:flex;gap:16px;align-items:flex-start;margin-bottom:22px;padding-bottom:20px;border-bottom:1px solid var(--n200);}
.chapter-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.chapter-icon svg{width:22px;height:22px;}
.chapter-icon.brand-icon svg{width:18px;height:20px;}
.chapter-title{margin-top:3px;}
.chapter-desc{color:var(--n700);margin-top:6px;max-width:620px;}
.chapter-progress{margin-left:auto;text-align:right;flex-shrink:0;padding-top:4px;}
.chapter-progress .frac{color:var(--ink);}
.chapter-progress .track{width:110px;margin-top:8px;}

.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}

.video-card{background:#fff;border:1px solid var(--n200);border-radius:var(--radius-m);overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-card);transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease;}
.video-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-3px);border-color:var(--n300);}

.video-thumb{position:relative;aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;border:0;padding:0;width:100%;cursor:pointer;}
.video-thumb[data-color="primary"]{background:linear-gradient(135deg,#4d82ff,#0058ff);}
.video-thumb[data-color="green"]{background:linear-gradient(135deg,#2be3a8,#18a377);}
.video-thumb[data-color="iris"]{background:linear-gradient(135deg,#7c8ce8,#5260c4);}
.video-thumb[data-color="orange"]{background:linear-gradient(135deg,#f2a53f,#c77700);}
.video-thumb[data-color="sky"]{background:linear-gradient(135deg,#6fb3e0,#4594cc);}

.video-thumb .lesson-no{position:absolute;top:10px;left:10px;background:rgba(19,21,35,.5);color:#fff;padding:3px 8px;border-radius:6px;}
.video-thumb .duration{position:absolute;bottom:10px;right:10px;background:rgba(19,21,35,.6);color:#fff;padding:3px 7px;border-radius:6px;display:flex;align-items:center;gap:4px;}
.video-thumb .duration svg{width:11px;height:11px;color:#fff;}
.video-thumb .play{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;color:var(--ink);box-shadow:0 4px 14px rgba(0,0,0,.2);}
.video-thumb .play svg{width:15px;height:15px;margin-left:2px;}

.video-body{padding:16px;display:flex;flex-direction:column;gap:8px;flex:1;}
.video-title{background:none;border:0;padding:0;text-align:left;cursor:pointer;color:inherit;}
.video-title:hover{color:var(--primary);}
.video-desc{color:var(--n700);flex:1;}
.video-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;}
.tag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:6px;letter-spacing:.2px;}
.tag[data-color="primary"]{background:var(--cat-primary-bg);color:var(--cat-primary-ink);}
.tag[data-color="green"]{background:var(--cat-green-bg);color:var(--cat-green-ink);}
.tag[data-color="iris"]{background:var(--cat-iris-bg);color:var(--cat-iris-ink);}
.tag[data-color="orange"]{background:var(--cat-orange-bg);color:var(--cat-orange-ink);}
.tag[data-color="sky"]{background:var(--cat-sky-bg);color:var(--cat-sky-ink);}

.status{display:flex;align-items:center;gap:7px;}
.checkbox{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--n300);background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;cursor:pointer;}
.checkbox svg{width:11px;height:11px;color:#fff;opacity:0;transition:opacity .1s;}
.video-card.done .checkbox{background:var(--primary);border-color:var(--primary);}
.video-card.done .checkbox svg{opacity:1;}
.status-label.state-done{color:var(--green);}
.status-label.state-progress{color:var(--orange);}
.status-label.state-new{color:var(--n500);}
.video-card.done .status-label{color:var(--green);}

.no-results{display:none;flex-direction:column;align-items:center;gap:8px;padding:64px 24px;text-align:center;color:var(--n500);}
.no-results svg{width:32px;height:32px;color:var(--n300);}

/* Footer */
.site-footer{margin-top:24px;background:var(--ink);color:var(--n300);}
.site-footer .wrap{padding:28px 24px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;}
.footer-links{display:flex;gap:20px;flex-wrap:wrap;}
.footer-links a:hover{color:#fff;}

/* Video modal */
.video-modal-overlay{position:fixed;inset:0;background:rgba(19,21,35,.72);z-index:100;display:none;align-items:center;justify-content:center;padding:24px;}
.video-modal-overlay.open{display:flex;}
.video-modal{background:var(--ink);border-radius:var(--radius-l);width:100%;max-width:960px;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.video-modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;gap:12px;}
.video-modal-head .title{color:#fff;}
.video-modal-close{width:32px;height:32px;border-radius:50%;border:0;background:rgba(255,255,255,.1);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
.video-modal-close:hover{background:rgba(255,255,255,.2);}
.video-modal-close svg{width:16px;height:16px;}
.video-modal-player{aspect-ratio:16/9;background:#000;}
.video-modal-player video{width:100%;height:100%;}
.video-modal-body{padding:16px 18px 20px;display:flex;flex-direction:column;gap:10px;}
.video-modal-desc{color:var(--n300);}

/* Formulářové prvky (login) */
.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,var(--accent-100) 0%,var(--gray50) 100%);padding:24px;}
.auth-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--n200);border-radius:var(--radius-l);box-shadow:var(--shadow-card-hover);padding:32px;display:flex;flex-direction:column;gap:20px;}
.auth-card .brand{justify-content:center;}
.auth-title{text-align:center;}
.auth-lead{text-align:center;color:var(--n700);}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{color:var(--n700);}
.field input{padding:11px 14px;border:1px solid var(--n300);border-radius:10px;background:#fff;color:var(--ink);}
.field input:hover{border-color:var(--n500);}
.field input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--accent-200);}
.field-error input{border-color:var(--red);}
.field-error-text{color:var(--red);}
.alert{display:flex;align-items:flex-start;gap:8px;padding:12px 14px;border-radius:10px;}
.alert-error{background:var(--red-100);color:var(--red);}
.alert svg{width:16px;height:16px;flex-shrink:0;margin-top:2px;}

@media (max-width:1024px){
  .layout{grid-template-columns:1fr;}
  .toc{display:none;}
  .video-grid{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:640px){
  .site-header .wrap{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:10px;gap:10px;}
  .site-header{height:auto;position:sticky;}
  .header-search{order:3;max-width:none;flex-basis:100%;}
  .category-nav{top:96px;}
  .hero .wrap{padding-top:32px;}
  .hero-stats{gap:22px;}
  .chapter-head{flex-wrap:wrap;}
  .chapter-progress{margin-left:0;text-align:left;}
  .video-grid{grid-template-columns:1fr;}
}
