:root{--ease-spring:cubic-bezier(.16,1,.3,1);--ease-out:cubic-bezier(.25,.8,.25,1)}
html{font-size:clamp(16px,1rem + .12vw,18px);scroll-behavior:smooth}
body{overscroll-behavior-y:auto}
button:focus-visible,input:focus-visible{outline:3px solid rgba(10,132,255,.72);outline-offset:3px}
button{min-width:44px;min-height:44px}
.bar{position:relative;z-index:2}
.bar:after{content:"";position:absolute;z-index:-1;left:-28px;right:-28px;top:-40px;bottom:-7px;background:linear-gradient(#000 65%,transparent);pointer-events:none}
.hero{background:linear-gradient(150deg,rgba(34,34,37,.94),rgba(22,22,24,.9));backdrop-filter:none}
.hero-progress{position:absolute;left:26px;right:26px;bottom:18px;height:3px;background:rgba(255,255,255,.12);border-radius:3px;overflow:hidden}
.hero-progress i{display:block;height:100%;border-radius:inherit;background:var(--blue);transition:width .5s var(--ease-out)}
.now-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 5px rgba(48,209,88,.12);display:inline-block}
.schedule-legend{display:flex;gap:15px;align-items:center;margin:8px 3px 2px;color:var(--secondary);font-size:12px}
.schedule-legend span{display:flex;align-items:center;gap:6px}.schedule-legend i{width:7px;height:7px;border-radius:50%;display:block}.schedule-legend .free-key{background:var(--green)}.schedule-legend .assessment-key{background:var(--orange)}
.lesson button,.day,.circle,.course-row button,.segmented button,.tabglass button{transition-duration:.32s;transition-timing-function:var(--ease-spring)}
.schedule-skeleton{height:118px;margin-top:12px;border-radius:22px}
.lesson button:active,.day:active,.course-row button:active{transform:scale(.965)}
.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}
.sheet-action{min-height:50px;border-radius:14px;background:rgba(118,118,128,.2);color:var(--blue);font-weight:650;transition:transform .28s var(--ease-spring),background .2s}
.sheet-action:active{transform:scale(.96);background:rgba(118,118,128,.34)}
#pull-indicator{position:fixed;z-index:30;top:calc(10px + env(safe-area-inset-top));left:50%;width:38px;height:38px;margin-left:-19px;border-radius:50%;display:grid;place-items:center;color:var(--blue);background:rgba(44,44,46,.8);box-shadow:inset 0 0 0 .5px rgba(255,255,255,.2),0 8px 24px #0008;backdrop-filter:blur(22px);opacity:0;transform:translateY(-54px) scale(.7);transition:transform .28s var(--ease-spring),opacity .2s;pointer-events:none}
#pull-indicator.ready{color:var(--green)}#pull-indicator.loading{animation:pullSpin .8s linear infinite}
#network-status{position:fixed;z-index:25;top:calc(8px + env(safe-area-inset-top));left:50%;transform:translate(-50%,-70px);opacity:0;padding:8px 13px;border-radius:100px;background:rgba(44,44,46,.9);color:#d1d1d6;font-size:12px;white-space:nowrap;backdrop-filter:blur(22px);transition:transform .38s var(--ease-spring),opacity .25s;pointer-events:none}
body.offline #network-status{transform:translate(-50%,0);opacity:1}
.tabbar{transition:transform .38s var(--ease-spring)}.tabglass{transition:max-width .42s var(--ease-spring),padding .36s var(--ease-spring),border-radius .36s}.tabglass b{transition:opacity .2s,max-height .32s var(--ease-spring),transform .32s var(--ease-spring)}
.tabbar.compact .tabglass{max-width:310px;padding:5px;border-radius:24px}.tabbar.compact .tabglass button{height:45px;gap:0}.tabbar.compact .tabglass b{opacity:0;max-height:0;transform:translateY(5px)}
#toast{display:block;position:fixed;z-index:50;left:50%;bottom:calc(98px + env(safe-area-inset-bottom));transform:translate(-50%,18px) scale(.96);opacity:0;padding:11px 15px;border-radius:100px;background:rgba(58,58,60,.92);color:#fff;font-size:13px;font-weight:600;white-space:nowrap;pointer-events:none;backdrop-filter:blur(24px);transition:opacity .22s,transform .34s var(--ease-spring)}
#toast.show{opacity:1;transform:translate(-50%,0) scale(1)}
@keyframes pullSpin{to{rotate:360deg}}
@media(max-width:520px){.bar h1{font-size:clamp(30px,9vw,36px)}.hero h2{font-size:clamp(23px,7vw,28px)}.sheet-actions{grid-template-columns:1fr}.hero-progress{left:22px;right:22px}}
@media(prefers-reduced-transparency:reduce){.tabglass,#network-status,#pull-indicator,#toast,dialog{backdrop-filter:none;background:#2c2c2e}.ambient{display:none}}
@media(prefers-contrast:more){:root{--secondary:#b8b8bd;--line:#5c5c61}.tabglass,.stat,.lesson button,.grade-list{box-shadow:inset 0 0 0 1px rgba(255,255,255,.32)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.tabbar,.tabglass,.tabglass b,#pull-indicator,#network-status,#toast{transition:none}.hero-progress i{transition:none}}
