*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:system-ui,Segoe UI,Roboto,sans-serif}#experience{position:fixed;inset:0;overflow:hidden}#experience-canvas{width:100%;height:100%;display:block}.loading-screen{z-index:20;background-color:#87ceeb;flex-direction:column;justify-content:center;align-items:center;transition:opacity .6s;display:flex;position:fixed;inset:0}.loading-screen.fade-out{opacity:0;pointer-events:none}.loading-screen-content{flex-direction:column;align-items:center;max-width:min(420px,90vw);display:flex}.loading-text{color:#fff;text-shadow:0 1px 6px #00000040;margin:0;font-size:36px}.loading-progress-track{background:#fff3;border-radius:999px;width:min(380px,85vw);height:10px;margin-top:24px;overflow:hidden;box-shadow:inset 0 1px 3px #0000001f}.loading-progress-fill{height:100%;width:var(--load-pct,2%);background:linear-gradient(90deg,#fff,#ffffffe0);border-radius:999px;min-width:4px;transition:width .18s ease-out;box-shadow:0 0 12px #ffffff73}.enter-button{color:#fff;cursor:pointer;text-shadow:0 1px 6px #00000040;background:0 0;border:3px solid #fff;padding:8px 24px;font-size:36px;transition:background .2s,color .2s}.enter-button:hover{color:#5ba3c9;background:#fff}.instructions{color:#fff;text-align:center;text-shadow:0 1px 6px #00000040;width:100%;font-size:22px;position:absolute;bottom:8%;left:50%;transform:translate(-50%)}.modal-container{z-index:10;position:fixed;inset:0}.modal-bg-overlay{z-index:11;background:#31313159;position:fixed;inset:0}.modal{z-index:12;color:#fff;scrollbar-width:thin;scrollbar-color:#ffffff4d transparent;background:#ad8671;border:4px solid #fff;border-radius:8px;width:100%;max-width:820px;max-height:85vh;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.modal::-webkit-scrollbar{width:6px}.modal::-webkit-scrollbar-track{background:0 0}.modal::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.modal::-webkit-scrollbar-thumb:hover{background:#ffffff80}.modal-wrapper{padding:16px}.modal-header{border-bottom:2px solid #fff;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;padding-bottom:12px;display:flex}.modal-title{margin:0;font-size:28px;line-height:1.2}.modal-subtitle{opacity:.85;margin:4px 0 0;font-size:15px;font-weight:400;line-height:1.4}.modal-tech-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.modal-tech{background:#fff3;border-radius:4px;padding:4px 10px;font-size:15px;line-height:1.4;display:inline-block}.modal-exit-button{color:#fff;cursor:pointer;background:0 0;border:2px solid #fff;border-radius:6px;flex-shrink:0;padding:4px 14px;font-size:16px;font-weight:600;transition:background .2s,color .2s}.modal-exit-button:hover{color:#ad8671;background:#fff}.modal-content-wrapper{flex-direction:column;gap:18px;display:flex}.modal-section{flex-direction:column;gap:8px;display:flex}.modal-section-title{border-bottom:1px solid #ffffff4d;margin:0;padding-bottom:4px;font-size:18px;font-weight:700}.modal-section-text{margin:0;font-size:15px;line-height:1.6}.modal-description-list{flex-direction:column;gap:8px;margin:8px 0 0;padding-left:20px;font-size:17px;line-height:1.6;display:flex}.modal-description-list:before{content:"Contributions";border-bottom:1px solid #ffffff4d;margin-bottom:4px;margin-left:-20px;padding-bottom:4px;font-size:18px;font-weight:700;display:block}.modal-contributions-list{flex-direction:column;gap:8px;margin:0;padding-left:20px;font-size:15px;line-height:1.6;display:flex}.modal-project-description{white-space:pre-line;margin:0;font-size:17px;line-height:1.6}.modal-image-gallery{scrollbar-width:thin;scrollbar-color:#ffffff4d transparent;flex-wrap:wrap;justify-content:center;gap:10px;padding:4px 0;display:flex}.modal-image-gallery::-webkit-scrollbar{width:6px}.modal-image-gallery::-webkit-scrollbar-track{background:0 0}.modal-image-gallery::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.modal-image-gallery::-webkit-scrollbar-thumb:hover{background:#ffffff80}.modal-image{object-fit:contain;border:2px solid #fff6;border-radius:4px;width:calc(50% - 5px);height:auto}.modal-image-gallery-aboutme .modal-image,.modal-image-gallery-aboutme .modal-image-button{width:calc(25% - 7.5px)}.modal-image-gallery-aboutme-belt{--aboutme-belt-thumb-width:240px;--aboutme-belt-thumb-height:190px;width:100%;padding:4px 0;overflow:hidden}.modal-image-gallery-aboutme-belt-track{will-change:transform;flex-wrap:nowrap;gap:10px;display:flex}.modal-image-gallery-aboutme-belt-set{flex-wrap:nowrap;gap:10px;display:flex}.modal-image-gallery-aboutme-belt .modal-image-button-aboutme{width:var(--aboutme-belt-thumb-width);height:var(--aboutme-belt-thumb-height);flex:none}.modal-image-gallery-aboutme-belt .modal-image-button-aboutme .modal-image{object-fit:cover;width:100%;height:100%}.modal-image-button{cursor:zoom-in;background:0 0;border:0;width:calc(50% - 5px);padding:0;position:relative;overflow:hidden}.modal-image-loading-skeleton{pointer-events:none;z-index:0;background:linear-gradient(110deg,#ffffff1f 0%,#ffffff47 45%,#ffffff1f 90%) 0 0/200% 100%;border-radius:4px;transition:opacity .35s;animation:1.35s ease-in-out infinite modal-image-shimmer;position:absolute;inset:0}.modal-image-button--loaded .modal-image-loading-skeleton{opacity:0}.modal-image-with-loader{z-index:1;opacity:0;transition:opacity .4s;position:relative}.modal-image-button--loaded .modal-image-with-loader{opacity:1}@keyframes modal-image-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.modal-image-button .modal-image{width:100%}.modal-image-placeholder{opacity:.6;text-align:center;border:2px dashed #ffffff4d;border-radius:4px;padding:16px 0;font-size:14px;font-style:italic}.modal-links{flex-wrap:wrap;gap:10px;display:flex}.modal-link-button{color:#ad8671;cursor:pointer;background:#fff;border-radius:4px;align-items:center;gap:6px;padding:4px 10px;font-size:15px;font-weight:600;line-height:1.4;text-decoration:none;transition:background .2s,color .2s;display:inline-flex}.modal-link-button:hover{background:#ffffffd9}.modal-link-icon{width:18px;height:18px}.image-lightbox{z-index:13;background:#000000c7;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.image-lightbox-loading{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.image-lightbox-spinner{border:3px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:44px;height:44px;animation:.75s linear infinite image-lightbox-spin}.image-lightbox-loading-text{color:#ffffffd9;letter-spacing:.02em;font-size:15px}@keyframes image-lightbox-spin{to{transform:rotate(360deg)}}.image-lightbox-image{object-fit:contain;opacity:0;border:2px solid #fff9;border-radius:8px;width:auto;max-width:min(1200px,92vw);height:auto;max-height:88vh;transition:opacity .35s}.image-lightbox-image--visible{opacity:1}.image-lightbox-close{color:#fff;cursor:pointer;background:0 0;border:2px solid #fff;border-radius:6px;padding:4px 12px;font-size:20px;line-height:1;position:fixed;top:20px;right:20px}
