:root{--bg-color:#d7dee8;--text-color:#2a2a2a;--border-color:#2a2a2a;--border-secondary:#c8c4bc;--accent-primary:#2a9d8f;--accent-secondary:#4a9b8e;--font-heading:"Montserrat", sans-serif;--font-body:"Inter", sans-serif;--sidebar-width:250px;--dot-color:#00000026}[data-theme=dark]{--bg-color:#222831;--text-color:#e8e4dc;--border-color:#c8c4bc;--border-secondary:#3a3f4a;--accent-primary:#2a9d8f;--accent-secondary:#4a9b8e;--dot-color:#ffffff1f}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:18px}body{background-color:var(--bg-color);background-image:radial-gradient(circle, var(--dot-color) 1px, transparent 1px);color:var(--text-color);font-family:var(--font-body);background-size:24px 24px;background-attachment:fixed;transition:background-color .3s,color .3s;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}a{color:inherit;text-decoration:none}.app-container{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);z-index:100;flex-direction:column;align-items:center;height:100vh;padding:4rem 0;display:flex;position:fixed;top:0;left:0}.sidebar-content{flex-direction:column;align-items:flex-start;width:120px;display:flex}.sidebar-nav{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:1px;flex-direction:column;gap:1.5rem;font-weight:300;display:flex}.nav-item{cursor:pointer;align-items:center;font-size:.9rem;transition:opacity .2s;display:flex}.nav-item:hover{opacity:.7}.nav-item.active:before{content:"→";color:var(--accent-primary);margin-right:8px}.theme-toggle{border:1px solid var(--border-color);width:fit-content;margin-top:2rem;display:flex}.theme-toggle button{color:var(--text-color);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.5rem;transition:background-color .2s;display:flex}.theme-toggle button:hover{background-color:#8080801a}.theme-toggle .active{background-color:var(--text-color);color:var(--bg-color)}.theme-toggle .divider{background-color:var(--border-color);width:1px}.main-content{margin-left:var(--sidebar-width);flex-direction:column;align-items:center;padding:4rem 2rem;display:flex}.intro-section,.skills-section,.projects-section,.about-section,.contact-section{width:100%;max-width:900px}.intro-section{border:1px solid var(--border-color);border-top:3px solid var(--accent-primary);flex-direction:column;padding:0;display:flex;position:relative}.projects-section{flex-direction:column;padding-top:6rem;display:flex}.projects-grid{flex-wrap:wrap;justify-content:space-between;gap:2rem;display:flex}.about-section{flex-direction:column;padding-top:6rem;display:flex}.timeline{border-left:2px solid var(--border-color);flex-direction:column;gap:2rem;margin-top:1rem;padding-left:1rem;display:flex}.timeline-item{padding-left:2rem;position:relative}.timeline-dot{background-color:var(--bg-color);border:2px solid var(--accent-primary);border-radius:50%;width:12px;height:12px;transition:background-color .3s,border-color .3s;position:absolute;top:.5rem;left:-2.45rem}.timeline-item:hover .timeline-dot{background-color:var(--accent-secondary);border-color:var(--accent-secondary)}.timeline-content{border:1px solid var(--border-color);cursor:default;background-color:#0000;padding:1.5rem;transition:all .3s}.timeline-item:hover .timeline-content{background-color:var(--accent-secondary);color:#f5f3ee;border-color:var(--accent-secondary)}.timeline-title{font-family:var(--font-heading);margin-bottom:.5rem;font-size:1.3rem;font-weight:700}.timeline-subtitle{font-family:var(--font-body);opacity:.9;font-size:1rem;font-weight:400}.contact-section{flex-direction:column;padding-top:6rem;padding-bottom:6rem;display:flex}.contact-layout{grid-template-columns:1fr 1.5fr;align-items:start;gap:3rem;margin-top:1.5rem;display:grid}.contact-left{flex-direction:column;gap:2rem;display:flex}.contact-info{flex-direction:column;gap:1rem;display:flex}.contact-link{font-family:var(--font-body);color:var(--text-color);border:1px solid var(--border-color);align-items:center;gap:.75rem;width:100%;padding:1.25rem 1.75rem;font-size:1.1rem;font-weight:600;text-decoration:none;transition:all .3s;display:flex}.contact-link:hover{background-color:var(--accent-primary);color:#f5f3ee;border-color:var(--accent-primary)}.contact-icon{flex-shrink:0;font-size:1.4rem}.contact-form{border:1px solid var(--border-color);flex-direction:column;gap:1.25rem;padding:2.5rem;display:flex}.contact-form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{font-family:var(--font-heading);letter-spacing:1.5px;text-transform:uppercase;color:var(--text-color);opacity:.6;font-size:.78rem;font-weight:700}.form-input{border:1px solid var(--border-color);color:var(--text-color);font-family:var(--font-body);resize:none;background:0 0;outline:none;width:100%;padding:.85rem 1.1rem;font-size:1rem;transition:border-color .2s}.form-input::placeholder{opacity:.35}.form-input:focus{border-color:var(--accent-primary)}.form-textarea{min-height:150px;line-height:1.6}.form-submit{background-color:var(--accent-primary);color:#f5f3ee;border:1px solid var(--accent-primary);font-family:var(--font-heading);letter-spacing:1px;text-transform:uppercase;cursor:pointer;justify-content:center;align-self:flex-start;align-items:center;gap:.5rem;padding:.8rem 1.5rem;font-size:.85rem;font-weight:700;transition:all .25s;display:flex}.form-submit:hover{color:var(--text-color);border-color:var(--border-color);background-color:#0000}.form-submit--sent{background-color:var(--accent-secondary);border-color:var(--accent-secondary);color:#f5f3ee;pointer-events:none}.social-links-grid{gap:1rem;display:flex}.social-box{border:1px solid var(--border-color);width:70px;height:70px;color:var(--text-color);justify-content:center;align-items:center;transition:all .3s;display:flex}.social-box:hover{background-color:var(--accent-primary);color:#f5f3ee;border-color:var(--accent-primary)}.intro-section{border:1px solid var(--border-color);border-top:3px solid var(--accent-primary);flex-direction:column;min-height:70vh;padding:0;display:flex;position:relative}.intro-header{background-color:var(--text-color);color:var(--bg-color);align-items:center;padding:.75rem 1.5rem;display:flex}.intro-social-links{align-items:center;gap:1rem;display:flex}.intro-social-link{color:var(--bg-color);opacity:.7;align-items:center;transition:opacity .2s;display:flex}.intro-social-link:hover{opacity:1}.intro-body{text-align:center;flex-direction:column;flex:1;align-items:center;padding:4rem 3rem 2rem;display:flex}.intro-title{font-family:var(--font-heading);letter-spacing:-2px;margin-bottom:3rem;font-size:80px;font-weight:800}.intro-description{font-family:var(--font-body);text-align:left;max-width:800px;margin-bottom:2rem;font-size:1.1rem;font-weight:400;line-height:1.6}.quick-links-container{text-align:center;width:100%;margin-top:auto}.quick-links-title{font-family:var(--font-heading);margin-bottom:.5rem;font-size:1.2rem;font-weight:700}.quick-links-wrapper{display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}.quick-links{justify-content:center;gap:0;display:flex}.quick-link{border:1px solid var(--bg-color);font-family:var(--font-body);background-color:var(--accent-primary);color:#f5f3ee;align-items:center;gap:.5rem;margin-right:-1px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:opacity .2s,background-color .2s;display:flex}.quick-link:hover{opacity:.85;background-color:var(--accent-secondary)}.quick-link svg{color:#f5f3ee;width:16px;height:16px}.mobile-top-bar{background-color:var(--bg-color);border-bottom:1px solid var(--border-color);z-index:1000;justify-content:space-between;align-items:center;width:100%;height:60px;padding:0 1.5rem;display:none;position:fixed;top:0;left:0}.mobile-logo{font-family:var(--font-heading);font-size:1.5rem;font-weight:800}.hamburger-btn{color:var(--text-color);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.5rem;display:flex}@media (width<=900px){.mobile-top-bar{display:flex}.sidebar{z-index:999;border-right:1px solid var(--border-color);background-color:var(--bg-color);width:250px;height:calc(100vh - 60px);transition:transform .3s;top:60px;transform:translate(-100%)}.sidebar.mobile-open{transform:translate(0)}.main-content{margin-left:0;padding:6rem 1.5rem 2rem}.intro-title{font-size:56px}.intro-description{font-size:1rem}.intro-body{padding:2rem 1.5rem 3rem}.quick-links{flex-wrap:wrap;justify-content:center}.quick-link{border-bottom:1px solid var(--bg-color);justify-content:center;width:50%}.contact-layout{grid-template-columns:1fr;gap:2rem}.contact-link{width:100%;font-size:.95rem}.contact-form-row{grid-template-columns:1fr}.form-submit{width:100%}.social-links-grid{flex-wrap:wrap;justify-content:flex-start}.social-box{width:50px;height:50px}}@media (width<=600px){.intro-title{font-size:40px}.quick-link{width:100%}}.project-card{cursor:pointer;width:400px;height:440px;color:var(--border-color);margin-top:2rem;text-decoration:none;transition:transform .2s;display:block;position:relative}.card-bg{position:absolute;inset:0}.project-card svg{z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.project-card .card-fill,.project-card .tab-fill{transition:fill .4s}.project-card:hover .card-fill,.project-card:hover .tab-fill{fill:var(--accent-primary)}.project-card:hover .front-tab{transform:translate(63.789px)}.front-tab{transition:transform .4s cubic-bezier(.25,1,.5,1)}.label-divider-line{stroke:currentColor;opacity:.2}.card-label-overlay{z-index:3;pointer-events:none;flex-direction:column;gap:.45rem;padding:.5rem .75rem 0;display:flex;position:absolute;top:39%;left:5%;right:5%}.label-top-row{justify-content:flex-end;display:flex}.label-project-number{letter-spacing:2px;text-transform:uppercase;color:var(--text-color);opacity:.5;border:1px solid;padding:.1rem .4rem;font-family:Montserrat,sans-serif;font-size:10.4px;font-weight:900;transition:color .4s,opacity .4s}.project-card:hover .label-project-number{color:#f5f3ee;opacity:.85}.label-rule{background-color:var(--text-color);opacity:.15;width:100%;height:1px;transition:background-color .4s}.project-card:hover .label-rule{background-color:#f5f3ee}.label-lines{flex-direction:column;gap:.5rem;margin-top:.1rem;display:flex}.label-line-fake{background-color:var(--text-color);opacity:.12;border-radius:1px;width:88%;height:1px;transition:background-color .4s,opacity .4s}.label-line-fake--short{width:60%}.label-line-fake--medium{width:75%}.label-line-fake--shorter{width:48%}.project-card:hover .label-line-fake{opacity:.2;background-color:#f5f3ee}.card-content{z-index:2;width:100%;color:var(--text-color);flex-direction:column;gap:.6rem;padding:1.5rem 2rem 2rem;transition:color .4s;display:flex;position:absolute;bottom:0;left:0}.project-card:hover .card-content{color:#f5f3ee}.label-tags{flex-wrap:wrap;gap:.3rem;display:flex}.label-tag{letter-spacing:.9px;text-transform:uppercase;border:1px solid var(--text-color);color:var(--text-color);opacity:.75;border-radius:2px;padding:.15rem .45rem;font-family:Inter,sans-serif;font-size:9.3px;font-weight:700;transition:color .4s,border-color .4s,opacity .4s}.project-card:hover .label-tag{color:#f5f3ee;opacity:.9;border-color:#f5f3ee}.project-title{font-family:var(--font-heading);margin:0;font-size:20px;font-weight:800;line-height:1.25}.project-desc{font-family:var(--font-body);opacity:.85;margin:0;font-size:13.6px;font-weight:400;line-height:1.55}@media (width<=600px){.project-card{aspect-ratio:407/449;width:min(320px,88vw);height:auto;margin-top:1.25rem}.card-content{gap:.4rem;padding:1rem 1.5rem 1.5rem}.project-title{font-size:16.8px}.project-desc{font-size:12.5px;line-height:1.45}.label-line-fake--medium,.label-line-fake--shorter{display:none}.projects-grid{flex-direction:column;align-items:center;gap:.5rem}}.skills-section{flex-direction:column;width:100%;max-width:900px;padding-top:6rem;display:flex}.section-title{font-family:var(--font-heading);border-left:4px solid var(--accent-primary);margin-bottom:2rem;padding-left:1rem;font-size:2rem;font-weight:800}.skills-table{border:1px solid var(--border-color)}.skill-row{border-bottom:1px solid var(--border-color);grid-template-columns:160px 1fr;min-height:100px;transition:background-color .22s;display:grid;position:relative}.skill-row:last-child{border-bottom:none}.skill-row:hover{background-color:var(--border-secondary)}.skill-row-label{border-right:1px solid var(--border-color);background-color:var(--accent-primary);color:var(--bg-color);text-align:center;font-family:var(--font-heading);text-transform:uppercase;letter-spacing:2.5px;flex-shrink:0;justify-content:center;align-items:center;padding:1.5rem 1.25rem;font-size:.68rem;font-weight:800;display:flex}.skill-row-icons{flex-wrap:wrap;align-items:center;gap:2rem 2.5rem;padding:1.5rem 2rem;display:flex}.skill-icon-item{cursor:default;flex-direction:column;justify-content:center;align-items:center;width:50px;height:50px;display:flex;position:relative}.skill-icon-item>svg,.skill-img-icon{transition:all .3s;transform:scale(1)}.skill-icon-item>svg.pandas-icon{filter:brightness(1.6)}.skill-icon-item:hover>svg,.skill-icon-item:hover .skill-img-icon{transform:scale(1.15)}.skill-icon-item>span{font-family:var(--font-body);color:var(--text-color);opacity:0;white-space:nowrap;z-index:10;margin-top:.5rem;font-size:.72rem;font-weight:600;transition:all .3s;position:absolute;top:100%;transform:translateY(4px)}.skill-icon-item:hover>span{opacity:1;transform:translateY(0)}.skill-emoji{line-height:1;display:block}.skill-img-icon{object-fit:contain;width:36px;height:36px;display:block}@media (width<=700px){.skill-row{grid-template-columns:120px 1fr}.skill-row-label{letter-spacing:1.5px;padding:1rem;font-size:.6rem}.skill-row-icons{gap:1.25rem 1.5rem;padding:1rem}}@media (width<=480px){.skill-row{grid-template-columns:1fr}.skill-row-label{border-right:none;border-bottom:1px solid var(--border-color);justify-content:flex-start;padding:.75rem 1rem}}
