@font-face {
  font-family: "Open Sans";
  src: url("/public/fonts/OpenSans-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Open Sans";
  src: url("/public/fonts/OpenSans-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

:root{
  --bg:#f7f7f5;
  --paper:#ffffff;
  --ink:#1c1c1c;
  --muted:#6b6b6b;
  --line:#dcdcd6;
  --accent:#2f4f4f;
  --error:#8b2c2c;
  --code-bg:#f0f0ec;
}

html[data-theme="dark"]{
  --bg:#15161a;
  --paper:#1c1e23;
  --ink:#e6e6e2;
  --muted:#9a9a95;
  --line:#2b2d33;
  --accent:#8fb3ae;
  --error:#d97b7b;
  --code-bg:#232529;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}

body{
  background:var(--bg);
  color:var(--ink);
  font-family: "Open Sans", Arial, Helvetica, sans-serif;
  font-size:17px;
  line-height:1.65;
  transition: background .2s ease, color .2s ease;
  -webkit-text-size-adjust:100%;
}

.container{width:100%;max-width:100%;margin:0;padding:0 24px;}

.site-header{
  border-bottom:1px solid var(--line);
  padding:14px 0;
  background:var(--paper);
}
.site-header .container{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}
.brand{color:var(--ink);text-decoration:none;font-weight:bold;}
.nav{
  display:flex;
  gap:18px;
  align-items:center;
  font-size:15px;
  flex-wrap:wrap;
}
.nav a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;}
.nav a:hover{border-bottom-color:var(--accent);}
.nav .who{color:var(--muted);}

main.container{padding:32px 24px 80px;}
h1{font-weight:normal;font-size:26px;margin-top:0;}

.theme-toggle{
  background:transparent;
  color:var(--ink);
  border:1px solid var(--line);
  border-radius:3px;
  padding:4px 10px;
  font-family: "Open Sans", Arial, sans-serif;
  font-size:13px;
  cursor:pointer;
  line-height:1.3;
}
.theme-toggle:hover{color:var(--accent);border-color:var(--accent);}

/* Вход / регистрация */
.login-page{
  max-width:420px;
  margin:80px auto;
  padding:32px;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:3px;
}
.login-page h1{margin-top:0;}
.login-lead{color:var(--muted);margin-top:-8px;}
.login-form label{display:block;margin:14px 0;font-size:14px;color:var(--muted);}
.login-form input[type=text],
.login-form input[type=email],
.login-form input[type=password],
.login-form select{
  width:100%;
  padding:9px 10px;
  font-family: "Open Sans", Arial, sans-serif;
  font-size:16px;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:3px;
  margin-top:4px;
}
.login-form input:focus,
.login-form select:focus{outline:none;border-color:var(--accent);}
.login-form button{
  margin-top:12px;
  padding:10px 18px;
  font-family: "Open Sans", Arial, sans-serif;
  font-size:15px;
  color:#fff;
  background:var(--accent);
  border:1px solid var(--accent);
  border-radius:3px;
  cursor:pointer;
}
.login-form button:hover{background:#264242;}

.login-links{
  margin-top:18px;
  text-align:center;
  font-size:14px;
  color:var(--muted);
}
.login-links a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);}

.alert{padding:10px 14px;border-radius:3px;margin:14px 0;font-size:15px;}
.alert-error{background:#f4e2e2;color:var(--error);border:1px solid #e6c4c4;}
.alert-ok{background:#e2efe4;color:#2f5b3a;border:1px solid #c6ddca;}

html[data-theme="dark"] .alert-error{background:#3a2626;border-color:#5a3232;}
html[data-theme="dark"] .alert-ok{background:#243a29;border-color:#365c3d;}

/* Публичная часть */
.disciplines{list-style:none;padding:0;}
.disciplines > li{
  border:1px solid var(--line);
  background:var(--paper);
  padding:16px 20px;
  margin-bottom:12px;
  border-radius:3px;
}
.disciplines a{color:var(--ink);text-decoration:none;font-size:18px;border-bottom:1px solid var(--line);}
.disciplines a:hover{border-bottom-color:var(--accent);color:var(--accent);}
.disciplines .muted{font-size:14px;margin-left:10px;color:var(--muted);}
.disciplines p{margin:6px 0 0;font-size:14px;}

.discipline-section{
  border-top:1px solid var(--line);
  margin-top:28px;
  padding-top:20px;
}
.discipline-section h2{margin-top:0;font-weight:normal;font-size:22px;}
.topic{margin:20px 0 28px 0;padding-left:14px;border-left:2px solid var(--line);}
.topic h3{font-size:18px;margin:0 0 10px;font-weight:normal;}
.topic h4{
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:0.8px;
  color:var(--accent);
  margin:14px 0 6px;
  font-weight:normal;
}
.materials{list-style:none;padding:0;margin:0;}
.materials li{padding:4px 0;}
.materials a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;}
.materials a:hover{border-bottom-color:var(--accent);color:var(--accent);}
.muted{color:var(--muted);font-size:14px;}
.lead{color:var(--muted);}
.content{margin-top:24px;}
.content h2{font-weight:normal;font-size:22px;}
.content pre{
  background:var(--code-bg);
  border-left:3px solid var(--line);
  padding:12px 14px;
  overflow-x:auto;
  font-family:"Courier New", monospace;
  font-size:13.5px;
  line-height:1.5;
  border-radius:0 2px 2px 0;
}
.files ul{list-style:none;padding:0;}
.files li{padding:4px 0;}

/* Блок файлов на странице материала */
.files-section {
  margin-top: 28px;
}

.files-section h2 {
  font-weight: normal;
  font-size: 20px;
  margin: 0 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--line);
}

.files-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.files-list li {
  display: flex;
  gap: 10px;
  align-items: baseline;
  padding: 6px 0;
  border-bottom: 1px solid var(--line);
  font-size: 15px;
  flex-wrap: wrap;
}

.files-list li:last-child {
  border-bottom: none;
}

.files-list a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
}

.files-list a:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* ============================================================
   МОБИЛЬНАЯ АДАПТАЦИЯ
   ============================================================ */
@media (max-width: 768px){
  body{font-size:16px;line-height:1.6;}
  .container{padding:0 16px;}

  .site-header{padding:10px 0;}
  .site-header .container{
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
  }
  .brand{font-size:18px;}
  .nav{
    gap:12px;
    font-size:14px;
    width:100%;
  }
  .nav .who{width:100%;order:10;font-size:13px;}

  main.container{padding:20px 16px 60px;}
  h1{font-size:22px;}

  .login-page{
    margin:20px auto;
    padding:22px 18px;
    border-radius:0;
    border-left:none;
    border-right:none;
  }

  .disciplines > li{padding:14px 16px;}
  .disciplines a{font-size:17px;}

  .discipline-section h2{font-size:19px;}
  .topic h3{font-size:16px;}

  .content pre{
    font-size:12px;
    padding:10px 12px;
  }
}

@media (max-width: 480px){
  body{font-size:15px;}
  h1{font-size:20px;}
  .nav{font-size:13px;gap:10px;}
  .theme-toggle{font-size:12px;padding:3px 8px;}
  .login-form input[type=text],
  .login-form input[type=email],
  .login-form input[type=password],
  .login-form select{
    font-size:16px;
  }
}

/* Сворачиваемые блоки (публичная часть) */
.collapse-block{
  border:1px solid var(--line);
  border-radius:3px;
  background:var(--paper);
  margin:14px 0;
  overflow:hidden;
}

.collapse-summary{
  cursor:pointer;
  padding:10px 14px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  list-style:none;
  font-size:15px;
  font-weight:normal;
  color:var(--ink);
}

.collapse-summary::-webkit-details-marker{display:none;}

.collapse-summary::before{
  content:"+";
  font-family:"Courier New", monospace;
  color:var(--accent);
  font-size:16px;
  width:14px;
  flex:0 0 14px;
}

details[open] > .collapse-summary::before{
  content:"–";
}

.collapse-title{
  flex:1;
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:0.8px;
  color:var(--accent);
}

.collapse-count{
  font-family:"Courier New", monospace;
  font-size:12px;
  color:var(--muted);
  background:var(--code-bg);
  padding:1px 7px;
  border-radius:10px;
}

.collapse-summary:hover .collapse-title{
  text-decoration:underline;
  text-underline-offset:3px;
}

.collapse-block .materials,
.collapse-block .admin-materials{
  margin:0;
  padding:6px 14px 10px 42px;
  border-top:1px solid var(--line);
}

@media (max-width: 600px){
  .collapse-block .materials,
  .collapse-block .admin-materials{
    padding-left:14px;
  }
}

/* Универсальные элементы интерфейса */
input, select, textarea, button {
  font-family: "Open Sans", Arial, Helvetica, sans-serif;
}

/* Заголовки — тоже Open Sans */
h1, h2, h3, h4, h5, h6 {
  font-family: "Open Sans", Arial, Helvetica, sans-serif;
}

/* Моноширинные элементы — оставляем Courier */
code, pre, kbd, samp,
.content pre {
  font-family: "Courier New", monospace;
}