:root{--color-bg: #050505;--color-primary: #50C878;--color-primary-glow: rgba(80,200,120,.4);--color-text: #F0F0F0;--color-text-muted: #A0A0A0;--glass-bg: rgba(5,5,5,.88);--glass-border: rgba(80,200,120,.18);--font-heading: "Outfit", sans-serif;--font-body: "Inter", sans-serif;--glass-blur: 28px}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}body.cave-page{overflow:hidden;height:100vh;width:100vw}html{scroll-behavior:smooth}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700}#cave-mount{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}#cave-mount canvas{display:block;width:100%!important;height:100%!important}.glass-nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:1rem 2.5rem;background:#050505c7;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--glass-border)}.logo{font-family:var(--font-heading);font-weight:900;font-size:1.3rem;letter-spacing:4px;color:var(--color-primary);text-decoration:none;text-shadow:0 0 18px var(--color-primary-glow)}.cta-button{display:inline-block;padding:.5rem 1.4rem;background:var(--color-primary);color:#000;border:none;border-radius:50px;font-weight:700;font-family:var(--font-heading);font-size:.82rem;letter-spacing:1px;cursor:pointer;box-shadow:0 0 16px var(--color-primary-glow);transition:box-shadow .2s,transform .2s}.cta-button:hover{box-shadow:0 0 30px #50c878a6;transform:translateY(-2px)}#ore-tooltip{position:fixed;pointer-events:none;z-index:50;background:#050505e6;border:1px solid var(--glass-border);color:var(--color-primary);font-size:.7rem;letter-spacing:2px;text-transform:uppercase;padding:.35rem .75rem;border-radius:6px;opacity:0;transition:opacity .12s;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}#ore-tooltip.visible{opacity:1}.cave-hint{position:fixed;bottom:1.8rem;left:50%;transform:translate(-50%);color:#ffffff47;font-size:.7rem;letter-spacing:3px;text-transform:uppercase;pointer-events:none;z-index:50;animation:hintPulse 3s ease-in-out infinite}@keyframes hintPulse{0%,to{opacity:.28}50%{opacity:.6}}.volume-btn{position:fixed;bottom:1.5rem;right:1.5rem;z-index:100;width:36px;height:36px;border-radius:50%;background:#050505d9;border:1px solid var(--glass-border);color:#ffffff73;font-size:.9rem;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color .2s}.volume-btn:hover{border-color:var(--color-primary)}.panel-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:190;background:#000000b8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .3s ease}.panel-backdrop.open{opacity:1;pointer-events:all}.ore-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,calc(-50% + 28px));width:min(640px,92vw);max-height:min(80vh,680px);z-index:200;display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:#0a0c0ef7;border:1px solid rgba(255,255,255,.07);box-shadow:0 32px 80px #000000e6,0 0 0 1px #ffffff08,0 0 60px var(--ore-glow, rgba(80,200,120,.08));opacity:0;pointer-events:none;transition:transform .32s cubic-bezier(.22,.85,.36,1),opacity .22s ease}.ore-panel.open{transform:translate(-50%,-50%);opacity:1;pointer-events:all}.panel-top-bar{height:3px;width:100%;flex-shrink:0}.panel-inner{padding:1.8rem 2rem 1.6rem;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.08) transparent}.panel-inner::-webkit-scrollbar{width:3px}.panel-inner::-webkit-scrollbar-track{background:transparent}.panel-inner::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.4rem;padding-bottom:1.1rem;border-bottom:1px solid rgba(255,255,255,.06)}.panel-title-group{display:flex;align-items:center;gap:.6rem}.panel-icon{font-size:1.25rem;line-height:1}.panel-title{font-family:var(--font-heading);font-size:1.15rem;font-weight:700;letter-spacing:2px;color:#fff;text-transform:uppercase}.panel-close{width:28px;height:28px;border-radius:50%;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#ffffff59;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .18s,color .18s;flex-shrink:0}.panel-close:hover{background:#ffffff1a;color:#fff}.panel-body{flex:1}.panel-body p{color:#fff9;line-height:1.85;font-size:.9rem}.panel-body p+p{margin-top:.85rem}.panel-body .muted-tag{margin-top:1.2rem;color:#fff3;font-size:.68rem;letter-spacing:2.5px;text-transform:uppercase}.panel-body strong{color:#fff;font-weight:600}.panel-body em{color:#ffffffbf;font-style:italic}.skill-grid{display:flex;flex-direction:column;gap:.6rem}.skill-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem;font-size:.78rem;color:#ffffff8c;letter-spacing:.5px}.skill-pct{color:var(--ore-color, #50C878);font-weight:600;font-size:.72rem}.skill-track{height:4px;background:#ffffff0f;border-radius:4px;overflow:hidden}.skill-fill{height:100%;width:0;background:linear-gradient(90deg,var(--ore-color, #50C878),color-mix(in srgb,var(--ore-color, #50C878) 60%,#fff));border-radius:4px;transition:width .9s cubic-bezier(.22,.8,.36,1)}.ore-panel.open .skill-fill{width:var(--w)}.proj-list{display:flex;flex-direction:column;gap:.85rem}.proj-card{background:#ffffff08;border-radius:10px;border:1px solid rgba(255,255,255,.06);padding:1.1rem 1.2rem;transition:border-color .2s,background .2s}.proj-card:hover{border-color:var(--ore-border, rgba(80,200,120,.25));background:#ffffff0d}.proj-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;margin-bottom:.5rem}.proj-card h4{color:#fff;font-size:.88rem;font-weight:600;letter-spacing:.5px;flex-shrink:0}.proj-tags{display:flex;flex-wrap:wrap;gap:.3rem;justify-content:flex-end}.proj-tag{font-size:.58rem;letter-spacing:1.4px;text-transform:uppercase;color:var(--ore-color, #50C878);background:var(--ore-glow, rgba(80,200,120,.1));border:1px solid var(--ore-border, rgba(80,200,120,.2));padding:.15rem .45rem;border-radius:3px;flex-shrink:0}.proj-card p{font-size:.8rem;color:#ffffff6b;line-height:1.6;margin:0}.proj-links{display:flex;gap:.5rem;margin-top:.7rem}.proj-link{font-size:.7rem;letter-spacing:.8px;text-transform:uppercase;color:var(--ore-color, #50C878);text-decoration:none;border:1px solid var(--ore-border, rgba(80,200,120,.25));padding:.25rem .7rem;border-radius:4px;transition:background .15s,color .15s}.proj-link:hover{background:var(--ore-glow, rgba(80,200,120,.12))}.proj-link-live{background:var(--ore-glow, rgba(80,200,120,.08))}.proj-card-locked{opacity:.55;cursor:default}.proj-card-locked:hover{border-color:#ffffff0f;background:#ffffff08}.contact-list{margin:1.2rem 0 1.4rem;display:flex;flex-direction:column;gap:.6rem}.contact-row{display:flex;align-items:center;gap:1rem;padding:.55rem .7rem;border-radius:8px;background:#ffffff06;border:1px solid rgba(255,255,255,.05)}.contact-label{color:var(--ore-color, #D4AA82);font-size:.68rem;letter-spacing:2px;text-transform:uppercase;min-width:90px}.contact-val{color:#fff9;font-size:.88rem}.hire-link{display:inline-block;margin-top:.5rem;color:var(--ore-color, #D4AA82);font-size:.82rem;text-decoration:none;letter-spacing:1px;opacity:.75;transition:opacity .2s}.hire-link:hover{opacity:1}.panel-footer{margin-top:1.5rem;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.05)}.panel-fullpage-btn{display:flex;justify-content:center;align-items:center;gap:.4rem;width:100%;padding:.7rem 1.2rem;border-radius:8px;text-decoration:none;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#ffffff73;font-family:var(--font-heading);font-size:.72rem;font-weight:600;letter-spacing:2px;text-transform:uppercase;transition:background .22s,border-color .22s,color .22s,box-shadow .22s}.panel-fullpage-btn:hover{background:var(--ore-glow, rgba(80,200,120,.1));border-color:var(--ore-border, rgba(80,200,120,.3));color:var(--ore-color, #50C878);box-shadow:0 0 24px var(--ore-glow, rgba(80,200,120,.1))}.panel-arrow{transition:transform .2s}.panel-fullpage-btn:hover .panel-arrow{transform:translate(4px)}.static-fallback{padding:6rem 10%}.fallback-section{margin-bottom:3rem}.fallback-section h2{color:var(--color-primary);margin-bottom:1rem}.nav-links{display:flex;align-items:center;gap:2rem}.nav-link{font-size:.78rem;letter-spacing:1.5px;text-transform:uppercase;color:#fff6;text-decoration:none;transition:color .2s}.nav-link:hover{color:#fff}.nav-link.active{color:var(--color-primary)}@media(max-width:600px){.nav-links{display:none}}@keyframes fp-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.fullpage-view{animation:fp-in .5s cubic-bezier(.25,.46,.45,.94) both;min-height:100vh;padding:6.5rem 2rem 5rem;background:var(--color-bg);max-width:1100px;margin:0 auto}.fullpage-view .back-btn{display:inline-flex;align-items:center;gap:.5rem;color:var(--color-primary);text-decoration:none;font-size:.75rem;letter-spacing:2px;text-transform:uppercase;margin-bottom:3.5rem;opacity:.55;transition:opacity .2s}.fullpage-view .back-btn:hover{opacity:1}.fullpage-view h1{font-size:clamp(2.4rem,5vw,3.8rem);color:#fff;margin-bottom:.5rem}.fullpage-view .subtitle{color:var(--color-text-muted);font-size:1rem;margin-bottom:3rem;letter-spacing:1px}@media(max-width:600px){.fullpage-view{padding:5.5rem 1.2rem 4rem}}@media(prefers-reduced-motion:reduce){.fullpage-view{animation:none}.ore-panel{transition:opacity .15s ease;transform:translate(-50%,-50%)!important}.ore-panel:not(.open){opacity:0;pointer-events:none}.panel-backdrop{transition:none}.cave-hint{animation:none}}@media(max-width:600px){.glass-nav{padding:.9rem 1.2rem}.ore-panel{width:95vw;max-height:88vh;border-radius:12px}.panel-inner{padding:1.4rem 1.3rem 1.2rem}}body.debug-mode #cave-mount:after{content:"DEBUG";position:fixed;top:4rem;left:1rem;color:#0f0;font-size:.65rem;letter-spacing:2px;font-family:monospace;pointer-events:none;z-index:999}#loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:none;flex-direction:column;align-items:center;justify-content:center;background-color:#2a2a2a;background-image:repeating-linear-gradient(0deg,transparent,transparent 31px,rgba(0,0,0,.18) 31px,rgba(0,0,0,.18) 32px),repeating-linear-gradient(90deg,transparent,transparent 31px,rgba(0,0,0,.18) 31px,rgba(0,0,0,.18) 32px),repeating-linear-gradient(45deg,#3c3c3c4d,#2828284d 4px,#46464626 4px,#32323226 8px);image-rendering:pixelated;font-family:"Press Start 2P",monospace}#loading-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,#0000004d,#000000b8);pointer-events:none}.ls-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;width:100%;max-width:540px;padding:0 2rem}.ls-title{font-size:clamp(1.6rem,5vw,2.8rem);color:#50c878;text-shadow:0 0 8px rgba(80,200,120,.9),0 0 24px rgba(80,200,120,.5),3px 3px 0 #1a4a2a,-1px -1px 0 #1a4a2a;letter-spacing:6px;margin-bottom:3.2rem}.ls-step{font-size:.6rem;color:#e0e0e0;letter-spacing:1px;margin-bottom:1rem;min-height:1.2em;text-shadow:1px 1px 0 #000,-1px -1px 0 #000;transition:opacity .2s}.ls-bar-wrap{width:100%}.ls-bar-outer{width:100%;background:#000;border:3px solid #181818;box-shadow:inset 0 0 0 1px #383838,0 0 0 1px #000,0 2px #000;padding:3px}.ls-bar-track{width:100%;height:10px;background:#131b00;overflow:hidden}.ls-bar-fill{height:100%;width:0%;background:#7ec850;box-shadow:inset 0 -2px #0006,inset 0 2px #ffffff26;transition:width .4s cubic-bezier(.4,0,.2,1);position:relative}.ls-bar-fill:after{content:"";position:absolute;top:1px;left:0;right:0;height:3px;background:#b4ff6459}.ls-bar-glow{width:100%;height:3px;background:linear-gradient(90deg,transparent,#7EC850,transparent);opacity:0;transition:opacity .3s;margin-top:2px;filter:blur(2px)}.ls-bar-glow.active{opacity:.7}.ls-bar-pct{font-size:.38rem;color:#ffffff47;text-align:right;margin-top:6px;letter-spacing:2px}#ls-fade{position:absolute;top:0;right:0;bottom:0;left:0;background:#000;opacity:0;pointer-events:none;z-index:2}@media(prefers-reduced-motion:reduce){.ls-bar-fill,.ls-step{transition:none}}
