/* Student dashboard: one calm screen. Builds on cs.css + lumina-ui.css + file-upload/upload.css. */
body { background: #f6f6fb; }
.topbar .in { max-width: 1080px; padding: 0 20px; }
.dash { max-width: 1080px; margin: 0 auto; padding: 34px 20px 90px; font-family: var(--lu-sans); }
.dsign { padding: 56px 20px; }
.dsign h1 { margin: 0 0 6px; font-size: clamp(30px, 5vw, 42px); }

.dtop { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin: 0 0 22px; }
.dtop h1 { margin: 0; font-family: var(--lu-serif); font-size: clamp(30px, 4.4vw, 40px); letter-spacing: -.02em; }
.dact { display: flex; align-items: center; gap: 16px; }
.dact .linkbtn { border: 0; background: none; cursor: pointer; font: 500 14.5px var(--lu-sans); color: var(--lu-muted); padding: 0; }
.dact .linkbtn:hover { color: var(--lu-primary); }
.dash .btn { text-decoration: none; border-radius: 10px; box-shadow: none; transform: none; }

/* search */
.dsearch { position: relative; margin: 0 0 34px; }
.dsearch input { width: 100%; box-sizing: border-box; padding: 14px 18px 14px 46px; font: 16px var(--lu-sans); border: 1px solid #e2e2ee; border-radius: 14px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='19' height='19' fill='none' stroke='%238b87a8' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") 16px 50% no-repeat; box-shadow: 0 1px 2px rgba(20,20,60,.04); }
.dsearch input:focus { outline: none; border-color: var(--lu-primary); box-shadow: 0 0 0 4px rgba(91,78,240,.12); }
.dres { position: absolute; z-index: 10; left: 0; right: 0; list-style: none; margin: 8px 0 0; padding: 6px; background: #fff; border: 1px solid #e2e2ee; border-radius: 14px; box-shadow: 0 20px 44px -16px rgba(20,20,60,.3); }
.dres li { border-radius: 10px; }
.dres li:hover { background: #f5f4ff; }
.dres a.hit { display: flex; align-items: center; gap: 12px; padding: 10px 12px; color: var(--lu-ink); text-decoration: none; }
.dres .go { margin-left: auto; color: var(--lu-primary); font-weight: 600; font-size: 14px; }
.dres .none { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 12px; color: var(--lu-muted); }
.dres .none:hover { background: none; }
.code { font: 600 12px var(--lu-sans); color: var(--lu-primary); letter-spacing: .04em; min-width: 64px; }

/* shelves */
.shelf-sec { margin: 0 0 34px; }
.shelf-sec h2 { margin: 0 0 14px; font: 600 13px var(--lu-sans); text-transform: uppercase; letter-spacing: .08em; color: #6b6889; }
.dshelf { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 16px; }
.dcard { display: flex; flex-direction: column; background: #fff; border: 1px solid #e6e5f2; border-radius: 18px; overflow: hidden; color: var(--lu-ink); text-decoration: none; transition: transform .2s, box-shadow .2s; }
.dcard:hover { transform: translateY(-2px); box-shadow: 0 20px 40px -20px rgba(49,46,129,.45); }
.dlink { color: inherit; text-decoration: none; display: flex; flex-direction: column; flex: 1; }
.cart { position: relative; height: 96px; display: flex; align-items: flex-end; padding: 12px 14px; box-sizing: border-box; overflow: hidden; }
.cart span { position: relative; z-index: 1; font: 700 12.5px var(--lu-sans); letter-spacing: .08em; color: #fff; padding: 3px 9px; border-radius: 99px; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.25); }
.cart.space { background: radial-gradient(circle at 80% 42%, #fde68a 0 8px, transparent 9px), radial-gradient(ellipse 40px 11px at 80% 42%, transparent 27px, rgba(253,230,138,.6) 28px, transparent 30px), radial-gradient(1px 1px at 20% 30%, #fff 50%, transparent 51%), radial-gradient(1.5px 1.5px at 55% 22%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 40% 70%, #fff 50%, transparent 51%), linear-gradient(135deg, #0b1030, #312e81 60%, #7e22ce); }
.cart.grid { background: repeating-linear-gradient(90deg, rgba(255,255,255,.08) 0 1px, transparent 1px 22px), repeating-linear-gradient(0deg, rgba(255,255,255,.08) 0 1px, transparent 1px 22px), linear-gradient(135deg, #1e1b4b, #4f46e5 60%, #06b6d4); }
.cart.wave { background: radial-gradient(120px 60px at 80% 30%, rgba(255,255,255,.18), transparent 70%), linear-gradient(135deg, #3b0764, #7c3aed 55%, #ec4899); }
.cart.building { background: linear-gradient(120deg, #0b0a2a, #312e81 60%, #6d28d9); }
.cart.plus { background: repeating-linear-gradient(135deg, #f5f3ff 0 10px, #ede9fe 10px 20px); }
.cart.plus span { color: var(--lu-primary); background: #fff; border-color: #ddd6fe; font-size: 18px; padding: 0 11px; }
.cart .orb { position: absolute; right: 18px; top: 18px; width: 12px; height: 12px; border-radius: 50%; background: #a78bfa; animation: dPulse 1.8s ease-out infinite; }
@keyframes dPulse { 0% { box-shadow: 0 0 0 0 rgba(167,139,250,.7); } 70%, 100% { box-shadow: 0 0 0 14px rgba(167,139,250,0); } }
.cbody { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px 6px; flex: 1; }
.cbody b { font-family: var(--lu-serif); font-size: 18.5px; line-height: 1.2; }
.cbody small { color: var(--lu-muted); font-size: 13px; }
.cbody small b { font: 600 13px var(--lu-sans); color: var(--lu-ink); }
.pbar { height: 5px; border-radius: 99px; background: #eceaf6; overflow: hidden; margin-top: 4px; }
.pbar i { display: block; height: 100%; background: var(--lu-btn); border-radius: 99px; }
.cfoot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 8px 16px 16px; }
.cfoot .more { border: 0; background: none; padding: 0; cursor: pointer; font: 500 13.5px var(--lu-sans); color: var(--lu-muted); text-decoration: none; }
.cfoot .more:hover { color: var(--lu-primary); }
.cfoot .btn.ghost { background: #fff; color: var(--lu-ink); border: 1px solid #e2e2ee; }
.dcard.wait .cbody { padding-bottom: 16px; }
.dcard.wait.bad .cart { background: linear-gradient(120deg, #3f3f46, #71717a); }
.dcard.empty { border-style: dashed; }
.dcard.fresh { box-shadow: 0 0 0 3px rgba(167,139,250,.6); }
.empty { margin: 0; color: var(--lu-muted); font-size: 14.5px; }
@media (prefers-reduced-motion: reduce) { .cart .orb { animation: none; } .dcard { transition: none; } }
@media (max-width: 560px) { .dtop { flex-wrap: wrap; } }
.cfoot .more.share { color: var(--lu-primary); font-weight: 600; }
