:root{--blue:#2563eb;--blue-600:#1d4ed8;--blue-050:#eff5ff;--blue-100:#dbe8ff;--ink:#0f1f3d;--ink-2:#334155;--muted:#64748b;--muted-2:#94a3b8;--bg:#eef4ff;--card:#ffffff;--line:#e4ebf6;--line-2:#eef2f9;--ok:#16a34a;--ok-bg:#eafaf0;--warn:#d97706;--warn-bg:#fff6e8;--crit:#dc2626;--crit-bg:#fdeeee;--violet:#7c6cf0;--violet-bg:#efecfe;--green:#1aa06a;--green-bg:#e7f8f0;--radius:16px;--radius-sm:12px;--shadow:0 8px 28px rgba(37,99,235,.08);--shadow-sm:0 2px 10px rgba(15,31,61,.05);--sans:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.45}#app{min-height:100%}a{color:inherit;text-decoration:none}button{font-family:inherit}.r-app{min-height:100vh;position:relative;background:radial-gradient(1200px 500px at 85% -10%,#dbe8ff,#dbe8ff00 60%),radial-gradient(900px 420px at -5% 110%,#e5edff,#e5edff00 55%),var(--bg)}.r-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;padding:14px 20px;background:#ffffffd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.r-brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.2px}.r-brand .logo{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--blue),#4f86ff);color:#fff;font-weight:800;font-size:15px;box-shadow:var(--shadow-sm)}.r-brand .uni{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.6px;line-height:1.1;text-transform:uppercase}.r-brand b{font-size:16px;color:var(--ink)}.r-header .sp{flex:1}.r-lang{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.r-lang button{border:0;background:#fff;color:var(--muted);padding:7px 11px;font-weight:700;font-size:13px;cursor:pointer}.r-lang button.on{background:var(--blue);color:#fff}.r-head-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink-2);padding:7px 12px;border-radius:10px;font-weight:600;font-size:13px;cursor:pointer}.r-head-btn:hover{border-color:var(--blue-100);color:var(--blue-600)}.r-container{max-width:1080px;margin:0 auto;padding:22px 20px 60px}.r-container.narrow{max-width:760px}.r-h1{font-size:28px;font-weight:800;letter-spacing:-.4px;margin-bottom:6px}.r-sub{color:var(--muted);font-size:14px;margin-bottom:22px}.r-back{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-weight:600;font-size:13px;cursor:pointer;margin-bottom:14px;background:none;border:0}.r-back:hover{color:var(--blue-600)}.r-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.r-pad{padding:20px}.r-roles{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:8px}.r-role{display:flex;flex-direction:column;gap:12px;align-items:flex-start;text-align:left;cursor:pointer;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm);transition:.15s}.r-role:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--blue-100)}.r-role .rt{display:flex;flex-direction:column;gap:4px}.r-role h3{font-size:17px;font-weight:800}.r-role p{color:var(--muted);font-size:13px}.r-role.v-blue{background:linear-gradient(180deg,#f4f8ff,#fff)}.r-role.v-violet{background:linear-gradient(180deg,#f7f5fe,#fff)}.r-role.v-green{background:linear-gradient(180deg,#f0faf4,#fff)}.r-chip{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--blue-050);color:var(--blue);margin-bottom:2px}.r-chip.violet{background:var(--violet-bg);color:var(--violet)}.r-chip.green{background:var(--green-bg);color:var(--green)}.r-chip svg{width:26px;height:26px}.r-role .go{align-self:flex-end;margin-top:auto;color:var(--blue);display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--blue-050)}.r-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:#fff;color:var(--ink);padding:11px 18px;border-radius:12px;font-weight:700;font-size:14px;cursor:pointer;transition:.12s}.r-btn:hover{border-color:var(--blue-100)}.r-btn.pri{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 6px 16px #2563eb38}.r-btn.pri:hover{background:var(--blue-600)}.r-btn.pri:disabled{background:#b9c7e6;border-color:#b9c7e6;box-shadow:none;cursor:not-allowed}.r-btn.sm{padding:8px 13px;font-size:13px;border-radius:10px}.r-btn.block{width:100%}.r-field{margin-bottom:14px}.r-label{display:block;font-size:13px;font-weight:700;color:var(--ink-2);margin-bottom:7px}.r-select,.r-search{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font-size:14px;background:#fff;color:var(--ink);outline:none}.r-select:focus,.r-search:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-050)}.r-dd-wrap{position:relative}.r-dd{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:40;background:#fff;border:1px solid var(--line);border-radius:12px;max-height:280px;overflow:auto;box-shadow:var(--shadow)}.r-dd .opt{padding:10px 14px;font-size:14px;cursor:pointer}.r-dd .opt:hover,.r-dd .opt.on{background:var(--blue-050)}.r-dd .opt small{color:var(--muted);display:block;font-size:12px}.r-dd .empty{padding:12px 14px;color:var(--muted-2);font-size:13px}.r-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.r-tagsel{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;cursor:pointer;background:#fff;font-weight:600}.r-tagsel.on{background:var(--blue);color:#fff;border-color:var(--blue)}.r-tabs{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:12px;padding:4px;gap:3px}.r-tabs button{border:0;background:none;padding:8px 16px;border-radius:9px;font-weight:700;font-size:13px;color:var(--muted);cursor:pointer}.r-tabs button.on{background:var(--blue);color:#fff}.r-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.r-toolbar .sp{flex:1}.r-navwk{display:inline-flex;align-items:center;gap:6px}.r-navwk b{min-width:150px;text-align:center;font-size:13px;font-weight:700;color:var(--ink-2)}.r-iconbtn{width:36px;height:36px;border:1px solid var(--line);background:#fff;border-radius:10px;cursor:pointer;display:grid;place-items:center;color:var(--ink-2)}.r-iconbtn:hover{border-color:var(--blue-100);color:var(--blue-600)}.r-now{background:linear-gradient(135deg,#2563eb,#4f86ff);color:#fff;border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow);margin-bottom:18px}.r-now .st{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:12px;letter-spacing:.4px;text-transform:uppercase;background:#ffffff2e;padding:5px 11px;border-radius:999px}.r-now .st .dot{width:8px;height:8px;border-radius:50%;background:#7cffb2;box-shadow:0 0 0 4px #7cffb240}.r-now .st.next .dot{background:#ffd666;box-shadow:0 0 0 4px #ffd66638}.r-now h2{font-size:21px;font-weight:800;margin:12px 0 4px;letter-spacing:-.3px}.r-now .meta{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:14px;opacity:.96}.r-now .meta span{display:inline-flex;align-items:center;gap:6px}.r-now .when{font-size:15px;font-weight:700;margin-top:4px}.r-day{margin-bottom:20px}.r-day-h{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.r-day-h b{font-size:15px;font-weight:800}.r-day-h .dt{color:var(--muted);font-size:13px}.r-day-h .wk{margin-left:auto;font-size:11px;font-weight:700;color:var(--blue);background:var(--blue-050);padding:3px 9px;border-radius:999px}.r-lesson{display:flex;gap:14px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:var(--radius-sm);padding:14px 16px;box-shadow:var(--shadow-sm);margin-bottom:10px}.r-lesson.lecture{border-left-color:#2563eb}.r-lesson.practice{border-left-color:#1aa06a}.r-lesson.seminar{border-left-color:#7c6cf0}.r-lesson.lab{border-left-color:#d97706}.r-lesson.studio{border-left-color:#db2777}.r-lesson.srsp{border-left-color:#0ea5a5}.r-lesson.changed{background:var(--warn-bg)}.r-lesson.cancelled{opacity:.6}.r-lesson.cancelled .subj{text-decoration:line-through}.r-lesson .time{min-width:58px;text-align:center}.r-lesson .time b{display:block;font-size:15px;font-weight:800}.r-lesson .time small{color:var(--muted);font-size:12px}.r-lesson .time .pair{display:block;margin-top:4px;font-size:10px;color:var(--muted-2);font-weight:700}.r-lesson .body{flex:1;min-width:0}.r-lesson .subj{font-weight:700;font-size:15px}.r-lesson .m{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;color:var(--muted);font-size:13px}.r-lesson .m span{display:inline-flex;align-items:center;gap:5px}.r-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px}.r-badge.type{background:var(--blue-050);color:var(--blue-600)}.r-badge.wk{background:#f1f5f9;color:var(--ink-2)}.r-badge.ch{background:var(--warn-bg);color:var(--warn)}.r-badge.cx{background:var(--crit-bg);color:var(--crit)}.r-badge.sg{background:var(--violet-bg);color:var(--violet)}.r-weekgrid{display:grid;grid-template-columns:repeat(var(--cols,6),1fr);gap:12px}.r-col{background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;box-shadow:var(--shadow-sm);min-height:80px}.r-col.today{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-050)}.r-col h4{font-size:13px;font-weight:800;margin-bottom:2px}.r-col .cd{font-size:11px;color:var(--muted);margin-bottom:10px}.r-col .mini{border:1px solid var(--line-2);border-left:3px solid var(--blue);border-radius:9px;padding:8px 9px;margin-bottom:8px;font-size:12px}.r-col .mini .t{font-weight:800;color:var(--ink-2)}.r-col .mini .s{font-weight:700;margin:2px 0}.r-col .mini .x{color:var(--muted)}.r-col .none{color:var(--muted-2);font-size:12px;padding:8px 2px}.r-sheet-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm)}.r-sheet{border-collapse:collapse;width:100%;min-width:760px}.r-sheet th,.r-sheet td{border:1px solid var(--line-2);vertical-align:top;padding:8px}.r-sheet thead th{background:var(--blue-050);color:var(--ink-2);font-size:12px;font-weight:800;position:sticky;top:0}.r-sheet .tcol{width:92px;background:#fafcff;font-size:12px;color:var(--muted);white-space:nowrap;text-align:center}.r-sheet .tcol b{display:block;color:var(--ink-2);font-size:13px}.r-sheet td.today{background:#f5f9ff}.r-cell{border:1px solid var(--line-2);border-left:3px solid var(--blue);border-radius:8px;padding:7px 8px;margin-bottom:7px;font-size:12px}.r-cell:last-child{margin-bottom:0}.r-cell .s{font-weight:800}.r-cell .x{color:var(--muted);margin-top:2px}.r-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:48px 20px;color:var(--muted)}.r-state .ico{font-size:40px}.r-state h3{color:var(--ink);font-size:17px;font-weight:800}.r-spinner{width:34px;height:34px;border:3px solid var(--blue-100);border-top-color:var(--blue);border-radius:50%;animation:rspin .8s linear infinite}@keyframes rspin{to{transform:rotate(360deg)}}.r-offline{display:flex;align-items:center;gap:10px;background:var(--warn-bg);color:#92560b;border:1px solid #f6dca8;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:16px}.r-flash{background:var(--blue-050);border:1px solid var(--blue-100);color:var(--blue-600);border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:14px}@media(max-width:760px){.r-container{padding:16px 14px 48px}.r-h1{font-size:23px}.r-roles{grid-template-columns:1fr!important}.r-role{flex-direction:row;align-items:center;gap:14px;padding:16px}.r-role .rt{flex:1;min-width:0}.r-role .r-chip{margin:0;width:46px;height:46px}.r-role .go{align-self:center;margin:0}.r-role h3{font-size:16px}.r-now h2{font-size:19px}.r-weekgrid{grid-template-columns:1fr}.r-header{padding:12px 14px;gap:10px}.r-brand .uni{display:none}.r-brand b{font-size:15px}.r-toolbar{gap:8px}}@media print{.r-header,.r-toolbar,.r-back,.r-now,.r-lang,.r-head-btn{display:none!important}body,.r-app{background:#fff}.r-sheet-wrap{border:0;box-shadow:none;overflow:visible}@page{size:A4 landscape;margin:10mm}}
