:root{--body: #000000;--workspace: rgb(77, 77, 78);--panel: #1f1f21;--panel-soft: #29292c;--panel-raised: #242528;--line: rgba(255, 255, 255, .12);--text: #f7f7f8;--muted: #b8b8be;--muted-2: #85858d;--accent: #ffd45a;--accent-2: #f1b93f;--accent-soft: rgba(255, 212, 90, .14);--shadow: rgba(20, 20, 24, .34)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--body);color:var(--text);font-family:Inter,Arial,sans-serif;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}button{font:inherit}.portfolio-stage{width:min(1180px,calc(100% - 48px));min-height:calc(100vh - 48px);margin:24px auto;padding:18px 0}.workspace{min-height:calc(100vh - 108px);display:grid;grid-template-columns:270px minmax(0,1fr);gap:24px}.profile-card{background:var(--workspace);border:1px solid rgba(31,31,33,.18);box-shadow:0 24px 64px var(--shadow)}.profile-card{position:sticky;top:24px;align-self:start;min-height:680px;padding:28px 20px;border-radius:18px}.theme-toggle{position:absolute;top:16px;right:16px;width:36px;height:36px;display:grid;place-items:center;color:var(--accent);background:#ffffff0d;border:1px solid var(--line);border-radius:10px;cursor:pointer}.identity{text-align:center;padding:18px 0 28px;border-bottom:1px solid rgba(31,31,33,.2)}.avatar{width:132px;height:132px;margin:0 auto 18px;overflow:hidden;border-radius:18px;background:#1f1f21b8;box-shadow:0 14px 30px #1414183d}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.identity h1{margin:0;font-size:24px;line-height:1.2}.identity p{display:inline-flex;margin:14px 0;padding:5px 12px;color:var(--text);background:#1f1f21c2;border-radius:8px;font-size:13px;font-weight:600}.cv-button{width:fit-content;margin:0 auto;padding:8px 13px;display:flex;align-items:center;gap:7px;color:#191919;background:var(--accent);border-radius:8px;font-size:13px;font-weight:800}.cv-button svg,.theme-toggle svg,.contact-icon svg,.social-links svg,.service-card svg,.timeline h3 svg{width:18px;height:18px}.contact-list{padding:24px 0;border-bottom:1px solid rgba(31,31,33,.2)}.contact-list article{display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center}.contact-list article+article{margin-top:18px}.contact-icon,.social-links a{display:grid;place-items:center;background:#1f1f21b8;border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 1px #ffffff0f}.contact-icon{width:44px;height:44px;color:var(--accent);border-radius:12px}.contact-list small{display:block;color:var(--muted-2);font-size:11px;font-weight:800;letter-spacing:0;text-transform:uppercase}.contact-list a,.contact-list div>span{display:block;overflow-wrap:anywhere;color:var(--text);font-size:13px;font-weight:700}.social-links{padding-top:24px;display:flex;justify-content:center;gap:12px}.social-links a{width:42px;height:42px;color:var(--accent);border-radius:12px;transition:transform .18s ease,background .18s ease}.social-links a:hover,.theme-toggle:hover{transform:translateY(-2px);background:var(--accent-soft)}.content-shell{position:relative;overflow:hidden;min-height:680px;background:var(--workspace);border:1px solid rgba(31,31,33,.18);border-radius:18px;box-shadow:0 24px 64px #14141833}.tabs{position:absolute;top:0;right:0;z-index:2;min-width:420px;display:grid;grid-template-columns:repeat(4,1fr);background:#1f1f21ad;border-left:1px solid rgba(255,255,255,.14);border-bottom:1px solid rgba(255,255,255,.14);border-bottom-left-radius:18px}.tab{height:58px;color:var(--text);background:transparent;border:0;border-bottom:2px solid transparent;cursor:pointer;font-size:13px;font-weight:700;transition:color .18s ease,border-color .18s ease,background .18s ease}.tab:hover,.tab.is-active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.panel{padding:38px 32px 32px;animation:panel-enter .36s cubic-bezier(.22,1,.36,1) both}.section-heading{margin-bottom:26px;max-width:calc(100% - 420px)}.section-heading h2{margin:0;color:#fff;font-size:30px;line-height:1.12;letter-spacing:0}.section-heading span{display:block;width:42px;height:4px;margin-top:12px;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:999px}.intro-copy{max-width:770px}.intro-copy p{margin:0 0 18px;color:var(--text);font-size:14px}.services,.recommendations,.skills{margin-top:34px}.services h3,.recommendations h3{margin:0 0 18px;font-size:24px;line-height:1.2}.service-grid,.recommendation-grid,.project-grid{display:grid;gap:18px}.service-grid,.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recommendation-grid{grid-auto-columns:calc((100% - 18px)/2);grid-auto-flow:column;grid-template-columns:none;overflow-x:auto;overscroll-behavior-inline:contain;padding-bottom:10px;scroll-snap-type:x proximity}.recommendation-grid::-webkit-scrollbar{height:8px}.recommendation-grid::-webkit-scrollbar-track{background:#1f1f212e;border-radius:999px}.recommendation-grid::-webkit-scrollbar-thumb{background:var(--accent);border-radius:999px}.service-card,.recommendation-card,.project-card,.timeline-item{background:linear-gradient(145deg,var(--panel-raised),#202124);border:1px solid rgba(255,255,255,.08);box-shadow:0 14px 32px #0a0a0e29}.service-card{min-height:116px;padding:24px;display:grid;grid-template-columns:42px minmax(0,1fr);gap:18px;align-items:start;border-radius:12px}.service-card>svg{width:34px;height:34px;color:var(--accent)}.service-card h4,.project-card h3,.blog-list h3{margin:0 0 8px;font-size:17px;line-height:1.3}.service-card p,.recommendation-card p,.project-card p,.blog-list p,.timeline-item p{margin:0;color:var(--muted);font-size:13px}.recommendation-card{min-height:190px;padding:18px;color:inherit;text-align:left;cursor:pointer;border-radius:12px;scroll-snap-align:start;transition:transform .18s ease,border-color .18s ease}.recommendation-card:hover{transform:translateY(-2px);border-color:#ffffff2e}.recommendation-person{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:center;margin-bottom:14px}.recommendation-person img{width:48px;height:48px;object-fit:cover;border-radius:12px;background:#ffffff14}.recommendation-card strong{display:block;color:#fff;font-size:14px;line-height:1.25}.recommendation-card span{display:block;color:var(--accent);font-size:11px;font-weight:800;line-height:1.35;margin-top:4px}.recommendation-card time{display:block;margin-bottom:10px;color:var(--muted-2);font-size:11px;font-weight:800;line-height:1.35;text-transform:uppercase}.recommendation-card p{display:-webkit-box;overflow:hidden;max-height:42px;-webkit-box-orient:vertical;-webkit-line-clamp:2}.recommendation-card.is-expanded p{display:block;overflow:visible;max-height:none;-webkit-line-clamp:unset}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:20px;background:#0c0c0ead;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.recommendation-modal{position:relative;width:min(760px,100%);max-height:min(680px,calc(100vh - 40px));overflow-y:auto;padding:34px;background:linear-gradient(145deg,#242528,#1d1d20);border:1px solid rgba(255,255,255,.16);border-radius:18px;box-shadow:0 32px 90px #00000061;animation:modal-in .18s ease both}.modal-close{position:absolute;top:16px;right:16px;width:40px;height:40px;display:grid;place-items:center;color:var(--muted);background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:10px;cursor:pointer}.modal-close:hover{color:#fff;background:var(--accent-soft)}.modal-close svg{width:22px;height:22px}.modal-person{display:grid;grid-template-columns:88px minmax(0,1fr);gap:24px;align-items:center;padding-right:50px}.modal-person img{width:88px;height:88px;object-fit:cover;border-radius:18px;background:#ffffff14}.modal-person h3{margin:0 0 4px;color:#fff;font-size:28px;line-height:1.15}.modal-person p,.modal-person time{display:block;margin:0;color:var(--muted);font-size:15px}.modal-person time{margin-top:6px}.modal-quote-icon{width:58px;height:58px;margin:28px 0 8px;color:var(--accent);fill:currentColor}.modal-quote{max-width:620px;margin:0;color:var(--text);font-size:17px;line-height:1.72}.timeline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.timeline h3{margin:0 0 16px;display:flex;align-items:center;gap:10px;font-size:21px}.timeline h3 svg{color:var(--accent)}.timeline-item{position:relative;padding:18px 18px 18px 22px;border-radius:12px}.timeline-item+.timeline-item{margin-top:14px}.timeline-item:before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:3px;background:var(--accent);border-radius:999px}.timeline-item span,.blog-list time{display:block;margin-bottom:6px;color:var(--accent);font-size:12px;font-weight:800}.timeline-item h4{margin:0 0 8px;font-size:16px}.resume-section{margin-top:34px}.section-heading+.resume-section{margin-top:0}.resume-section-title{display:grid;grid-template-columns:48px minmax(0,1fr);gap:16px;align-items:center;margin-bottom:22px}.resume-section-title>svg{width:48px;height:48px;padding:12px;color:var(--accent);background:#1f1f21b8;border:1px solid rgba(255,255,255,.1);border-radius:12px}.resume-section-title h3{margin:0;color:#fff;font-size:24px;line-height:1.2}.resume-section-title p{margin:5px 0 0;color:var(--muted);font-size:13px}.roadmap{position:relative;display:grid;gap:16px;padding-left:24px}.roadmap:before{content:"";position:absolute;top:10px;bottom:10px;left:7px;width:2px;background:#ffffff29}.roadmap-item{position:relative;max-height:0;opacity:0;overflow:hidden;transform:translate(-24px);transition:max-height .52s cubic-bezier(.22,1,.36,1),opacity .36s ease,transform .46s cubic-bezier(.22,1,.36,1)}.roadmap-item.is-visible{max-height:240px;opacity:1;overflow:visible;transform:translate(0)}.roadmap-dot{position:absolute;top:24px;left:-23px;width:16px;height:16px;background:var(--accent);border:4px solid rgba(31,31,33,.86);border-radius:999px;box-shadow:0 0 0 4px #ffffff14;opacity:0;transform:scale(.65);transition:opacity .24s ease,transform .32s ease,box-shadow .32s ease}.roadmap-item.is-visible .roadmap-dot{opacity:1;transform:scale(1)}.roadmap-item-active .roadmap-dot{box-shadow:0 0 0 4px #ffffff14,0 0 0 9px var(--accent-soft)}.roadmap-item-next .roadmap-dot{background:transparent;border-color:var(--accent)}.roadmap-content,.progress-card,.strength-card{background:linear-gradient(145deg,var(--panel-raised),#202124);border:1px solid rgba(255,255,255,.08);border-radius:12px;box-shadow:0 14px 32px #0a0a0e29}.roadmap-content{padding:18px}.roadmap-date{display:block;margin-bottom:6px;color:var(--accent);font-size:12px;font-weight:800;text-transform:uppercase}.roadmap-content h4,.progress-card h3,.strength-card h3{margin:0 0 8px;color:#fff;font-size:17px;line-height:1.3}.roadmap-content p,.progress-card p{margin:0;color:var(--muted);font-size:13px}.roadmap-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.roadmap-tags span{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;color:#1f1f21;background:var(--accent);border-radius:8px;font-size:11px;font-weight:800}.resume-bottom-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:16px}.resume-reveal-card{opacity:0;transform:translate(-24px);transition:opacity .36s ease,transform .46s cubic-bezier(.22,1,.36,1)}.resume-reveal-card.is-visible{opacity:1;transform:translate(0)}.progress-card,.strength-card{padding:20px}.progress-card>span{display:inline-flex;margin-bottom:10px;color:var(--accent);font-size:12px;font-weight:800;text-transform:uppercase}.strength-card ul{margin:12px 0 0;padding:0;display:grid;gap:10px;list-style:none}.strength-card li{position:relative;padding-left:22px;color:var(--muted);font-size:13px}.strength-card li:before{content:"";position:absolute;top:8px;left:0;width:9px;height:9px;background:var(--accent);border-radius:999px}.skills{display:flex;flex-wrap:wrap;gap:10px}.skills span,.project-tags span{display:inline-flex;align-items:center;min-height:30px;padding:5px 10px;color:#1f1f21;background:var(--accent);border-radius:8px;font-size:12px;font-weight:800}.portfolio-intro{max-width:620px;margin:-8px 0 24px}.portfolio-intro p{margin:0;color:var(--muted);font-size:14px}.project-card{overflow:hidden;border-radius:14px;display:flex;flex-direction:column;transform:translateY(0) scale(1);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}.project-card:hover{transform:translateY(-6px) scale(1.015);border-color:#fff3;box-shadow:0 22px 46px #0a0a0e42}.project-card p{min-height:72px}.project-preview{position:relative;min-height:200px;overflow:hidden;background:radial-gradient(circle at 18% 18%,var(--accent-soft),transparent 24%),linear-gradient(135deg,#27282c,#17181a)}.project-preview img{display:block;width:100%;height:200px;object-fit:cover;object-position:top center}.project-placeholder{height:200px;display:grid;place-items:center}.project-placeholder span{width:72px;height:72px;display:grid;place-items:center;color:#1f1f21;background:linear-gradient(135deg,var(--accent),var(--accent-2));border-radius:18px;font-size:24px;font-weight:900}.project-status{position:absolute;top:14px;right:14px;padding:5px 10px;color:#1f1f21;background:var(--accent);border-radius:8px;font-size:11px;font-weight:900}.project-body{flex:1;padding:18px;display:flex;flex-direction:column}.project-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.project-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:18px}.project-actions a{min-height:36px;padding:7px 11px;display:inline-flex;align-items:center;gap:7px;color:var(--text);background:#ffffff0f;border:1px solid rgba(255,255,255,.1);border-radius:9px;font-size:12px;font-weight:800}.project-actions a:hover{color:#1f1f21;background:var(--accent)}.project-actions svg{width:16px;height:16px}.blog-intro{max-width:640px;margin:-8px 0 24px}.blog-intro p{margin:0;color:var(--muted);font-size:14px}.blog-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.blog-list article{overflow:hidden;padding:0;background:linear-gradient(145deg,var(--panel-raised),#202124);border:1px solid rgba(255,255,255,.08);border-radius:14px;box-shadow:0 14px 32px #0a0a0e29}.blog-visual{min-height:210px;position:relative;overflow:hidden;background:linear-gradient(135deg,#27282c,#17181a)}.blog-visual:before,.blog-visual:after{content:"";position:absolute;border-radius:999px}.blog-visual:before{width:190px;height:190px;top:-70px;right:-48px;background:var(--accent-soft)}.blog-visual:after{width:120px;height:120px;left:34px;bottom:-42px;background:#ffffff14}.blog-visual span{position:absolute;left:22px;bottom:20px;z-index:1;color:#1f1f21;background:var(--accent);border-radius:8px;padding:6px 10px;font-size:12px;font-weight:900}.blog-visual-code-desk{background:linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(135deg,#18191c,#2d2f35)}.blog-visual-responsive{background:radial-gradient(circle at 78% 28%,var(--accent-soft),transparent 28%),linear-gradient(135deg,#202125,#141518)}.blog-visual-responsive:after{width:170px;height:100px;left:46px;bottom:44px;border:8px solid rgba(255,255,255,.18);border-radius:16px;background:transparent}.blog-visual-proof{background:repeating-linear-gradient(0deg,rgba(255,255,255,.08) 0 2px,transparent 2px 20px),linear-gradient(135deg,#25262a,#17181a)}.blog-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:22px 22px 12px}.blog-meta time,.blog-meta span{display:inline-flex;align-items:center;min-height:26px;padding:4px 8px;border-radius:8px;font-size:11px;font-weight:800}.blog-meta time{color:#1f1f21;background:var(--accent)}.blog-meta span{color:var(--accent);background:var(--accent-soft)}.blog-list h3,.blog-list p{margin-left:22px;margin-right:22px}.blog-list h3{font-size:22px;line-height:1.4}.blog-list p{margin-bottom:0}.blog-tags{display:flex;flex-wrap:wrap;gap:8px;margin:18px 22px 22px}.blog-tags span{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;color:var(--text);background:#ffffff0f;border:1px solid rgba(255,255,255,.08);border-radius:8px;font-size:11px;font-weight:800}.portfolio-stage[data-accent=sky]{--accent: #9fe7ff;--accent-2: #72b8ff;--accent-soft: rgba(159, 231, 255, .16)}.portfolio-stage[data-accent=mint]{--accent: #9df6c4;--accent-2: #45d995;--accent-soft: rgba(157, 246, 196, .16)}.portfolio-stage[data-accent=coral]{--accent: #ffb199;--accent-2: #ff785f;--accent-soft: rgba(255, 177, 153, .16)}.portfolio-stage[data-accent=violet]{--accent: #d8b4fe;--accent-2: #a78bfa;--accent-soft: rgba(216, 180, 254, .16)}@keyframes panel-enter{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes modal-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 940px){.portfolio-stage{width:min(100% - 24px,760px)}.workspace{grid-template-columns:1fr}.profile-card{position:relative;top:0;min-height:0}.section-heading{max-width:none;padding-top:52px}}@media (max-width: 720px){.portfolio-stage{width:100%;min-height:100vh;margin:0;padding:14px;border-radius:0}.workspace{min-height:calc(100vh - 28px)}.tabs{position:static;min-width:0;grid-template-columns:repeat(2,1fr);border-left:0;border-bottom-left-radius:0}.panel{padding:24px 18px}.section-heading{padding-top:0}.service-grid,.project-grid,.blog-list,.resume-bottom-grid,.timeline{grid-template-columns:1fr}.recommendation-grid{grid-auto-columns:100%}.service-card{padding:20px}.recommendation-modal{padding:24px}.modal-person{grid-template-columns:64px minmax(0,1fr);gap:16px}.modal-person img{width:64px;height:64px}.modal-person h3{font-size:22px}.modal-quote{font-size:15px}}@media (max-width: 440px){.contact-list article{grid-template-columns:38px minmax(0,1fr)}.contact-icon{width:38px;height:38px}.identity h1,.section-heading h2{font-size:24px}.tabs{grid-template-columns:1fr}}
