:root{font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;color:#303a49;background:#f8f8f4;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #355976;outline-offset:6px}button{border:0;background:none}header{height:88px;display:flex;justify-content:space-between;align-items:center;padding:0 3.4vw;position:relative;z-index:2}.wordmark{text-decoration:none;color:inherit;font-size:19px;letter-spacing:5px}nav{display:flex;gap:32px}nav button{font-size:12px;letter-spacing:2px;padding:12px 0}nav button:hover{color:#687f98}main{height:calc(100svh - 88px);min-height:580px;position:relative}#world{position:relative;height:calc(100% - 80px);min-height:480px;overflow:hidden}#canvas,#canvas canvas{position:absolute;width:100%;height:100%;inset:0;display:block}#fallback{width:100%;height:100%;object-fit:contain}#loading{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);font-size:14px;letter-spacing:2px}#loading span{display:block;margin:16px auto;height:1px;width:80px;background:#667789;animation:load 1.3s ease-in-out infinite}@keyframes load{50%{transform:scaleX(.3)}}.room-label{position:absolute;top:30%;z-index:1;transform:translateY(-50%);pointer-events:none}.room-label button{pointer-events:auto;text-align:left;padding:14px 0;display:flex;flex-direction:column;gap:8px}.room-label span{font-size:12px;letter-spacing:1.2px;white-space:nowrap}.room-label small{font-size:12px;color:#78808a;opacity:0;transform:translateY(3px);transition:.25s}.room-label button:after{content:'';height:1px;width:30px;background:#a7afb4;transition:width .3s}.room-label.left{left:2.7%}.room-label.right{right:2.7%}.room-label.left button{text-align:right;align-items:flex-end}.room-label.right button{align-items:flex-start}.room-label.active small,.room-label button:focus-visible small,.room-label button:hover small{opacity:1;transform:none}.room-label.active button:after,.room-label button:hover:after{width:68px;background:#344f72}#label-about{top:28%}#label-portfolio{top:68%}#label-awards{top:22%}#label-other{top:69%}footer{height:80px;display:flex;align-items:center;justify-content:space-between;padding:0 3.4vw;position:relative}.edition{font-size:10px;letter-spacing:1.4px;color:#899096}.explore{text-align:center;font-size:13px;letter-spacing:2px;position:absolute;left:50%;transform:translateX(-50%)}.explore span{display:block;font-size:12px;letter-spacing:1px;color:#8b9297;margin-top:9px}#motion,#reset{font-size:12px;color:#697681;padding:10px 0}dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(480px,100%);height:100%;max-height:100%;max-width:100%;padding:76px 44px 40px;border:0;color:#303a49;background:#f8f8f4;box-shadow:-10px 0 60px #182d3b10}dialog::backdrop{background:#202e4228;backdrop-filter:none}dialog .close{position:absolute;top:24px;right:28px;font-size:30px;font-weight:200}.eyebrow{font-size:12px;letter-spacing:2px;color:#83909a}h1{font-size:36px;font-weight:400;letter-spacing:-1px;margin:24px 0}h2{font-size:15px;font-weight:400;margin:30px 0 15px}#detail-body p{font-size:16px;line-height:1.9;color:#61707a}#detail-body .muted{font-size:14px;color:#8b9297}ul{list-style:none;padding:0}li{padding:18px 0;border-top:1px solid #dce0de;font-size:15px;line-height:1.65}li small{display:block;color:#8b9297;font-size:12px;letter-spacing:1px;margin-top:5px}.return{padding:16px 0;margin-top:30px;border-bottom:1px solid #a7afb4;font-size:14px}[hidden]{display:none!important}@media(min-width:1700px){.room-label.left{left:5%}.room-label.right{right:5%}}@media(max-width:1050px){.room-label span{font-size:10px;letter-spacing:.5px}.room-label.left{left:1.5%}.room-label.right{right:1.5%}nav{gap:20px}}@media(max-width:700px){header{height:75px;padding:0 22px}.wordmark{font-size:15px;letter-spacing:3px}nav{gap:16px}nav button{font-size:10px;letter-spacing:1px}nav button:last-child{display:none}main{height:calc(100svh - 75px);min-height:660px}#world{height:calc(100% - 120px);min-height:520px}#canvas{height:70%;top:1%}.room-label,.room-label.left,.room-label.right{transform:none;top:auto!important;bottom:65px;left:7%;right:auto;width:42%}.room-label button,.room-label.left button{text-align:left;align-items:flex-start;padding:10px 0}.room-label small{opacity:1;transform:none;font-size:11px}.room-label span{font-size:11px}.room-label:after{display:none}#label-awards,#label-other{left:54%}#label-portfolio,#label-other{bottom:0}footer{height:110px;padding:40px 7% 0;align-items:center}.edition{display:none}.explore{top:12px;font-size:12px}.explore span{display:none}#motion{margin-left:auto}dialog{padding:70px 28px 30px}h1{font-size:30px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Room exploration keeps the scene in focus; the directory is non-modal. */
#canvas{touch-action:none}#canvas:focus-visible{outline:1px solid #8393a3;outline-offset:-5px}
body.exploring .room-label,body.exploring .edition,body.exploring .explore{display:none}
#room-toolbar{position:absolute;z-index:3;top:8px;left:3.4vw;right:3.4vw;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}
#room-toolbar>div,#room-toolbar>button{pointer-events:auto}#room-toolbar button{background:#f8f8f4ed;padding:12px 15px;font-size:13px;border:1px solid #dce0de}
#room-caption{font-size:12px;letter-spacing:1.6px;margin:15px 0;color:#667685}
#room-controls{position:absolute;bottom:6px;left:3.4vw;right:3.4vw;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;pointer-events:none;z-index:2}
#room-controls button{pointer-events:auto;background:#f8f8f4f2;border:1px solid #d3d9da;font-size:13px;padding:10px 14px;min-height:42px}
.object-actions,.camera-controls{display:flex;gap:6px;flex-wrap:wrap}.object-actions button.active,.object-actions button:hover{background:#e5eaf0!important;border-color:#73879d!important}.camera-controls button:not(:last-child){font-size:20px;width:42px;padding:5px}
#interaction-hint{width:100%;font-size:12px;color:#74828c;letter-spacing:.5px;margin:0;min-height:18px}
#detail{position:fixed;z-index:6;right:0;top:88px;bottom:80px;width:min(390px,90vw);padding:65px 30px 28px;background:#f8f8f4;border-left:1px solid #d8dedf;overflow-y:auto;box-shadow:-5px 0 20px #25374608}
#detail .close{position:absolute;top:14px;right:18px;font-size:28px;padding:6px}#detail h1{font-size:29px}#detail .return{margin-top:15px}
body.directory-open #directory-toggle{visibility:hidden}
#photo-dialog{inset:0;margin:auto;width:min(650px,92vw);height:fit-content;max-height:90svh;overflow-y:auto;padding:30px;background:#f8f8f4;border:1px solid #cbd1d4;box-shadow:0 10px 50px #27364422}
#photo-dialog::backdrop{background:#25324414;backdrop-filter:none}
#photo-close{position:absolute;top:13px;right:15px;font-size:27px;padding:4px 10px}#photo-dialog h2{font-size:24px;margin:16px 0 22px}
#portrait-preview{display:block;max-width:100%;max-height:55svh;object-fit:contain;margin:0 auto 22px}
#photo-empty{height:220px;display:grid;place-items:center;border:1px solid #d6dce0;color:#79858f;font-size:15px;margin-bottom:24px}
.photo-upload{cursor:pointer;display:inline-block;border-bottom:1px solid #607489;font-size:14px;padding:9px 0}#photo-note{font-size:13px;line-height:1.8;color:#84909a}
@media(max-width:700px){body.exploring #canvas{height:100%;top:0}body.exploring #world{height:calc(100% - 65px)}body.exploring footer{height:65px;padding-top:0}#room-toolbar{left:5%;right:5%;top:4px}#room-toolbar button{font-size:12px;padding:10px}#room-caption{font-size:10px;letter-spacing:1px}#room-controls{left:5%;right:5%;bottom:7px;gap:8px}.object-actions{width:100%}#room-controls button{font-size:12px;padding:8px 12px}.camera-controls button:not(:last-child){font-size:18px}#interaction-hint{font-size:11px}#detail{top:75px;bottom:0;width:88vw}#photo-dialog{padding:25px 20px}#photo-empty{height:150px}}

#guest-open{margin-top:8px;font-size:13px;letter-spacing:.08em}#guestbook-dialog{box-sizing:border-box;width:min(520px,calc(100vw - 32px));max-height:85dvh;overflow:auto;padding:36px;border:1px solid #bfc4c7;background:#f8f8f4;color:#364150}#guestbook-dialog::backdrop{background:rgba(32,43,53,.20)}#guest-close{position:absolute;top:12px;right:16px;font-size:25px}#guestbook-dialog h2{font-weight:400;font-size:28px}#guestbook-dialog .muted{font-size:14px;line-height:1.65;color:#737d84}#guest-form{display:grid;gap:10px;margin-top:24px}#guest-form label{font-size:14px}#guest-form input,#guest-form textarea{box-sizing:border-box;width:100%;padding:12px;border:1px solid #bfc4c7;border-radius:0;background:#fff;font:inherit;font-size:16px;color:#364150}#guest-form textarea{resize:vertical}#guest-form button{justify-self:start;padding:10px 18px;background:#364150;color:white;margin-top:4px}#guest-status{font-size:14px;min-height:20px}.guest-list-heading{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d4d6d2;margin-top:20px}.guest-list-heading h3{font-size:16px;font-weight:400}#guest-manage{font-size:13px;text-decoration:underline}#guest-list article{padding:16px 0;border-top:1px solid #e0e1dc;overflow-wrap:anywhere}#guest-list article strong{font-size:14px;font-weight:500}#guest-list article p{font-size:16px;line-height:1.6;white-space:pre-wrap}#guest-list article button{font-size:14px;color:#904638}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #60768e;outline-offset:3px}

.resume-download{padding:12px 16px;border:1px solid #b6bec5;font-size:14px}.resume-download:disabled{cursor:default;color:#79838b}#contact-dialog{overflow:auto}#contact-dialog h2{font-size:30px}#contact-close{position:absolute;top:24px;right:28px;font-size:28px}#contact-dialog dt{font-size:14px;color:#7c8790;margin-top:28px}#contact-dialog dd{margin:12px 0;font-size:16px}nav{gap:24px}nav button{font-size:14px;letter-spacing:.06em;white-space:nowrap}@media(max-width:700px){header{height:112px;align-items:flex-start;padding-top:20px;flex-direction:column;justify-content:flex-start;gap:14px}nav{width:100%;gap:16px;overflow-x:auto}nav button,nav button:last-child{display:block;font-size:13px;padding:8px 0}main{height:calc(100svh - 112px)}}

#language-toggle{border-left:1px solid #ccd1d2;padding-left:16px;flex-shrink:0}#detail-body a{display:inline-block;line-height:1.5}#detail-body li a{width:100%}#detail-body a:hover{text-decoration:underline}nav{gap:18px}html[lang=en] nav button{font-size:12px;letter-spacing:0}html[lang=en] nav{gap:16px}@media(max-width:1050px){header{height:112px;flex-wrap:wrap;align-content:center;gap:12px}header nav{width:100%;overflow-x:auto;flex-shrink:0}main{height:calc(100svh - 112px)}}
