:root{--bg:#0b1020;--surface:#121a30;--border:#23304f;--text:#e2e8f0;--muted:#94a3b8;--accent:#5eead4;--accent-2:#a78bfa;--error:#fb7185;--radius:12px;--font:"Space Grotesk", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;line-height:1.6}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0 0 .5em;line-height:1.2}.mono{font-family:var(--mono)}.small{font-size:.8rem}.muted{color:var(--muted)}.accent{color:var(--accent)}.error{color:var(--error)}.success{color:var(--accent)}.section{max-width:1000px;margin:0 auto;padding:96px 24px}.section-title{margin-bottom:1.5rem;font-size:1.8rem}.navbar{z-index:10;box-sizing:border-box;justify-content:space-between;align-items:center;gap:12px;height:64px;padding:0 24px;display:flex;position:sticky;top:0}.navbar nav{gap:14px;margin-left:auto;display:flex;position:relative}.navbar-sign{color:#fbecc6;letter-spacing:.03em;text-shadow:2px 2px #24160a;white-space:nowrap;background:repeating-linear-gradient(#0000 0 5px,#24160a2e 5px 6px,#0000 6px 11px),linear-gradient(#b07f48,#96683a 55%,#82592f);border:3px solid #24160a;padding:6px 16px 5px;font-size:1rem;font-weight:600;line-height:1.2;transition:transform .15s;display:inline-block;position:relative;box-shadow:0 3px #24160a,inset 0 2px #ffe2aa47}.navbar-sign:before,.navbar-sign:after{content:"";background:#b9b4a8;width:4px;height:4px;position:absolute;top:calc(50% - 2px);box-shadow:1px 1px #4a463f}.navbar-sign:before{left:4px}.navbar-sign:after{right:4px}.navbar-sign:hover,.navbar-sign:focus-visible{color:#fff3c4;transform:translateY(-2px)rotate(-1.5deg)}.navbar-sign:focus-visible{outline-offset:3px;outline:2px dashed #fbecc6}.hero{background:#0a1630;align-items:center;height:calc(100vh - 64px);min-height:520px;display:flex;position:relative;overflow:hidden}.beach-canvas{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;position:absolute;inset:0}.hero .hero-headline{color:#cfe3f0}.hero .hint{color:#cfe3f0;opacity:.85}.hero .button{border-radius:0;box-shadow:4px 4px #060e20d9}.bottle-backdrop{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;pointer-events:none;background:#060e2059;transition:opacity .45s;position:fixed;inset:0}.bottle-backdrop.active{opacity:1}.bottle-lift{z-index:101;pointer-events:none;image-rendering:crisp-edges;image-rendering:pixelated;position:fixed;top:0;left:0}.bottle-lift.active{pointer-events:auto}.bottle-caption{z-index:102;text-align:center;color:#e2f4f0;text-shadow:2px 2px #060e20e6;opacity:0;pointer-events:none;width:min(90vw,520px);transition:opacity .2s,transform .2s;position:fixed;top:68%;left:50%;transform:translate(-50%,8px)}.bottle-caption.active{opacity:1;transition:opacity .4s .35s,transform .4s .35s;transform:translate(-50%)}.bottle-caption p{margin:0 0 6px}.bottle-caption .muted{color:#a9c3d6}.hero{align-items:flex-start}.hero-content{pointer-events:none;max-width:460px;padding:28px 32px;position:relative}.hero-content a,.hero-content button{pointer-events:auto}.hero.net-on .beach-canvas,.hero.net-on .hero-content{cursor:none!important}.hero.net-on .hero-content a,.hero.net-on .hero-content button{cursor:pointer!important}.net-cursor{z-index:5;pointer-events:none;opacity:0;will-change:transform;transition:opacity .12s;position:absolute;top:0;left:0}.net-cursor.shown{opacity:1}.net-cursor svg{transform-origin:82% 82%;filter:drop-shadow(2px 3px #060e2073);display:block}.net-cursor .net-catch{display:none}.net-cursor.full .net-catch{display:inline}.net-cursor.over-bottle svg{animation:.5s ease-in-out infinite alternate net-eager}@keyframes net-eager{0%{transform:rotate(-7deg)}to{transform:rotate(5deg)}}.net-cursor svg.scoop{animation:.6s ease-out net-scoop}@keyframes net-scoop{0%{transform:rotate(0)translate(0)}35%{transform:rotate(26deg)translate(6px,10px)}70%{transform:rotate(-30deg)translate(-4px,-14px)}to{transform:rotate(0)translate(0)}}.net-cursor svg.dip{animation:.35s ease-out net-dip}@keyframes net-dip{45%{transform:rotate(18deg)translate(3px,7px)}}@media (prefers-reduced-motion:reduce){.net-cursor svg,.net-cursor.over-bottle svg,.net-cursor svg.scoop,.net-cursor svg.dip{animation:none}}.hero h1{margin-bottom:.3em;font-size:clamp(1.8rem,3.4vw,2.7rem)}.hero-headline{color:var(--muted);margin:0 0 1.2rem;font-size:clamp(1rem,1.5vw,1.15rem)}.hero .mono.accent{margin:0 0 .4rem;font-size:.85rem}.hero-actions{flex-wrap:wrap;gap:10px;display:flex}.hero .button{padding:8px 16px;font-size:.9rem}.hint{color:var(--muted);opacity:.7;margin-top:1rem;font-size:.75rem}.hero{--game-outline:#120c06;--game-text-outline:-2px -2px 0 var(--game-outline), 0 -2px 0 var(--game-outline), 2px -2px 0 var(--game-outline), -2px 0 0 var(--game-outline), 2px 0 0 var(--game-outline), -2px 2px 0 var(--game-outline), 0 2px 0 var(--game-outline), 2px 2px 0 var(--game-outline), 4px 5px 0 #060e208c}.hero .hero-content,.hero .hero-content .mono,.hero .button{font-family:"Mali", var(--font)}.hero .hero-content>p,.hero h1{text-shadow:var(--game-text-outline)}.hero h1{color:#fff;letter-spacing:.01em;font-size:clamp(2rem,3.8vw,3rem);font-weight:700}.hero .mono.accent{color:#ffd84a;font-size:1rem;font-weight:700}.hero .hero-headline{color:#f2ead6;font-size:clamp(1.05rem,1.6vw,1.25rem);font-weight:700}.hero .hint{color:#e6dcc4;opacity:1;font-size:.85rem;font-weight:600}.hero .button{font-size:1rem;font-weight:700}.hero .hero-content{max-width:490px;margin:22px 0 0 22px;padding:26px 36px 30px 44px}.hero .button:not(.primary){color:#fff;text-shadow:1px 1px 0 var(--game-outline), -1px -1px 0 var(--game-outline), 1px -1px 0 var(--game-outline), -1px 1px 0 var(--game-outline);background:#24160bbf}.button{border:1px solid var(--accent);color:var(--accent);font:inherit;cursor:pointer;background:0 0;border-radius:8px;padding:10px 20px;transition:background .2s,transform .2s;display:inline-block}.button:hover{background:#5eead41a;transform:translateY(-2px)}.button.primary{background:var(--accent);color:var(--bg);font-weight:500}.button.primary:hover{background:#99f6e4}.button:disabled{opacity:.6;cursor:wait}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;padding:6px 14px;font-size:.85rem}.chip.active,button.chip:hover{border-color:var(--accent);color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;transition:border-color .2s,transform .2s}a.card:hover{border-color:var(--accent-2);transform:translateY(-4px)}.about-grid{grid-template-columns:3fr 2fr;gap:40px;display:grid}.skill-list{flex-wrap:wrap;align-content:flex-start;gap:8px;margin:0;padding:0;list-style:none;display:flex}.filters{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.project-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;display:grid}.project-card{flex-direction:column;display:flex;position:relative}.project-card p{color:var(--muted);flex:1}.badge{color:var(--accent-2);font-size:.7rem;position:absolute;top:16px;right:16px}.tag-list{color:var(--accent);flex-wrap:wrap;gap:12px;margin:0;padding:0;font-size:.8rem;list-style:none;display:flex}.github{margin-top:56px}.github h3{color:var(--muted);align-items:center;gap:8px;font-size:.95rem;display:flex}.live-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}@keyframes pulse{50%{opacity:.3}}.repo-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;padding:0;list-style:none;display:grid}.repo{flex-direction:column;gap:4px;height:100%;padding:16px;display:flex}.timeline{border-left:2px solid var(--border);margin:0;padding:0 0 0 24px;list-style:none}.timeline>li{margin-bottom:40px;position:relative}.timeline>li:before{content:"";background:var(--bg);border:2px solid var(--accent-2);border-radius:50%;width:12px;height:12px;position:absolute;top:6px;left:-32px}.timeline ul{color:var(--muted);margin:0;padding-left:20px}.contact-page{--ink:#3b2410;--ink-light:#8a6a3c;--parchment:#f1dfb6;--sand-light:#fbf3dc;--treasure:#c0392b;--sea-green:#1f6b5a;background:linear-gradient(#0000 0 78%,#e2c28a 78%,#eacd98 88%,#f1d9a9 100%),linear-gradient(#10294f 0%,#194772 30%,#277399 55%,#46a8b8 70%,#64c2c4 78%);min-height:calc(100vh - 64px);padding:40px 16px 72px}.contact-page .section{background:var(--parchment);border:3px solid var(--ink);max-width:720px;color:var(--ink);padding:40px 44px 44px;box-shadow:6px 6px #140c0473,inset 0 0 40px #8b5e3440}.contact-page .section-title{color:var(--ink);font-size:2rem}.contact-page .muted{color:#5a3d1f;font-weight:600}.contact-page .button{border:2px solid var(--ink);background:var(--sand-light);color:var(--ink);box-shadow:3px 3px 0 var(--ink);border-radius:0;font-weight:600}.contact-page .button:hover{box-shadow:4px 5px 0 var(--ink);background:#fff7e3;transform:translate(-1px,-2px)}.contact-page .button.primary{background:var(--treasure);color:#fff5dc;border-color:#5a1810;box-shadow:3px 3px #5a1810}.contact-page .button.primary:hover{background:#d4463a}.contact-page .contact-form label{color:var(--ink);font-weight:700}.contact-page input,.contact-page textarea{background:var(--sand-light);border:2px solid var(--ink-light);color:var(--ink);border-radius:0}.contact-page input:focus,.contact-page textarea:focus{border-color:var(--treasure)}.contact-page .success{color:var(--sea-green);font-weight:700}.contact-page .error{color:#a8331f;font-weight:700}.contact-page .success a{color:var(--treasure);text-decoration:underline}@media (width<=700px){.contact-page .section{padding:28px 20px 32px}}.contact-direct{flex-wrap:wrap;gap:12px;margin:20px 0 32px;padding:0;list-style:none;display:flex}.contact-direct .button{overflow-wrap:anywhere}.contact-form{gap:16px;max-width:560px;display:grid}.contact-form label{color:var(--muted);gap:6px;font-size:.9rem;display:grid}input,textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:8px;padding:12px}input:focus,textarea:focus{border-color:var(--accent);outline:none}.contact-form .button{justify-self:start}.detail-points{color:var(--muted);margin:0 0 28px;padding-left:20px}.detail-points li+li{margin-top:8px}.detail article{margin-top:32px}.detail h1{font-size:2.5rem}.lead{font-size:1.25rem}.chat{z-index:20;flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:fixed;bottom:6px;right:14px}.pirate-toggle{cursor:pointer;filter:drop-shadow(4px 4px #060e2073);background:0 0;border:0;padding:0;position:relative}.pirate-toggle:hover .pixel-pirate,.pirate-toggle:focus-visible .pixel-pirate{transform:translateY(-3px)}.pirate-toggle:focus-visible{outline:3px dashed var(--accent);outline-offset:4px}.pixel-pirate{image-rendering:crisp-edges;image-rendering:pixelated;display:block}.pirate-bubble{white-space:nowrap;color:#3b2410;opacity:0;background:#f6efdc;border:3px solid #1e140b;padding:6px 10px;font-size:.85rem;font-weight:700;animation:12s step-end 2s infinite pirate-bubble;position:absolute;top:6px;right:92px;box-shadow:3px 3px #060e2073}.pirate-bubble:after{content:"";border:6px solid #0000;border-left-color:#1e140b;position:absolute;top:10px;right:-10px}.pirate-toggle:hover .pirate-bubble,.pirate-toggle:focus-visible .pirate-bubble{opacity:1;animation:none}@keyframes pirate-bubble{0%,30%{opacity:1}31%,to{opacity:0}}@media (prefers-reduced-motion:reduce){.pirate-bubble{animation:none}}.chat-panel{flex-direction:column;width:min(360px,100vw - 48px);height:min(480px,100vh - 240px);padding:0;display:flex;box-shadow:0 20px 50px #00000080}.chat-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.icon-button{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:1.5rem;line-height:1}.chat-messages{flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;overflow-y:auto}.bubble{white-space:pre-wrap;border-radius:14px;max-width:85%;margin:0;padding:10px 14px;font-size:.92rem}.bubble.assistant{background:var(--bg);border:1px solid var(--border);align-self:flex-start}.bubble.user{background:var(--accent-2);color:var(--bg);align-self:flex-end}.typing{color:var(--muted);font-style:italic}.suggestions{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.chat-input{border-top:1px solid var(--border);gap:8px;padding:12px;display:flex}.chat-input input{flex:1;min-width:0;padding:8px 12px}.chat-input .button{padding:8px 14px}.footer{text-align:center;border-top:1px solid var(--border);padding:40px 24px 100px}@media (width<=700px){.pirate-toggle{transform-origin:100% 100%;transform:scale(.6)}.pirate-bubble{display:none}.navbar{padding:0 10px}.navbar nav{gap:8px}.navbar-sign{border-width:2px;padding:5px 10px 4px;font-size:.8rem}.about-grid{grid-template-columns:1fr}.section{padding:64px 20px}}.pixel{font-family:"Pixelify Sans", var(--mono)}.tmap-backdrop{z-index:110;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#060e2073;animation:.3s both tmap-fade;position:fixed;inset:0}.tmap-wrap{--ink:#3b2410;--ink-light:#8a6a3c;--paper:#f1dfb6;--x-red:#c0392b;z-index:111;filter:drop-shadow(8px 10px #060e2073);width:min(1520px,96vw);height:calc(100vh - 64px);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.tmap{color:var(--ink);font-family:var(--mono);padding:34px 32px 30px;font-weight:600;animation:1s steps(16,end) both tmap-unroll;display:flex;position:absolute;inset:0}@keyframes tmap-unroll{0%{clip-path:inset(-24px -24px 100%)}to{clip-path:inset(-24px)}}.tmap-wrap.closing .tmap{animation:.55s steps(10,end) both tmap-rollup}@keyframes tmap-rollup{0%{clip-path:inset(-24px)}to{clip-path:inset(-24px -24px 100%)}}.tmap-rod{z-index:5;pointer-events:none;background:linear-gradient(#4a2e14 0 4px,#8a5a2b 4px 8px,#c48a4c 8px 12px,#f0c98a 12px 15px,#d9a868 15px 19px,#9b6a35 19px 24px,#4a2e14 24px 28px);height:28px;position:absolute;left:-14px;right:-14px;box-shadow:0 0 0 3px #2e1c0c}.tmap-rod:before,.tmap-rod:after{content:"";background:linear-gradient(90deg,#4a2e14 0 4px,#8a5a2b 4px 9px,#c48a4c 9px 13px,#6b4520 13px 18px);width:18px;height:40px;position:absolute;top:-6px;box-shadow:0 0 0 3px #2e1c0c}.tmap-rod:before{left:-18px}.tmap-rod:after{right:-18px}.tmap-rod-top{top:-14px}.tmap-roll{animation:1s steps(16,end) both tmap-roll-down;top:calc(100% - 14px)}@keyframes tmap-roll-down{0%{top:-14px}to{top:calc(100% - 14px)}}.tmap-wrap.closing .tmap-roll{animation:.55s steps(10,end) both tmap-roll-up}@keyframes tmap-roll-up{0%{top:calc(100% - 14px)}to{top:-14px}}@keyframes tmap-fade{0%{opacity:0}}.tmap-backdrop.closing{animation:.5s both tmap-fade-out}@keyframes tmap-fade-out{to{opacity:0}}.tmap-paper,.tmap-chart{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;position:absolute;inset:0}.tmap-close{z-index:6;border:3px solid var(--ink);background:var(--paper);width:36px;height:36px;color:var(--ink);cursor:pointer;box-shadow:3px 3px 0 var(--ink);font-size:1.1rem;position:absolute;top:18px;right:22px}.tmap-close:hover,.tmap-close:focus-visible{box-shadow:4px 4px 0 var(--ink);background:#fff3d6;outline:none;transform:translate(-1px,-1px)}.tmap-body{z-index:1;width:100%;height:100%;display:flex;position:relative}.tmap-profile{z-index:1;border-right:3px dashed var(--ink-light);width:40%;padding:18px 26px 18px 14px;position:relative;overflow-y:auto}.tmap-photo{border:4px solid var(--ink);background:#e6cf9f;width:168px;height:168px;margin-bottom:16px;box-shadow:5px 5px #4a2f1759}.tmap-photo img{object-fit:cover;width:100%;height:100%;display:block}.tmap-photo-empty{flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.tmap-photo-empty svg{width:96px}.tmap-photo-empty span{color:var(--ink-light);font-size:.8rem;font-weight:700}.tmap-profile h2{margin:0 0 6px;font-size:clamp(1.5rem,2.8vw,2.1rem);font-weight:700;line-height:1.1}.tmap-headline{margin:0 0 12px;font-size:1.02rem;font-weight:700}.tmap-about{color:#3b2410;margin:0 0 18px;font-size:.92rem;font-weight:600;line-height:1.6}.tmap-profile h3{margin:0 0 10px;font-size:1.2rem;font-weight:700}.tmap-skills{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tmap-skill-group{margin-bottom:16px}.tmap-skill-group h4{font-family:"Pixelify Sans", var(--mono);letter-spacing:.02em;color:#8b2f1c;text-shadow:1px 1px #fff3d699;border-bottom:2px dashed #c0392b8c;margin:0 0 8px;padding-bottom:2px;font-size:1rem;font-weight:700;display:inline-block}.tmap-skill-group h4:before{content:"✕";color:#c0392b;margin-right:6px;font-weight:900}.tmap-skill-group .tmap-skills{gap:6px}.tmap-skill-group .tmap-skills li{padding:2px 8px;font-size:.78rem}.tmap-skill-group.learning{border-top:2px dashed var(--ink-light);padding-top:10px}.tmap-skill-group.learning .tmap-skills li{box-shadow:none;background:0 0;border-style:dashed;font-style:italic}.tmap-skills li{border:2px solid var(--ink);box-shadow:2px 2px 0 var(--ink);background:#fff3d6b3;padding:3px 9px;font-size:.84rem;font-weight:700}.tmap-sea{z-index:1;cursor:crosshair;width:60%;position:relative}.tmap-hint{color:var(--ink);margin:0;font-size:1rem;font-weight:700;position:absolute;top:6px;left:16px}.tmap-ship{z-index:1;pointer-events:none;filter:drop-shadow(3px 3px #3b24104d);width:76px;position:absolute;transform:translate(-50%,-78%)}.tmap-ship svg{width:100%;animation:1.2s steps(2,end) infinite tmap-ship-bob;display:block}.tmap-ship[data-facing=left] svg{transform:scaleX(-1)}.tmap-ship.sailing svg{animation-duration:.35s}@keyframes tmap-ship-bob{50%{translate:0 -3px}}.tmap-wakes{pointer-events:none;position:absolute;inset:0}.tmap-wake{background:#4f9cc4;width:8px;height:4px;margin:-2px 0 0 -4px;animation:.9s steps(5,end) forwards tmap-wake;position:absolute;box-shadow:8px 4px #8cc3df,-8px 4px #8cc3df}@keyframes tmap-wake{to{opacity:0;transform:scale(1.8)}}.tmap-x{color:var(--ink);cursor:pointer;font:inherit;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:0;display:flex;position:absolute;transform:translate(-50%,-24px)}.tmap-x-icon{width:46px;height:46px;animation:1.6s steps(2,end) infinite tmap-bob}.tmap-x:hover .tmap-x-icon,.tmap-x:focus-visible .tmap-x-icon,.tmap-x.active .tmap-x-icon{animation:none;transform:scale(1.25)}.tmap-x:focus-visible{outline:3px dashed var(--x-red);outline-offset:4px}@keyframes tmap-bob{50%{transform:translateY(-3px)}}.tmap-x-label{white-space:nowrap;background:#f1dfb6d9;padding:0 6px;font-size:1.05rem;font-weight:700}.tmap-x-island{color:#5a3d1f;white-space:nowrap;font-size:.74rem;font-style:italic;font-weight:700}.tmap-pagewrap{z-index:4;position:absolute;inset:0}.tmap-page{filter:drop-shadow(0 6px #3b241059);animation:.6s steps(10,end) both tmap-page-down;position:absolute;inset:0}@keyframes tmap-page-down{0%{clip-path:inset(0 -20px 100%)}to{clip-path:inset(0 -20px -20px)}}.tmap-pagewrap.closing .tmap-page{animation:.45s steps(8,end) both tmap-page-up}@keyframes tmap-page-up{0%{clip-path:inset(0 -20px -20px)}to{clip-path:inset(0 -20px 100%)}}.tmap-page-roll{animation:.6s steps(10,end) both tmap-page-roll;top:calc(100% - 14px)}@keyframes tmap-page-roll{0%{top:-14px}to{top:calc(100% - 14px)}}.tmap-pagewrap.closing .tmap-page-roll{animation:.45s steps(8,end) both tmap-page-roll-up}@keyframes tmap-page-roll-up{0%{top:calc(100% - 14px)}to{top:-14px}}.tmap-page-paper{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;position:absolute;inset:0}.tmap-page-inner{flex-direction:column;height:100%;padding:42px 52px 40px;display:flex;position:relative}.tmap-page-head{border-bottom:3px dashed var(--ink-light);margin-bottom:8px;padding-bottom:14px}.tmap-page-head h3{margin:10px 0 0;font-size:clamp(1.8rem,3vw,2.6rem);font-weight:700;line-height:1.1}.tmap-page-island{color:#5a3d1f;margin:4px 0 0;font-style:italic;font-weight:700}.tmap-back{border:3px solid var(--ink);color:var(--ink);cursor:pointer;box-shadow:3px 3px 0 var(--ink);background:#fff3d6bf;padding:5px 12px;font-size:.95rem;font-weight:700}.tmap-back:hover,.tmap-back:focus-visible{box-shadow:4px 4px 0 var(--ink);background:#fff3d6;outline:none;transform:translate(-1px,-1px)}.tmap-page-body{padding-right:8px;overflow-y:auto;container-type:inline-size}.tmap-page-body .tmap-entries{max-width:none}.tmap-page-body .tmap-entry:not(.has-photos):not(.tmap-org)>ul,.tmap-page-body .tmap-entry:not(.has-photos):not(.tmap-org)>p{max-width:860px}.tmap-page-body .tmap-entry h4{font-size:1.15rem}.tmap-page-body .tmap-entry ul{font-size:.92rem}.tmap-entries{margin:0;padding:0;list-style:none}.tmap-entry{padding:14px 0 14px 36px;position:relative}.tmap-entries{--trail-red:#d4161b}.tmap-entries>.tmap-entry:before{content:"";filter:drop-shadow(1px 2px #3b24104d);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-13 -13 26 26'%3E%3Cg fill='%23d4161b' transform='rotate(-28)'%3E%3Cpath transform='rotate(0)' d='M-2 -2 C -2.4 -5.5, -3.4 -8.5, -5.6 -11.5 C -2 -10, 2 -10, 5.6 -11.5 C 3.4 -8.5, 2.4 -5.5, 2 -2 Z'/%3E%3Cpath transform='rotate(90)' d='M-2 -2 C -2.4 -5.5, -3.4 -8.5, -5.6 -11.5 C -2 -10, 2 -10, 5.6 -11.5 C 3.4 -8.5, 2.4 -5.5, 2 -2 Z'/%3E%3Cpath transform='rotate(180)' d='M-2 -2 C -2.4 -5.5, -3.4 -8.5, -5.6 -11.5 C -2 -10, 2 -10, 5.6 -11.5 C 3.4 -8.5, 2.4 -5.5, 2 -2 Z'/%3E%3Cpath transform='rotate(270)' d='M-2 -2 C -2.4 -5.5, -3.4 -8.5, -5.6 -11.5 C -2 -10, 2 -10, 5.6 -11.5 C 3.4 -8.5, 2.4 -5.5, 2 -2 Z'/%3E%3Crect x='-2.2' y='-2.2' width='4.4' height='4.4'/%3E%3C/g%3E%3C/svg%3E") 50%/contain no-repeat;width:28px;height:28px;transition:transform .2s;position:absolute;top:10px;left:2px}.tmap-entries>.tmap-entry:hover:before,.tmap-entries>.tmap-entry:focus-within:before{animation:.6s tmap-x-wobble}@keyframes tmap-x-wobble{0%,to{transform:rotate(0)scale(1)}30%{transform:rotate(-12deg)scale(1.15)}65%{transform:rotate(8deg)scale(1.05)}}.tmap-trail{pointer-events:none;width:32px;height:calc(100% - 34px);position:absolute;top:42px;left:0;overflow:visible}.tmap-entries>.tmap-entry:last-child>.tmap-trail{display:none}.tmap-entries>.tmap-entry:nth-child(2n)>.tmap-trail{transform:scaleX(-1)}.tmap-trail path{fill:none;stroke:var(--trail-red);stroke-width:4.5px;stroke-linecap:round;stroke-dasharray:11 10;vector-effect:non-scaling-stroke}.tmap-entries>.tmap-entry:hover>.tmap-trail path,.tmap-entries>.tmap-entry:focus-within>.tmap-trail path{animation:.55s linear infinite tmap-trail-march}@keyframes tmap-trail-march{to{stroke-dashoffset:-21px}}@media (prefers-reduced-motion:reduce){.tmap-entries>.tmap-entry:hover:before,.tmap-entries>.tmap-entry:focus-within:before,.tmap-entries>.tmap-entry:hover>.tmap-trail path,.tmap-entries>.tmap-entry:focus-within>.tmap-trail path{animation:none}}.tmap-entry h4{margin:0 0 2px;font-size:1.05rem;font-weight:700}.tmap-entry h4 a{color:#8b2f1c;text-underline-offset:3px;text-decoration:underline}.tmap-entry-meta{color:#5a3d1f;margin:0 0 4px;font-size:.8rem;font-weight:700}.tmap-entry ul{margin:0;padding-left:18px;font-size:.88rem;font-weight:600}.tmap-note{font-size:.9rem;font-weight:700}.tmap-split{align-items:flex-start;gap:40px;display:flex}.tmap-split-text{overflow-wrap:anywhere;flex:1 1 0;min-width:0}.tmap-split-media{box-sizing:border-box;flex:0 0 50%;min-width:0;padding:12px 10px 6px}.tmap-entries>.tmap-entry:nth-child(2n) .tmap-split{flex-direction:row-reverse}.tmap-split-media .tmap-snaps{grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:22px 18px;margin:0;padding:0;display:grid}.tmap-page-body .tmap-split-media .tmap-snap{justify-self:center;width:100%;max-width:240px}.tmap-split-media .tmap-snaps:has(>.tmap-snap:only-child){grid-template-columns:1fr}.tmap-page-body .tmap-split-media .tmap-snaps:has(>.tmap-snap:only-child) .tmap-snap{max-width:400px}.tmap-split-media .tmap-snap:hover,.tmap-split-media .tmap-snap:focus-visible{z-index:1;position:relative;transform:rotate(0)scale(1.03)}@container (width<=640px){.tmap-split,.tmap-entries>.tmap-entry:nth-child(2n) .tmap-split{flex-direction:column;gap:4px}.tmap-split-media{flex-basis:auto;width:100%}.tmap-page-body .tmap-split-media .tmap-snap{max-width:130px}.tmap-page-body .tmap-split-media .tmap-snaps:has(>.tmap-snap:only-child) .tmap-snap{justify-self:start;max-width:220px}}.tmap-snaps{flex-wrap:wrap;gap:18px 14px;margin:16px 0 4px;padding-left:2px;display:flex}.tmap-snap{width:92px;transform:rotate(var(--tilt,0deg));cursor:zoom-in;background:#fbf3dc;border:0;padding:4px 4px 12px;transition:transform .15s,box-shadow .15s;position:relative;box-shadow:2px 3px #3b241059}.tmap-snap:hover,.tmap-snap:focus-visible{transform:rotate(0)scale(1.06);box-shadow:3px 5px #3b241059}.tmap-snap:focus-visible{outline:2px solid var(--x-red);outline-offset:2px}.tmap-snap img{aspect-ratio:1;object-fit:cover;background:#e2c995;width:100%;display:block}.tmap-page-body .tmap-snap{width:110px}.tmap-entry.has-plaque{display:flow-root}.tmap-plaque{float:right;border:2px solid var(--ink);background:#fffaf0;width:104px;margin:10px 4px 8px 14px;padding:8px;position:relative;transform:rotate(1.5deg);box-shadow:2px 3px #3b241059}.tmap-plaque img{width:100%;height:auto;display:block}.tmap-page-body .tmap-plaque{width:124px}.tmap-tl-legend{flex-wrap:wrap;gap:6px 14px;margin:0 0 18px;padding:0;font-size:.82rem;font-weight:800;list-style:none;display:flex}.tmap-tl-legend li{align-items:center;gap:6px;display:flex}.tmap-tl-legend li:before{content:"";background:var(--accent);border:2px solid var(--ink);width:12px;height:12px}.tmap-timeline{margin:0;padding:0;list-style:none}.tmap-tl-item{grid-template-columns:minmax(0,1fr) 48px 150px;grid-template-areas:"card rail date";align-items:start;display:grid}.tmap-tl-card{border-left:8px solid var(--accent);transform:rotate(var(--tilt,0deg));background:#fbf3dc;grid-area:card;margin:0 0 22px;padding:14px 18px 14px 20px;transition:transform .2s;position:relative;box-shadow:3px 4px #28160852,inset 0 0 20px #8b5e3429}.tmap-tl-item:hover .tmap-tl-card{transform:rotate(0)translate(-3px)}.tmap-tl-card h4{font-family:"Pixelify Sans", var(--mono);margin:0 0 6px;font-size:1.15rem;font-weight:700;line-height:1.2}.tmap-tl-card h4 a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:4px;text-decoration-thickness:3px}.tmap-tl-card .tmap-board-stats{margin-top:0}.tmap-tl-card .tmap-board-desc{margin-bottom:6px}.tmap-tl-card .tmap-board-stats .tmap-tl-kind{background:var(--accent);border-color:var(--ink);color:#fff;text-shadow:1px 1px #00000059}.tmap-tl-rail{grid-area:rail;align-self:stretch;position:relative}.tmap-tl-rail:before{content:"";border-left:3px dashed var(--ink-light);position:absolute;top:0;bottom:0;left:calc(50% - 1.5px)}.tmap-tl-item:first-child .tmap-tl-rail:before{top:24px}.tmap-tl-item:last-child .tmap-tl-rail:before{height:24px;bottom:auto}.tmap-tl-dot{background:var(--accent);border:3px solid var(--ink);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:14px;left:calc(50% - 10px);box-shadow:0 0 0 3px #f1dfb6}.tmap-tl-item:hover .tmap-tl-dot{transform:scale(1.2)}.tmap-tl-date{font-family:"Pixelify Sans", var(--mono);flex-direction:column;grid-area:date;margin:12px 0 0;line-height:1.25;display:flex}.tmap-tl-date strong{color:var(--ink);font-size:1rem}.tmap-tl-date span{color:#6b4a26;font-size:.85rem;font-weight:600}@container (width>=900px){.tmap-tl-card{grid-template-columns:minmax(240px,36%) minmax(0,1fr);align-items:start;gap:0 26px;display:grid}.tmap-tl-head .tmap-board-stats{border-bottom:0;padding-bottom:0}.tmap-tl-body{border-left:2px dotted var(--ink-light);padding-left:22px}}@container (width<=640px){.tmap-tl-item{grid-template-columns:34px minmax(0,1fr);grid-template-areas:"rail date""rail card"}.tmap-tl-date{flex-direction:row;align-items:baseline;gap:8px;margin:10px 0 6px}}.tmap-board{background-color:#c49a64;background-image:radial-gradient(#5c381861 1px,#0000 1.6px),radial-gradient(#ffecc847 1px,#0000 1.6px),radial-gradient(#784c2440 1.5px,#0000 2px);background-position:0 0,4px 6px,11px 3px;background-size:9px 9px,13px 13px,23px 23px;border:12px solid #6e4626;outline:3px solid #3b2410;padding:28px 24px 30px;box-shadow:inset 0 0 0 3px #4a2e17,inset 0 6px 14px #28160873,4px 6px #28160859}.tmap-board-notes{grid-template-columns:repeat(auto-fit,minmax(min(290px,100%),1fr));align-items:start;gap:30px 26px;margin:0;padding:0;list-style:none;display:grid}.tmap-board-note{color:var(--ink);transform:rotate(var(--tilt,0deg));background:#fbf3dc;padding:24px 18px 16px;transition:transform .2s,box-shadow .2s;position:relative;box-shadow:3px 5px #28160861,inset 0 0 22px #8b5e342e}.tmap-board-note:hover{z-index:1;transform:rotate(0)translateY(-3px);box-shadow:5px 8px #28160859,inset 0 0 22px #8b5e342e}.tmap-board-note>.tmap-screw{width:20px;height:20px;top:-9px;left:calc(50% - 10px)}.tmap-board-note h4{font-family:"Pixelify Sans", var(--mono);color:#8b2f1c;margin:0 0 2px;font-size:1.15rem;font-weight:700;line-height:1.2}.tmap-board-org{color:#2e1c0c;margin:0 0 2px;font-size:.95rem;font-weight:800}.tmap-board-note .tmap-entry-meta{border-bottom:2px dotted var(--ink-light);color:#2e1c0c;margin-bottom:8px;padding-bottom:6px;font-size:.85rem;font-weight:800}.tmap-board-note ul{color:#2e1c0c;margin:0;padding-left:18px;font-size:.9rem;font-weight:700}.tmap-board-note li+li{margin-top:4px}.tmap-board-note .tmap-snaps{margin-top:14px}.tmap-board-scatter .tmap-board-notes{columns:3 240px;column-gap:30px;display:block}.tmap-board-scatter .tmap-board-note{width:100%;margin:calc(14px + var(--drop,0px) * .5) 0 22px;break-inside:avoid;display:inline-block}.tmap-board-note h4 a{color:#8b2f1c;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:2px}.tmap-board-desc{color:#2e1c0c;margin:0 0 10px;font-size:.9rem;font-weight:700;line-height:1.5}.tmap-board-stats{border-bottom:2px dotted var(--ink-light);flex-wrap:wrap;gap:6px;margin:4px 0 10px;padding-bottom:8px;display:flex}.tmap-board-stats span{border:2px solid var(--ink);color:var(--ink);background:#f1dfb6;padding:1px 8px;font-size:.78rem;font-weight:800;line-height:1.5}.tmap-board-stats span:first-child{color:#fbecc6;background:#3b2410}.tmap-board-note .tmap-board-tags{gap:5px;margin-bottom:8px;padding-left:0}.tmap-board-note .tmap-board-tags li{box-shadow:1.5px 1.5px 0 var(--ink);border-width:1.5px;margin:0;padding:1px 7px;font-size:.72rem}.tmap-board-featured{margin-bottom:26px}.tmap-board-featured .tmap-board-notes{columns:2 300px}.tmap-board-links{flex-wrap:wrap;gap:8px 16px;margin:0;font-size:.88rem;font-weight:800;display:flex}.tmap-board-links a{color:#8b2f1c;text-underline-offset:3px;text-decoration:underline}.tmap-board-note .tmap-demo{color:#8b2f1c;font-size:.85rem;font-weight:700;text-decoration:underline}@container (width<=640px){.tmap-board{border-width:8px;padding:22px 12px}.tmap-board-scatter .tmap-board-note{margin-top:14px}}.tmap-org-head{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.tmap-org .tmap-plaque{float:none;flex-shrink:0;margin:0 4px 6px 0}.tmap-roles{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 24px;margin-top:4px;display:grid}.tmap-role{border-left:2px dashed var(--ink-light);max-width:900px;margin:6px 0 0;padding:2px 0 6px 12px}.tmap-role h5{color:#8b2f1c;margin:0 0 1px;font-size:.95rem;font-weight:700}.tmap-org .tmap-role ul{margin-top:2px}.tmap-snap-play{border:2px solid var(--ink);background:#fbf3dceb;border-radius:50%;width:30px;height:30px;position:absolute;top:calc(50% - 4px);left:50%;transform:translate(-50%,-50%);box-shadow:1px 2px #3b241066}.tmap-snap-play:after{content:"";border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:10px solid #8b2f1c;position:absolute;top:7px;left:10px}.tmap-lightbox video{background:#000;max-width:min(1100px,100%);max-height:calc(100vh - 170px);display:block}.tmap-school-grid{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main plaque""courses courses";align-items:start;gap:4px 24px;display:grid}.tmap-school-main{grid-area:main;min-width:0}.tmap-school-grid .tmap-courses{grid-area:courses}.tmap-school-grid .tmap-plaque{float:none;grid-area:plaque;margin:6px 4px 0 0}@container (width>=900px){.tmap-school-grid{grid-template-columns:max-content minmax(0,1fr) auto;grid-template-areas:"main courses plaque";gap:0 40px}.tmap-school-grid .tmap-courses{border-left:2px dotted var(--ink-light);margin-top:30px;padding-left:26px}}.tmap-facts{grid-template-columns:max-content max-content;width:max-content;margin:6px 0 8px;display:grid}.tmap-facts>div{display:contents}.tmap-facts dt,.tmap-facts dd{border-bottom:1px dotted var(--ink-light);white-space:nowrap;padding:3px 0}.tmap-facts dd{padding-right:6px}.tmap-facts>div:last-child dt,.tmap-facts>div:last-child dd{border-bottom:0}.tmap-facts dt{letter-spacing:.08em;text-transform:uppercase;color:#8a6a3c;align-self:center;padding-right:14px;font-size:.72rem;font-weight:700}.tmap-facts dd{color:var(--ink);margin:0;font-size:.92rem;font-weight:700}.tmap-gpa{color:#8b2f1c}.tmap-gpa small{color:#8a6a3c;font-size:.75em}.tmap-courses{margin-top:8px}.tmap-courses-label{color:#5a3d1f;margin:0 0 5px;font-size:.8rem;font-weight:700}.tmap-entry .tmap-courses .tmap-skills{gap:6px;padding-left:0}.tmap-entry .tmap-courses .tmap-skills li{box-shadow:1.5px 1.5px 0 var(--ink);border-width:1.5px;padding:2px 7px;font-size:.76rem}@media (width<=640px){.tmap-plaque{width:80px}}.tmap-screw{filter:drop-shadow(1px 2px #3b241073);pointer-events:none;width:18px;height:18px;position:absolute;top:-8px;left:calc(50% - 9px)}.tmap-lightbox figure{position:relative}.tmap-lightbox .tmap-screw{width:22px;height:22px}.tmap-lightbox .tmap-screw.tl{top:-9px;left:-9px}.tmap-lightbox .tmap-screw.tr{top:-9px;left:auto;right:-9px}.tmap-lightbox .tmap-screw.bl{top:auto;bottom:-9px;left:-9px}.tmap-lightbox .tmap-screw.br{inset:auto -9px -9px auto}.tmap-lightbox{z-index:130;cursor:zoom-out;background:#140c04d1;justify-content:center;align-items:center;padding:56px 64px;animation:.2s both tmap-fade;display:flex;position:fixed;inset:0}.tmap-lightbox figure{cursor:default;background:#fbf3dc;max-width:100%;margin:0;padding:8px 8px 0;box-shadow:4px 6px #0006}.tmap-lightbox img{object-fit:contain;max-width:min(1100px,100%);max-height:calc(100vh - 170px);display:block}.tmap-lightbox figcaption{color:#3b2410;text-align:center;padding:8px 4px 10px;font-size:.95rem;font-weight:700}.tmap-lightbox-count{color:#8a6a3c}.tmap-lightbox-close,.tmap-lightbox-nav{color:#3b2410;cursor:pointer;background:#fbf3dc;border:0;font-size:1.2rem;line-height:1;position:absolute;box-shadow:2px 3px #0006}.tmap-lightbox-close{width:38px;height:38px;top:14px;right:14px}.tmap-lightbox-nav{width:40px;height:56px;font-size:2rem;top:50%;transform:translateY(-50%)}.tmap-lightbox-nav.prev{left:12px}.tmap-lightbox-nav.next{right:12px}@media (width<=640px){.tmap-snap{width:76px}.tmap-lightbox{padding:56px 16px}.tmap-lightbox-nav{top:auto;bottom:12px;transform:none}.tmap-lightbox-nav.prev{left:calc(50% - 52px)}.tmap-lightbox-nav.next{right:calc(50% - 52px)}}.tmap-section-title{margin:12px 0 2px;font-size:1.3rem;font-weight:700}.tmap-section-title+.tmap-entries,.tmap-section-title+.tmap-note{margin-bottom:18px}.tmap-entries+.tmap-section-title{border-top:3px dashed var(--ink-light);padding-top:14px}.tmap-demo{color:#8b2f1c;margin-top:4px;font-size:.85rem;font-weight:700;text-decoration:underline;display:inline-block}@media (width<=760px){.tmap-wrap{width:96vw;height:calc(100vh - 40px)}.tmap-page-inner{padding:36px 34px 34px}.tmap{padding:30px}.tmap-ship{width:56px}.tmap-body{flex-direction:column;overflow-y:auto}.tmap-profile{border-right:0;border-bottom:3px dashed var(--ink-light);width:100%;padding:12px 6px 16px;overflow:visible}.tmap-photo{width:112px;height:112px}.tmap-sea{flex-shrink:0;width:100%;min-height:440px}.tmap-x-label{font-size:.85rem}.tmap-x-island{display:none}}@media (width<=560px){.tmap-x-icon{width:30px;height:30px}.tmap-x-label{padding:0 4px;font-size:.72rem}.tmap-hint{font-size:.78rem;line-height:1.3;left:10px;right:10px}.tmap-ship{width:44px}}@media (prefers-reduced-motion:reduce){.tmap,.tmap-page,.tmap-backdrop,.tmap-x-icon,.tmap-ship svg,.tmap-roll,.tmap-page-roll{animation:none}}.tmap-wall{filter:drop-shadow(6px 7px #3b241066);width:min(540px,100%);margin:0 0 24px;padding:26px 24px 30px;position:relative}.tmap-wall-wood{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;position:absolute;inset:0}.tmap-poster{text-align:center;filter:drop-shadow(5px 6px #3b241059);width:100%;margin:0;padding:30px 32px 32px;position:relative;transform:rotate(-2.5deg)}.tmap-poster>:not(.tmap-poster-paper){position:relative}.tmap-poster-paper{width:100%;height:100%;image-rendering:crisp-edges;image-rendering:pixelated;position:absolute;inset:0}.tmap-knife{z-index:2;pointer-events:none;position:absolute!important}.tmap-wanted{letter-spacing:.12em;color:#3b2410;border-top:4px double #3b2410;border-bottom:4px double #3b2410;margin:6px 0 10px;padding:2px 0;font-size:clamp(2.6rem,4.2vw,4.2rem);font-weight:700;line-height:1}.tmap-poster .tmap-photo{aspect-ratio:1;width:min(260px,72%);height:auto;margin:0 auto 14px}.tmap-poster .tmap-photo-empty svg{width:45%}.tmap-poster-name{text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px!important;font-size:clamp(1.4rem,2.2vw,2rem)!important}.tmap-poster-foot{border-top:2px dashed var(--ink-light);margin:0;padding-top:6px;font-size:.95rem;font-weight:700}@media (width<=760px){.tmap-wall{margin:0 auto 18px;padding:20px 16px 24px}.tmap-knife{transform:translateY(16px)}.tmap-poster{padding:24px 22px 26px}.tmap-poster .tmap-photo{width:150px}}
