:root{--f45-red:#e31e24;--f45-blue:#002a5c;--f45-gray:#6b7280;--f45-white:#fff;--bg:#f4f7fb;--bg-subtle:#eef3f8;--text:#1f2937;--wknd-bg:color-mix(in srgb, var(--f45-blue) 6%, white);--card-bg:#fff;--card-border:color-mix(in srgb, var(--f45-gray) 20%, white);--muted:color-mix(in srgb, var(--f45-gray) 62%, white);--surface-shadow:0 8px 24px #0f172a0f;--surface-shadow-soft:0 2px 8px #0f172a0a}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,Geist,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header{z-index:20;border-bottom:1px solid color-mix(in srgb, var(--f45-blue) 18%, white);background:var(--f45-blue);gap:14px;padding:18px 20px 0;display:grid;position:sticky;top:0;box-shadow:0 10px 24px #0018362e}.header:before{content:"";background:var(--f45-red);height:6px;position:absolute;top:0;left:0;right:0}.header-main{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.header-nav-row{justify-content:flex-end;align-items:flex-end;min-height:44px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.week{grid-template-columns:repeat(7,1fr);gap:12px;padding:16px;display:grid}.day{background:var(--card-bg);border:1px solid var(--card-border);min-height:70vh;box-shadow:var(--surface-shadow-soft);border-radius:12px;flex-direction:column;display:flex}.day.wknd{background:var(--wknd-bg)}.day .title{border-bottom:1px solid var(--card-border);padding:12px 14px;font-size:16px;font-weight:700}.day .list{flex-direction:column;gap:10px;padding:10px;display:flex}.card{border:1px solid var(--card-border);box-shadow:var(--surface-shadow-soft);background:#fff;border-radius:12px;flex-direction:column;gap:6px;padding:12px;display:flex}.card.alert{background:color-mix(in srgb, var(--f45-red) 8%, white);border-color:color-mix(in srgb, var(--f45-red) 40%, white);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--f45-red) 12%, transparent)}.card.subreq{background:color-mix(in srgb, var(--f45-blue) 6%, white);border-color:color-mix(in srgb, var(--f45-blue) 35%, white)}.card .meta{color:var(--muted);font-size:12px}.card .name{font-size:18px;font-weight:700;line-height:1.2}.card .teacher{color:var(--text);font-size:14px}.card .row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}button,input,select{border:1px solid var(--card-border);min-height:40px;color:var(--text);font:inherit;background:#fff;border-radius:8px;padding:8px 12px;transition:background .12s,border-color .12s,box-shadow .12s,color .12s}button{cursor:pointer;font-weight:600}button:hover:not(:disabled),select:hover:not(:disabled),input:hover:not(:disabled){border-color:color-mix(in srgb, var(--f45-blue) 35%, white)}button:focus-visible,select:focus-visible,input:focus-visible{border-color:color-mix(in srgb, var(--f45-blue) 45%, white);box-shadow:0 0 0 3px color-mix(in srgb, var(--f45-blue) 14%, transparent);outline:none}button:disabled,input:disabled,select:disabled{cursor:default;opacity:.7}button.primary{border-color:color-mix(in srgb, var(--f45-blue) 45%, white);background:color-mix(in srgb, var(--f45-blue) 7%, white)}.badge{box-sizing:border-box;border:1px solid var(--card-border);min-height:24px;color:var(--text);background:#fff;border-radius:999px;align-items:center;padding:3px 8px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.badge.warn{border-color:color-mix(in srgb, var(--f45-red) 45%, white);background:color-mix(in srgb, var(--f45-red) 8%, white)}.badge.info{border-color:color-mix(in srgb, var(--f45-blue) 45%, white);background:color-mix(in srgb, var(--f45-blue) 8%, white)}.primary-nav{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.nav-button{color:#ffffffad;letter-spacing:.01em;background:0 0;border-color:#0000;border-radius:0;min-height:44px;padding:10px 0 12px;font-weight:700}.nav-button:hover:not(:disabled){color:#fff;background:0 0;border-color:#0000}.nav-button.active{color:#fff;box-shadow:inset 0 -6px 0 var(--f45-red);background:0 0;border-color:#0000}
