.skeleton{display:block;width:100%;height:1rem;border-radius:var(--radius-sm, 10px);background:linear-gradient(90deg,#ffffff0f,#ffffff29,#ffffff0f);background-size:220% 100%;animation:skeleton-sweep 1.4s ease-in-out infinite}@keyframes skeleton-sweep{0%{background-position:200% 0}to{background-position:-20% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:skeleton-pulse 2.4s ease-in-out infinite;background:#ffffff1a}}@keyframes skeleton-pulse{0%,to{opacity:.45}50%{opacity:.85}}.skeleton-text{display:flex;flex-direction:column;gap:10px;width:100%}.skeleton-table{display:flex;flex-direction:column;gap:10px;width:100%;padding:14px;border:1px solid var(--card-border, rgba(255, 255, 255, .12));border-radius:var(--radius-md, 12px);background:var(--card-bg, rgba(12, 18, 30, .7))}.skeleton-table-head,.skeleton-table-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:12px;align-items:center}.skeleton-table-head{padding-bottom:10px;border-bottom:1px solid var(--card-border, rgba(255, 255, 255, .12))}.skeleton-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;width:100%}.skeleton-card{display:flex;flex-direction:column;gap:12px;padding:18px;border:1px solid var(--card-border, rgba(255, 255, 255, .12));border-radius:var(--radius-lg, 18px);background:var(--card-bg, rgba(12, 18, 30, .7))}.skeleton-list{display:flex;flex-direction:column;gap:12px;width:100%}.skeleton-list-row{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--card-border, rgba(255, 255, 255, .12));border-radius:var(--radius-md, 12px);background:var(--card-bg, rgba(12, 18, 30, .7))}.skeleton-list-body{display:flex;flex:1;flex-direction:column;gap:8px;min-width:0}.skeleton-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;width:100%}.skeleton-form-field{display:flex;flex-direction:column;gap:8px}.courses-page{padding:36px 40px 80px;min-height:100vh;min-height:100dvh;color:#f6f7fb}.courses-page :is(a,button,input,select,textarea){transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease,background-color .15s ease,color .15s ease}.courses-page :is(a,button,input,select,textarea):focus-visible{outline:2px solid #7cc4ff;outline-offset:2px;box-shadow:0 0 0 3px #7cc4ff47}.courses-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:26px}.courses-hero h2{font-size:clamp(26px,3.2vw,40px);margin:0 0 8px}.courses-hero p{color:#f6f7fbcc;margin:0}.courses-search{display:flex;gap:10px;flex-wrap:wrap}.courses-search input{min-width:260px;padding:8px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:#0c121eb3;color:#fff}.courses-search input:hover{border-color:#7cc4ff8c}.courses-search button{width:auto;padding:8px 14px;border-radius:10px;border:none;background:#f2b90c;color:#101723;font-weight:700;cursor:pointer}.courses-search button:hover{transform:translateY(-1px);box-shadow:0 10px 18px #02061759}.grades-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}.grade-card{background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:18px;box-shadow:0 20px 40px #03081459;display:flex;flex-direction:column;gap:12px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.grade-card.clickable{cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.grade-card.clickable:hover{transform:translateY(-3px);box-shadow:0 24px 48px #03081473}.grade-card h3{margin:0}.sections,.subjects{display:flex;flex-wrap:wrap;gap:8px}.sections span,.subjects span{background:#f2b90c2e;color:#f2b90c;padding:6px 10px;border-radius:10px;font-size:12px}@media (max-width: 820px){.courses-page{padding:20px 14px 44px}.courses-hero{flex-direction:column;align-items:flex-start}.courses-search input{width:100%;min-width:0}}@media (max-width: 520px){.grades-grid{grid-template-columns:1fr}.grade-card{padding:14px}}@media (prefers-reduced-motion: reduce){.courses-page :is(a,button,input,select,textarea){transition:none}}.data-state-loading{display:flex;flex-direction:column;gap:14px;width:100%;padding:4px 0}.data-state-loading-label{display:inline-flex;align-items:center;gap:10px;color:var(--text-muted, rgba(246, 247, 251, .7));font-size:.9rem;font-weight:700}.data-state-spinner{display:inline-block;flex:0 0 auto;width:15px;height:15px;border:2px solid rgba(255,255,255,.2);border-top-color:var(--accent, #f2b90c);border-radius:50%;animation:data-state-spin .85s linear infinite}@keyframes data-state-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.data-state-spinner{animation-duration:2.4s}}.data-state-error{display:flex;gap:16px;align-items:flex-start;width:100%;padding:20px;border:1px solid rgba(248,113,113,.32);border-radius:var(--radius-lg, 18px);background:#3c141a6b;box-shadow:var(--shadow-card, 0 20px 40px rgba(3, 8, 20, .35))}.data-state-error.is-compact{padding:12px 14px;border-radius:var(--radius-md, 12px);box-shadow:none}.data-state-error-icon{font-size:1.6rem;line-height:1}.data-state-error.is-compact .data-state-error-icon{font-size:1.15rem}.data-state-error-body{display:flex;flex:1;flex-direction:column;gap:8px;min-width:0}.data-state-error-title{color:#fecaca;font-size:1rem;font-weight:800}.data-state-error-message{margin:0;color:var(--text-muted, rgba(246, 247, 251, .78));font-size:.9rem;line-height:1.8}.data-state-error-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:4px}.data-state-error-code{color:#f6f7fb80;font-size:.76rem;letter-spacing:.02em}.data-state-button{flex:0 0 auto;width:auto;padding:8px 18px;border:1px solid rgba(255,255,255,.18);border-radius:var(--radius-sm, 10px);background:var(--btn-primary, #22c55e);color:#06210f;font-family:inherit;font-size:.88rem;font-weight:800;text-decoration:none;cursor:pointer;transition:transform .15s ease,filter .15s ease}.data-state-button:hover{filter:brightness(1.08);transform:translateY(-1px)}.data-state-button:focus-visible{outline:2px solid var(--accent, #f2b90c);outline-offset:2px}.data-state-button.is-small{padding:5px 12px;font-size:.78rem}.data-state-empty{display:flex;flex-direction:column;gap:8px;align-items:center;width:100%;padding:34px 20px;border:1px dashed var(--card-border, rgba(255, 255, 255, .14));border-radius:var(--radius-lg, 18px);background:var(--card-bg, rgba(12, 18, 30, .55));color:var(--paper, #f6f7fb);text-align:center}.data-state-empty-icon{font-size:1.7rem;opacity:.75}.data-state-empty-hint{margin:0;color:var(--text-muted, rgba(246, 247, 251, .62));font-size:.84rem;line-height:1.8}.data-state-content{width:100%}.data-state-content.is-refreshing{opacity:.94}.data-state-stale-note,.data-state-refreshing-note{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px;padding:9px 13px;border-radius:var(--radius-sm, 10px);font-size:.83rem;font-weight:700}.data-state-stale-note{border:1px solid rgba(248,113,113,.3);background:#3c141a5c;color:#fecaca}.data-state-refreshing-note{border:1px solid var(--card-border, rgba(255, 255, 255, .12));background:#ffffff0d;color:var(--text-muted, rgba(246, 247, 251, .72))}.data-state-updated{margin:10px 0 0;color:#f6f7fb73;font-size:.74rem;text-align:left}
