/* The interaction layer: the portfolio remains readable without JavaScript. */
.reading-progress{position:fixed;inset:0 0 auto;height:2px;z-index:40;pointer-events:none}
.reading-progress>span{display:block;width:100%;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;box-shadow:0 0 12px #ff926c66}
.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 19px 0;color:var(--faint);font:8px/1.5 var(--mono)}
.map-toolbar>div{display:flex;gap:5px}.map-toolbar button{font:8px var(--mono);padding:6px 8px;border:1px solid var(--line);border-radius:4px;background:#1a1f23;color:var(--muted)}
.map-toolbar button:hover,.map-toolbar button[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}
.system-map.is-arranging{background-image:radial-gradient(#ff926c40 .8px,transparent .8px)}
.system-map.is-arranging .map-node{cursor:grab;touch-action:none;user-select:none}
.system-map .map-node.is-dragging{cursor:grabbing;z-index:4;border-color:var(--accent);box-shadow:0 8px 25px #0007}
.system-map.is-arranging .node-tech{opacity:.65}.system-map.is-arranging .wire{stroke-dasharray:4 4}
.map-wires{pointer-events:none}.wire-joint{display:none}
.system-console{isolation:isolate}.system-console:after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(260px circle at var(--pointer-x,50%) var(--pointer-y,30%),#ff926c08,transparent 75%);pointer-events:none;z-index:-1}
.trace-steps{display:flex;align-items:center;justify-content:space-between;gap:2px;margin:0 18px 15px;padding:10px 0 0;border-top:1px solid var(--line)}
.trace-steps>button{display:flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--faint);font:8px/1.6 var(--mono);padding:5px 3px;border-radius:3px;min-height:30px}
.trace-steps>button>span{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid #454d51;border-radius:50%;font-size:6px}
.trace-steps>i{font-size:9px;color:#596268;font-style:normal}
.trace-steps>button[aria-current=step]{color:var(--text)}.trace-steps>button[aria-current=step]>span{color:var(--bg);background:var(--accent);border-color:var(--accent);box-shadow:0 0 12px #ff926c24}
.trace-steps>button.is-visited{color:var(--muted)}.trace-steps>button:hover{color:var(--accent)}
.is-tracing .wire-packet{animation-duration:2.4s;opacity:1;stroke-width:3}
.node-inspector{min-height:148px}.node-inspector:focus-within{outline:1px solid #ff926c55}
.career-clock{max-width:290px;margin-top:34px;border:1px solid #343d40;border-radius:8px;padding:18px 20px 16px;background:linear-gradient(155deg,#1d2427,#151a1d)}
.career-clock-top{display:flex;justify-content:space-between;gap:12px;align-items:center;color:var(--muted)}
.career-clock-top .eyebrow{font-size:7px;letter-spacing:1px}.career-chapter{font:8px var(--mono);color:var(--accent)}
.career-dial{height:168px;position:relative;margin-top:13px}.career-dial svg{width:100%;height:100%;overflow:visible}
.career-dial path{fill:none;stroke-width:1.5}.career-dial .dial-track{stroke:#394346;stroke-dasharray:2 6}
.career-dial .dial-arc{stroke:var(--accent);stroke-dasharray:100;stroke-dashoffset:var(--dial-offset,0);transition:stroke-dashoffset .55s ease;stroke-width:2}
.career-dial circle{fill:var(--accent)}.career-year{position:absolute;inset:54px 0 auto;text-align:center;font:400 53px/1 var(--sans);letter-spacing:-3px}
.career-year-label{position:absolute;inset:auto 0 27px;text-align:center;font:6px var(--mono);letter-spacing:1.5px;color:var(--faint)}
.career-caption{text-align:center;font-size:11px;color:var(--text);line-height:1.5;min-height:33px;margin-top:-3px}
.career-stops{display:flex;justify-content:space-between;gap:5px;border-top:1px solid var(--line);padding-top:13px;margin-top:9px}
.career-stops button{border:0;background:transparent;color:var(--faint);font:10px/1.5 var(--mono);padding:5px 3px;position:relative}
.career-stops button>span{display:block;font-size:6px}.career-stops button[aria-current=true]{color:var(--accent)}
.career-stops button[aria-current=true]:before{content:'';position:absolute;top:-17px;left:calc(50% - 2px);height:4px;width:4px;background:var(--accent);border-radius:50%;box-shadow:0 0 9px #ff926c55}
.career-stops button:hover{color:var(--text)}.career-hint{display:block;text-align:center;margin-top:11px;font:7px/1.7 var(--mono);color:var(--muted)}
.timeline{position:relative}.timeline:after{content:'';position:absolute;left:-1px;top:4px;width:1px;height:var(--career-progress,0px);background:linear-gradient(var(--accent),#ff926c22);pointer-events:none;transition:height .5s ease}
.timeline-item{scroll-margin-top:70px;border-radius:4px;outline-offset:12px}.timeline-item h3{transition:color .25s ease}.timeline-item.is-current h3{color:var(--accent)}
.timeline-item:first-child:before{background:#58625b;box-shadow:none}.timeline-item.is-current:before{background:var(--accent);box-shadow:0 0 0 5px #ff926c14,0 0 18px #ff926c33}
.project-sketch{height:180px;position:relative;overflow:hidden;margin:-1px -10px 23px;border:1px solid #313d3d;border-radius:5px;background:#101719;transform:perspective(700px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .25s ease-out;isolation:isolate}
.project-sketch:after{content:'';position:absolute;inset:0;background:radial-gradient(180px circle at var(--pointer-x,50%) var(--pointer-y,50%),#b8d6a014,transparent);pointer-events:none}
.sketch-label{position:absolute;top:12px;left:13px;font:6px var(--mono);letter-spacing:.7px;color:var(--faint);z-index:1}
.sketch-caption{position:absolute;bottom:13px;left:13px;font:7px var(--mono);color:#a5b5a2;z-index:1}
.mini-board{position:absolute;inset:43px 17px 38px;display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.mini-board>div{padding:8px 6px;background:#1c2626;border:1px solid #35443d;border-radius:4px}.mini-board i{display:block;width:16px;height:2px;background:#708570;margin-bottom:9px}
.mini-board b{display:block;height:20px;margin-bottom:5px;background:linear-gradient(90deg,#b8d6a02e,#b8d6a011);border:1px solid #a3bc9d30;border-radius:2px;position:relative}
.mini-board b:after{content:'';position:absolute;top:7px;left:5px;width:55%;height:2px;background:#b8d6a05a}
.mini-board .moving-task{border-color:#b8d6a0a0;background:#b8d6a030;transition:transform .55s cubic-bezier(.16,1,.3,1)}
.experiment:hover .moving-task,.experiment:focus-visible .moving-task{transform:translateY(25px)}
.sketch-rover svg{position:absolute;inset:30px 0 auto;width:100%;height:120px}.rover-grid{stroke:#b8d6a00d;stroke-width:1;fill:none}
.rover-block{fill:#a6c39b15;stroke:#a6c39b33;stroke-width:1}.rover-route{fill:none;stroke:var(--green);stroke-width:2;stroke-dasharray:5 5;stroke-dashoffset:0;transition:stroke-dashoffset 1.2s}
.rover-start{fill:#b8d6a0}.rover-goal{fill:none;stroke:#ff926c;stroke-width:1.5}
.experiment:hover .rover-route,.experiment:focus-visible .rover-route{stroke-dashoffset:-70}
.mini-chart{position:absolute;inset:48px 20px 40px;border-bottom:1px solid #496448;display:flex;align-items:flex-end;gap:8px;background:repeating-linear-gradient(to top,transparent 0,transparent 24px,#b8d6a00b 24px,#b8d6a00b 25px)}
.mini-chart i{flex:1;display:block;height:var(--bar);background:linear-gradient(#b8d6a09a,#b8d6a026);border-top:1px solid var(--green);transform-origin:bottom;transform:scaleY(.72);transition:transform .6s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--i)*30ms)}
.experiment:hover .mini-chart i,.experiment:focus-visible .mini-chart i{transform:scaleY(1)}
.experiment-top{margin-bottom:18px}.experiment{overflow:hidden}
.explore-launcher{position:fixed;left:18px;bottom:14px;display:flex;align-items:center;gap:10px;padding:8px 11px;background:#191e22f2;border:1px solid #465055;border-radius:5px;color:var(--text);font:10px/1.5 var(--mono);z-index:15;backdrop-filter:blur(12px);box-shadow:0 3px 20px #0003}
.explore-launcher:hover{border-color:var(--accent)}.launcher-orbit{color:var(--accent);font-size:15px}.launcher-location{color:var(--faint);font-size:8px}
kbd{font:8px var(--mono);border:1px solid #495156;border-radius:3px;padding:3px 5px;color:var(--muted);display:inline-block}
.explore-launcher kbd{margin-left:8px}.command-dialog{width:min(600px,calc(100% - 28px));padding:23px;overflow:hidden;max-height:calc(100dvh - 40px)}
.command-dialog .dialog-top{margin-bottom:20px}.command-search{display:flex;align-items:center;gap:12px;border-bottom:1px solid #4a555a;padding-bottom:17px}
.command-search>span{color:var(--accent);font:24px var(--mono)}.command-search input{width:100%;min-width:0;outline:0;background:transparent;border:0;color:var(--text);font:16px var(--sans);padding:5px 0;color-scheme:dark}
.command-search input::placeholder{color:#889396}.command-search:focus-within{border-color:var(--accent)}
.command-options{display:flex;flex-direction:column;gap:4px;margin-top:14px;overflow-y:auto;max-height:min(370px,calc(100dvh - 245px));scroll-padding-block:5px}
.command-option{flex:none;display:flex;gap:13px;align-items:center;text-align:left;padding:13px 12px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text);width:100%;cursor:pointer}
.command-option[aria-selected=true]{background:#2b2522;border-color:#695144}.command-option>span:first-child{display:flex;align-items:center;justify-content:center;width:29px;height:29px;border:1px solid #445050;border-radius:5px;color:var(--accent);font:13px var(--mono);flex:none}
.command-option strong{display:block;font:500 13px/1.5 var(--sans)}.command-option small{display:block;color:var(--muted);font:10px/1.6 var(--sans);margin-top:2px}
.command-option>.command-enter{margin-left:auto;color:var(--faint);font:15px var(--mono)}.command-option[aria-selected=true]>.command-enter{color:var(--accent)}
.command-footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);margin-top:15px;padding-top:14px;font:8px/1.5 var(--mono);color:var(--faint)}.command-footer kbd{font-size:7px;padding:1px 3px;margin-right:3px}
.command-empty{font-size:13px;padding:25px 10px;color:var(--muted)}
@media(min-width:761px){.journey-intro{position:sticky;top:36px;align-self:start}.journey{overflow:visible}}
@media(max-width:980px){.map-toolbar{padding-inline:15px;font-size:7px}.map-toolbar button{font-size:7px;padding:6px}.trace-steps{margin-inline:14px}.trace-steps>button{font-size:7px;gap:3px}.trace-steps>button>span{width:15px;height:15px;font-size:5px}.trace-steps>i{font-size:7px}.career-clock{padding:16px;max-width:260px}.career-dial{height:152px}.career-year{font-size:47px;top:47px}.career-year-label{bottom:26px}.project-sketch{height:163px;margin-inline:-7px}.sketch-caption{font-size:6px}.mini-board{gap:6px;inset-inline:12px}.mini-board>div{padding:7px 4px}.sketch-label{font-size:5.5px}.mini-chart{gap:6px}}
@media(max-width:760px){.career-clock{max-width:100%;display:grid;grid-template-columns:180px 1fr;column-gap:30px;margin-top:25px;padding:20px}.career-clock-top{grid-column:1/-1}.career-dial{grid-row:2/5;height:150px;margin-top:8px}.career-year{top:47px}.career-year-label{bottom:20px}.career-caption{margin-top:32px;text-align:left;min-height:0}.career-stops{margin-top:10px;padding-top:10px}.career-stops button{font-size:11px}.career-hint{text-align:left;margin-top:5px}.career-stops button[aria-current=true]:before{top:-13px}.project-sketch{height:180px;max-width:100%;margin:0 0 22px}.mini-board{inset:43px 25px 40px;gap:15px}.mini-chart{inset-inline:25px;gap:12px}.sketch-label{font-size:7px}.sketch-caption{font-size:8px}.explore-launcher{bottom:10px;left:10px;font-size:9px;padding:6px 9px}.explore-launcher kbd{display:none}.launcher-location{font-size:7px}.launcher-orbit{font-size:13px}.node-inspector{min-height:150px}}
@media(max-width:520px){.map-toolbar{font-size:6.5px;gap:6px;padding-inline:13px}.map-toolbar button{font-size:7px}.trace-steps{margin:0 12px 12px}.trace-steps>button{font-size:6.5px;min-height:34px;flex-direction:column;gap:4px;padding:3px}.trace-steps>button>span{font-size:6px;width:17px;height:17px}.trace-steps>i{align-self:flex-start;margin-top:9px}.career-clock{grid-template-columns:126px 1fr;column-gap:16px;padding:16px}.career-dial{height:132px}.career-year{font-size:39px;top:45px}.career-year-label{font-size:5px;bottom:23px;letter-spacing:.8px}.career-caption{font-size:10px;margin-top:30px}.career-stops{gap:2px}.career-stops button{font-size:9px;padding-inline:1px}.career-hint{font-size:6px;line-height:1.7}.career-clock-top .eyebrow{font-size:6px}.career-chapter{font-size:7px}.command-dialog{padding:17px}.command-dialog .dialog-top{margin-bottom:14px;gap:10px}.command-dialog .eyebrow{font-size:6.5px;letter-spacing:.8px}.command-search input{font-size:13px}.command-option{padding:10px 7px;gap:10px}.command-option strong{font-size:12px}.command-option small{font-size:9px}.command-footer{font-size:6px}.command-footer kbd{font-size:6px}.command-options{max-height:min(360px,calc(100dvh - 220px))}.launcher-location{display:none}}
@media(max-width:370px){.career-clock{grid-template-columns:110px 1fr;column-gap:12px}.career-year{font-size:34px;top:46px}.career-year-label{bottom:26px}.career-stops button{font-size:8px}.career-stops button>span{font-size:5px}.career-dial{height:128px}.sketch-caption{font-size:7px}.map-toolbar>span{max-width:110px}.map-toolbar button{font-size:6px}}
.motion-paused .dial-arc,.motion-paused .timeline:after,.motion-paused .project-sketch,.motion-paused .moving-task,.motion-paused .mini-chart i,.motion-paused .rover-route{transition:none!important}
.motion-paused .project-sketch{transform:none!important}.motion-paused .experiment:hover,.motion-paused .button:hover{transform:none}
.motion-paused .moving-task,.motion-paused .mini-chart i{transform:none!important}.motion-paused .rover-route{stroke-dashoffset:0!important}
html:has(.motion-paused){scroll-behavior:auto}
@media(prefers-reduced-motion:reduce){.dial-arc,.timeline:after,.project-sketch,.moving-task,.mini-chart i,.rover-route,.command-option,.timeline-item h3{transition:none!important}.project-sketch,.moving-task,.mini-chart i{transform:none!important}.rover-route{stroke-dashoffset:0!important}}
@media print{.reading-progress,.career-clock,.explore-launcher,.project-sketch,.map-toolbar,.trace-steps{display:none!important}.journey-intro{position:static}}
