:root{--bg:#fafafa;--surface:#fff;--text:#171717;--text-muted:#737373;--border:#e5e5e5;--accent:#171717;--accent-muted:#404040;--danger:#b91c1c;--danger-surface:#fef2f2;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #0000000a;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}.appFrame{flex-direction:column;min-height:100vh;display:flex}.appHeader{z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#fafafad9;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex;position:sticky;top:0}.appHeaderLeft{align-items:center;gap:1.5rem;min-width:0;display:flex}.brand{letter-spacing:-.02em;color:var(--text);font-size:.9375rem;font-weight:600}.appHeaderNav{align-items:center;gap:.25rem;display:flex}.navPill{color:var(--text-muted);border-radius:999px;padding:.4rem .75rem;font-size:.8125rem;font-weight:500;transition:color .15s,background .15s}.navPill:hover{color:var(--text);background:#0000000a}.navPill[data-active=true]{color:var(--text);background:#0000000f}.container{flex-direction:column;flex:1;gap:1.25rem;width:min(960px,100% - 2rem);margin:0 auto;padding:1.75rem 0 3rem;display:flex}.layoutGrid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.25rem;display:grid}.panel,.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:1rem;padding:1.25rem 1.35rem;display:flex}.panelToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.sectionLabel{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:.6875rem;font-weight:600}.emptyHint{color:var(--text-muted);font-size:.875rem}.itemList{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.itemRow{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 0;display:flex}.itemRow:last-child{border-bottom:none;padding-bottom:0}.itemRow:first-child{padding-top:0}.itemRowMain{flex-direction:column;gap:.15rem;min-width:0;display:flex}.itemTitle{letter-spacing:-.01em;font-size:.9375rem;font-weight:500}.itemMeta{color:var(--text-muted);font-size:.8125rem}.itemBadge{color:var(--text-muted);background:var(--bg);border-radius:6px;flex-shrink:0;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.itemRowActions{flex-wrap:wrap;flex-shrink:0;gap:.5rem;display:flex}.formGrid{flex-direction:column;gap:.75rem;display:flex}label{color:var(--text);flex-direction:column;gap:.35rem;font-size:.8125rem;font-weight:500;display:flex}input{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:.55rem .65rem;transition:border-color .15s,box-shadow .15s}input:hover{border-color:#d4d4d4}input:focus{border-color:var(--accent-muted);outline:none;box-shadow:0 0 0 3px #0000000f}button{font:inherit;border-radius:var(--radius-sm);cursor:pointer;background:var(--accent);color:#fff;border:1px solid #0000;padding:.5rem .85rem;font-size:.8125rem;font-weight:500;transition:opacity .15s,background .15s}button:hover:not(:disabled){opacity:.92}button:disabled{opacity:.5;cursor:not-allowed}.secondaryBtn{background:var(--surface);color:var(--text);border-color:var(--border)}.secondaryBtn:hover:not(:disabled){opacity:1;background:var(--bg)}.dangerBtn{background:var(--danger-surface);color:var(--danger);border-color:#0000}.dangerBtn:hover:not(:disabled){opacity:1;background:#fee2e2}.logoutBtn{color:var(--text-muted);background:0 0;border:none;padding:.4rem .65rem}.logoutBtn:hover:not(:disabled){opacity:1;color:var(--text);background:#0000000a}.rowActions{flex-wrap:wrap;gap:.5rem;display:flex}.muted{color:var(--text-muted);font-size:.8125rem}.errorText{color:var(--danger);font-size:.8125rem}.errorBanner{color:var(--danger);background:var(--danger-surface);border-radius:var(--radius-sm);border:1px solid #fecaca;padding:.65rem .85rem;font-size:.875rem}.calendarPageToolbar{justify-content:flex-end;display:flex}.studyMonthCalendar{gap:1rem}.calendarMonthToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.calendarMonthTitle{letter-spacing:-.02em;margin:0;font-size:1.125rem;font-weight:600}.calendarLegend{color:var(--text-muted);flex-wrap:wrap;gap:1rem 1.25rem;font-size:.75rem;display:flex}.calendarLegendItem{align-items:center;gap:.4rem;display:inline-flex}.calendarLegendSwatch{border-radius:3px;flex-shrink:0;width:10px;height:10px}.calendarLegendSwatch--study{background:#e0f2fe;border:1px solid #7dd3fc}.calendarLegendSwatch--exam{background:#fffbeb;border:1px solid #fcd34d}.calendarGrid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.calendarWeekday{background:var(--bg);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);text-align:center;padding:.5rem .35rem;font-size:.6875rem;font-weight:600}.calendarCell{background:var(--surface);flex-direction:column;align-items:flex-start;gap:.2rem;min-height:4.75rem;padding:.35rem .4rem;display:flex}.calendarCell--outside{opacity:.42}.calendarCell--today .calendarCellDay{background:var(--text);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:1.5rem;height:1.5rem;padding:0 .25rem;font-size:.75rem;font-weight:600;display:inline-flex}.calendarCell--study{background:#f0f9ff}.calendarCell--exam{box-shadow:inset 0 0 0 2px #fbbf24}.calendarCellDay{font-size:.8125rem;font-weight:500;line-height:1.5rem}.calendarCellStudy{color:#0369a1;font-size:.6875rem;font-weight:600}.calendarCellExam{color:#b45309;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:100%;font-size:.625rem;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}@media (max-width:920px){.layoutGrid{grid-template-columns:1fr}.appHeaderNav{flex-wrap:wrap}.calendarCell{min-height:3.75rem;padding:.3rem}.calendarWeekday{padding:.4rem .2rem;font-size:.625rem}}
