:root{
  --bg:#000000;
  --surface:#1C1C1E;
  --surface-2:#242426;
  --surface-3:#2C2C2E;
  --text:#FFFFFF;
  --text-2:#98989D;
  --text-3:#636366;
  --hairline:rgba(255,255,255,0.08);
  --accent:#3E7DFC;
  --accent-tint:rgba(62,125,252,0.16);
  --lecture:#3E7DFC;
  --practice:#32D74B;
  --lab:#FF9F0A;
  --remote:#BF5AF2;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{background:var(--bg);height:100%;}
body{
  margin:0;
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
svg{display:block;}

.app{
  height:100vh;
  height:100dvh;
  display:flex;
  flex-direction:column;
  position:relative;
  overflow:hidden;
}

.cover{
  position:relative;
  height:264px;
  flex-shrink:0;
  overflow:hidden;
  border-radius:0 0 28px 28px;
}
.cover-photo{
  position:absolute;inset:0;
  background-image:url('assets/cover.jpg');
  background-size:cover;
  background-position:center 55%;
}
.cover-veil{
  position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,0.02) 40%, rgba(0,0,0,0.55) 100%);
}

.cover-chips{
  position:absolute;left:16px;right:16px;bottom:16px;
  display:flex;align-items:center;justify-content:flex-end;gap:10px;z-index:2;
}
.chip-btn{
  width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,0.4);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;
  color:#fff;background:rgba(255,255,255,0.14);
  backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.45), inset 0 -6px 10px rgba(0,0,0,0.08), 0 6px 16px rgba(0,0,0,0.25);
  transition:transform 0.2s cubic-bezier(0.4,0,0.2,1);
}
.chip-btn:active{transform:scale(0.9);}
.chip-btn.avatar{
  margin-right:auto;font-size:16px;font-weight:700;
  background-size:cover;background-position:center;
}
.chip-btn svg{width:18px;height:18px;}
.chip-btn.spin svg{animation:spin 0.6s cubic-bezier(0.4,0,0.2,1);}
@keyframes spin{to{transform:rotate(360deg);}}

.cover-subtitle{
  padding:12px 18px 0;
  font-size:13px;font-weight:600;color:var(--text-2);
  display:flex;align-items:center;gap:6px;flex-shrink:0;
}
.cover-subtitle .eyebrow{color:var(--text);font-weight:700;}
.cover-subtitle .dot{color:var(--text-3);}

.content{
  flex:1;
  min-height:0;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  padding:14px 18px calc(96px + env(safe-area-inset-bottom,0px));
}

.daystrip{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:18px;}
.day-pill{
  border:none;background:transparent;color:var(--text);padding:6px 2px 8px;border-radius:14px;
  display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;
}
.day-pill .wd{font-size:10.5px;font-weight:600;color:var(--text-2);text-transform:uppercase;}
.day-pill .num{
  width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:14.5px;font-weight:650;font-variant-numeric:tabular-nums;
}
.day-pill.selected .num{background:var(--accent);color:#fff;}
.day-pill.today:not(.selected) .num{color:var(--accent);}

.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px;}
.section-head h2{margin:0;font-size:19px;font-weight:750;letter-spacing:-0.02em;}
.section-head .total{font-size:13px;color:var(--text-2);font-weight:600;}

.lesson-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
.lesson-row{
  display:grid;grid-template-columns:52px 4px 1fr;gap:0;align-items:center;
  background:rgba(255,255,255,0.06);
  backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,0.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.06), 0 4px 14px rgba(0,0,0,0.18);
  border-radius:24px;padding:13px 16px 13px 0;
  animation:rowIn 0.3s cubic-bezier(0.4,0,0.2,1) backwards;
}
@keyframes rowIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
.lesson-row .time-col{padding-left:14px;padding-right:10px;display:flex;flex-direction:column;justify-content:center;font-variant-numeric:tabular-nums;}
.lesson-row .t1{font-size:14px;font-weight:700;letter-spacing:-0.01em;}
.lesson-row .t2{font-size:11px;color:var(--text-2);margin-top:1px;}
.lesson-row .bar{border-radius:999px;align-self:stretch;margin:2px 0;}
.lesson-row .bar.лек{background:var(--lecture);}
.lesson-row .bar.прз{background:var(--practice);}
.lesson-row .bar.лаб{background:var(--lab);}
.lesson-row .bar.default{background:var(--text-3);}
.lesson-row .main{padding-left:14px;min-width:0;}
.lesson-row .name{font-size:14.5px;font-weight:650;letter-spacing:-0.01em;line-height:1.25;}
.lesson-row .meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:var(--text-2);}
.tag{font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:999px;}
.tag.лек{background:rgba(62,125,252,0.16);color:var(--lecture);}
.tag.прз{background:rgba(50,215,75,0.16);color:var(--practice);}
.tag.лаб{background:rgba(255,159,10,0.16);color:var(--lab);}
.tag.default{background:var(--surface-3);color:var(--text-2);}
.tag.remote{background:rgba(191,90,242,0.16);color:var(--remote);display:inline-flex;align-items:center;gap:3px;}
.tag.remote svg{width:9px;height:9px;}

