/* Celestial game typography: clean UI lettering and ceremonial Roman numerals. */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Cinzel:wght@500;600;700&display=swap');
:root{--serif:'Manrope',Arial,sans-serif;--sans:'Manrope',Arial,sans-serif;--numeral:'Cinzel','Times New Roman',serif;--ink:#dbd8e9;--muted:#9b9bb4;--paper:#171724;--line:#393747;--green:#4c7a87;--gold:#d2a775}
body{background:#171724;font-size:15px;font-weight:600}.rail{height:78px;padding:0 28px;background:#242131;border-color:#393143;border-bottom-width:3px}.brand{font:600 27px var(--serif);color:#e4dded;letter-spacing:.3px;gap:10px}.brand-mark{width:39px;height:40px;transform:rotate(-6deg)}.brand-sub{font:600 14px var(--serif);letter-spacing:2px;margin-left:8px;color:#d4b8ed}.rail nav{gap:10px}.nav-item{font-size:14px;font-weight:800;padding:12px 21px;border-radius:11px;color:#a497b4;border-width:2px}.nav-item>span{font-size:20px;color:#b399d3}.nav-item.active{color:#e4d8f3;background:#40354f;border-color:#61516e;box-shadow:0 3px 0 #15111f}.nav-item:hover{background:#3a3048}.avatar{width:36px;height:37px;border:2px solid #9186a2;border-radius:12px;background:#40364d;color:#d5bedf;transform:rotate(5deg);font:600 14px var(--serif)}.player strong{font-size:11px;color:#8d809d}.player span{font-size:12px;color:#c4b3d3;margin-top:4px}
main{padding:12px 16px 0}.map-panel{border:2px solid #403d51;border-radius:18px;background:#101622;box-shadow:0 5px 0 #10101b}.map-toolbar{padding:12px 17px;background:#242432;border-bottom:2px solid #3d394b}.year-tabs{gap:9px}.year-tabs button{font-size:13px;font-weight:900;padding:10px 17px;border:2px solid transparent;border-radius:10px;background:#2b293a;color:#9388a4;gap:9px}.year-tabs button>span{font:600 16px var(--serif);color:#6e637d}.year-tabs button.active{background:#4a425b;border-color:#857097;color:#eee1fa;box-shadow:0 3px 0 #12121d}.year-tabs button.active>span{color:#b29cc9}.year-tabs button:hover{background:#3d354d}.explore-button{font-size:12px;font-weight:900;border:2px solid #5d5570;border-radius:10px;background:#302b41;color:#bca8d3;padding:10px 15px;box-shadow:0 3px 0 #12121d}.explore-button>span{font-size:19px}.explore-button[aria-pressed=true]{background:#5c466f;border-color:#a285b9;color:#e0c9f6}.map-caption{padding:13px 19px 9px;background:#20222f;gap:15px}.map-caption #map-title{font:600 20px var(--serif);color:#c7bdd6}.map-caption #map-mode{font-size:10px;color:#776b8f;font-weight:900;letter-spacing:.6px}.text-button{height:28px;width:28px;font-weight:900;border:2px solid #514661;color:#9984b5}
.branch-cards{padding:4px 16px 13px;background:#20222f;gap:10px}.branch-card{padding:9px 12px;border:2px solid #443a53;border-radius:10px;background:#292638;color:#a296b3;gap:9px;box-shadow:0 3px 0 #12121d}.branch-symbol{width:25px;height:25px;color:#a68dbd}.branch-card strong{font:600 17px var(--serif);letter-spacing:.5px;color:#c3b0d6}.branch-name{display:inline!important;font:400 14px var(--serif);color:#857993}.branch-card small{font-size:8px;font-weight:900;color:#645873}.branch-card:hover{background:#3c324b;border-color:#806b94}.branch-card.viewing{background:#514261;border-color:#a483bc}.branch-card.viewing strong{color:#e3caf1}.branch-card.current{background:#293d30;border-color:#6d905b}.branch-card.current strong{color:#c5e3aa}.branch-card.current small{color:#a4c589}.branch-card.current .branch-symbol{color:#a6c888}.path-summary{padding:11px 20px;background:#1c202c;border-color:#343345;gap:18px}.path-identity{font-size:12px;gap:10px}.path-identity strong{color:#b9b0c8;font-weight:800}.path-dot{background:#ae93c8;width:6px;height:6px}.path-scope{font-size:11px;color:#6e6480}.path-metrics{font-size:12px;color:#80728f;gap:23px}.path-metrics b{color:#bbaaC7;font-weight:800}.path-link{font-size:11px;color:#b19ac8;font-weight:800}.path-summary .primary{font-size:11px;padding:7px 12px}
/* Prevent browser selection/drag previews on the canvas; details remain selectable. */
.map-viewport,.map-viewport *{user-select:none;-webkit-user-select:none}
.map-viewport img,.map-viewport svg{-webkit-user-drag:none}
.map-viewport .course-node{cursor:grab}
.map-viewport.dragging,.map-viewport.dragging *{cursor:grabbing!important}
/* The art is local, static, and leaves the interactive constellation geometry in code. */
.map-viewport{height:calc(100dvh - 352px);min-height:600px;background:linear-gradient(180deg,#03081088,#03081099),url('assets/galaxy-v1.png') center center/cover no-repeat,#050a12}.map-viewport:before{background:radial-gradient(ellipse at center,transparent 35%,#04070dcc 100%);opacity:.7;z-index:0}.world{z-index:1}.sky-outline{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.sky-trails{fill:none;stroke:#629dad;stroke-width:1.6;stroke-linejoin:round;opacity:.58;filter:drop-shadow(0 0 5px #568c9f55)}.catalog-stars{fill:#d4e6e6;opacity:.75;filter:drop-shadow(0 0 5px #92b4cd)}.graph-lines path{stroke:#c39870;stroke-width:1.6;stroke-dasharray:4 7;opacity:.37}.graph-lines path.coreq{stroke:#987c9e;stroke-dasharray:2 6;opacity:.4}.term-label{font-size:12px;font-weight:900;letter-spacing:2px;color:#9290ad}.term-label:after{background:#7c749544;width:55px;margin-top:14px}.term-label strong{display:block;font:600 31px var(--serif);letter-spacing:.3px;margin-top:11px;color:#d1c2df;text-shadow:0 2px 15px #000}.constellation-heading{position:absolute;font:600 36px var(--serif);color:#c9bbd9;letter-spacing:.3px}.anchor-label{font-size:12px;font-weight:900;color:#9a92ab;letter-spacing:2px;text-shadow:0 2px 8px #000}.back-foundations{padding:9px 15px;border:2px solid #685674;border-radius:9px;background:#282438e8;color:#bda8cd;font-size:14px;font-weight:800;box-shadow:0 3px 0 #0d0a16}
/* Course stars have no atomic rings or decorative orbital satellites. */
.course-node{position:absolute;width:250px;min-height:100px;border:0;background:transparent;border-radius:10px;padding:0;display:block;color:#94bad0;cursor:pointer}.skill-star{display:block;width:144px;height:112px;margin:0 auto;overflow:visible;pointer-events:none;filter:drop-shadow(0 0 8px #77a4c44d)}.star-aura{fill:currentColor;opacity:.09;filter:blur(5px)}.star-rays{fill:currentColor;opacity:.6}.star-center{fill:currentColor;opacity:.96}.star-spark{fill:#d7edf2;opacity:.95}.node-copy{position:absolute;left:var(--label-x,0px);top:var(--label-y,100px);width:252px;max-width:none;padding:9px 11px 8px;border:2px solid #435465;border-radius:12px;background:#0c1720d9;box-shadow:0 4px 0 #04080e88;text-align:center;backdrop-filter:blur(4px);pointer-events:auto}.node-copy strong{font:600 21px/1.1 var(--serif);color:#c3d2dc;-webkit-line-clamp:2;overflow:hidden;min-height:23px}.node-copy small{font-size:11px;color:#7792a4;font-weight:800;letter-spacing:1px;margin-top:6px}.course-node.locked{color:#6e8299}.locked .star-rays{opacity:.36}.locked .node-copy{background:#151b27d9;border-color:#3c4554}.locked .node-copy strong{color:#9baabe}.locked .node-copy small{color:#5e728a}.course-node.available{color:#b5d5e4}.available .node-copy{border-color:#6b91a2;background:#142734df}.available .node-copy strong{color:#daeaf0}.course-node.completed{color:#bee3a5}.completed .node-copy{border-color:#719664;background:#182a1fdf}.completed .node-copy strong{color:#c4e2b5}.course-node.active-course{color:#eac392}.active-course .node-copy{border-color:#a28b61;background:#31271cdf}.active-course .node-copy strong{color:#edd3b3}.course-node.preview{color:#c2a7d8}.preview .node-copy{border-color:#7f6b91;background:#281f38db}.preview .node-copy strong{color:#cfc0de}.course-node:hover .skill-star,.course-node.selected-node .skill-star{filter:drop-shadow(0 0 12px #bdcee566)}.course-node:hover .node-copy,.course-node.selected-node .node-copy{border-color:#ccb0df;box-shadow:0 0 0 2px #362548,0 6px 18px #0005}.course-node:hover .node-copy strong,.course-node.selected-node .node-copy strong{color:#f0e4fa}.map-controls{border:2px solid #645271;border-radius:10px;background:#272333e8;z-index:4;box-shadow:0 3px 0 #100c17}.map-controls button{height:38px;width:40px;font-size:22px;color:#bba5cf}.map-controls span{font-size:11px;font-weight:800;color:#9d84b5;width:46px}.map-controls button:last-child{border-left:1px solid #50415e}.map-controls button:hover{background:#4a385c}.pan-hint{color:#85788f;font-size:11px;font-weight:800;z-index:2;background:#11101d80;padding:5px 8px;border-radius:5px;bottom:22px;left:14px}.map-legend{padding:12px 8px;background:#1b1d2b;border-color:#383045;color:#8f819f;font-size:10px;font-weight:800;gap:21px}.legend-node{width:7px;height:7px}.legend-node.available{background:#99bdce;border-color:#99bdce}.legend-node.complete{background:#9dbd7d;border-color:#9dbd7d}.legend-node.preview{background:#ae8ac4;border-color:#ae8ac4}.legend-line{display:inline-block;width:18px;height:0;margin-right:6px;vertical-align:middle;border-top:1px solid #6195a2}.legend-line.learning{border-top:1px dashed #b5936d}
/* Bigger selection panel: information at normal reading size, with large actions. */
.inspector{width:390px;right:24px;top:275px;max-height:calc(100% - 320px);z-index:5;scrollbar-color:#695574 transparent}.paper-card{padding:25px;background:#232232f5;border:2px solid #665775;border-radius:18px;box-shadow:0 5px 0 #100d19,0 15px 40px #0006}.card-eyebrow{font-size:11px;font-weight:900;letter-spacing:1.5px;color:#ad90c2}.inspector-close{width:31px;height:31px;font-size:25px;border-radius:8px;background:#3d304f;color:#c4a9dc}.course-code{font-size:13px;letter-spacing:1px;color:#a284ba;margin-top:16px}.paper-card h2{font:600 30px/1.15 var(--serif);color:#ded0ec;margin:12px 0 18px}.course-meta{font-size:13px;gap:18px;color:#9783ac;border-color:#45384e;padding-bottom:18px}.course-status{font-size:12px;font-weight:900;padding:7px 10px;border:1px solid #66825b;border-radius:6px;background:#30412c;color:#adc994}.course-status.preview-status{background:#3d2c4d;border-color:#755788;color:#bd9dce}.prerequisite-title{font-size:13px;font-weight:900;margin:25px 0 13px;color:#b99fcc}.prereq{gap:10px;margin:12px 0}.prereq span{font-size:11px;padding:1px 5px;border-radius:4px;border-color:#604772;background:#352641;color:#a580bf}.prereq button{font-size:14px;line-height:1.4;color:#bd9cdb;text-decoration-color:#644676;text-underline-offset:4px}.prereq-met button{color:#a7c980}.paper-card p{font-size:14px;line-height:1.7;color:#a092b2;margin:15px 0}.card-note{font-size:11px!important;line-height:1.7!important;color:#85748f!important}.primary,.secondary{font-size:13px;font-weight:900;padding:13px 17px;border:2px solid #899766;border-radius:10px;background:#bfdc92;color:#354c26;box-shadow:0 3px 0 #080e15}.secondary{background:#44304f;border-color:#896596;color:#d2b6df}.primary:hover{background:#d0eaa6}.secondary:hover{background:#5d3e69}.full{margin-top:20px}.commitment-banner{border:2px solid #9c774a;border-radius:12px;padding:13px 18px;background:#3a3021;box-shadow:0 3px 0 #13101b}.commitment-banner strong{font:600 22px var(--serif);color:#d8ba94}.commitment-banner p{font-size:12px;color:#ad9373}
#journal-page,#gate-page{padding:30px 22px 45px}.eyebrow{font-size:11px;color:#ad8bbe}h1{font:600 39px var(--serif);color:#dcd0e9}h1 em,h2 em{color:#ad86c5}.journal-layout .paper-card{padding:26px}.field-label{font-size:14px;color:#b298c6}.year-select{font-size:14px;padding:12px;border:2px solid #77598a;border-radius:9px;background:#30253e;color:#c5a7d8}.path-state{font-size:12px;background:#3f2a4f;color:#b390c9;border-radius:6px;padding:7px 10px}.journal-records h2{font:600 28px var(--serif);color:#bca0d0}.records-table{font-size:14px}.records-table td{padding:16px 12px;color:#a988bf;border-color:#3d2b4a}.records-table th{font-size:10px;color:#866098;border-color:#594069}.records-table td:first-child{font-size:12px;color:#c2a0d6}.journal-empty{border:2px dashed #705485;border-radius:12px;padding:27px;background:#2b2238;color:#9979ad;font-size:14px}.history-row{font-size:14px;color:#a685bb;border-color:#514060}.gate-illustration{background:#2b2138;border:2px solid #765a86;border-radius:18px}.gate-illustration h2{font:600 31px var(--serif)}.gate-illustration svg{stroke:#9e7bae}.gate-check strong{font-size:14px}.gate-check small{font-size:12px;color:#a081b5}.gate-check{border-color:#4a335b}.section-heading h2{font:600 28px var(--serif)}.domains .domain{border:2px solid #664677;background:#2c203b;border-radius:16px}.domain h3{font:600 27px var(--serif);color:#b08ac8}.domain p{font-size:13px;color:#9370ab}
dialog{max-width:670px;border:2px solid #93759d;border-radius:20px;padding:30px;background:#282333;color:#b4a2c6;box-shadow:0 6px 0 #493851,0 25px 80px #0008}dialog h2{font:600 35px var(--serif)}dialog p{font-size:14px;color:#a090b1}.dialog-close:not(.primary):not(.secondary){width:30px;height:31px;border-radius:8px;font-size:25px;background:#45344f;color:#c8a9d8}.branch-option{border:2px solid #654770;border-radius:10px;padding:12px;background:#30243d}.branch-option strong{font-size:13px;color:#c4a4d6}.branch-option span{font-size:12px;color:#8f69a3}.branch-option:has(input:checked){border-color:#99b573;background:#31402c}.branch-option input,.check-label input{accent-color:#a5c778}.confirmation-note{font-size:12px;line-height:1.8;background:#382942;border-color:#5e436a;color:#b292c8;border-radius:10px;padding:16px}.check-label{font-size:13px;line-height:1.8;color:#b5a0c6}#reason-label{font-size:14px;color:#b994cb}textarea{font-size:14px;border:2px solid #715080;border-radius:9px;background:#30233c;color:#ba9acc;padding:12px}.muted{color:#9678a8}#toast{border:2px solid #755488;border-radius:12px;background:#3b284a;color:#d0b3e0;font-size:13px;font-weight:800;padding:15px 22px;box-shadow:0 4px 0 #1a1124}
@media(max-width:1200px){.branch-name{font-size:12px}.branch-card small{display:none}.branch-card{gap:7px}.inspector{width:355px}.rail{height:74px}.nav-item{padding:11px 15px}.map-caption #map-title{font-size:19px}.map-viewport{height:calc(100dvh - 340px)}}
@media(max-width:760px){.rail{height:65px;padding:0 14px}.brand{font-size:21px;gap:7px}.brand-mark{width:28px;height:31px}.rail nav{gap:3px}.nav-item{font-size:11px;padding:9px 10px;border-radius:8px}.nav-item>span{font-size:15px}main{padding:9px 9px 0}.map-panel{border-radius:13px}.map-toolbar{padding:11px;gap:11px}.year-tabs{gap:7px}.year-tabs button{font-size:11px;padding:8px 12px;gap:6px}.year-tabs button>span{font-size:13px}.explore-button{font-size:11px;padding:8px 11px}.map-caption{padding:12px 12px 9px}.map-caption #map-title{font-size:17px}.map-caption #map-mode{font-size:7px}.branch-cards{padding:5px 10px 12px;gap:7px}.branch-card{flex-direction:column;gap:3px;padding:7px 4px;border-radius:8px}.branch-symbol{display:none}.branch-card strong{font-size:15px}.branch-name{font-size:11px}.path-summary{padding:10px 12px;gap:10px}.path-identity{font-size:11px}.path-metrics{font-size:10px;gap:15px}.path-link{font-size:10px}.map-viewport{min-height:490px;height:calc(100dvh - 355px)}.inspector{width:min(390px,calc(100vw - 28px));top:auto;right:14px;bottom:14px;max-height:65dvh}.paper-card{padding:22px}.paper-card h2{font-size:28px}.paper-card p{font-size:14px}.prereq button{font-size:14px}.course-meta{font-size:12px}.map-legend{flex-wrap:wrap;font-size:8px;gap:8px 17px;padding:11px}.map-controls button{width:35px;height:34px}.pan-hint{font-size:9px}.primary,.secondary{font-size:12px;padding:12px 14px}dialog{padding:24px;border-radius:16px}dialog h2{font-size:31px}.branch-option strong{font-size:12px}.branch-option span{font-size:11px}.confirmation-note{font-size:11px}.check-label{font-size:12px}.records-table{font-size:11px}.records-table td:first-child{font-size:10px}}
@media(max-width:420px){.rail{height:62px}.brand{font-size:18px}.nav-item{font-size:9px;padding:8px}.year-tabs button{padding:8px 10px}.branch-name{font-size:10px}.branch-card strong{font-size:14px}.map-caption #map-title{font-size:16px}.map-viewport{height:calc(100dvh - 400px)}.path-identity{width:auto}.map-caption #map-mode{font-size:6px}}
