:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#000;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html{overflow-x:hidden}body{margin:0;padding:0;min-height:100vh;display:block}#root{width:100%}a{text-decoration:none;color:inherit}ul{list-style:none}:root{--glass-bg: rgba(255, 255, 255, .08);--glass-bg-hover: rgba(255, 255, 255, .12);--glass-blur: blur(8px);--glass-border: 1px solid rgba(255, 255, 255, .1);--glass-border-hover: 1px solid rgba(255, 255, 255, .2);--glass-radius: 12px;--glass-radius-pill: 50px;--text-primary: #ffffff;--text-secondary: rgba(255, 255, 255, .7);--text-muted: rgba(255, 255, 255, .5);--accent: #F5A623;--accent-glow: rgba(245, 166, 35, .25);--font-heading: "Space Grotesk", "Inter", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--shadow: 0 8px 32px rgba(0, 0, 0, .3);--shadow-subtle: 0 4px 20px rgba(0, 0, 0, .2);--hover-lift: translateY(-4px);--transition: .3s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.animate-on-scroll{opacity:0;transform:translateY(40px);transition:opacity .7s ease-out,transform .7s ease-out}.animate-on-scroll.visible{opacity:1;transform:translateY(0)}.stagger-card{opacity:0;transform:translateY(30px);transition:opacity .6s ease-out,transform .6s ease-out;transition-delay:calc(var(--i, 0) * 80ms)}.stagger-card.visible{opacity:1;transform:translateY(0)}.page-loader{position:fixed;inset:0;background:#000;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.4rem;transition:opacity .5s ease-out}.page-loader.loaded{opacity:0;pointer-events:none}.page-loader__text{font-size:2rem;color:var(--text-primary);font-family:var(--font-heading);font-weight:700;letter-spacing:.1em;animation:fadeIn .5s ease-out}.page-loader__spinner{width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.14);border-top-color:var(--accent);animation:pageLoaderSpin .8s linear infinite}@keyframes pageLoaderSpin{to{transform:rotate(360deg)}}.page-loader__hint{font-size:.82rem;color:var(--text-muted);letter-spacing:.02em;animation:fadeIn .4s ease-out}@media(prefers-reduced-motion:reduce){.page-loader__spinner{animation:none;border-top-color:#ffffff24;opacity:.5}}html{scroll-snap-type:y proximity;scroll-behavior:smooth}.hero,#about,#skills,#contact{scroll-snap-align:start;scroll-snap-stop:normal}.project-block{scroll-snap-align:start;scroll-margin-top:5rem}.contour-canvas{transition:opacity .6s ease;opacity:1}.contour-canvas--paused{opacity:0}.portfolio{font-family:var(--font-body);color:var(--text-secondary);background:#000;min-height:100vh;overflow-x:hidden}.scroll-progress{position:fixed;top:0;left:0;height:2px;background:var(--accent);z-index:1001;width:0%;pointer-events:none}.nav{position:fixed;top:0;width:100%;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);padding:1rem 0;box-shadow:var(--shadow-subtle);border-bottom:var(--glass-border);z-index:1000;pointer-events:none}.nav__list{display:flex;justify-content:center;gap:2rem;pointer-events:auto}.nav__link{color:var(--text-secondary);font-weight:500;cursor:pointer;transition:color var(--transition),border-bottom var(--transition);padding-bottom:4px;border-bottom:2px solid transparent}.nav__link:hover{color:var(--text-primary)}.nav__link--active{color:var(--text-primary);border-bottom:2px solid var(--accent)}.nav__hamburger{display:none;pointer-events:auto;cursor:pointer;flex-direction:column;gap:5px;padding:.5rem 1rem;background:none;border:none;position:relative;z-index:1002}.nav__hamburger span{width:24px;height:2px;background:var(--text-primary);transition:all var(--transition);display:block}.nav__hamburger.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.nav__hamburger.open span:nth-child(2){opacity:0}.nav__hamburger.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.hero{height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--text-primary);position:relative;z-index:1;pointer-events:none}.hero__content{will-change:transform,opacity;animation:fadeInUp 1s ease-out;pointer-events:auto}.hero__title{font-family:var(--font-heading);font-size:clamp(3.5rem,8vw,7rem);font-weight:800;letter-spacing:-.03em;line-height:1.05;margin-bottom:1rem}.hero__name{background:linear-gradient(135deg,#ffffff 30%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero__subtitle{font-size:1.5rem;margin-bottom:2rem;color:var(--text-secondary);min-height:2.5rem}.hero__cursor{animation:blink .8s step-end infinite;color:var(--accent);font-weight:300;-webkit-text-fill-color:var(--accent)}.hero__actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.btn-glass{display:inline-block;padding:1rem 2rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--text-primary);text-decoration:none;border-radius:var(--glass-radius-pill);font-weight:600;border:var(--glass-border);cursor:pointer;transition:all var(--transition);font-size:1rem}.btn-glass:hover{transform:var(--hover-lift);background:var(--glass-bg-hover);border:var(--glass-border-hover);box-shadow:0 0 20px var(--accent-glow)}.btn-glass--outline{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border:var(--glass-border)}.btn-glass--outline:hover{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);transform:var(--hover-lift);border:var(--glass-border-hover);box-shadow:0 0 20px var(--accent-glow)}.btn-magnetic{transition:transform .2s ease-out,background var(--transition),border var(--transition),box-shadow var(--transition);will-change:transform}.section{padding:5rem 2rem;max-width:1200px;margin:0 auto;position:relative;z-index:1;pointer-events:none}.section__content{pointer-events:auto}.section__title{font-family:var(--font-heading);font-size:clamp(2rem,5vw,3rem);font-weight:700;color:var(--text-primary);margin-bottom:3rem;text-align:left;letter-spacing:-.02em;line-height:1.1}.about__layout{display:flex;gap:3rem;align-items:center;flex-wrap:wrap}.about__avatar{flex:1;min-width:250px;display:flex;justify-content:center}.about__avatar-circle{width:250px;height:250px;border-radius:50%;overflow:hidden;border:2px solid rgba(245,166,35,.3);box-shadow:var(--shadow),0 0 40px var(--accent-glow);transition:transform var(--transition),box-shadow var(--transition)}.about__avatar-circle:hover{transform:scale(1.03);box-shadow:var(--shadow),0 0 60px #f5a62359}.about__avatar-img{width:100%;height:100%;object-fit:cover;display:block}.about__text{flex:2;min-width:300px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-radius:var(--glass-radius);padding:2.5rem;border:var(--glass-border)}.about__text p{margin-bottom:1rem;font-size:1.1rem;line-height:1.8;text-align:justify}.skills__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.skill-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:var(--glass-border);padding:1.75rem;border-radius:var(--glass-radius);text-align:left;color:var(--text-primary);transition:transform var(--transition),border-color var(--transition),background var(--transition);display:flex;flex-direction:column;gap:1.1rem;position:relative;overflow:hidden;--mx: 50%;--my: 50%}.skill-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(300px circle at var(--mx) var(--my),rgba(245,166,35,.08),transparent 60%);opacity:0;transition:opacity .3s ease;pointer-events:none;z-index:0}.skill-card:hover:before{opacity:1}.skill-card:hover{transform:var(--hover-lift);border:var(--glass-border-hover);background:var(--glass-bg-hover)}.skill-card__top,.skill-card .skill-bar,.skill-card__techs{position:relative;z-index:1}.skill-card__title{font-family:var(--font-heading);font-size:1.25rem;font-weight:600;margin:0 0 .3rem}.skill-card__desc{color:var(--text-secondary);font-size:.88rem;line-height:1.5;margin:0}.skill-bar{display:flex;align-items:center;gap:.75rem;margin-top:auto}.skill-bar__track{flex:1;height:7px;border-radius:999px;background:#ffffff14;overflow:hidden}.skill-bar__fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),#ffd27a);box-shadow:0 0 12px var(--accent-glow);transition:width 1.1s cubic-bezier(.2,.7,.2,1)}.skill-bar__value{font-family:var(--font-heading);font-size:.85rem;font-weight:700;color:var(--text-secondary);min-width:2.6ch;text-align:right}.skill-card__techs{display:flex;flex-wrap:wrap;gap:.4rem}.skill-card__tech{font-size:.75rem;padding:.25rem .65rem;border-radius:999px;border:var(--glass-border);background:#ffffff08;color:var(--text-secondary)}.projects-section{padding:6rem 2rem;position:relative;z-index:1;pointer-events:none}.projects__inner{max-width:1100px;margin:0 auto;pointer-events:auto}.projects__list{display:flex;flex-direction:column;gap:2.5rem}.project-block{position:relative;padding:3rem;background:#ffffff05;border:1px solid rgba(255,255,255,.08);border-radius:var(--glass-radius);overflow:hidden;transition:border-color .4s ease,background .4s ease}.project-block:hover{border-color:#f5a62340;background:#ffffff08}.project-block>*{position:relative;z-index:1}.project-block__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:2rem}.project-block__index{display:flex;align-items:center;gap:1.25rem}.project-block__number{font-family:var(--font-heading);font-size:clamp(3.5rem,7vw,5.5rem);font-weight:700;line-height:.9;color:#ffffff14;letter-spacing:-.04em;transition:color .4s ease}.project-block:hover .project-block__number{color:#f5a62340}.project-block__icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:1.25rem;color:var(--text-muted);transition:all .4s ease}.project-block:hover .project-block__icon{border-color:var(--accent);color:var(--accent)}.project-block__year{font-family:SF Mono,Fira Code,Courier New,monospace;font-size:.75rem;letter-spacing:.1em;color:var(--text-muted);padding:.5rem 1rem;border:1px solid rgba(255,255,255,.1);border-radius:6px}.project-block__title{font-family:var(--font-heading);font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;color:var(--text-primary);letter-spacing:-.02em;line-height:1.1;margin-bottom:0;position:relative;display:block;padding-bottom:.75rem}.project-block__title-underline{position:absolute;bottom:0;left:0;width:60px;height:2px;background:var(--accent);transition:width .4s ease}.project-block:hover .project-block__title-underline{width:120px}.project-block__techs{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.75rem 0}.project-block__tech{display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .9rem;border:1px solid rgba(255,255,255,.12);border-radius:6px;font-size:.75rem;font-weight:500;color:var(--text-secondary);letter-spacing:.02em;transition:all .3s ease}.project-block__tech:hover{border-color:#f5a62366;color:var(--accent)}.project-block__tech-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);opacity:.7}.project-block__desc{color:var(--text-secondary);font-size:1rem;line-height:1.7;margin-bottom:2rem;max-width:720px}.project-block__actions{display:flex;flex-wrap:wrap;gap:1rem}.project-block__btn{display:inline-flex;align-items:center;gap:.6rem;padding:.85rem 1.5rem;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:var(--text-primary);font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;background:transparent;transition:all .3s ease;cursor:pointer}.project-block__btn:hover{border-color:var(--accent);color:var(--accent);background:#f5a6230d}.project-block__btn-arrow{font-size:1rem;transition:transform .3s ease}.project-block__btn:hover .project-block__btn-arrow{transform:translate(2px,-2px)}.project-block__btn-icon{font-family:SF Mono,Fira Code,monospace;font-size:.75rem;opacity:.8}.project-block__btn--ghost{border-color:#ffffff1f;color:var(--text-secondary)}.contact__inner{text-align:center;max-width:600px;margin:0 auto;pointer-events:auto}.contact__intro{margin-bottom:2rem}.contact__form{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem;text-align:left}.contact__input,.contact__textarea{width:100%;padding:.9rem 1.2rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--glass-radius);color:var(--text-primary);font-size:1rem;font-family:inherit;transition:border-color var(--transition)}.contact__input::placeholder,.contact__textarea::placeholder{color:var(--text-muted)}.contact__input:focus,.contact__textarea:focus{outline:none;border-color:var(--accent)}.contact__textarea{resize:vertical;min-height:120px}.contact__form-status{font-size:.9rem;text-align:center;padding:.5rem}.contact__form-status--success{color:#4ade80}.contact__form-status--error{color:#f87171}.contact__links-section{margin-top:2.5rem;text-align:left}.contact__connect-label{font-family:SF Mono,Fira Code,Courier New,monospace;font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.contact__links{display:flex;flex-direction:column;gap:.75rem}.contact__link-card{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;border:1px solid rgba(255,255,255,.12);border-radius:10px;color:var(--text-primary);text-decoration:none;transition:all var(--transition);background:#ffffff05}.contact__link-card:hover{border-color:var(--accent);background:#f5a6230d}.contact__link-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:var(--text-secondary);transition:all var(--transition);flex-shrink:0}.contact__link-card:hover .contact__link-icon{border-color:var(--accent);color:var(--accent);background:#f5a62314}.contact__link-info{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:0;text-align:left}.contact__link-label{font-size:.95rem;font-weight:600;color:var(--text-primary)}.contact__link-value{font-size:.82rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact__link-arrow{color:var(--text-muted);transition:all var(--transition);display:flex;align-items:center;justify-content:center;flex-shrink:0}.contact__link-card:hover .contact__link-arrow{color:var(--accent);transform:translate(2px,-2px)}.footer{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-top:var(--glass-border);color:var(--text-secondary);text-align:center;padding:2rem;position:relative;z-index:1;pointer-events:none}.footer p{pointer-events:auto}.scroll-top{position:fixed;bottom:2rem;right:2rem;width:45px;height:45px;border-radius:50%;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:var(--glass-border);color:var(--text-primary);font-size:1.2rem;cursor:pointer;z-index:999;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(20px);transition:all var(--transition);pointer-events:none}.scroll-top.visible{opacity:1;transform:translateY(0);pointer-events:auto}.scroll-top:hover{background:var(--glass-bg-hover);border:var(--glass-border-hover);transform:var(--hover-lift)}.section-indicator{position:fixed;right:2rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:1.5rem;z-index:999;pointer-events:auto}.section-indicator__dot{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:transparent;cursor:pointer;position:relative;transition:all var(--transition);padding:0}.section-indicator__dot--active{background:var(--accent);border-color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.section-indicator__number{position:absolute;right:24px;top:50%;transform:translateY(-50%);font-family:SF Mono,Fira Code,Courier New,monospace;font-size:.65rem;color:var(--text-muted);opacity:0;transition:opacity var(--transition);white-space:nowrap;pointer-events:none}.section-indicator__dot:hover .section-indicator__number,.section-indicator__dot--active .section-indicator__number{opacity:1}.section-indicator__dot--active .section-indicator__number{color:var(--accent)}.admin-overlay{position:fixed;inset:0;background:#000000bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10002;display:flex;align-items:center;justify-content:center;padding:2rem;animation:fadeIn .2s ease-out}.admin-panel{width:100%;max-width:780px;height:85vh;background:#0b0b0b;border:1px solid rgba(255,255,255,.1);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0009;color:var(--text-primary);font-family:var(--font-body)}.admin-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0;background:#0b0b0b}.admin-title{font-family:var(--font-heading);font-size:1.15rem;font-weight:700;color:var(--text-primary);margin:0}.admin-close{background:transparent;border:1px solid rgba(255,255,255,.15);color:var(--text-secondary);width:32px;height:32px;border-radius:6px;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition)}.admin-close:hover{border-color:var(--accent);color:var(--accent)}.admin-tabs{display:flex;gap:0;padding:0 1rem;border-bottom:1px solid rgba(255,255,255,.08);overflow-x:auto;flex-shrink:0;background:#0b0b0b}.admin-tab{padding:.9rem 1.1rem;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:.85rem;font-weight:500;letter-spacing:.02em;cursor:pointer;transition:all var(--transition);font-family:inherit;white-space:nowrap}.admin-tab:hover{color:var(--text-primary)}.admin-tab--active{color:var(--accent);border-bottom-color:var(--accent)}.admin-content{padding:1.5rem;overflow-y:auto;flex:1 1 auto;min-height:0}.admin-section{display:flex;flex-direction:column;gap:.75rem}.admin-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--text-muted);font-weight:600;margin-top:.5rem}.admin-input,.admin-textarea{width:100%;padding:.7rem .9rem;background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:var(--text-primary);font-size:.9rem;font-family:inherit;transition:border-color var(--transition)}.admin-input:focus,.admin-textarea:focus{outline:none;border-color:var(--accent)}.admin-textarea{resize:vertical;line-height:1.5}.admin-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.admin-card{padding:1rem;background:#ffffff05;border:1px solid rgba(255,255,255,.06);border-radius:10px;display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.admin-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.admin-card-num{font-family:SF Mono,Fira Code,monospace;font-size:.75rem;color:var(--text-muted);letter-spacing:.1em}.admin-btn{padding:.55rem 1rem;background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:var(--text-primary);font-size:.78rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;font-family:inherit;transition:all var(--transition)}.admin-btn:hover{border-color:var(--accent);color:var(--accent)}.admin-btn--add{align-self:flex-start;border-color:#f5a62366;color:var(--accent);margin-top:.5rem}.admin-btn--add:hover{background:#f5a62314}.admin-btn--danger{border-color:#f8717159;color:#f87171;font-size:.7rem;padding:.35rem .7rem}.admin-btn--danger:hover{background:#f871711a;color:#f87171;border-color:#f8717199}.admin-btn--ghost{color:var(--text-secondary);border-color:#ffffff1a}.admin-image-row{display:flex;gap:1rem;align-items:center;margin-bottom:1rem}.admin-image-preview{width:96px;height:96px;border-radius:50%;overflow:hidden;border:1px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;background:#ffffff08;flex-shrink:0;font-size:.7rem;color:var(--text-muted);text-align:center;padding:0 4px}.admin-image-preview img{width:100%;height:100%;object-fit:cover}.admin-image-actions{display:flex;flex-direction:column;gap:.5rem}.admin-note{color:var(--text-secondary);font-size:.88rem;line-height:1.6;margin-bottom:1rem}.admin-data-actions{display:flex;flex-wrap:wrap;gap:.75rem}.admin-error{color:#f87171;font-size:.85rem;margin-top:.5rem}.admin-header-actions{display:flex;align-items:center;gap:.6rem}@media(max-width:560px){.admin-header{flex-wrap:wrap;gap:.5rem .75rem;padding:1rem}.admin-title{flex:1 1 auto;min-width:0}.admin-header-actions{flex-wrap:wrap;row-gap:.5rem}}.admin-btn--primary{background:#f5a6232e;border-color:#f5a62380;color:var(--accent);font-weight:600}.admin-btn--primary:hover:not(:disabled){background:#f5a6234d}.admin-btn:disabled{opacity:.55;cursor:default}.admin-dirty-dot{display:inline-block;width:8px;height:8px;margin-left:.5rem;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);vertical-align:middle}.admin-login{max-width:380px;margin:2.5rem auto;padding:0 1.5rem;display:flex;flex-direction:column}.admin-login .admin-btn--primary{margin-top:1.25rem;align-self:flex-start}.admin-msg--unread{border-left:3px solid var(--accent)}.admin-msg-meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;align-items:baseline;font-size:.85rem;color:var(--text-secondary)}.admin-msg-meta a{color:var(--accent);text-decoration:none}.admin-msg-actions{display:flex;gap:.5rem}.admin-msg-body{margin-top:.75rem;line-height:1.6;color:var(--text-secondary);white-space:pre-wrap}.admin-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.admin-stat-card{display:flex;flex-direction:column;gap:.3rem;padding:1rem;background:#ffffff0a;border:var(--glass-border);border-radius:10px}.admin-stat-value{font-family:var(--font-heading);font-size:1.6rem;font-weight:700;color:var(--text-primary)}.admin-stat-label{font-size:.78rem;color:var(--text-secondary)}.admin-list-row{display:flex;justify-content:space-between;padding:.5rem .25rem;border-bottom:1px solid rgba(255,255,255,.07);font-size:.9rem;color:var(--text-secondary)}.admin-scroll-list{max-height:220px;overflow-y:auto;border:1px solid rgba(255,255,255,.07);border-radius:6px;padding:0 .5rem}.admin-scroll-list .admin-list-row:last-child{border-bottom:none}.admin-draft-state{font-size:.75rem;color:var(--text-secondary);white-space:nowrap}.admin-chart{display:flex;align-items:flex-end;gap:4px;height:140px;padding:.5rem .25rem 0}.admin-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px;min-width:0}.admin-chart-count{font-size:.62rem;color:var(--text-secondary);line-height:1}.admin-chart-bar{width:100%;max-width:26px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--accent) 0%,rgba(245,166,35,.35) 100%);transition:height .3s ease}.admin-chart-day{font-size:.62rem;color:var(--text-secondary);line-height:1}.admin-version-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:.75rem}.admin-image-url-row{display:flex;gap:.5rem;align-items:stretch}.admin-image-url-row .admin-input{flex:1}.admin-upload-btn{display:inline-flex;align-items:center;white-space:nowrap}.contact__honeypot{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}@media(max-width:768px){.nav__list{position:fixed;top:0;right:-100%;width:70%;height:100vh;flex-direction:column;background:#000000f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:5rem 2rem 2rem;gap:1.5rem;transition:right .3s ease}.nav__list.open{right:0}.nav__hamburger{display:flex}.nav{display:flex;justify-content:flex-end;padding:1rem}.about__avatar-circle{width:180px;height:180px;font-size:3.5rem}.about__layout{flex-direction:column;text-align:center}.about__stats{justify-content:center}.about__stat{align-items:center;text-align:center}.skills__grid{grid-template-columns:1fr 1fr}.project-block{padding:2rem 1.5rem}.project-block__header{margin-bottom:1.5rem}.project-block__actions{flex-direction:column;align-items:stretch}.project-block__btn{justify-content:center}.hero__actions{flex-direction:column;align-items:center}.section-indicator{display:none}.section__title{text-align:center}}@media(max-width:480px){.skills__grid{grid-template-columns:1fr}.contact__links{flex-direction:column;align-items:stretch}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hero__cursor{animation:none;opacity:1}.stagger-card{transition-delay:0ms!important}}*:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.portfolio *:focus:not(:focus-visible){outline:none}.grain-overlay{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.18;mix-blend-mode:overlay;background-repeat:repeat;background-size:220px 220px}@media(prefers-reduced-motion:reduce){.grain-overlay{opacity:.08}}.scroll-progress{height:2px;background:linear-gradient(90deg,transparent 0%,var(--accent) 35%,#fff 100%);box-shadow:0 0 14px var(--accent-glow),0 0 30px #f5a62326}.hero__name-char{display:inline-block;will-change:transform,opacity}.btn-magnetic{position:relative;overflow:hidden;isolation:isolate}.btn-ripple{position:absolute;left:var(--rx, 50%);top:var(--ry, 50%);width:8px;height:8px;border-radius:50%;background:radial-gradient(circle,var(--accent) 0%,transparent 70%);transform:translate(-50%,-50%) scale(0);pointer-events:none;z-index:-1;animation:btn-ripple .7s ease-out forwards}@keyframes btn-ripple{0%{transform:translate(-50%,-50%) scale(0);opacity:.75}to{transform:translate(-50%,-50%) scale(28);opacity:0}}.hero__scroll-hint{position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.4rem;color:var(--text-muted);font-family:var(--font-body);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;pointer-events:auto}.hero__scroll-hint-line{width:1px;height:36px;background:linear-gradient(to bottom,var(--accent),transparent);animation:scroll-hint 1.6s ease-in-out infinite}@keyframes scroll-hint{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}to{transform:scaleY(0);transform-origin:bottom}}.about__avatar-circle{transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s ease;will-change:transform}.about__avatar-circle:hover{transform:scale(1.03) rotate(-.6deg);box-shadow:0 0 60px var(--accent-glow),0 0 120px #f5a6231a}.about__avatar-img{transition:transform .8s cubic-bezier(.2,.7,.2,1);will-change:transform}.about__avatar-circle:hover .about__avatar-img{transform:scale(1.08)}.about__stats{display:flex;gap:2.5rem;margin-top:1.75rem;flex-wrap:wrap}.about__stat{display:flex;flex-direction:column;gap:.25rem}.about__stat-value{font-family:var(--font-heading);font-size:clamp(1.75rem,3.5vw,2.6rem);font-weight:700;color:var(--text-primary);letter-spacing:-.02em;line-height:1}.about__stat-value span{background:linear-gradient(135deg,var(--text-primary) 40%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.about__stat-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.16em}.project-block{perspective:1200px}.project-block__tilt{position:relative;transform-style:preserve-3d;will-change:transform}.project-block__highlights{overflow:hidden;margin-top:.5rem}.project-block__highlights-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem;padding:1rem 1.25rem;background:#f5a6230a;border-left:2px solid var(--accent);border-radius:8px;font-size:.88rem;color:var(--text-secondary)}.project-block__highlight{display:flex;gap:.6rem;align-items:flex-start;line-height:1.55}.project-block__highlight:before{content:"◆";color:var(--accent);font-size:.6rem;margin-top:.45rem;flex-shrink:0}.project-block__btn[aria-expanded=true] .project-block__btn-arrow{transform:rotate(90deg)}.project-block__btn-arrow{transition:transform .3s ease;display:inline-block}.contact__field{position:relative;margin-bottom:1rem}.contact__field .contact__input,.contact__field .contact__textarea{width:100%;padding:1.25rem 1rem .5rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--glass-radius);color:var(--text-primary);font-family:var(--font-body);font-size:1rem;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}.contact__field .contact__textarea{resize:vertical;min-height:130px;padding-top:1.5rem}.contact__field .contact__input:focus,.contact__field .contact__textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);background:var(--glass-bg-hover)}.contact__float-label{position:absolute;left:1rem;top:1rem;color:var(--text-muted);font-size:1rem;pointer-events:none;transition:transform .25s ease,color .25s ease,font-size .25s ease;transform-origin:left top}.contact__field--focused .contact__float-label,.contact__field--filled .contact__float-label{transform:translateY(-8px) scale(.72);color:var(--accent)}.contact__char-count{position:absolute;bottom:.55rem;right:.85rem;font-size:.7rem;color:var(--text-muted);font-family:var(--font-body);letter-spacing:.04em}.contact__copy-email{display:inline-flex;align-items:center;gap:.5rem;padding:.45rem .9rem;background:transparent;border:var(--glass-border);border-radius:999px;color:var(--text-secondary);font-size:.8rem;font-family:var(--font-body);cursor:pointer;transition:all var(--transition)}.contact__copy-email:hover{color:var(--accent);border-color:var(--accent);background:#f5a6230f}.timezone-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .7rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:999px;font-size:.72rem;font-family:var(--font-body);color:var(--text-muted);letter-spacing:.05em}.timezone-pill__dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px var(--accent-glow)}.contact__meta-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.contact__submit{position:relative;width:100%;overflow:hidden}.contact__submit--success{background:#3ddc9726;border-color:#3ddc978c;box-shadow:0 0 18px #3ddc9740}.contact__submit--success:hover{box-shadow:0 0 24px #3ddc9759;background:#3ddc9733}.toast-viewport{position:fixed;left:0;right:0;bottom:2rem;display:flex;justify-content:center;z-index:10000;pointer-events:none}.toast{padding:.85rem 1.3rem;background:#0a0a0ae6;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--accent);border-radius:999px;color:var(--text-primary);font-size:.9rem;font-family:var(--font-body);letter-spacing:.02em;box-shadow:0 10px 40px #00000080,0 0 30px var(--accent-glow);display:flex;align-items:center;gap:.55rem;pointer-events:none}.toast__icon{color:var(--accent)}.admin-range{padding:0!important;height:28px;accent-color:var(--accent);background:transparent!important;border:none!important}.admin-sublabel{display:block;font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.35rem}.section__title{position:relative;display:inline-block}.section__title:after{content:"";position:absolute;left:0;bottom:-8px;height:2px;width:0;background:linear-gradient(90deg,var(--accent),transparent);transition:width .9s cubic-bezier(.2,.7,.2,1)}.section__title.is-inview:after{width:64px}.scroll-top{position:fixed;z-index:100;transition:transform .2s ease-out,opacity .3s ease,background .25s ease,border .25s ease}@media(prefers-reduced-motion:reduce){.hero__scroll-hint-line{animation:none;opacity:.5}.section__title:after{transition:none}.btn-ripple{display:none}}.project-block__media{position:relative;width:100%;aspect-ratio:16 / 7;overflow:hidden;border-radius:var(--glass-radius);margin-bottom:1.5rem;background:#0a0a0a}.project-block__media-img{width:100%;height:100%;object-fit:cover;transform:scale(1.02);transition:transform .9s cubic-bezier(.2,.7,.2,1),filter .6s ease;filter:saturate(.85) brightness(.85);will-change:transform}.project-block:hover .project-block__media-img{transform:scale(1.1);filter:saturate(1.05) brightness(.95)}.project-block__media-fade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,#0000 40%,#0000008c 75%,#0a0a0af2),linear-gradient(to top,#0000 85%,#f5a62314)}.project-block__category{display:inline-block;margin:0 0 .9rem;padding:.25rem .65rem;font-family:var(--font-body);font-size:.68rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);background:#f5a62314;border:1px solid rgba(245,166,35,.25);border-radius:999px}.project-block__btn{transition:transform .3s ease,background .3s ease,color .3s ease,border var(--transition)}.project-block__btn:hover .project-block__btn-arrow{transform:translate(3px,-3px)}@media(max-width:640px){.project-block__media{aspect-ratio:16 / 9}}@media(prefers-reduced-motion:reduce){.project-block__media-img,.project-block:hover .project-block__media-img{transform:none;transition:none}}.aurora{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}.aurora__blob{position:absolute;display:block;border-radius:50%;filter:blur(120px);opacity:.55;will-change:transform}.aurora__blob--amber{width:60vmax;height:60vmax;top:-20vmax;right:-15vmax;background:radial-gradient(circle,rgba(245,166,35,.45),transparent 60%);animation:aurora-drift-1 28s ease-in-out infinite}.aurora__blob--violet{width:50vmax;height:50vmax;bottom:-15vmax;left:-10vmax;background:radial-gradient(circle,rgba(120,75,220,.35),transparent 60%);animation:aurora-drift-2 34s ease-in-out infinite}.aurora__blob--cyan{width:45vmax;height:45vmax;top:40%;left:35%;background:radial-gradient(circle,rgba(56,189,248,.18),transparent 65%);animation:aurora-drift-3 40s ease-in-out infinite;opacity:.4}@keyframes aurora-drift-1{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-6vmax,4vmax) scale(1.08)}}@keyframes aurora-drift-2{0%,to{transform:translate(0) scale(1)}50%{transform:translate(8vmax,-6vmax) scale(1.12)}}@keyframes aurora-drift-3{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-45%,-55%) scale(1.15)}}.vignette{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%),linear-gradient(to bottom,rgba(0,0,0,.35) 0%,transparent 12%,transparent 88%,rgba(0,0,0,.5) 100%)}.contour-canvas{opacity:.45!important}.contour-canvas--paused{opacity:0!important}@media(prefers-reduced-motion:reduce){.aurora__blob{animation:none!important}}.timeline{list-style:none;padding:0;margin:0;position:relative;padding-left:2.5rem}.timeline__rail{position:absolute;top:.5rem;bottom:.5rem;left:.85rem;width:1px;background:linear-gradient(to bottom,rgba(245,166,35,.35),rgba(255,255,255,.08) 60%,transparent)}.timeline__item{position:relative;padding-bottom:2rem}.timeline__item:last-child{padding-bottom:0}.timeline__dot{position:absolute;left:-2.09rem;top:.4rem;width:14px;height:14px;border-radius:50%;background:#000;border:2px solid var(--accent);box-shadow:0 0 12px #f5a62366;z-index:1}.timeline__card{background:#ffffff05;border:1px solid rgba(255,255,255,.08);border-radius:var(--glass-radius);padding:1.75rem 1.85rem;transition:border-color var(--transition),background var(--transition),transform var(--transition)}.timeline__card:hover{border-color:#f5a62340;background:#ffffff08;transform:translateY(-2px)}.timeline__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:.85rem}.timeline__role-wrap{display:flex;gap:.85rem;align-items:flex-start;flex:1;min-width:0}.timeline__icon{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:.95rem;color:var(--text-muted);flex-shrink:0;transition:all var(--transition)}.timeline__card:hover .timeline__icon{border-color:var(--accent);color:var(--accent)}.timeline__role-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.timeline__role{font-family:var(--font-heading);font-size:1.2rem;font-weight:700;color:var(--text-primary);margin:0;letter-spacing:-.01em;line-height:1.25}.timeline__company{font-size:.88rem;color:var(--text-secondary);margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.timeline__company-name{font-weight:600;color:var(--text-primary)}.timeline__dot-sep{color:var(--text-muted)}.timeline__dates{font-family:SF Mono,Fira Code,monospace;font-size:.72rem;letter-spacing:.05em;color:var(--text-muted);padding:.4rem .85rem;border:1px solid rgba(255,255,255,.1);border-radius:6px;white-space:nowrap;flex-shrink:0}.timeline__desc{color:var(--text-secondary);font-size:.95rem;line-height:1.65;margin:0 0 1rem}.timeline__highlights{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}.timeline__highlight{display:flex;gap:.7rem;color:var(--text-secondary);font-size:.9rem;line-height:1.55}.timeline__arrow{color:var(--accent);font-weight:700;flex-shrink:0;margin-top:.15em}@media(max-width:640px){.timeline{padding-left:2rem}.timeline__rail{left:.6rem}.timeline__dot{left:-1.84rem}.timeline__card{padding:1.25rem}.timeline__header{flex-direction:column;align-items:flex-start;gap:.6rem}.timeline__dates{align-self:flex-start}}.theme-toggle{position:fixed;bottom:5.75rem;right:2rem;width:44px;height:44px;border-radius:50%;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:var(--text-secondary);cursor:pointer;z-index:998;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--transition)}.theme-toggle:hover{color:var(--accent);border-color:var(--accent);background:#f5a6231a;transform:scale(1.1)}@media(max-width:640px){.theme-toggle,.scroll-top{width:38px;height:38px;right:1rem;font-size:1rem}.scroll-top{bottom:1rem}.theme-toggle{bottom:4.25rem}}[data-theme=light]{--glass-bg: rgba(0, 0, 0, .04);--glass-bg-hover: rgba(0, 0, 0, .07);--glass-border: 1px solid rgba(0, 0, 0, .08);--glass-border-hover: 1px solid rgba(0, 0, 0, .15);--text-primary: #111111;--text-secondary: rgba(0, 0, 0, .7);--text-muted: rgba(0, 0, 0, .5);--shadow: 0 8px 32px rgba(0, 0, 0, .08);--shadow-subtle: 0 4px 20px rgba(0, 0, 0, .05)}[data-theme=light] body{background:#f5f4f0}[data-theme=light] .portfolio{background:#f5f4f0;color:var(--text-secondary)}[data-theme=light] .project-block,[data-theme=light] .timeline__card,[data-theme=light] .skill-card{background:#fff9;border-color:#00000014}[data-theme=light] .project-block:hover,[data-theme=light] .timeline__card:hover,[data-theme=light] .skill-card:hover{background:#fffc;border-color:#f5a62380}[data-theme=light] .nav{background:#ffffffb3;border-bottom-color:#00000014}[data-theme=light] .nav__hamburger span{background:#111}[data-theme=light] .nav__list{background:#fffffff2}[data-theme=light] .contour-canvas{opacity:.18;filter:invert(1)}[data-theme=light] .grain-overlay{opacity:.4;mix-blend-mode:multiply}[data-theme=light] .aurora{opacity:.25}[data-theme=light] .vignette{background:radial-gradient(ellipse at center,transparent 40%,rgba(255,255,255,.4))}[data-theme=light] .timeline__dot{background:#f5f4f0}[data-theme=light] .project-block__number{color:#0000001a}[data-theme=light] .hero__name{background:linear-gradient(135deg,#111111 30%,var(--accent) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=light] .contact__input,[data-theme=light] .contact__textarea{background:#ffffffb3;border-color:#0000001f;color:var(--text-primary)}[data-theme=light] .theme-toggle{background:#0000000a;border-color:#0000001a}[data-theme=light] .section-indicator__dot{border-color:#0000004d}[data-theme=light] .footer{background:#ffffff80;border-top-color:#00000014}.project-detail{min-height:100vh;background:var(--bg);color:var(--text-primary)}.project-detail__bar{position:sticky;top:0;z-index:100;padding:1.1rem 2rem;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:var(--glass-border)}.project-detail__back{color:var(--text-secondary);text-decoration:none;font-size:.9rem;transition:color var(--transition)}.project-detail__back:hover{color:var(--accent)}.project-detail__content{max-width:820px;margin:0 auto;padding:3.5rem 1.5rem 5rem}.project-detail__eyebrow{display:flex;align-items:center;gap:.75rem;text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;color:var(--accent);margin:0 0 .85rem}.project-detail__year{font-family:SF Mono,Fira Code,monospace;color:var(--text-muted);letter-spacing:.05em;padding:.2rem .6rem;border:1px solid rgba(128,128,128,.25);border-radius:5px}.project-detail__title{font-family:var(--font-heading);font-size:clamp(2rem,5vw,3.2rem);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0 0 1.25rem}.project-detail__tech{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0 0 1.5rem}.project-detail__chip{font-size:.78rem;padding:.3rem .75rem;border-radius:999px;border:var(--glass-border);background:var(--glass-bg);color:var(--text-secondary)}.project-detail__links{display:flex;gap:.85rem;flex-wrap:wrap;margin-bottom:2.25rem}.project-detail__media{border-radius:14px;overflow:hidden;margin-bottom:2.25rem;border:var(--glass-border)}.project-detail__media img{display:block;width:100%;height:auto}.project-detail__desc{font-size:1.05rem;line-height:1.75;color:var(--text-secondary);margin:0 0 2.25rem}.project-detail__subheading{font-family:var(--font-heading);font-size:1.15rem;font-weight:700;margin:0 0 1rem}.project-detail__highlights{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.7rem}.project-detail__highlights li{display:flex;gap:.7rem;color:var(--text-secondary);line-height:1.6}.project-detail__arrow{color:var(--accent);font-weight:700;flex-shrink:0}.admin-visitor-meta{white-space:nowrap}.admin-visitor-last{color:var(--text-muted);font-size:.78rem;margin-left:.4rem}.admin-checkbox{display:flex;align-items:center;gap:.55rem;font-size:.85rem;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}.admin-checkbox input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
