@font-face{font-family:Atlas;src:url('/fonts/CinzelDecorative-Regular.ttf') format('truetype');font-display:swap}
@font-face{font-family:Marauders;src:url('/fonts/UnifrakturCook-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap}
:root{--ink:#3f2f25;--muted:#75634e;--wine:#7f3d3f;--green:#3e5b50;--gold:#c6a568;--paper:#ead5a8;--cream:#fff4db;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--serif:Georgia,"Times New Roman",serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow:hidden}body{height:100dvh;color:#f8ecd7;font-family:var(--sans);background:#69758c}button,a{color:inherit;font:inherit}button{cursor:pointer}a{text-underline-offset:5px}button:focus-visible,a:focus-visible{outline:2px solid #f3cb7f;outline-offset:5px}[hidden]{display:none!important}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.svg-library{position:absolute;width:0;height:0}.skip-link{position:fixed;top:-80px;left:18px;background:#fff2d4;color:#34261d;padding:9px 12px;z-index:100}.skip-link:focus{top:12px}
.sky{position:fixed;inset:0;overflow:hidden;background:linear-gradient(155deg,#8795ae 0%,#66738b 38%,#847b89 72%,#c09a83 115%);z-index:-3}.sky:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 74% 20%,#f5d5ae44,transparent 24%),radial-gradient(circle at 18% 28%,#dce5f047,transparent 32%),linear-gradient(to bottom,#18253b18,transparent 55%)}.stars{position:absolute;inset:0;background-image:radial-gradient(circle,#fff 0 1px,transparent 1.5px),radial-gradient(circle,#ffe9c4 0 1px,transparent 1.5px);background-size:139px 119px,211px 173px;background-position:25px 18px,95px 80px;opacity:.3;animation:twinkle 8s ease-in-out infinite}.cloud{position:absolute;border-radius:50%;filter:blur(30px);background:#e9edf19e;opacity:.28;animation:drift 38s linear infinite}.cloud-one{width:42vw;height:9vw;left:-8vw;top:19%}.cloud-two{width:36vw;height:8vw;right:-7vw;top:38%;animation-duration:48s;animation-direction:reverse}.cloud-three{width:26vw;height:6vw;left:42%;top:7%;opacity:.16;animation-duration:56s}.potion{position:absolute;bottom:7%;width:30px;height:54px;border:1px solid #f7dda144;border-radius:8px 8px 13px 13px;opacity:.23;filter:drop-shadow(0 0 10px #ebbd7b);transform:rotate(-8deg)}.potion:before{content:"";position:absolute;width:13px;height:13px;left:7px;top:-11px;border:1px solid #f7dda144}.potion:after{content:"";position:absolute;inset:25px 4px 4px;border-radius:50%;background:#d7946d55;box-shadow:0 0 15px #e8a263}.potion-left{left:3%}.potion-right{right:3%;transform:rotate(9deg);bottom:13%}.potion-right:after{background:#a887c15c;box-shadow:0 0 15px #b197cf}
.page-frame{height:100dvh;max-width:1680px;margin:auto;padding:0 30px;display:flex;flex-direction:column}.site-header{height:108px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:15px 7px 8px;text-shadow:0 2px 12px #26304588}.identity h1{font-family:Atlas,"Apple Chancery",var(--serif);font-size:32px;font-weight:400;line-height:1.1;letter-spacing:.6px;margin:0 0 5px}.availability{display:inline-flex;align-items:center;gap:8px;margin:0 0 5px;padding:3px 9px;border:1px solid #e3be7688;border-radius:99px;background:#302b2b28;color:#ffe9b4;font-size:16px;font-weight:600;line-height:1.35}.availability span{width:7px;height:7px;border-radius:50%;background:#b9d790;box-shadow:0 0 9px #c9ec98}.identity #profile-headline{font-size:11px;letter-spacing:.2px;margin:0;color:#eee4d5}.site-header nav{display:flex;gap:25px;align-items:center;font-size:12px}.site-header nav button{border:0;background:none;padding:7px 0}.site-header nav a{text-decoration:none;border-bottom:1px solid transparent}.site-header nav a:hover,.site-header nav button:hover{border-bottom-color:#f1d59e;color:#fff}
main{flex:1;min-height:0;display:flex}#atlas{position:relative;flex:1;min-width:0;perspective:1400px}#load-status{position:absolute;z-index:20;left:50%;top:20px;transform:translateX(-50%);font-size:12px}.map-stage{position:absolute;inset:0 18px 4px;transform-style:preserve-3d}#three-map{position:absolute;inset:0;z-index:1;pointer-events:none}#three-map canvas{width:100%;height:100%;display:block}.map-shadow{position:absolute;z-index:0;left:12%;right:12%;bottom:5%;height:12%;border-radius:50%;background:#1d243d55;filter:blur(25px);transform:scaleX(.9);transition:all 1.15s ease}.map-open .map-shadow{transform:scaleX(1);opacity:.7}
.closed-map{position:absolute;z-index:3;width:min(460px,66vw);height:min(310px,48vh);left:50%;top:47%;transform:translate(-50%,-50%) rotateX(5deg) rotateZ(-2deg);filter:drop-shadow(0 25px 28px #26304866);transition:opacity .3s .75s,visibility .3s .75s}.fold-panel{position:absolute;top:0;bottom:0;width:35%;border:1px solid #a78050;background:linear-gradient(100deg,#c9a876,#efd8a8 48%,#b9915f);box-shadow:inset 0 0 35px #62401f2c}.fold-left{left:0;clip-path:polygon(0 5%,100% 0,95% 100%,4% 96%)}.fold-center{left:32.5%;z-index:2;background:linear-gradient(90deg,#b58f5d,#ecd3a1 35%,#c09a67);clip-path:polygon(4% 0,96% 4%,100% 96%,0 100%)}.fold-right{right:0;clip-path:polygon(5% 2%,100% 7%,96% 98%,0 96%)}.closed-map:after{content:"";position:absolute;inset:12px;border:1px solid #6f4f2d55}.wax-seal{position:absolute;z-index:4;left:50%;top:50%;translate:-50% -50%;display:grid;place-items:center;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#a95a55,#713032 70%);border:3px double #c98272;color:#e8b7a4;font:16px Atlas,var(--serif);box-shadow:0 5px 12px #41231f55}.map-open .closed-map{opacity:0;visibility:hidden;transition-delay:.1s}
.open-map{position:absolute;z-index:6;left:50%;top:47%;translate:-50% -50%;width:min(520px,82vw);height:min(360px,58vh);border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:8px;text-shadow:0 2px 10px #1d2331}.spell{font:italic 17px/1.5 var(--serif);color:#fff4d9}.open-hint{font-size:9px;letter-spacing:1.8px;text-transform:uppercase;color:#e8d8bf;margin-top:7px}.wand-glow{position:absolute;left:70%;top:28%;width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 9px 4px #ffe8a7,0 0 30px 12px #dcc28188;animation:wand 3.2s ease-in-out infinite}.map-open .open-map{pointer-events:none;opacity:0;transition:opacity .2s}.skip-intro{position:absolute;z-index:8;right:12px;top:12px;border:0;background:#28304638;color:#f3e8d6;padding:7px 10px;font-size:10px}.map-open .skip-intro{display:none}
.paper-overlay{position:absolute;z-index:4;left:6.5%;right:6.5%;top:8%;bottom:7%;color:var(--ink);transform:perspective(1200px) rotateX(3deg) scaleX(.04) translateY(10px);transform-origin:center;opacity:0;pointer-events:none;transition:transform 1.15s cubic-bezier(.18,.75,.2,1),opacity .25s .7s;filter:drop-shadow(0 8px 4px #5b3d2218)}.map-open .paper-overlay{transform:perspective(1200px) rotateX(2deg) scaleX(1) translateY(0);opacity:1;pointer-events:auto}.paper-overlay:before,.paper-overlay:after{content:"";position:absolute;inset:1.5%;border:1px solid #7453333b;pointer-events:none}.paper-overlay:after{inset:2.4%;border-style:double}.paper-ornament{position:absolute;inset:3.2%;background:linear-gradient(90deg,transparent 49.7%,#79583c1a 50%,transparent 50.3%);pointer-events:none}.map-title{position:absolute;left:50%;top:5%;translate:-50%;text-align:center;white-space:nowrap}.map-title span{display:block;font:9px/1.3 var(--sans);letter-spacing:2.5px;text-transform:uppercase}.map-title strong{display:block;font:26px/1.2 Atlas,"Apple Chancery",var(--serif);font-weight:400;margin-top:4px}.route-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;color:#755539}.route-lines .route{fill:none;stroke:currentColor;stroke-width:1.4;stroke-dasharray:4 8;opacity:.55}.route-lines circle{fill:#755539;opacity:.6}#map-nodes{position:absolute;inset:0}.map-node{position:absolute;left:var(--x);top:var(--y);translate:-50% -50%;width:var(--w,17%);min-width:105px;padding:5px;border:0;background:none;color:var(--ink);text-align:center;filter:drop-shadow(0 7px 3px #50351e28);transition:translate .25s,color .25s,filter .25s}.map-node:hover,.map-node[aria-expanded=true]{translate:-50% calc(-50% - 8px);color:var(--wine);filter:drop-shadow(0 13px 5px #50351e38)}.node-icon{width:var(--icon,54px);height:calc(var(--icon,54px) * 1.05);margin:auto;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.node-title{display:block;font:var(--size,19px)/1.15 Atlas,"Apple Chancery",var(--serif);margin-top:2px}.node-tag{display:block;font:8px/1.3 var(--sans);color:var(--muted);margin-top:4px}.map-node.major{--icon:72px;--size:24px;--w:21%}.map-node.medium{--icon:54px;--size:19px}.map-node.minor{--icon:35px;--size:14px;--w:14%;opacity:.88}.map-node.projects{color:var(--green)}.map-node.personal{color:#684e6a}.map-motto{position:absolute;left:50%;bottom:4%;translate:-50%;font:italic 10px var(--serif);letter-spacing:.8px;color:#715b44}.close-map{position:absolute;z-index:9;right:3%;bottom:3%;border:0;border-bottom:1px solid #76533c;background:#ead4aa99;color:var(--ink);padding:7px 10px;text-align:right;opacity:0;pointer-events:none;transition:opacity .3s 1s}.close-map span{display:block;font:italic 13px var(--serif)}.close-map small{font:8px var(--sans);letter-spacing:1px;text-transform:uppercase}.map-open .close-map{opacity:1;pointer-events:auto}
.timeline-panel{position:fixed;z-index:30;width:min(455px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:17px 20px 20px;background:#f6ead1f7;color:var(--ink);border:1px solid #ad8d62;border-radius:7px;box-shadow:0 17px 55px #20284066,inset 0 0 30px #9d73451a;backdrop-filter:blur(7px);animation:ink-in .2s ease-out}.timeline-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #8f724344;padding-bottom:9px}.timeline-top h3{font:22px Atlas,var(--serif)}.timeline-close{border:0;background:none;font-size:22px}.timeline-list{list-style:none;padding:8px 0 0;margin:0}.timeline-row{display:grid;grid-template-columns:90px 1fr;gap:16px}.timeline-row.undated{grid-template-columns:1fr;padding-left:12px}.timeline-date{font:9px/1.5 var(--sans);color:var(--muted);text-align:right;padding-top:14px}.timeline-choice{position:relative;width:100%;border:0;border-left:1px solid #94734166;background:none;text-align:left;padding:10px 10px 12px 18px}.timeline-choice:before{content:"";position:absolute;left:-4px;top:17px;width:7px;height:7px;border:1px solid #8d6c3d;background:#f6ead1;border-radius:50%}.timeline-row:last-child .timeline-choice{border-left-color:transparent}.timeline-choice:hover,.timeline-choice[aria-pressed=true]{background:#ddc59f55;color:var(--wine)}.timeline-choice[aria-pressed=true]:before{background:var(--wine)}.timeline-title{display:block;font:15px/1.4 var(--serif)}.timeline-meta{display:block;font:9px/1.5 var(--sans);color:var(--muted);margin-top:4px}.timeline-empty{font-size:12px;color:var(--muted);margin:12px 0}
.field-notes{position:fixed;inset:0;margin:auto;width:min(680px,calc(100vw - 28px));max-height:84dvh;overflow:auto;padding:28px 34px;background:#fff3d9;color:var(--ink);border:1px solid #ae8a5e;border-radius:8px;box-shadow:0 25px 90px #17203588,inset 0 0 45px #95693b13}.field-notes:not([open]){display:none}.field-notes::backdrop{background:#26314966;backdrop-filter:blur(5px)}.notes-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.eyebrow{margin:0;font:9px var(--sans);letter-spacing:1.6px;color:var(--muted)}.close-button{background:none;border:1px solid #8c6f4744;padding:5px 9px}.field-notes h2{font:29px/1.3 Atlas,var(--serif);font-weight:400;margin:0 0 19px}.entry .dates,.entry .meta{font-size:11px;color:var(--muted)}.entry .meta{color:var(--wine);margin-bottom:18px}.entry ul{padding-left:20px}.entry li{font:14px/1.75 var(--sans);margin-bottom:12px}.entry .technologies{font:11px/1.7 var(--sans);color:var(--green)}.card-links{display:flex;gap:20px;flex-wrap:wrap;margin-top:20px;font-size:12px}#notes-content>p{font-size:14px;line-height:1.8}
footer{height:40px;display:grid;place-items:center;flex:0 0 auto}footer blockquote{margin:0;text-align:center;font:italic 11px/1.5 var(--serif);color:#eee4da;text-shadow:0 2px 10px #263046}footer cite{font-style:normal;color:#ddc8ac;margin-left:5px}
@keyframes drift{50%{translate:9vw 1vw}}@keyframes twinkle{50%{opacity:.5}}@keyframes wand{0%,100%{transform:translate(0,0);opacity:.6}50%{transform:translate(14px,-9px);opacity:1}}@keyframes ink-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-height:760px) and (min-width:751px){.site-header{height:92px}.identity h1{font-size:26px}.availability{font-size:13px}.map-title strong{font-size:21px}.map-node.major{--icon:60px;--size:20px}.map-node.medium{--icon:45px;--size:16px}}
@media(max-width:750px){html,body{overflow:auto}body{min-height:100dvh}.page-frame{min-height:100dvh;height:auto;padding:0 10px}.site-header{height:auto;min-height:128px;align-items:flex-start;padding:14px 4px 8px}.identity h1{font-size:24px}.availability{font-size:13px}.identity #profile-headline{font-size:8px;max-width:245px}.site-header nav{gap:8px;flex-direction:column;align-items:flex-end;font-size:10px}.site-header nav button{padding:0}main{height:690px;flex:none;width:100%}.map-stage{inset:0}.paper-overlay{left:1%;right:1%;top:6%;bottom:5%}.map-title{top:4%}.map-title strong{font-size:18px}.route-lines{display:none}.map-node{left:var(--mobile-x,var(--x));top:var(--mobile-y,var(--y));width:27%;min-width:72px}.map-node.major{--icon:48px;--size:17px;--w:28%}.map-node.medium{--icon:38px;--size:14px}.map-node.minor{--icon:28px;--size:11px;--w:22%}.node-tag{font-size:6px}.map-motto{font-size:8px}.close-map{right:2%;bottom:2%}footer{height:auto;min-height:46px;padding:6px}footer blockquote{font-size:9px}.timeline-panel{max-height:74dvh;padding:14px 15px}.timeline-row{grid-template-columns:70px 1fr;gap:10px}.timeline-date{font-size:8px}.timeline-title{font-size:13px}.field-notes{padding:22px}.field-notes h2{font-size:23px}.entry li{font-size:13px}.potion{display:none}}
.paper-overlay{translate:0 0 80px}.open-map{translate:-50% -50% 180px}.open-map .spell{position:relative;z-index:2;padding:5px 14px;border:1px solid #76513b55;border-radius:3px;background:#efd8adf0;color:#4c3028;text-shadow:none;box-shadow:0 5px 18px #35271d33}.open-map .open-hint{position:relative;z-index:2;color:#fff4dc}.close-map{translate:0 0 130px;transition:opacity .25s}.identity h1,.map-title strong{font-family:"Apple Chancery",Atlas,var(--serif)}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.paper-overlay{transition:none}.map-open .paper-overlay{transform:none}}

/* Marauder's Map rebuild: accordion folds, living ink, and parchment cartography. */
.map-stage{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M5 27 25 7' stroke='%23f7dd9b' stroke-width='3' stroke-linecap='round'/%3E%3Cpath d='m24 3 1.5 3.5L29 8l-3.5 1.5L24 13l-1.5-3.5L19 8l3.5-1.5Z' fill='%23fff2ba'/%3E%3C/svg%3E") 5 27,auto}
.closed-map{width:min(430px,62vw);height:min(300px,42vh);top:48%;transform:translate(-50%,-50%) rotateX(7deg) rotateZ(-1.2deg);filter:drop-shadow(0 28px 30px #20283d77);perspective:1000px;transform-style:preserve-3d;background:none}
.closed-map:after{inset:5px;border:1px solid #75523166;box-shadow:inset 0 0 34px #6f461f33}
.fold-panel{top:0;bottom:0;width:14.7%;border:1px solid #89643e66;background:linear-gradient(92deg,#b78e59,#ead1a0 28%,#f0ddb1 56%,#b88d56);box-shadow:inset 10px 0 18px #6e451c22,inset -8px 0 15px #fff5cf22;transform-origin:left center;clip-path:polygon(1% 1%,99% 0,100% 98%,2% 100%)}
.fold-1{left:0;transform:rotateY(13deg)}.fold-2{left:14.15%;transform:rotateY(-13deg);filter:brightness(.91)}.fold-3{left:28.3%;transform:rotateY(13deg)}.fold-4{left:42.45%;transform:rotateY(-13deg);filter:brightness(.92)}.fold-5{left:56.6%;transform:rotateY(13deg)}.fold-6{left:70.75%;transform:rotateY(-13deg);filter:brightness(.91)}.fold-7{left:84.9%;transform:rotateY(13deg)}
.fold-panel:before{content:"";position:absolute;inset:12px 8px;border-top:1px solid #704d2d55;border-bottom:1px solid #704d2d44;background:repeating-linear-gradient(0deg,transparent 0 31px,#6e4c2c18 32px 33px)}
.fold-panel:after{content:"";position:absolute;left:50%;top:8%;bottom:8%;border-left:1px dashed #72503233}
.closed-cartouche{position:absolute;z-index:4;left:50%;top:50%;translate:-50% -50% 45px;width:72%;padding:18px 12px;text-align:center;color:#65442e;border:1px solid #6c4b3044;background:#ead1a0bb;box-shadow:0 4px 14px #55371e2b}
.closed-cartouche small{display:block;font:7px/1.5 var(--serif);letter-spacing:.45px}.closed-cartouche strong{display:block;margin-top:8px;font:24px/1.05 "Apple Chancery",Atlas,var(--serif);font-weight:400}
.map-open .closed-map{opacity:0;visibility:hidden;transform:translate(-50%,-50%) rotateX(2deg) scaleX(2.2);transition:transform 1.05s cubic-bezier(.25,.75,.2,1),opacity .24s .72s,visibility .1s 1s}
.map-open .fold-1{transform:translateX(-110%) rotateY(-4deg)}.map-open .fold-2{transform:translateX(-75%) rotateY(4deg)}.map-open .fold-3{transform:translateX(-38%) rotateY(-3deg)}.map-open .fold-5{transform:translateX(38%) rotateY(3deg)}.map-open .fold-6{transform:translateX(75%) rotateY(-4deg)}.map-open .fold-7{transform:translateX(110%) rotateY(4deg)}
.fold-panel{transition:transform .95s cubic-bezier(.2,.72,.2,1)}.fold-2,.fold-6{transition-delay:.08s}.fold-1,.fold-7{transition-delay:.16s}
.open-map{justify-content:flex-end;padding-bottom:0}.open-map .spell{bottom:-26px}.open-map .open-hint{bottom:-31px}
.wand-glow{pointer-events:none}
.magic-spark{position:fixed;z-index:80;width:8px;height:8px;border-radius:50%;pointer-events:none;background:#fff8d7;box-shadow:0 0 9px 4px #ffe59b,0 0 25px 12px #f0ce7a88;animation:spark-out .7s ease-out forwards}
.castle-plan{position:absolute;inset:10% 7%;opacity:0;color:#6d4b31;transition:opacity .55s .65s}
.map-open .castle-plan{opacity:.22}.room{position:absolute;border:1px solid currentColor}.room:after{content:"";position:absolute;inset:5px;border:1px solid currentColor}.room-a{left:7%;top:11%;width:21%;height:18%;border-radius:48% 48% 8px 8px}.room-b{right:6%;top:9%;width:22%;height:22%;transform:rotate(3deg)}.room-c{left:12%;bottom:7%;width:19%;height:17%;transform:rotate(-2deg)}.room-d{right:12%;bottom:5%;width:24%;height:18%;border-radius:7px 7px 45% 45%}.corridor{position:absolute;height:1px;border-top:1px solid currentColor;transform-origin:left}.corridor-a{left:25%;top:24%;width:53%;transform:rotate(6deg)}.corridor-b{left:27%;bottom:21%;width:52%;transform:rotate(-7deg)}.stair{position:absolute;width:55px;height:36px;background:repeating-linear-gradient(0deg,transparent 0 5px,currentColor 6px 7px);border-left:1px solid currentColor;border-right:1px solid currentColor}.stair-a{left:43%;top:24%;rotate:12deg}.stair-b{right:37%;bottom:18%;rotate:-10deg}
.route-lines .route{stroke-dasharray:7 10;stroke-dashoffset:520;transition:stroke-dashoffset 1.7s .55s ease}.map-open .route-lines .route{stroke-dashoffset:0}.route-lines circle{opacity:0;transition:opacity .35s 1.45s}.map-open .route-lines circle{opacity:.6}
.map-node{opacity:0;translate:-50% calc(-50% + 7px);transition:opacity .36s,translate .36s,color .25s,filter .25s}.map-open .map-node{opacity:1;translate:-50% -50%}.map-open .map-node:nth-child(1){transition-delay:.75s}.map-open .map-node:nth-child(2){transition-delay:.87s}.map-open .map-node:nth-child(3){transition-delay:.95s}.map-open .map-node:nth-child(4){transition-delay:1.05s}.map-open .map-node:nth-child(5){transition-delay:1.15s}.map-open .map-node:nth-child(n+6){transition-delay:1.25s}.map-open .map-node:hover,.map-open .map-node[aria-expanded=true]{translate:-50% calc(-50% - 8px)}
.footsteps{position:absolute;z-index:2;width:180px;height:55px;opacity:0;transition:opacity .4s 1.45s}.map-open .footsteps{opacity:.42}.footsteps-a{left:31%;top:37%;rotate:8deg}.footsteps-b{right:23%;bottom:24%;rotate:-13deg}.footsteps i{position:absolute;width:6px;height:11px;border-radius:55% 45% 60% 40%;background:#68472f;opacity:.15;animation:footprint 4.8s ease-in-out infinite}.footsteps i:nth-child(odd){transform:rotate(-22deg)}.footsteps i:nth-child(even){transform:rotate(19deg);margin-top:13px}.footsteps i:nth-child(1){left:0;animation-delay:0s}.footsteps i:nth-child(2){left:28px;animation-delay:.45s}.footsteps i:nth-child(3){left:58px;animation-delay:.9s}.footsteps i:nth-child(4){left:88px;animation-delay:1.35s}.footsteps i:nth-child(5){left:120px;animation-delay:1.8s}.footsteps i:nth-child(6){left:152px;animation-delay:2.25s}
@keyframes footprint{0%,18%{opacity:.08;transform:translateY(4px) scale(.85) rotate(-15deg)}30%,65%{opacity:.85;transform:translateY(0) scale(1) rotate(-15deg)}100%{opacity:.08}}@keyframes spark-out{to{opacity:0;transform:scale(3.5)}}
@media(max-width:750px){.closed-map{width:min(340px,80vw);height:270px}.closed-cartouche strong{font-size:20px}.open-map .spell{bottom:-12px;white-space:normal;width:90%}.open-map .open-hint{bottom:-16px}.castle-plan{inset:12% 4%}.footsteps{transform:scale(.72)}}
.identity h1,.map-title strong,.closed-cartouche strong{font-family:Marauders,"Apple Chancery",Atlas,var(--serif);letter-spacing:.6px}.identity h1{font-size:39px}.map-title strong{font-size:31px}.node-title{font-family:Marauders,Atlas,var(--serif);font-size:calc(var(--size,19px) * 1.08)}

/* Visual reset based on the physical prop references: one illustrated sheet, not UI cards. */
.identity h1{font-family:"Apple Chancery",var(--serif);font-size:36px;font-style:italic;letter-spacing:.2px}.map-title strong,.closed-cartouche strong{font-family:Atlas,var(--serif);font-weight:400;letter-spacing:1px}.node-title{font-family:Atlas,var(--serif);font-size:var(--size,18px);letter-spacing:.3px}
.closed-map{width:min(390px,58vw);height:min(470px,60vh);top:48%;background:#c39b68;border:1px solid #6e472d;box-shadow:0 3px 0 #7f5738,0 28px 42px #20283d66;filter:none;overflow:hidden;transform:translate(-50%,-50%) rotateX(4deg) rotateZ(-1deg)}
.closed-map:after{inset:9px;border:1px solid #5e3d2844;box-shadow:inset 0 0 55px #4b2c1677;z-index:3}
.map-cover{position:absolute;top:0;bottom:0;width:50%;background-image:linear-gradient(#8c5f3630,#8c5f3630),url('/images/enchanted-atlas-map-v2.png');background-size:auto 100%;filter:sepia(.18) contrast(1.03) brightness(.82)}
.cover-left{left:0;background-position:left center;border-right:1px solid #3e271ca8;box-shadow:inset -14px 0 22px #40261755}.cover-right{right:0;background-position:right center;border-left:1px solid #e5c59555;box-shadow:inset 14px 0 22px #40261755}
.closed-cartouche{top:26%;width:82%;padding:17px 14px 20px;background:#c99f6ed9;border:0;border-top:1px solid #55341e99;border-bottom:1px solid #55341e99;box-shadow:0 7px 16px #321d1255;color:#39251c}.closed-cartouche small{font:italic 12px/1.3 "Apple Chancery",var(--serif);letter-spacing:.3px}.closed-cartouche strong{font-size:29px;margin-top:7px}.closed-cartouche em{display:block;margin-top:10px;font:8px/1.3 var(--serif);font-style:normal;letter-spacing:1.4px;text-transform:uppercase}
.map-open .closed-map{transform:translate(-50%,-50%) rotateX(2deg) scaleX(2.05);opacity:0}.map-open .cover-left{transform:translateX(-58%) rotateY(-7deg)}.map-open .cover-right{transform:translateX(58%) rotateY(7deg)}.map-cover{transition:transform 1s cubic-bezier(.18,.72,.2,1)}
.paper-overlay{left:5.8%;right:5.8%;top:7%;bottom:6%;background-image:linear-gradient(#9b6c3a08,#9b6c3a08),url('/images/enchanted-atlas-interior-v3.png');background-size:100% 100%;background-position:center;border:1px solid #6c472c66;clip-path:polygon(.4% 1%,4% .2%,9% .8%,14% .1%,21% .6%,28% .1%,35% .7%,42% .1%,50% .5%,58% .1%,66% .7%,74% .1%,82% .6%,90% .1%,96% .8%,99.6% 1%,99.2% 13%,99.7% 25%,99.1% 38%,99.7% 51%,99.1% 64%,99.6% 77%,99.1% 90%,99.5% 99%,91% 99.5%,82% 99%,73% 99.6%,64% 99%,55% 99.5%,46% 99%,37% 99.6%,28% 99%,19% 99.5%,10% 99%,.5% 99.4%,1% 87%,.4% 74%,1% 61%,.4% 48%,1% 35%,.4% 22%)}
.paper-overlay:before{inset:1%;border:0;box-shadow:inset 0 0 34px #4f2f1766}.paper-overlay:after{display:none}.paper-ornament,.castle-plan{display:none}.map-title{top:3.3%;padding:5px 18px;background:#d6b17ca8;border-bottom:1px solid #5c3b2455}.map-title span{font-family:var(--serif);color:#4b3022}.map-title strong{font-size:26px;color:#3d281f}
.route-lines{opacity:.58;mix-blend-mode:multiply}.route-lines .route{stroke:#4b3025;stroke-width:1.2;stroke-dasharray:4 9}.route-lines circle{fill:#4b3025}
.node-icon{display:none}.map-node{min-height:55px;width:var(--w,18%);padding:7px 9px;color:#34241d;filter:none;text-shadow:0 1px #efd6aa,0 0 8px #e8c58d}.map-node:after{content:"";position:absolute;left:18%;right:18%;bottom:1px;height:1px;background:#4b302566;transform:scaleX(.35);transition:transform .25s}.map-node:hover:after,.map-node[aria-expanded=true]:after{transform:scaleX(1)}.map-node:hover,.map-node[aria-expanded=true]{color:#6f2f29;filter:none}.map-node.major{--size:22px}.map-node.medium{--size:18px}.map-node.minor{--size:14px;opacity:1}.node-tag{font:8px/1.3 var(--serif);color:#5a4637;text-transform:uppercase;letter-spacing:.45px}.map-motto{bottom:2.2%;padding:2px 8px;background:#d3ae7999;color:#493023}
.map-node{isolation:isolate}.map-node:before{content:"";position:absolute;z-index:-1;inset:-12px -18px;background:radial-gradient(ellipse,#e6c38ed9 0%,#e6c38e9e 38%,transparent 72%);opacity:.72;transition:opacity .25s}.map-node:hover:before,.map-node[aria-expanded=true]:before{opacity:.96}.node-title{font-weight:400}.node-tag{font-weight:600;text-shadow:0 1px #efd6aa}
.open-map .spell{background:#cda56f;color:#352219;border:1px solid #563620aa;border-radius:45% 8% 42% 9%/18% 42% 16% 45%;box-shadow:inset 0 0 12px #5c391f33,0 5px 16px #30201633;font-family:var(--serif);font-style:normal}.open-map .spell:before,.open-map .spell:after{content:"";position:absolute;top:-3px;width:30px;height:calc(100% + 6px);background:#bd915d;border:1px solid #56362088;z-index:-1}.open-map .spell:before{left:-20px;border-radius:70% 0 0 45%;transform:rotate(-8deg)}.open-map .spell:after{right:-20px;border-radius:0 70% 45% 0;transform:rotate(8deg)}
.open-map .open-hint{color:#f6e7cc;text-shadow:0 2px 7px #273046}.footsteps i{background:#3d281f}
@media(max-width:750px){.closed-map{width:min(310px,76vw);height:390px}.paper-overlay{left:1%;right:1%;background-size:cover}.map-title strong{font-size:19px}.map-node{padding:4px}.node-title{font-size:calc(var(--size,15px) * .88)}.node-tag{font-size:6px}}

/* Approved closed-cover and activation-ribbon artwork. */
.closed-map{
  width:auto;
  height:min(520px,62vh);
  aspect-ratio:2/3;
  background:url('/images/personal-atlas-cover-v3.png') center/cover no-repeat;
  border:0;
  box-shadow:0 3px 0 #7f5738,0 28px 42px #20283d66;
}
.closed-map:after,.map-cover,.closed-cartouche{display:none}
.open-map{width:min(430px,72vw);height:min(570px,70vh);padding:0}
.spell-ribbon-image{
  position:absolute;
  left:50%;
  bottom:2.5%;
  width:min(330px,68vw);
  height:auto;
  transform:translateX(-50%);
  filter:drop-shadow(0 6px 9px #24170f66);
  pointer-events:none;
}
.open-map .open-hint{position:absolute;z-index:2;left:50%;bottom:0;transform:translateX(-50%);margin:0;white-space:nowrap;color:#f6e7cc;text-shadow:0 2px 7px #273046}
@media(max-width:750px){
  .closed-map{width:auto;height:min(480px,58vh)}
  .open-map{width:min(360px,88vw);height:min(520px,64vh)}
  .spell-ribbon-image{width:min(290px,76vw)}
}

/* Continuous book-fold reveal: the cover opens, then the same sheet spreads into the map. */
.map-stage{cursor:auto}
#three-map,.wand-glow,.magic-spark{display:none!important}
.closed-map{
  background:none;
  overflow:visible;
  perspective:1200px;
  transform-style:preserve-3d;
  transition:opacity .22s .82s,visibility 0s 1.05s,transform 1s cubic-bezier(.2,.72,.18,1);
}
.cover-leaf{
  position:absolute;
  top:0;
  bottom:0;
  width:50.15%;
  backface-visibility:hidden;
  background-image:url('/images/personal-atlas-cover-v3.png');
  background-size:200% 100%;
  border:1px solid #69472d;
  transition:transform 1s cubic-bezier(.16,.76,.18,1),filter .75s,opacity .18s .82s;
}
.cover-leaf-left{left:0;background-position:left center;transform-origin:right center;box-shadow:inset -12px 0 20px #3e25195c,0 20px 34px #20283d55}
.cover-leaf-right{right:0;background-position:right center;transform-origin:left center;box-shadow:inset 12px 0 20px #3e25195c,0 20px 34px #20283d55}
.map-open .closed-map{visibility:hidden;opacity:0;transform:translate(-50%,-50%) rotateX(1deg) rotateZ(0deg) scale(.98)}
.map-open .cover-leaf-left{transform:rotateY(-112deg) translateX(-7%);filter:brightness(.76);opacity:0}
.map-open .cover-leaf-right{transform:rotateY(112deg) translateX(7%);filter:brightness(.84);opacity:0}
.paper-overlay{
  transform:perspective(1200px) rotateX(5deg) scaleX(.34) scaleY(.9) translateY(5px);
  transform-origin:center center;
  opacity:0;
  transition:transform 1.05s .12s cubic-bezier(.16,.76,.18,1),opacity .24s .14s,filter .8s .2s;
  filter:drop-shadow(0 20px 22px #20283d38) brightness(.92);
}
.map-open .paper-overlay{
  transform:perspective(1200px) rotateX(2deg) scaleX(1) scaleY(1) translateY(0);
  opacity:1;
  filter:drop-shadow(0 18px 15px #20283d4a) brightness(1);
}
.paper-overlay:before{background:linear-gradient(90deg,transparent 48.8%,#4b2d1b20 49.7%,#fff0c01c 50%,#4b2d1b24 50.3%,transparent 51.2%)}
.open-map{cursor:pointer}
.open-map:before,.open-map:after{
  content:"";
  position:absolute;
  left:50%;
  bottom:6%;
  width:18px;
  height:18px;
  border-radius:50%;
  opacity:0;
  pointer-events:none;
}
.spell-casting .open-map:before{animation:spell-flare .56s ease-out both}
.spell-casting .open-map:after{animation:spell-ring .56s ease-out both}
.spell-casting .spell-ribbon-image{animation:ribbon-cast .56s ease-in-out both}
.map-open .open-map{transition:opacity .18s;opacity:0;pointer-events:none}
.map-closing .open-map{opacity:0;pointer-events:none}
.map-closed:not(.map-closing) .open-map{animation:spell-return .28s ease-out both}
@keyframes spell-flare{0%{opacity:0;transform:translate(-50%,0) scale(.2);box-shadow:0 0 0 #fff4bc}40%{opacity:1;box-shadow:0 0 14px 7px #fff0a6,0 0 42px 18px #e6c66b99}100%{opacity:0;transform:translate(-50%,-8px) scale(2.8);box-shadow:0 0 22px 8px #fff4bc00}}
@keyframes spell-ring{0%{opacity:0;transform:translate(-50%,0) scale(.2);border:1px solid #fff1a8}35%{opacity:.9}100%{opacity:0;transform:translate(-50%,0) scale(8);border:1px solid #ffe6a000}}
@keyframes ribbon-cast{0%,100%{filter:drop-shadow(0 6px 9px #24170f66)}45%{filter:drop-shadow(0 0 7px #fff5c6) drop-shadow(0 0 18px #e9c872);transform:translateX(-50%) scale(1.025)}}
@keyframes spell-return{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.cover-leaf,.closed-map,.paper-overlay{transition:none!important}.spell-casting .open-map:before,.spell-casting .open-map:after,.spell-casting .spell-ribbon-image{animation:none!important}}

/* Enchanted night-sky backdrop: quiet, sparse, and warm around the parchment. */
body{background:#0d1422}
.sky{
  background:
    radial-gradient(ellipse at 50% 49%,#80613b24 0%,#26314918 23%,transparent 46%),
    linear-gradient(155deg,#111827 0%,#192338 48%,#0c1423 100%);
}
.sky:before{
  background:
    radial-gradient(ellipse at 50% 51%,#e2b86b1c 0%,#b38a4d0c 19%,transparent 43%),
    radial-gradient(circle at 17% 22%,#31415f20 0%,transparent 31%),
    linear-gradient(to bottom,#05091220,transparent 42%,#05091232 100%);
}
.stars{
  opacity:.34;
  background-image:
    radial-gradient(circle,#f9e9c8 0 1px,transparent 1.35px),
    radial-gradient(circle,#dce7ff 0 .8px,transparent 1.2px),
    radial-gradient(circle,#f3d5a1 0 .7px,transparent 1.1px);
  background-size:337px 281px,463px 347px,571px 419px;
  background-position:31px 24px,173px 91px,284px 37px;
  animation-duration:12s;
}
.cloud{
  background:#7182a34d;
  filter:blur(48px);
  opacity:.1;
  animation-duration:58s;
}
.cloud-one{width:34vw;height:5vw;left:-7vw;top:58%}
.cloud-two{width:31vw;height:5vw;right:-8vw;top:38%;animation-duration:72s}
.cloud-three{width:24vw;height:4vw;left:43%;top:12%;opacity:.055;animation-duration:84s}
.potion{display:none}
.map-shadow{background:#05091488;filter:blur(30px)}
.identity h1{color:#e8c58e;text-shadow:0 2px 14px #02050bcc}
.site-header,.site-header nav{color:#e6d4b9}
.identity #profile-headline{color:#c8c6c4}
.availability{background:#0b101c66;border-color:#d2aa646b;color:#f1d7a4}
footer blockquote{color:#c8c4c0;text-shadow:0 2px 12px #02050b}

/* Fluid state handoff: at least one parchment layer remains visible throughout. */
.closed-map{
  visibility:visible!important;
  opacity:1;
  transform:translate(-50%,-50%) rotateX(4deg) rotateZ(-1deg) translateY(0);
  transition:transform .88s cubic-bezier(.22,1,.36,1),opacity .2s .64s;
}
.cover-leaf{
  opacity:1;
  transition:transform .82s cubic-bezier(.22,1,.36,1),filter .68s ease,opacity .18s .62s;
}
.map-opening .closed-map,.map-open .closed-map{
  visibility:visible!important;
  opacity:0;
  transform:translate(-50%,-50%) rotateX(1deg) rotateZ(0deg) translateY(-5px) scale(.985);
}
.map-opening .cover-leaf-left,.map-open .cover-leaf-left{transform:rotateY(-108deg) translateX(-6%);filter:brightness(.78);opacity:0}
.map-opening .cover-leaf-right,.map-open .cover-leaf-right{transform:rotateY(108deg) translateX(6%);filter:brightness(.84);opacity:0}
.map-closing .closed-map{visibility:visible!important;opacity:1;transition:transform .9s cubic-bezier(.22,1,.36,1),opacity .12s}
.map-closing .cover-leaf{opacity:1;transition:transform .86s .08s cubic-bezier(.22,1,.36,1),filter .68s ease,opacity .12s}
.paper-overlay{
  opacity:0;
  transform:perspective(1200px) rotateX(5deg) scaleX(.34) scaleY(.92) translateY(-4px);
  transition:transform .92s cubic-bezier(.22,1,.36,1),opacity .2s,filter .72s ease;
}
.map-opening .paper-overlay,.map-open .paper-overlay{
  opacity:1;
  transform:perspective(1200px) rotateX(2deg) scaleX(1) scaleY(1) translateY(0);
  filter:drop-shadow(0 18px 15px #02071270) brightness(1);
}
.map-closing .paper-overlay{
  opacity:0;
  transform:perspective(1200px) rotateX(6deg) scaleX(.34) scaleY(.92) translateY(-5px);
  transition:transform .84s cubic-bezier(.22,1,.36,1),opacity .18s .58s,filter .72s ease;
}
.map-opening .open-map,.map-closing .open-map{opacity:0;pointer-events:none}
.map-opening .skip-intro,.map-closing .skip-intro{display:none}
.map-opening .map-shadow{transform:scaleX(1);opacity:.7}
.map-closing .map-shadow{transform:scaleX(.9);opacity:.82;transition:all .86s cubic-bezier(.22,1,.36,1)}
@media(prefers-reduced-motion:reduce){.map-opening .closed-map,.map-closing .closed-map,.map-opening .paper-overlay,.map-closing .paper-overlay{transition:none!important}}

/* Recognizable shoe prints: separate forefoot and heel instead of ink-drop ovals. */
.footsteps i{
  --turn:-18deg;
  width:9px;
  height:18px;
  border-radius:0;
  background:none;
  opacity:.12;
  transform-origin:center;
  animation:footprint 4.8s ease-in-out infinite;
}
.footsteps i::before,.footsteps i::after{
  content:"";
  position:absolute;
  display:block;
  background:#39251c;
}
.footsteps i::before{
  left:0;
  top:0;
  width:9px;
  height:11px;
  border-radius:58% 42% 48% 52%/66% 62% 38% 34%;
  box-shadow:inset 0 -2px 0 #ead0a326;
}
.footsteps i::after{
  left:2px;
  bottom:0;
  width:5px;
  height:5px;
  border-radius:45% 45% 55% 55%;
}
.footsteps i:nth-child(odd),.footsteps i:nth-child(even){margin-top:0}
.footsteps i:nth-child(1){top:27px;--turn:76deg}
.footsteps i:nth-child(2){top:10px;--turn:78deg}
.footsteps i:nth-child(3){top:25px;--turn:80deg}
.footsteps i:nth-child(4){top:9px;--turn:82deg}
.footsteps i:nth-child(5){top:22px;--turn:84deg}
.footsteps i:nth-child(6){top:7px;--turn:86deg}
.footsteps-b i:nth-child(1){top:25px;--turn:72deg}
.footsteps-b i:nth-child(2){top:9px;--turn:75deg}
.footsteps-b i:nth-child(3){top:22px;--turn:78deg}
.footsteps-b i:nth-child(4){top:7px;--turn:81deg}
@keyframes footprint{
  0%,18%{opacity:.04;transform:translateY(4px) scale(.82) rotate(var(--turn))}
  30%,65%{opacity:.8;transform:translateY(0) scale(1) rotate(var(--turn))}
  100%{opacity:.04;transform:translateY(-2px) scale(.94) rotate(var(--turn))}
}

