/* Midnight violet: the map supplies the light; the controls stay quiet. */
:root{--paper:#090913;--line:#302b43}
body{background:#090913}
.rail{background:#10101e;border-color:#292438}
.nav-item.active{background:#282137;border-color:#514262;box-shadow:0 3px 0 #07070e}
.nav-item:hover{background:#292136}
.map-panel{background:#0b0c17;border-color:#302b41;box-shadow:0 5px 0 #06060d}
.map-toolbar{background:#11111e;border-color:#292438}
.map-caption,.branch-cards{background:#0f101c}
.year-tabs button{background:#1b192a;color:#aaa0bb}
.year-tabs button.active{background:#33283f;border-color:#78608e}
.year-tabs button:hover{background:#2b223a}
.branch-card{background:#191725;border-color:#352c44}
.branch-card.viewing{background:#35273f;border-color:#85659d}
.branch-card:hover{background:#2c2236}
.branch-card.current{background:#17271f;border-color:#52724e}
.explore-button{background:#221b30;border-color:#574269}
.explore-button[aria-pressed=true]{background:#3e2c51;border-color:#9572af}
.path-summary{background:#0d0e19;border-color:#292637}
.map-legend{background:#0f0e1a;border-color:#292437}
.map-controls{background:#191526e8;border-color:#544164}
.map-viewport{background-image:linear-gradient(180deg,#0805169c,#070713aa),url('assets/galaxy-v1.png')}
.paper-card,dialog:not(.course-dossier){background:#141120f5;border-color:#4c3d5d}
.primary{background:#64517e;border-color:#9980b7;color:#f0e8fc;box-shadow:0 3px 0 #080610}
.primary:hover{background:#776092}
.secondary{background:#281c39;border-color:#6e5084;color:#ddc8ed}
.secondary:hover{background:#3c2a50}
.course-status{background:#203228;border-color:#506849;color:#bdd1ab}
.course-status.preview-status{background:#2a1c3b;border-color:#674a80;color:#cbb0e1}
.course-dossier{background:linear-gradient(110deg,#0b091ec9,#100d23e6);backdrop-filter:blur(16px);border-color:#7c689858;box-shadow:0 0 0 5px #6b548811,0 35px 120px #000a}
.course-dossier::backdrop{background:#02010a80;backdrop-filter:blur(2px)}
.dossier-identity{background:radial-gradient(ellipse at 50% 40%,#72539d24,transparent 68%)}
.dossier-placeholder{background:linear-gradient(135deg,#40305644,#20172e44);border-color:#8a6ab55c}
.dossier-prereq{background:#31203e40;border-color:#72528b55}
.dossier-diamond{background:#21162fe0}
.dossier-tab[aria-selected=true] .dossier-diamond{background:#513867}
.dossier-close{background:#25183199;border-color:#9b7ab16e}
.dossier-readonly{background:#31203f55}

/* Wide, transparent hit areas keep thin prerequisite threads easy to select. */
.graph-lines .connection-hit{fill:none;stroke:transparent;stroke-width:18px;stroke-dasharray:none;opacity:1;pointer-events:stroke;vector-effect:non-scaling-stroke;cursor:pointer}
.graph-lines .connection-hit:hover{stroke:#dac1ef30}
.graph-lines .connection-hit:focus-visible{outline:none;stroke:#ddc4f170;stroke-width:7px}
.graph-lines .connection-line{pointer-events:none;transition:opacity .2s,stroke .2s}
.graph-lines .connection-line.path-selected{stroke:#f3d392;stroke-width:3.5px;opacity:1;stroke-dasharray:none;filter:drop-shadow(0 0 7px #e0b673aa)}
.graph-lines .connection-line.path-traced{stroke:#d2b7eb;stroke-width:2px;opacity:.9;filter:drop-shadow(0 0 4px #ac7bd755)}
.graph-lines .connection-line.path-muted{opacity:.06}
.course-node.path-muted{opacity:.3}
.course-node.path-member .node-copy{border-color:#b79bd0;box-shadow:0 0 18px #ab7edc33}
.course-node.path-member .skill-star{filter:drop-shadow(0 0 14px #c5a2e699)}
.tracing-path .sky-outline{opacity:.25}
.connection-inspector{position:absolute;z-index:5;top:278px;right:23px;width:min(390px,calc(100% - 46px));max-height:calc(100% - 340px);display:flex;flex-direction:column;padding:23px;border:1px solid #9573b080;border-radius:17px;background:linear-gradient(145deg,#1a1127ed,#0d0b19ed);backdrop-filter:blur(14px);box-shadow:0 18px 60px #0008;color:#d8cae7}
.connection-inspector[hidden]{display:none}
.connection-inspector header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.connection-eyebrow{font-size:10px;font-weight:800;letter-spacing:2px;color:#af8cc4}
.connection-inspector h2{font:600 24px/1.25 var(--sans);margin:9px 0 0;color:#ebdef7}
.connection-inspector header>button{width:31px;height:31px;border:1px solid #8b69a15e;border-radius:50%;padding:0;background:#34213f66;font-size:24px;line-height:1;color:#d5bee7;flex-shrink:0}
.connection-type{font-size:12px;line-height:1.6;color:#ccb482;margin:17px 0 12px}
.connection-pair{padding:13px;border:1px solid #a17eab66;border-radius:3px 13px 3px 13px;background:#4c31522b}
.connection-pair>span{display:block;font-size:20px;line-height:1.2;color:#dbbd8c;text-align:center;margin:5px 0}
.connection-course{display:block;width:100%;padding:9px 10px;text-align:left;background:none;border:1px solid transparent;border-radius:7px;cursor:pointer}
.connection-course:hover{background:#67457530;border-color:#9774b25e}
.connection-course small{display:block;font:700 10px var(--sans);color:#a08cab;letter-spacing:.8px;margin-bottom:5px}
.connection-course strong{display:block;font:600 14px/1.4 var(--sans);color:#d7c5e6}
.connection-pair .connection-course strong{font-size:15px;color:#f0e3fa}
.connection-chain{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#614771 transparent;margin-top:8px}
.connection-chain h3{font:700 12px var(--sans);color:#ba96cc;margin:20px 10px 7px}
.connection-caption{font-size:11px;line-height:1.6;margin:15px 0 0;padding-top:12px;border-top:1px solid #6c4d8055;color:#a291b1}

/* Academic completion has its own reward, independent of future mastery quizzes. */
.completion-reward{display:flex;align-items:center;gap:18px;padding:15px 17px;border:1px solid #c7a26970;border-radius:4px 16px;background:linear-gradient(120deg,#8a68332b,#2e20412b)}
.completion-reward h4{font:600 20px/1.3 var(--sans);color:#f1d6a5;margin:0 0 7px}
.completion-reward p{font:500 13px/1.6 var(--sans);color:#c4b2cf;margin:0}
.reward-star{font-size:43px;color:#f0d2a0;text-shadow:0 0 20px #dfb77780;animation:reward-arrive 950ms cubic-bezier(.2,.7,.3,1) both}
.reward-return{width:100%;margin-top:13px;font-size:14px;padding:12px}
.is-celebrating .dossier-focus{transform-box:fill-box;transform-origin:center;animation:star-completion 1.2s ease-out 2}
.course-node.just-completed .skill-star{animation:star-completion 1.2s ease-out 2}
@keyframes star-completion{0%{filter:drop-shadow(0 0 4px #f3d1a4)}35%{filter:drop-shadow(0 0 23px #f3d1a4);opacity:1}100%{filter:drop-shadow(0 0 8px #c1d7ac)}}
@keyframes reward-arrive{from{opacity:0;transform:scale(.4) rotate(-35deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@media(max-width:760px){.connection-inspector{position:fixed;top:auto;right:14px;bottom:14px;max-height:64dvh;width:min(390px,calc(100vw - 28px));padding:18px}.connection-inspector h2{font-size:22px}.connection-pair{padding:7px}.connection-type{margin:12px 0 8px}.connection-caption{margin-top:10px;padding-top:10px}.completion-reward{padding:11px 13px;gap:12px}.completion-reward h4{font-size:16px}.completion-reward p{font-size:11px}.reward-star{font-size:32px}.reward-return{font-size:12px;padding:10px;margin-top:9px}}
@media(prefers-reduced-motion:reduce){.reward-star,.is-celebrating .dossier-focus,.course-node.just-completed .skill-star{animation:none}.graph-lines .connection-line{transition:none}}