.empty-state, .error-state, .loading-state{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:36px 20px;color:var(--text-2);
  background:rgba(255,255,255,0.06);
  backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,0.10);
  border-radius:24px;margin-bottom:20px;
}
.empty-state svg, .error-state svg{width:34px;height:34px;color:var(--text-3);margin-bottom:10px;}
.empty-state p, .error-state p, .loading-state p{margin:0;font-size:13.5px;}
.error-state p{color:#FF6961;}

.tabbar{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(14px + env(safe-area-inset-bottom,0px));
  width:auto;max-width:calc(100% - 28px);
  display:flex;border-radius:28px;
  background:rgba(255,255,255,0.10);
  backdrop-filter:blur(26px) saturate(1.8);-webkit-backdrop-filter:blur(26px) saturate(1.8);
  border:1px solid rgba(255,255,255,0.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.3), 0 10px 26px -8px rgba(0,0,0,0.5);
  padding:5px;gap:2px;
  z-index:5;
}
.tab{
  border:none;background:transparent;display:flex;flex-direction:column;align-items:center;gap:2px;
  color:var(--text-2);font-size:9.5px;font-weight:650;letter-spacing:-0.005em;cursor:pointer;
  padding:6px 18px;min-height:40px;border-radius:22px;touch-action:manipulation;
  transition:background 0.2s cubic-bezier(0.4,0,0.2,1), color 0.2s;
}
.tab.active{background:rgba(62,125,252,0.28);color:#fff;}
.tab svg{width:19px;height:19px;}

.group{margin-bottom:22px;}
.group-title{
  margin:0 0 10px 4px;font-size:13px;font-weight:700;color:var(--text-2);
  text-transform:uppercase;letter-spacing:0.03em;
}
.icon-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 6px;}
.icon-tile{
  border:none;background:transparent;display:flex;flex-direction:column;align-items:center;gap:7px;
  cursor:pointer;padding:2px 2px 0;touch-action:manipulation;
  transition:transform 0.15s cubic-bezier(0.4,0,0.2,1);
}
.icon-tile:active{transform:scale(0.92);}
.icon-tile span:last-child{font-size:11px;font-weight:600;color:var(--text);text-align:center;line-height:1.2;}
.tile-icon{
  width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.tile-icon svg{width:22px;height:22px;}
.tile-icon.bg-blue{background:var(--lecture);}
.tile-icon.bg-pink{background:#FF6482;}
.tile-icon.bg-grey{background:var(--surface-3);}

.back-btn{
  display:flex;align-items:center;gap:4px;border:none;background:transparent;color:var(--accent);
  font-size:15px;font-weight:600;padding:4px 4px 4px 0;margin-bottom:8px;cursor:pointer;touch-action:manipulation;
}
.back-btn svg{width:18px;height:18px;}
.detail-title{margin:0 0 14px;font-size:22px;font-weight:750;letter-spacing:-0.02em;}

.list-row, .switch-row, .about-card{
  background:rgba(255,255,255,0.06);
  backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,0.10);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.06);
  border-radius:20px;
}

.list-rows{display:flex;flex-direction:column;gap:8px;}
.list-row{display:flex;align-items:center;gap:12px;padding:11px 14px;}
.list-row .row-badge{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;color:#fff;background:rgba(255,255,255,0.12);
}
.list-row .row-main{flex:1;min-width:0;}
.list-row .row-main .name{font-size:14px;font-weight:650;letter-spacing:-0.005em;}
.list-row .row-main .sub{font-size:12px;color:var(--text-2);margin-top:2px;}
.list-row .row-side{text-align:right;flex-shrink:0;font-size:12px;color:var(--text-2);font-weight:600;}
.list-row .row-side.soon{color:var(--accent);}

.settings-rows{display:flex;flex-direction:column;gap:10px;}
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;}
.switch-row .sw-main .t{font-size:14.5px;font-weight:650;}
.switch-row .sw-main .s{font-size:12px;color:var(--text-2);margin-top:2px;}
.switch{
  position:relative;width:48px;height:29px;border-radius:16px;border:none;background:rgba(255,255,255,0.14);
  flex-shrink:0;cursor:pointer;transition:background 0.2s;touch-action:manipulation;
}
.switch::after{
  content:"";position:absolute;top:2.5px;left:2.5px;width:24px;height:24px;border-radius:50%;background:#fff;
  box-shadow:0 2px 6px rgba(0,0,0,0.3);transition:transform 0.2s cubic-bezier(0.4,0,0.2,1);
}
.switch.on{background:#32D74B;}
.switch.on::after{transform:translateX(19px);}
.switch:disabled{opacity:0.5;}

.about-card{padding:16px;font-size:13.5px;line-height:1.6;color:var(--text-2);}
.about-card b{color:var(--text);}

.toast{
  position:absolute;left:50%;bottom:100px;transform:translate(-50%,10px);
  background:rgba(44,44,46,0.95);color:#fff;font-size:13px;font-weight:650;padding:9px 16px;border-radius:14px;
  opacity:0;pointer-events:none;transition:opacity 0.25s cubic-bezier(0.4,0,0.2,1), transform 0.25s cubic-bezier(0.4,0,0.2,1);
  white-space:nowrap;z-index:20;
}
.toast.show{opacity:1;transform:translate(-50%,0);}

@media (prefers-reduced-motion:reduce){*{transition-duration:0.001ms !important;animation-duration:0.001ms !important;}}
