:root{--ink:#293e34;--muted:#7c847a;--paper:#eff0e8;--line:#d6dace;--green:#354e3e;--yellow:#d9b65a;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:Inter,"Helvetica Neue",Arial,sans-serif;color-scheme:light;font-family:var(--sans);color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:#e9ece3;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{border:0;background:none}button:focus-visible,a:focus-visible{outline:2px solid #8c7340;outline-offset:5px}button:hover,a:hover{transition:color .2s,background .2s,transform .2s}button:disabled{cursor:default}button[hidden],[hidden]{display:none!important}.skip-link{position:fixed;left:20px;top:-80px;z-index:100;background:#fff;padding:16px}.skip-link:focus{top:10px}
.site-header{height:104px;position:absolute;left:0;right:0;top:0;display:flex;align-items:center;justify-content:space-between;padding:0 5.1vw;z-index:8;gap:20px}.wordmark{display:flex;align-items:center;gap:13px;font-weight:600;font-size:15px;letter-spacing:-.3px}.brand-symbol{font-family:Georgia,serif;font-size:37px;width:44px;height:44px;background:#2b4135;border-radius:13px;display:grid;place-items:center;color:#f8f5e7;line-height:1;position:relative;padding-bottom:4px;display:block;text-align:center}.brand-symbol span{color:#dabb70}.brand-caption{font:8px var(--mono);display:block;letter-spacing:1.1px;color:#748172;margin-top:6px}.top-nav{display:flex;align-items:center;gap:28px;margin-left:8vw}.nav-link{font-size:12px;color:#747d72;position:relative;padding:12px 0}.nav-link:hover,.nav-link.active{color:#2c4335}.nav-link.active:after{content:"";position:absolute;bottom:3px;left:50%;height:4px;width:4px;border-radius:50%;background:#405744}.header-controls{display:flex;align-items:center;gap:18px}.circle-button{border:1px solid #d1d7ca;width:37px;height:37px;border-radius:50%;display:grid;place-items:center}.circle-button svg{width:16px;height:16px}.circle-button:hover{background:#fff7}.language-button{font:10px var(--mono);padding:10px 0}.language-button span{margin-left:5px;font-size:14px;color:#879080}
main{height:100svh;position:relative;min-height:600px}.intro{position:absolute;left:7.3vw;top:26%;z-index:4;pointer-events:none}.intro>*{pointer-events:auto}.eyebrow{font:9px var(--mono);letter-spacing:1.2px;display:flex;gap:8px;align-items:center;color:#74816d}.status-dot,.location-dot{width:5px;height:5px;background:#86976f;border-radius:50%;display:inline-block}.status-dot{box-shadow:0 0 0 4px #87976f14}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(44px,4.7vw,73px);line-height:1.04;font-weight:400;letter-spacing:-3.7px;margin:28px 0 22px}h1 em{font-weight:400;color:#668064}#intro-copy{font-size:13px;line-height:1.85;color:#7b8275;margin:0 0 30px}.primary-button{display:inline-flex;gap:36px;align-items:center;background:#2e4838;color:#f3f3e9;border-radius:7px;padding:17px 20px;font-size:12px;box-shadow:0 5px 15px #243d2110}.primary-button:hover{background:#466044;transform:translateY(-2px)}.primary-button>span:last-child{font-size:18px;line-height:1}.intro-note{color:#919789;font-size:9px;margin-top:14px}.intro-skills{display:flex;gap:9px;margin-top:35px}.intro-skills span{font:9px var(--mono);color:#7b8973;background:#dfe5d9;border:1px solid #d5ddcd;border-radius:4px;padding:6px 9px}
#scene-wrap{position:absolute;left:29%;right:-1%;top:10%;height:78%;touch-action:none;z-index:2}#room-canvas{display:block;width:100%;height:100%;outline:none;touch-action:none}#hotspots{position:absolute;inset:0;pointer-events:none;overflow:hidden}.hotspot{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);display:flex;align-items:center;gap:7px;border:1px solid #fff8;background:#f9faf0ed;box-shadow:0 3px 12px #334d2820;border-radius:30px;padding:7px 11px 7px 7px;color:#344b36;font-size:10px;white-space:nowrap;transition:opacity .2s,background .2s}.hotspot:hover{background:white}.hotspot-dot{width:16px;height:16px;display:grid;place-items:center;background:#d9b96b;color:#fff;border-radius:50%;font-size:12px}.hotspot[data-id^="cat"]{padding:5px;border-radius:50%;background:#fbfbf1de}.hotspot[data-id^="cat"] .hotspot-label{display:none}.hotspot[data-id^="cat"]:hover{border-radius:25px;padding-right:11px}.hotspot[data-id^="cat"]:hover .hotspot-label{display:block}.hotspot[data-id^="cat"] .hotspot-dot{background:#6f8b67;font-size:9px}.loading-label{position:absolute;top:48%;left:40%;font:11px var(--mono);display:flex;gap:10px;align-items:center;padding:12px 17px;border-radius:30px;background:#fafaf1ee;box-shadow:0 3px 18px #31432108;transition:opacity .5s}.loading-spinner{width:13px;height:13px;border:1px solid #b9c3ae;border-top-color:#2e4736;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#scene-fallback{position:absolute;inset:20%;display:flex;align-items:center;flex-direction:column;text-align:center;justify-content:center;background:#e0e6d9;border-radius:20px;padding:30px;line-height:1.6;font-size:14px}#scene-fallback>span{font-size:60px}
.room-help{position:absolute;right:18%;bottom:11.8%;display:flex;align-items:center;gap:9px;font:9px var(--mono);color:#89917f;z-index:3}.drag-icon{font-size:19px;color:#99a28b}.room-help button{font:8px var(--mono);text-decoration:underline;text-underline-offset:3px;margin-left:7px;color:#66745e}.small-interactions{position:absolute;left:7.3vw;bottom:13%;z-index:4;display:flex;gap:13px}.small-interactions button{padding:5px 0;font-size:11px;opacity:.7;display:flex;gap:4px;align-items:center}.small-interactions button span{font:8px var(--mono);display:none}.small-interactions button:hover{opacity:1}.small-interactions button:hover span{display:block}.site-footer{position:absolute;left:5.1vw;right:5.1vw;bottom:0;height:8%;border-top:1px solid #d0d8c5;display:flex;align-items:center;justify-content:space-between;z-index:4;gap:15px;font:9px var(--mono);color:#818b78}.site-footer>span:first-child{display:flex;align-items:center;gap:7px}.site-footer a{color:#4e6348}.footer-note{font-family:Georgia,serif;font-style:italic;font-size:12px}#toast{position:fixed;left:50%;bottom:8.5vh;transform:translate(-50%,15px);padding:13px 21px;border-radius:30px;color:#fff9e8;background:#2b4135ed;box-shadow:0 6px 24px #15271615;z-index:50;font-size:12px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap}#toast.visible{opacity:1;transform:translate(-50%,0)}
.computer-overlay{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1c2b22bb;backdrop-filter:blur(14px);padding:64px 5vw 28px;animation:desktop-enter .45s cubic-bezier(.2,.7,.2,1)}@keyframes desktop-enter{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.back-room{position:absolute;left:5.1vw;top:20px;display:flex;gap:13px;align-items:center;color:#eff3df;font-size:12px}.back-room>span:first-child{font-size:20px}.back-room kbd{font:9px var(--mono);border:1px solid #e6efd339;border-radius:4px;padding:3px 5px;margin-left:4px;color:#acbaa0}.desktop-shell{position:relative;width:min(1210px,100%);height:100%;max-height:850px;min-height:480px;border:7px solid #202c26;border-radius:18px;overflow:hidden;box-shadow:0 25px 100px #10291d66,0 0 0 1px #8ba18c55;background:#c7d6bf}.os-bar{height:37px;background:#eef3e4d9;backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:space-between;padding:0 18px;gap:10px;border-bottom:1px solid #f4f8eb90;position:relative;z-index:5;font-size:10px}.os-bar>div{display:flex;align-items:center;gap:16px}.os-symbol{font-family:Georgia,serif;font-weight:bold;font-size:23px;line-height:1}.os-bar strong{font-size:10px}.os-separator{opacity:.25}.os-bar>div>span:nth-last-child(1){color:#71816a;font-size:10px}.os-online{width:5px;height:5px;border-radius:50%;background:#7e956c}.desktop-wallpaper{position:absolute;inset:37px 0 0;background:#c9d7bf;overflow:hidden;background-image:radial-gradient(ellipse at 80% 0%,#ebeed1 0,transparent 60%),radial-gradient(ellipse at 30% 80%,#b2c4ae 0,transparent 60%)}.wallpaper-shape{position:absolute;transform:rotate(-30deg);border:1px solid #f5f3d15c;border-radius:46% 54% 40% 60%;pointer-events:none}.shape-one{width:70%;height:130%;right:-30%;bottom:-65%;background:#e4e3c54a}.shape-two{width:65%;height:130%;left:-25%;top:-70%;border-width:45px;border-color:#e1ead134}.desktop-welcome{position:absolute;left:7%;top:8%;z-index:1}.desktop-welcome>span{font:8px var(--mono);letter-spacing:1.7px;color:#74836b}.desktop-welcome h2{font:italic 56px Georgia,serif;font-weight:normal;letter-spacing:-2px;color:#40583d;margin:12px 0}.desktop-welcome h2 span{color:#8da179;animation:cursor 1.4s step-end infinite}@keyframes cursor{50%{opacity:0}}.desktop-welcome p{font-size:12px;color:#77876d}.desktop-folders{position:absolute;left:7%;right:6%;top:39%;display:grid;grid-template-columns:repeat(4,1fr);gap:25px;z-index:2}.folder-button{display:flex;flex-direction:column;align-items:flex-start;gap:14px;text-align:left;padding:15px 10px;border-radius:12px}.folder-button:hover,.folder-button:focus-visible{background:#ffffff30}.folder-icon{position:relative;width:88px;height:67px;filter:drop-shadow(0 8px 5px #48583822);display:block;transform:rotate(-3deg);transition:transform .25s}.folder-icon:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;border-radius:6px;background:var(--folder-back,#b9a25e);clip-path:polygon(0 0,39% 0,48% 13%,100% 13%,100% 100%,0 100%)}.folder-icon:after{content:"";position:absolute;left:0;right:0;top:15px;bottom:0;background:var(--folder,#dfc575);border-radius:3px 5px 7px 7px;border-top:1px solid #fff6;transform:skewX(-5deg);box-shadow:inset 0 -5px 10px #9d843b0a}.folder-glyph{position:absolute;z-index:1;left:29px;top:27px;font-size:23px;color:#7e6a3d77;font-family:Georgia,serif}.folder-button:hover .folder-icon{transform:rotate(0) translateY(-5px)}.folder-button strong{font-size:12px;font-weight:500;color:#3e563a}.folder-button small{font:8px var(--mono);color:#7b8a6d;margin-top:-7px}.desktop-note{position:absolute;right:7%;bottom:15%;width:205px;padding:22px 24px 12px;background:#f5ebbb;box-shadow:2px 7px 9px #40543219;transform:rotate(4deg);z-index:1}.desktop-note>span:first-of-type:not(.note-pin){font:8px var(--mono);color:#9c8e5b}.desktop-note p{font:italic 15px/1.5 Georgia,serif;color:#777248}.note-pin{position:absolute;top:-8px;left:38%;width:50px;height:19px;background:#f6f4da66;transform:rotate(-7deg);border:1px solid #fff2}.note-signature{font:italic 22px Georgia,serif;color:#807145;display:block;text-align:right}.wallpaper-label{position:absolute;bottom:27px;left:7%;font:8px var(--mono);letter-spacing:1.4px;color:#7e9072}.dock{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:6;display:flex;gap:6px;align-items:center;padding:7px 9px;border:1px solid #f5f9e7bb;background:#e8edddaa;backdrop-filter:blur(12px);border-radius:14px;box-shadow:0 5px 16px #32493019}.dock button,.dock a{width:37px;height:37px;border-radius:8px;background:#f6f3dcbb;display:grid;place-items:center;font-size:23px;color:#738567;box-shadow:0 2px 4px #364c3110;transition:transform .2s}.dock button:hover,.dock a:hover{transform:translateY(-5px)}.dock button:nth-of-type(2){background:#e9cb79aa;color:#97804a}.dock button:nth-of-type(3){background:#adc1a3aa}.dock button:nth-of-type(4){background:#b8b6ceaa;color:#77778f}.dock-divider{width:1px;height:23px;background:#8fa08044;margin:0 4px}
.file-window{position:absolute;inset:62px 4% 87px;z-index:4;background:#f9faf4;border-radius:10px;box-shadow:0 12px 40px #27382529;border:1px solid #a0b18a66;overflow:hidden;animation:window-enter .2s ease-out;display:flex;flex-direction:column}@keyframes window-enter{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.window-bar{height:39px;background:#eff2e8;border-bottom:1px solid #dfe5d7;display:flex;align-items:center;justify-content:space-between;padding:0 14px;flex-shrink:0}.window-dots{display:flex;align-items:center;gap:7px;width:80px}.window-dots button{padding:0;width:11px;height:11px;border-radius:50%;background:#ce8270;display:grid;place-items:center}.window-dots button:hover:before{content:'×';color:#6c3425;font-size:10px}.window-dots i{width:10px;height:10px;border-radius:50%;display:block;background:#d9bc71}.window-dots i:last-child{background:#a3b88b}#window-title{font:10px var(--mono)}.window-detail{font:8px var(--mono);color:#89977b}.file-layout{display:flex;flex:1;min-height:0}#folder-sidebar{width:166px;flex-shrink:0;background:#f0f2e8;padding:21px 11px;border-right:1px solid #e1e6d9}.sidebar-title{font:8px var(--mono);letter-spacing:1px;color:#95a086;padding:0 9px 13px}.sidebar-button{display:flex;gap:9px;align-items:center;width:100%;text-align:left;font-size:10px;padding:11px 9px;border-radius:5px;margin:2px 0;color:#78866c}.sidebar-button.active{background:#dce5d2;color:#3e5836}.sidebar-button:hover{background:#e3e9da}.sidebar-button>span{font-size:16px;width:17px}.sidebar-rule{height:1px;background:#dbe2d1;margin:20px 8px}.sidebar-download{display:block;font-size:9px;padding:10px;color:#7a876e}.sidebar-person{font:10px/1.7 var(--mono);padding:10px;color:#86927b}.sidebar-person strong{font-weight:400;color:#586c4c}#folder-content{overflow:auto;flex:1;padding:35px 40px 25px;scrollbar-width:thin;scrollbar-color:#c9d3bd transparent;outline-offset:-3px}.content-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:27px;border-bottom:1px solid #e5e9de;padding-bottom:23px}.content-heading .overline{font:8px var(--mono);text-transform:uppercase;letter-spacing:1.5px;color:#9aa38b}.content-heading h2{font:34px Georgia,serif;font-weight:400;letter-spacing:-1px;margin:9px 0 0;color:#354d31}.content-heading p{font-size:11px;line-height:1.7;color:#86927a;max-width:270px;margin:0}.career-item{padding:2px 0 26px 21px;margin-left:4px;border-left:1px solid #dce4d3;position:relative}.career-item:last-child{padding-bottom:0;border-left-color:transparent}.career-item:before{content:"";width:7px;height:7px;border:3px solid #f9faf4;border-radius:50%;background:#9dad87;position:absolute;left:-7px;top:5px}.career-item:first-of-type:before{background:#bba251}.career-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.career-item h3{font-size:16px;letter-spacing:-.3px;margin:0}.career-item .dates{font:8px var(--mono);color:#95a089}.career-title{font-size:10px;color:#74826a;margin:7px 0 12px}.career-summary{font-size:11px;line-height:1.75;color:#637459;margin:8px 0}.career-item details{margin:10px 0}.career-item summary{font:9px var(--mono);color:#748563;cursor:pointer;user-select:none}.career-item ul,.project-detail ul{font-size:11px;line-height:1.8;color:#75816c;padding-left:15px;margin:13px 0}.career-item li+li,.project-detail li+li{margin-top:8px}.tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}.tags span{font:8px var(--mono);background:#edf1e6;border:1px solid #e2e8d7;color:#839273;border-radius:3px;padding:4px 6px}.text-links{display:flex;gap:14px;margin-top:12px}.text-links a,.external-link{font-size:10px;color:#4d7145;text-decoration:underline;text-underline-offset:4px}.project-detail{border:1px solid #e1e6d8;border-radius:7px;margin:0 0 20px;overflow:hidden}.project-cover{padding:25px 25px 21px;display:flex;justify-content:space-between;align-items:center;background:#e7ecdd;position:relative;overflow:hidden}.project-detail:nth-of-type(2) .project-cover{background:#f1e8ce}.project-monogram{font:italic 36px Georgia,serif;letter-spacing:-3px;color:#78936a}.project-cover small{font:8px var(--mono);letter-spacing:1px;color:#889578}.project-body{padding:22px 25px}.project-body h3{font:24px Georgia,serif;font-weight:400;margin:0 0 10px}.project-role{font:8px var(--mono);color:#98a189}.project-body p{font-size:11px;line-height:1.8;color:#75816b}.project-body footer{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:20px}.project-body footer .dates{font:8px var(--mono);color:#99a18e}.achievement-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.achievement{padding:26px 23px;background:#f0eddf;border:1px solid #e2ddc9;border-radius:8px;position:relative;min-height:240px;overflow:hidden}.achievement:nth-child(2){background:#e7edde;border-color:#dce5cf}.award-icon{font:42px Georgia,serif;color:#b3a470;display:block;margin-bottom:35px}.achievement h3{font:21px Georgia,serif;font-weight:400;margin:0 0 12px}.achievement .award-result{font:9px var(--mono);letter-spacing:.5px;color:#9b916c}.achievement p{font-size:11px;line-height:1.8;color:#8a8c77;margin-top:20px}.award-year{position:absolute;right:20px;top:30px;font:10px var(--mono);color:#9da58e}.about-intro{display:flex;gap:22px;align-items:center;margin-bottom:23px}.initial-avatar{height:70px;width:70px;flex-shrink:0;border-radius:16px;background:#dee7d3;display:grid;place-items:center;font:italic 43px Georgia,serif;color:#648055;transform:rotate(-5deg)}.about-intro h3{font:26px Georgia,serif;font-weight:400;margin:0 0 7px}.about-intro span{font:8px var(--mono);color:#8c987e}.about-text p{font-size:12px;line-height:1.9;color:#738267}.contact-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.contact-links a{font-size:10px;border:1px solid #dce5d1;padding:11px 15px;border-radius:5px;background:#eff3e7}.contact-links a:hover{background:#e2ebd7}.window-status{height:24px;border-top:1px solid #e3e9db;display:flex;align-items:center;justify-content:space-between;padding:0 15px;font:8px var(--mono);color:#9ba58f;flex-shrink:0}.no-script{position:fixed;bottom:0;background:#fff;padding:20px;z-index:100;font-size:14px}.no-script a{text-decoration:underline}
@media(min-width:1600px){#scene-wrap{left:28%;right:3%;top:12%;height:76%}.intro{top:28%}.room-help{right:23%}}
@media(max-width:1100px){.site-header{padding:0 4vw}.intro{left:5vw;top:25%;max-width:280px}h1{font-size:55px}.eyebrow{font-size:7px}.intro-note{max-width:200px;line-height:1.7}.top-nav{margin-left:0}.room-help{right:13%;bottom:12%}.intro-skills{margin-top:25px}.small-interactions{left:5vw}.desktop-note{bottom:17%;right:5%;width:185px}.desktop-welcome h2{font-size:45px}#folder-content{padding:28px}.content-heading{align-items:start;flex-direction:column;gap:12px}.content-heading p{max-width:100%}}
@media(max-width:760px){body{overflow:hidden}.site-header{height:79px;padding:0 6vw}.wordmark{font-size:13px;gap:10px}.brand-symbol{width:36px;height:36px;font-size:31px;border-radius:10px}.brand-caption{font-size:6px;letter-spacing:.8px}.top-nav{display:none}.header-controls{gap:12px}.circle-button{width:32px;height:32px}.intro{top:13%;left:7%;max-width:88%;pointer-events:none}.eyebrow{font-size:7px;letter-spacing:1px}h1{font-size:46px;letter-spacing:-2.5px;line-height:1.06;margin:16px 0 12px}h1 br{display:none}h1 em{display:block}#intro-copy{font-size:11px;line-height:1.65;max-width:270px;margin-bottom:16px}.primary-button{font-size:10px;padding:13px 16px;gap:20px}.intro-note{display:none}.intro-skills{display:none}#scene-wrap{left:0;right:0;top:34%;height:54%}.room-help{left:0;right:0;justify-content:center;bottom:9.5%;font-size:7px;gap:6px}.room-help button{font-size:7px}.small-interactions{left:auto;right:6vw;bottom:auto;top:22%;flex-direction:column;gap:9px}.small-interactions button{font-size:10px}.small-interactions button span{display:none!important}.site-footer{height:6.5%;left:6vw;right:6vw;font-size:7px}.footer-note{display:none}.hotspot{font-size:8px;padding:5px 8px 5px 5px;gap:5px}.hotspot-dot{width:13px;height:13px;font-size:10px}.hotspot[data-id^="cat"]{padding:4px}.hotspot[data-id^="cat"]:hover .hotspot-label{display:none}.loading-label{left:30%;font-size:9px}.computer-overlay{padding:57px 10px 13px;background:#203021e8}.back-room{left:20px;top:17px;font-size:11px}.desktop-shell{min-height:0;max-height:none;border-width:4px;border-radius:13px}.os-bar{padding:0 11px;font-size:9px;height:32px}.os-bar>div{gap:10px}.os-bar>div>span:nth-last-child(1){font-size:8px}.os-online{display:none}.desktop-wallpaper{top:32px}.desktop-welcome{left:7%;top:6%}.desktop-welcome>span{font-size:6px;letter-spacing:1px}.desktop-welcome h2{font-size:44px;margin:12px 0}.desktop-welcome p{font-size:10px}.desktop-folders{top:29%;left:6%;right:6%;grid-template-columns:1fr 1fr;gap:15px}.folder-button{align-items:center;text-align:center;gap:10px;padding:15px 7px}.folder-icon{width:76px;height:57px}.folder-glyph{left:24px;top:23px;font-size:21px}.folder-button strong{font-size:11px}.folder-button small{font-size:7px;margin-top:-3px}.desktop-note{display:none}.wallpaper-label{font-size:6px;bottom:94px}.dock{bottom:15px;gap:4px;padding:6px}.dock button,.dock a{width:30px;height:32px;font-size:20px}.dock-divider{margin:0 2px}.file-window{inset:43px 7px 76px;border-radius:7px}.window-bar{padding:0 10px;height:35px}.window-detail{display:none}.window-dots{width:55px}.file-layout{flex-direction:column}#folder-sidebar{display:flex;width:100%;border-right:0;border-bottom:1px solid #e1e6d9;padding:7px 4px;justify-content:space-around;gap:2px}.sidebar-title,.sidebar-rule,.sidebar-download,.sidebar-person{display:none}.sidebar-button{width:auto;flex:1;flex-direction:column;gap:4px;font-size:7px;text-align:center;padding:5px 1px;margin:0;justify-content:center}.sidebar-button>span{font-size:15px;width:auto}#folder-content{padding:22px 18px}.content-heading{gap:10px;padding-bottom:16px;margin-bottom:20px}.content-heading h2{font-size:27px}.content-heading p{font-size:10px}.content-heading .overline{font-size:7px}.career-top{align-items:start;flex-direction:column;gap:6px}.career-item{padding-left:17px}.career-item h3{font-size:15px}.career-item .dates{font-size:8px}.career-summary,.career-item ul,.project-body p,.project-detail ul{font-size:11px}.career-title{font-size:10px;line-height:1.6}.tags span{font-size:7px}.project-cover{padding:18px 20px}.project-body{padding:20px}.project-role{line-height:1.7}.achievement-grid{grid-template-columns:1fr}.achievement{min-height:210px;padding:22px}.award-icon{margin-bottom:22px}.about-intro{gap:14px}.initial-avatar{height:56px;width:56px;font-size:34px}.about-intro h3{font-size:24px}.about-intro span{font-size:7px}.about-text p{font-size:11px}.window-status{font-size:6px;padding:0 8px}.contact-links{gap:7px}.contact-links a{padding:9px 11px;font-size:9px}#toast{max-width:90%;white-space:normal;text-align:center;font-size:11px;bottom:8vh}}
@media(max-height:690px) and (min-width:761px){.site-header{height:80px}.intro{top:22%}h1{font-size:50px;margin:20px 0 17px}#intro-copy{margin-bottom:20px}.intro-skills{margin-top:22px}.desktop-note{display:none}.desktop-welcome{top:8%}.desktop-folders{top:43%}.desktop-welcome h2{font-size:42px}.folder-icon{width:76px;height:58px}.folder-button{gap:10px}.room-help{bottom:10%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep portfolio reading comfortable at every size. */
.career-summary,.career-item ul,.project-body p,.project-detail ul,.about-text p,.achievement p{font-size:13px;color:#57674e}.content-heading p{font-size:12px;color:#64745b}.career-item summary{font-size:11px}.career-item summary:focus-visible{outline:2px solid #8c7340;outline-offset:4px}.window-dots button{position:relative}.window-dots button:after{content:"";position:absolute;inset:-10px}.intro-copy{color:#63705d}

@media(max-width:760px){.small-interactions{display:none}.hotspot{min-height:32px;min-width:32px;justify-content:center}}

/* Room-first identity. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-header{height:100px;padding:0 5vw;pointer-events:none}.site-header a,.site-header button{pointer-events:auto}.wordmark img{display:block;width:220px;height:auto}.header-controls{gap:20px}
#scene-wrap{left:4%;right:4%;top:8%;height:83%}.site-footer{height:7%;border-top:0;color:#5e7058}.site-footer a{font-family:inherit;font-size:11px}.small-interactions,.room-help{display:none}
.hotspot .hotspot-label{display:none}.hotspot{padding:6px;min-width:30px;min-height:30px;justify-content:center;background:#f5f7ebd9;box-shadow:0 2px 8px #334d2814}.hotspot:hover .hotspot-label,.hotspot:focus-visible .hotspot-label{display:block}.hotspot:hover,.hotspot:focus-visible{padding-right:10px}
.hotspot[data-id="computer"]{background:#2d4939;border-color:#2d4939;color:#fff}.hotspot[data-id="computer"] .hotspot-dot{background:transparent;color:#f4e6b7;font-size:17px}
.os-symbol{object-fit:contain}.desktop-welcome{top:7%;left:7%}.desktop-welcome h2{font-style:normal;font-size:51px;letter-spacing:-1.5px}.desktop-folders{top:28%}.desktop-film{position:absolute;left:7%;bottom:18%;display:flex;gap:14px;align-items:center;padding:10px;border:1px solid #eef3e3aa;border-radius:12px;background:#e5ecd866;text-align:left;z-index:2}.desktop-film:hover{background:#eef4e5aa}.film-thumbnail{position:relative;width:100px;height:60px;border-radius:6px;overflow:hidden;background:#2e4738;display:grid;place-items:center}.film-thumbnail img{width:100%;height:100%;object-fit:cover;opacity:.85}.film-thumbnail>span{position:absolute;color:#faf4df;font-size:17px}.desktop-film strong{font:12px var(--mono);font-weight:500;display:block;color:#365039}.desktop-film small{display:block;margin-top:8px;font-size:10px;color:#65785c}.personal-mark{flex-shrink:0;width:64px;height:64px}.personal-details{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:28px 0}.personal-details div{border-top:1px solid #d5dfcc;padding-top:13px}.personal-details dt{font:9px var(--mono);color:#859279;margin-bottom:8px}.personal-details dd{font:18px/1.4 Georgia,serif;color:#405b36;margin:0}.content-heading p:empty{display:none}.journey-view video{width:100%;display:block;aspect-ratio:16/9;background:#e9ece3;border-radius:8px}.film-description{display:flex;justify-content:space-between;gap:20px;font:10px var(--mono);color:#718367;margin-top:16px}.film-description a{text-decoration:underline;text-underline-offset:4px}.film-transcript{font-size:12px;color:#697e5f;line-height:1.8;margin:20px 0}.file-window:has(.journey-view){inset:62px 3% 87px}.file-window:has(.journey-view) #folder-content{padding:24px}.file-window:has(.journey-view) .content-heading{margin-bottom:18px;padding-bottom:15px}.file-window:has(.journey-view) .content-heading h2{font-size:27px}
@media(min-width:1600px){#scene-wrap{left:6%;right:6%;top:9%;height:82%}}
@media(max-width:760px){.site-header{height:86px;padding:0 6vw}.wordmark img{width:178px}.header-controls{gap:13px}#scene-wrap{left:0;right:0;top:14%;height:73%}.site-footer{height:8%;font-size:8px}.site-footer a{font-size:10px}.hotspot{min-width:32px;min-height:32px}.hotspot:hover .hotspot-label{display:none}.desktop-welcome{top:5%}.desktop-welcome h2{font-size:37px}.desktop-folders{top:20%;gap:9px}.folder-button{padding:10px 6px}.desktop-film{left:7%;right:7%;bottom:15%;gap:12px;padding:9px}.film-thumbnail{width:80px;height:45px}.desktop-film strong{font-size:10px}.desktop-film small{font-size:9px}.personal-details{grid-template-columns:1fr;gap:13px;margin:23px 0}.personal-details div{display:flex;justify-content:space-between;gap:12px;align-items:center}.personal-details dd{font-size:16px}.personal-details dt{margin:0}.file-window:has(.journey-view){inset:43px 7px 76px}.file-window:has(.journey-view) #folder-content{padding:18px 12px}.film-description{font-size:8px}.film-transcript{font-size:11px}}
@media(max-height:650px) and (max-width:760px){.desktop-welcome{display:none}.desktop-folders{top:5%;gap:0}.desktop-film{bottom:17%;padding:6px}.folder-icon{width:55px;height:43px}.folder-glyph{font-size:16px;left:17px;top:19px}.folder-button{gap:6px;padding:8px}.film-thumbnail{width:58px;height:33px}}

.journey-view iframe{width:100%;display:block;aspect-ratio:16/10;border:0;background:#e9ece3;border-radius:8px}.file-window:has(.journey-view) .film-transcript{margin:18px 0 0;font-size:10px;color:#738267}.file-window:has(.journey-view) #folder-sidebar{width:143px}.file-window:has(.journey-view) .content-heading{display:none}
@media(max-width:760px){.file-window:has(.journey-view) #folder-sidebar{width:100%}.journey-view iframe{aspect-ratio:4/5;min-height:350px}.file-window:has(.journey-view) .film-transcript{font-size:10px}}
.file-window:has(.journey-view) #folder-content{display:flex;flex-direction:column;overflow:hidden}.journey-view{display:flex;flex-direction:column;flex:1;min-height:0}.journey-view iframe{flex:1;min-height:0;height:100%;aspect-ratio:auto}.file-window:has(.journey-view) .film-transcript{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.site-header .wordmark{font:500 22px/1.2 var(--sans);letter-spacing:-.6px}@media(max-width:760px){.site-header .wordmark{font-size:20px}}
.file-window:has(.journey-view) #folder-sidebar{display:none}.file-window:has(.journey-view) #folder-content{padding:0}.journey-view iframe{border-radius:0}.file-window:has(.journey-view) .window-status{display:none}
.brand-logo{display:inline-flex;align-items:center;justify-content:center;width:146px;height:53px;padding:10px 13px;border:1px solid #dfe5da;border-radius:6px;background:#fff;flex-shrink:0}.brand-logo img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.brand-logo--dark{background:#25352d;border-color:#25352d}.brand-logo--large{width:210px;height:76px;padding:13px 18px}.career-brand{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.career-top{align-items:center}.project-cover{gap:18px}.project-cover small{line-height:1.6}.achievement>.brand-logo{margin:8px 0 25px;width:136px;height:48px}.achievement .award-year{top:18px}.personal-details{grid-template-columns:repeat(auto-fit,minmax(125px,1fr))}@media(max-width:760px){.career-top{align-items:flex-start;flex-direction:column;gap:9px}.career-brand{gap:12px}.brand-logo{width:126px;height:47px;padding:8px 11px}.brand-logo--large{width:170px;height:63px;padding:11px 14px}.project-cover{padding:20px;flex-wrap:wrap;gap:12px}.personal-details{grid-template-columns:1fr}}
.brand-logo--icon{gap:11px;justify-content:flex-start}.brand-logo--icon img{width:36px;height:36px;flex-shrink:0}.brand-logo--icon b{font:600 16px/1.15 var(--sans);color:#293e34}.brand-logo--icon.brand-logo--large img{width:42px;height:42px}@media(max-width:760px){.brand-logo--icon.brand-logo--large img{width:34px;height:34px}.brand-logo--icon b{font-size:14px}}

/* Personal tab: the numbers read as stats. */
.personal-details{grid-template-columns:repeat(4,1fr)}
@media(max-width:760px){.personal-details{grid-template-columns:1fr}}
.personal-details dd{font-size:30px;line-height:1.1;letter-spacing:-.5px}
@media(max-width:760px){.personal-details dd{font-size:22px}}

/* Computer hotspot: a red arcade button with its label always on show. */
.hotspot[data-id="computer"],.hotspot[data-id="computer"]:hover,.hotspot[data-id="computer"]:focus-visible{width:44px;height:44px;min-width:0;min-height:0;padding:0;border:0;border-radius:50%;background:none;box-shadow:none;outline:none;overflow:visible;justify-content:center}
.arcade{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#3a3a38,#151514 70%);box-shadow:0 5px 12px #1d140c66,0 2px 0 #000,inset 0 1px 1px #ffffff40,inset 0 -2px 3px #00000080}
.arcade::before{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid #e3262f;opacity:0;animation:arcade-pulse 2.6s ease-out infinite;pointer-events:none}
.arcade-cap{position:relative;width:31px;height:31px;margin-top:-5px;border-radius:50%;background:radial-gradient(circle at 36% 30%,#ff9b8f 0,#ff4436 22%,#e0141f 58%,#a50b15 100%);box-shadow:0 5px 0 #7c0710,0 7px 6px #0000008c,inset 0 -4px 6px #00000040,inset 0 2px 2px #ffffff70;transition:transform .09s ease,box-shadow .09s ease,filter .15s}
.arcade-cap::after{content:"";position:absolute;left:6px;top:5px;width:11px;height:7px;border-radius:50%;background:#ffffffb8;filter:blur(1.2px);transform:rotate(-22deg)}
.hotspot[data-id="computer"]:hover .arcade-cap{filter:brightness(1.1) saturate(1.1)}
.hotspot[data-id="computer"]:active .arcade-cap{transform:translateY(4px);box-shadow:0 1px 0 #7c0710,0 2px 3px #0000008c,inset 0 -3px 5px #00000040,inset 0 2px 2px #ffffff70}
.hotspot[data-id="computer"]:focus-visible .arcade{outline:3px solid var(--yellow);outline-offset:5px}
.hotspot[data-id="computer"] .hotspot-label{display:block;position:absolute;left:50%;bottom:calc(100% + 11px);transform:translateX(-50%);padding:6px 9px;border-radius:6px;background:#1c1d1b;color:#fff;font:600 9px/1 var(--mono);letter-spacing:1.2px;text-transform:uppercase;white-space:nowrap;box-shadow:0 4px 12px #1d140c40;pointer-events:none}
.hotspot[data-id="computer"] .hotspot-label::after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:#1c1d1b}
@keyframes arcade-pulse{0%{transform:scale(.86);opacity:.75}70%,100%{transform:scale(1.22);opacity:0}}
@media(max-width:760px){.hotspot[data-id="computer"],.hotspot[data-id="computer"]:hover,.hotspot[data-id="computer"]:focus-visible,.arcade{width:32px;height:32px}.arcade-cap{width:23px;height:23px;margin-top:-3px}.arcade-cap::after{left:4px;top:4px;width:8px;height:5px}.hotspot[data-id="computer"] .hotspot-label{display:block;font-size:8px;padding:5px 8px;bottom:calc(100% + 10px)}}
/* Desktop apps: the film and the terminal share the bottom row. */
.desktop-apps{position:absolute;left:7%;right:7%;bottom:18%;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;pointer-events:none}
.desktop-apps .desktop-film{position:relative;left:auto;right:auto;bottom:auto;pointer-events:auto}
.film-thumbnail.terminal-thumbnail{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:0 10px;background:#1b241f;box-shadow:inset 0 0 0 1px #34443a}
.film-thumbnail.terminal-thumbnail>span{position:static;font:7px var(--mono);color:#9fc08d;white-space:nowrap}
.terminal-thumbnail b{font:600 19px/1 var(--mono);color:#e0bd5f}
.terminal-thumbnail i{font-style:normal;animation:term-blink 1.1s step-end infinite}
@keyframes term-blink{50%{opacity:0}}
.dock .dock-terminal{font:600 14px/1 var(--mono);letter-spacing:-1px;color:#3f5a45}
/* The terminal window. */
.file-window:has(.terminal) #folder-sidebar,.file-window:has(.terminal) .window-status{display:none}
.file-window:has(.terminal) #folder-content{padding:0;background:#18211c;display:flex;flex-direction:column;scrollbar-color:#3a4a40 transparent}
.terminal{flex:1 0 auto;display:flex;flex-direction:column;padding:16px 20px 18px;font:13px/1.7 var(--mono);color:#d5dfc6;cursor:text}
.terminal-log{white-space:pre-wrap;overflow-wrap:anywhere}
.t-line{min-height:1.7em}
.t-dim{color:#7f907a}
.t-err{color:#e8a08c}
.t-win{color:#f0cb62}
.t-bar{color:#a9c99a;letter-spacing:.5px}
.t-help b{font-weight:400;color:#f2ecd8}
.t-ls{display:flex;flex-wrap:wrap;column-gap:22px}
.t-folder{color:#a9c99a}
.t-prompt,.terminal-prompt{color:#a9c99a}
.t-prompt b,.terminal-prompt b{font-weight:600;color:#e0bd5f}
.terminal-line{display:flex;align-items:baseline;gap:8px}
.terminal-prompt{flex-shrink:0;white-space:nowrap;cursor:text}
#terminal-input{flex:1;min-width:0;border:0;background:none;color:#f2ecd8;font:inherit;padding:0;margin:0;outline:none;caret-color:#e0bd5f;border-radius:0}
.terminal-keys{position:sticky;bottom:0;display:flex;gap:8px;margin:auto -20px -18px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#121915;border-top:1px solid #2a372f}
.terminal-keys button{flex:1;height:42px;border:0;border-radius:8px;background:#26332b;color:#ece6cf;font:18px var(--mono);display:grid;place-items:center;touch-action:manipulation}
.terminal-keys button:active{background:#3a4c41}
/* ~/special-thanks: hidden until the Konami code, then it drops onto the desktop. */
.desktop-folders:has(.folder-button--secret){grid-template-columns:repeat(5,1fr);column-gap:14px}
.folder-button--secret .folder-icon{transform:rotate(4deg)}
.folder-button--secret:hover .folder-icon{transform:rotate(0) translateY(-5px)}
.folder-button--secret .folder-glyph{color:#9b5f4799}
.folder-button--secret.is-new{position:relative;animation:secret-drop 1s cubic-bezier(.2,.9,.3,1.15) both}
.folder-button--secret.is-new:after{content:"";position:absolute;inset:-18px;border-radius:24px;background:radial-gradient(circle,#fff7d8cc,transparent 66%);animation:secret-glow 1.7s ease-out both;pointer-events:none}
@keyframes secret-drop{0%{opacity:0;transform:translateY(-70px) rotate(-12deg) scale(.7)}55%{opacity:1;transform:translateY(8px) rotate(3deg) scale(1.03)}78%{transform:translateY(-3px) rotate(-1deg)}100%{opacity:1;transform:none}}
@keyframes secret-glow{0%{opacity:0;transform:scale(.6)}35%{opacity:1}100%{opacity:0;transform:scale(1.25)}}
.thanks{display:flex;flex-direction:column;gap:30px}
.thanks-label{margin:0 0 14px;font:9px var(--mono);font-weight:400;letter-spacing:1.5px;text-transform:uppercase;color:#8f9a80}
.thanks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.thanks-card{padding:18px 18px 17px;border:1px solid #e3e7da;border-radius:10px;background:#fffef9;box-shadow:0 2px 6px #3549300a}
.thanks-card h4{margin:0;font:21px Georgia,serif;font-weight:400;letter-spacing:-.4px;color:#354d31}
.thanks-role{display:block;margin-top:6px;font:9px var(--mono);letter-spacing:.4px;color:#86927a}
.thanks-role i{font-style:normal;color:#a7814b}
.thanks-card p{margin:12px 0 0;font:italic 14px/1.6 Georgia,serif;color:#57674e}
.thanks-card--memoriam{background:#fcf7ec;border-color:#ebe0c8}
@media(pointer:coarse){#terminal-input{font-size:16px}}
@media(max-width:1100px){.desktop-folders:has(.folder-button--secret){column-gap:6px}}
@media(max-width:760px){
.desktop-apps{left:7%;right:7%;bottom:15%;align-items:stretch;gap:9px}
.desktop-apps .desktop-film{flex:1 1 0;min-width:0;flex-direction:column;align-items:stretch;gap:8px;padding:7px}
.desktop-apps .film-thumbnail{width:100%;height:52px}
.desktop-apps .desktop-film>span:last-child{padding:0 3px 2px}
.desktop-apps .desktop-film strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.desktop-apps .desktop-film small{margin-top:5px}
.film-thumbnail.terminal-thumbnail{padding:0 10px}
.terminal-thumbnail b{font-size:16px}
.desktop-folders:has(.folder-button--secret){display:flex;flex-wrap:wrap;justify-content:center;gap:9px 6px}
.desktop-folders:has(.folder-button--secret)>.folder-button{width:calc((100% - 12px)/3)}
.terminal{padding:14px 14px 16px;font-size:12px}
.terminal-keys{margin:auto -14px -16px}
.t-ls{column-gap:16px}
.thanks{gap:24px}
.thanks-card{padding:16px 16px 15px}
.thanks-card h4{font-size:19px}
.thanks-card p{font-size:13px}
}
@media(max-height:650px) and (max-width:760px){
.desktop-apps{bottom:17%}
.desktop-apps .film-thumbnail{height:36px}
.desktop-apps .desktop-film small{display:none}
}
