@import url(https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,300&family=DM+Serif+Display:ital@0;1&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,body,html{background-color:#fbfbfd}:root{--blue-dim:#0071e30f}.App{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fbfbfd;background:var(--off-white);display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-family:var(--font);justify-content:space-between;min-height:100vh;overflow:hidden;padding:0 60px 40px;padding:0 var(--col-pad) 40px;position:relative;width:100%}.glow{border-radius:50%;pointer-events:none;position:absolute;z-index:0}.glow-top{background:radial-gradient(ellipse,#0071e314 0,#0071e305 40%,#0000 70%);height:800px;left:25%;top:-300px;transform:translateX(-50%);width:1000px}.glow-right{background:radial-gradient(ellipse,#0071e30a 0,#0000 65%);height:900px;right:-200px;top:-100px;width:700px}.hero{grid-gap:80px;align-items:center;display:grid;flex:1 1;gap:80px;grid-template-columns:1fr 1fr;padding:80px 0 60px;position:relative;z-index:1}.hero-left{display:flex;flex-direction:column}.eyebrow{animation:fadeUp .6s ease 0s both;animation:fadeUp .6s var(--ease-apple) 0s both;display:inline-block;font-size:21px;font-weight:600;margin-bottom:4px}.eyebrow,.name{color:#1d1d1f;color:var(--text)}.name{animation:fadeUp .7s ease .07s both;animation:fadeUp .7s var(--ease-apple) .07s both;font-size:clamp(48px,6vw,80px);font-weight:700;letter-spacing:-.015em;line-height:1.05;margin-bottom:16px}.job-title{animation:fadeUp .7s ease .14s both;animation:fadeUp .7s var(--ease-apple) .14s both;color:#0071e3;font-size:clamp(19px,1.8vw,24px);font-weight:400;letter-spacing:-.003em;margin-bottom:28px}.description{animation:fadeUp .7s ease .21s both;animation:fadeUp .7s var(--ease-apple) .21s both;color:#6e6e73;color:var(--text-muted);font-size:clamp(17px,1.4vw,21px);font-weight:400;letter-spacing:-.002em;line-height:1.47;margin-bottom:40px;max-width:480px}.hero-rule{animation:fadeUp .5s ease .28s both;animation:fadeUp .5s var(--ease-apple) .28s both;background:#00000014;background:var(--border);height:1px;margin-bottom:32px;width:100%}.hero-stats{animation:fadeUp .7s ease .32s both;animation:fadeUp .7s var(--ease-apple) .32s both;display:flex;gap:0;margin-bottom:40px}.hero-stat{display:flex;flex:1 1;flex-direction:column;gap:4px;padding-right:24px}.hero-stat+.hero-stat{border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:24px}.hero-stat-num{color:#1d1d1f;color:var(--text);font-size:clamp(28px,3.5vw,48px);font-weight:600;letter-spacing:-.02em;line-height:1}.hero-stat-label{color:#6e6e73;color:var(--text-muted);font-size:14px;font-weight:400}.buttons-container{display:flex;gap:16px;margin-top:40px}.nav-button{align-items:center;backdrop-filter:blur(30px) saturate(180%);-webkit-backdrop-filter:blur(30px) saturate(180%);background:#009dff;border:1px solid #2997ff26;border-radius:980px;box-shadow:0 4px 30px #968f8f1a;display:inline-flex;justify-content:center;min-width:140px;padding:12px 28px;text-decoration:none;transition:all .3s ease;transition:all .3s var(--ease-apple)}.nav-button:hover{background:#2997ff33;border-color:#2997ff66;transform:scale(1.02)}.nav-button-bottom{align-items:center;display:flex;justify-content:center}.button-text{color:#fbfbfd;color:var(--off-white);font-size:16px;font-weight:500;letter-spacing:-.01em;transition:color .2s ease;transition:color .2s var(--ease-apple)}.nav-button:hover .button-text{color:#0071e3;color:var(--blue)}@media (max-width:640px){.buttons-container{flex-direction:column;gap:12px}.nav-button{padding:14px 28px;width:100%}}.hero-right{align-items:flex-end;animation:fadeUp .9s ease .15s both;animation:fadeUp .9s var(--ease-apple) .15s both;display:flex;justify-content:center;overflow:visible;position:relative;z-index:1}.photo-wrap{height:95vh;max-height:900px;max-width:700px;position:relative;width:100%}.photo-img{display:block;filter:saturate(.95) brightness(1.02);height:100%;object-fit:contain;object-position:center bottom;transition:transform .6s ease,filter .4s ease;transition:transform .6s var(--ease-apple),filter .4s var(--ease-apple);width:100%}.photo-wrap:hover .photo-img{filter:saturate(1) brightness(1);transform:scale(1.015) translateY(-6px)}.badge-name{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid #0000001a;border-radius:980px;border-radius:var(--radius-pill);color:#1d1d1f;color:var(--text);font-size:14px}.badge-name,.badge-open{background:#ffffffe0;box-shadow:0 2px 8px #0000000f;font-weight:500;padding:10px 18px;width:-webkit-fit-content;width:fit-content}.badge-open{border:1px solid #0071e326;border-radius:980px;border-radius:var(--radius-pill);color:#0071e3;color:var(--blue);font-size:12px;letter-spacing:.03em;text-transform:uppercase}@media (max-width:1024px){:root{--col-pad:40px}.hero{gap:60px}.photo-wrap{max-width:500px}}@media (max-width:768px){:root{--col-pad:32px}.hero{gap:40px;grid-template-columns:1fr;padding:60px 0 48px}.hero-right{order:-1}.photo-wrap{height:60vh;margin:0 auto;max-height:450px;max-width:320px}.description{max-width:100%}}@media (max-width:480px){:root{--col-pad:24px}.hero{gap:32px}.photo-wrap{height:50vh;max-width:260px}.hero-stats{flex-wrap:wrap}.hero-stat{flex:1 1 45%;padding:12px 0}.hero-stat+.hero-stat{border-left:none;padding-left:0}.hero-stat:nth-child(2n){border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:16px}.hero-stat:nth-child(n+3){border-top:1px solid #00000014;border-top:1px solid var(--border)}.buttons-container{flex-direction:column;gap:10px}.nav-button{min-height:80px;padding:16px 20px;width:100%}.nav-button,.nav-button-top{align-items:center;flex-direction:row}.nav-button-top{flex-shrink:0;gap:10px;margin-bottom:0;margin-right:16px}.button-icon{font-size:24px}.button-arrow{font-size:16px}.nav-button-bottom{flex:1 1}.nav-button:hover{transform:translateX(3px) translateY(-2px)}}#root,body,html{background-color:#ece9e9}:root{--white:snow;--surface:#d7d1d1;--surface-2:#8f8f92;--surface-3:#464646;--black:#0e0b0b;--muted:#86868b;--muted-2:#6e6e73;--blue:#2997ff;--blue-dim:rgba(138,211,248,.904);--radius-card:20px;--spine-x:220px;--dot-size:12px}.we-page{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:snow;background:var(--white);color:#0e0b0b;color:var(--black);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-family:var(--font);min-height:100vh;padding-bottom:120px;width:100%}.we-header{padding:44px 60px 0;padding:44px var(--col-pad) 0;width:100%}.we-back{align-items:center;color:#2997ff;color:var(--blue);display:inline-flex;font-size:15px;font-weight:400;gap:6px;letter-spacing:-.01em;margin-bottom:64px;text-decoration:none;transition:opacity .2s ease;transition:opacity .2s var(--ease-apple)}.we-back svg{stroke:#2997ff;stroke:var(--blue);flex-shrink:0;height:16px;width:16px}.we-back:hover{opacity:.65}.we-header-body{padding-bottom:80px}.we-eyebrow{align-items:center;color:#2997ff;color:var(--blue);display:inline-flex;font-size:12px;font-weight:500;gap:8px;letter-spacing:.12em;margin-bottom:24px;text-transform:uppercase}.we-eyebrow:before{background:rgba(138,211,248,.904);background:var(--blue-dim);content:"";display:block;height:1px;width:20px}.we-title{animation:fadeUp .7s ease .05s both;animation:fadeUp .7s var(--ease-apple) .05s both;color:#0e0b0b;color:var(--black);font-size:clamp(52px,7vw,96px);font-weight:700;letter-spacing:-.03em;line-height:1.03;margin-bottom:20px}.we-subtitle{animation:fadeUp .7s ease .15s both;animation:fadeUp .7s var(--ease-apple) .15s both;color:#86868b;color:var(--muted);font-size:clamp(16px,1.6vw,20px);font-weight:300;letter-spacing:-.01em;line-height:1.65;margin-bottom:60px;max-width:560px}.we-stats{animation:fadeUp .7s ease .25s both;animation:fadeUp .7s var(--ease-apple) .25s both;border-bottom:1px solid #00000014;border-bottom:1px solid var(--border);border-top:1px solid #00000014;border-top:1px solid var(--border);color:#0e0b0b;color:var(--black);display:flex;padding:36px 0}.we-stat{flex:1 1;padding-right:40px}.we-stat+.we-stat{border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:40px}.we-stat-num{color:#0e0b0b;color:var(--black);display:block;font-size:clamp(36px,4vw,56px);font-weight:700;letter-spacing:-.04em;line-height:1;margin-bottom:8px}.we-stat-label{color:#86868b;color:var(--muted);display:block;font-size:13px;font-weight:400}.we-main{padding:80px 60px 0;padding:80px var(--col-pad) 0;width:100%}.we-timeline{position:relative;width:100%}.we-spine{background:#00000014;background:var(--border);bottom:0;left:220px;left:var(--spine-x);position:absolute;top:8px;width:1px}.we-item{align-items:start;display:grid;grid-template-areas:"year dot card";grid-template-columns:220px 48px 1fr;grid-template-columns:var(--spine-x) 48px 1fr;margin-bottom:0;padding-bottom:64px;position:relative}.we-item:last-child{padding-bottom:0}.we-year{color:#6e6e73;color:var(--muted-2);font-size:13px;font-weight:500;grid-area:year;letter-spacing:-.005em;padding-right:32px;padding-top:28px;text-align:right;white-space:nowrap}.we-dot{background:#464646;background:var(--surface-3);border:2px solid #00000014;border:2px solid var(--border);border-radius:50%;grid-area:dot;height:12px;height:var(--dot-size);left:-5.5px;left:calc(var(--dot-size)/-2 + .5px);margin-top:32px;position:relative;transition:background .3s ease,border-color .3s ease,transform .3s ease;transition:background .3s var(--ease-apple),border-color .3s var(--ease-apple),transform .3s var(--ease-apple);width:12px;width:var(--dot-size);z-index:2}.we-item:hover .we-dot{background:#2997ff;background:var(--blue);border-color:#2997ff;border-color:var(--blue);transform:scale(1.35)}.we-card{background:#8f8f92;background:var(--surface-2);border:1px solid #00000014;border:1px solid var(--border);border-radius:20px;border-radius:var(--radius-card);grid-area:card;padding:32px 36px;transition:border-color .35s ease,transform .4s ease,box-shadow .4s ease;transition:border-color .35s var(--ease-apple),transform .4s var(--ease-apple),box-shadow .4s var(--ease-apple)}.we-item:hover .we-card{border-color:#2997ff38;box-shadow:0 20px 48px rgba(0,0,0,.781);transform:translateX(6px)}.we-card-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.we-role{color:#0e0b0b;color:var(--black);font-size:clamp(18px,2vw,22px);font-weight:600;letter-spacing:-.02em;line-height:1.2;margin-bottom:8px}.we-company{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.we-company-name{color:#86868b;color:var(--muted);font-size:14px;font-weight:400;letter-spacing:-.005em}.we-type-badge{align-items:center;background:rgba(138,211,248,.904);background:var(--blue-dim);border:1px solid #2997ff38;border-radius:980px;border-radius:var(--radius-pill);color:#2997ff;color:var(--blue);display:inline-flex;font-size:11px;font-weight:500;letter-spacing:.02em;padding:3px 10px}.we-desc{color:#86868b;color:var(--muted);font-size:16px;font-weight:300;letter-spacing:-.01em;line-height:1.7;margin-bottom:20px}.we-highlights{border-top:1px solid #00000014;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:20px 0 0}.we-highlights li{align-items:flex-start;border-bottom:1px solid #00000014;border-bottom:1px solid var(--border);color:#86868b;color:var(--muted);display:flex;font-size:14px;font-weight:400;gap:16px;letter-spacing:-.005em;line-height:1.6;padding:10px 0}.we-highlights li:last-child{border-bottom:none}.we-highlights li:before{color:#2997ff;color:var(--blue);content:"—";flex-shrink:0;font-size:12px;margin-top:2px}.work-details-link{align-self:flex-start;background:#2997ff;border:none;border-radius:980px;color:#fff;display:inline-block;font-size:15px;font-weight:500;margin-top:20px;padding:10px 24px;text-decoration:none;transition:all .2s ease}.work-details-link:hover{background:#0077e6;transform:scale(1.02)}.footer-link:hover{color:#2997ff;color:var(--blue)}@media (max-width:900px){:root{--col-pad:28px;--spine-x:120px}.we-year{font-size:12px;padding-right:20px}.we-card{padding:24px}}@media (max-width:640px){:root{--col-pad:20px}.we-spine{display:none}.we-item{gap:8px;grid-template-areas:"year" "card";grid-template-columns:1fr;padding-bottom:20px}.we-dot{display:none}.we-year{color:#2997ff;color:var(--blue);font-size:12px;letter-spacing:.06em;padding-right:0;padding-top:0;text-align:left;text-transform:uppercase}.we-card{padding:20px}.we-item+.we-item{border-top:1px solid #00000014;border-top:1px solid var(--border);padding-top:20px}.we-item:hover .we-card{transform:none}.we-stats{flex-wrap:wrap}.we-stat{flex:1 1 45%;padding:16px 0}.we-stat+.we-stat{border-left:none;padding-left:0}.we-stat:nth-child(2n){border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:20px}.we-footer-inner{align-items:flex-start;flex-direction:column}.we-footer-links{gap:16px}}:root{--font:-apple-system,BlinkMacSystemFont,"SF Pro Display"}.work-detail{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f1f1f8;background:var(--bg);color:#000;color:var(--text-primary);font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body);min-height:100vh;overflow-x:hidden}.back-link svg{stroke:#0071e3;stroke:var(--accent)}.work-header{font:-apple-system,BlinkMacSystemFont,SF Pro Display;font:var(--font);margin:0 auto;max-width:900px;padding:120px 24px 48px;padding:var(--space-2xl) var(--space-md) var(--space-lg);width:100%}.work-year{align-items:center;background:#cac3c3f7;background:var(--tag-bg);border-radius:980px;border-radius:var(--radius-pill);color:#6e6e73;color:var(--text-secondary);display:inline-flex;font-size:11px;font-weight:600;gap:6px;letter-spacing:.09em;margin-bottom:22px;padding:5px 12px;text-transform:uppercase}.work-year:before{background:#0071e3;background:var(--accent);border-radius:50%;content:"";display:inline-block;flex-shrink:0;height:5px;width:5px}.work-header h1{color:#000;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display;font-family:var(--font);font-size:clamp(40px,7vw,72px);font-weight:700;letter-spacing:-.025em;line-height:1.05;margin-bottom:18px}.work-company{font-size:19px;font-weight:300;letter-spacing:-.01em;line-height:1.5;margin-bottom:12px}.work-company,.work-type-badge{color:#6e6e73;color:var(--text-secondary)}.work-type-badge{align-items:center;background:#cac3c3f7;background:var(--tag-bg);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:980px;border-radius:var(--radius-pill);display:inline-flex;font-size:11px;font-weight:500;padding:5px 12px}.work-content{margin:0 auto;max-width:720px;padding:0 24px;padding:0 var(--space-md)}.work-section{margin-bottom:48px;margin-bottom:var(--space-lg);margin-top:20px}.work-section h3{align-items:center;color:#121111;color:var(--text-tertiary);display:flex;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body);font-size:11px;font-weight:600;gap:10px;letter-spacing:.1em;margin-bottom:20px;text-transform:uppercase}.work-section h3:after{background:#e2d7d7;background:var(--border-light);content:"";flex:1 1;height:1px}.work-section p{color:#6e6e73;color:var(--text-secondary);font-size:17px;font-weight:300;letter-spacing:-.005em;line-height:1.78}.work-highlights-list{display:flex;flex-direction:column;gap:0;list-style:none}.work-highlights-list li{align-items:flex-start;border-bottom:1px solid #e2d7d7;border-bottom:1px solid var(--border-light);color:#6e6e73;color:var(--text-secondary);display:flex;font-size:16px;font-weight:300;gap:16px;letter-spacing:-.005em;line-height:1.65;padding:18px 0;transition:padding-left .3s cubic-bezier(.25,.46,.45,.94);transition:padding-left .3s var(--ease-smooth)}.work-highlights-list li:first-child{border-top:1px solid #e2d7d7;border-top:1px solid var(--border-light)}.work-highlights-list li:hover{padding-left:10px}.work-highlights-list li:before{background:#0071e3;background:var(--accent);border-radius:50%;content:"";display:inline-block;flex-shrink:0;height:6px;margin-top:8px;width:6px}.work-metrics-grid{grid-gap:24px;grid-gap:var(--space-md);display:grid;gap:24px;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:24px 0;margin:var(--space-md) 0}.work-metric-card{backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(var(--blur)) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(var(--blur)) saturate(180%);background:#f1f1f8;background:var(--bg);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:24px;border-radius:var(--radius-lg);box-shadow:0 2px 12px #0000000f;box-shadow:var(--shadow-sm);padding:24px;transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s cubic-bezier(.25,.46,.45,.94);transition:transform .3s var(--ease-spring),box-shadow .3s var(--ease-smooth)}.work-metric-card:hover{box-shadow:0 24px 64px #0000001f;box-shadow:var(--shadow-lg);transform:translateY(-4px)}.work-metric-number{color:#0071e3;color:var(--accent);font-size:28px;font-weight:600;letter-spacing:-.02em;margin-bottom:8px}.work-metric-label{color:#121111;color:var(--text-tertiary);font-size:12px;font-weight:600;letter-spacing:.05em;margin-bottom:6px;text-transform:uppercase}.work-metric-description{color:#6e6e73;color:var(--text-secondary);font-size:14px;font-weight:300;line-height:1.6}@media (max-width:768px){.work-header{padding-top:96px}.meta-card-inner{grid-template-columns:1fr 1fr;padding:20px 24px}}@media (max-width:480px){.back-link-wrap{max-width:calc(100vw - 32px)}.meta-card-inner{grid-template-columns:1fr 1fr}.work-section p{font-size:16px}.work-metrics-grid{grid-template-columns:1fr}}.work-skills-tools{display:flex;flex-direction:column;gap:40px}.work-skills,.work-tools{display:flex;flex-direction:column;gap:16px}.work-skills h4,.work-tools h4{color:var(--text-muted);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.work-skills ul,.work-tools ul{display:flex;flex-wrap:wrap;gap:10px;list-style:none;margin:0;padding:0}.work-skills li{background:#0071e3;background:var(--accent);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:980px;color:#f1f1f8;color:var(--bg);font-size:14px;font-weight:400;padding:10px 18px;transition:background .2s var(--ease),border-color .2s}.work-skills li:hover{background:#968f8fb8;background:var(--surface);border-color:#0000001f}.work-tools li{background:#0071e3;background:var(--accent);border:1px solid #0071e326;border-radius:980px;color:#f1f1f8;color:var(--bg);font-size:14px;font-weight:400;padding:10px 18px;transition:background .2s var(--ease),border-color .2s}.work-tools li:hover{background:#0071e31a;border-color:#0071e340;color:#0071e3;color:var(--accent)}@media (max-width:768px){.work-skills-tools{gap:32px}}.back-link:focus-visible,.skill-tag:focus-visible{outline:2px solid #0071e3;outline:2px solid var(--accent);outline-offset:3px}.mixed-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-top:30px}.gallery-item{aspect-ratio:4/3;background:#1d1d1f;border-radius:18px;cursor:pointer;transition:transform .3s ease,box-shadow .3s ease}.gallery-item:hover{box-shadow:0 20px 40px #00000080;transform:scale(1.02)}.video-item{position:relative}.video-overlay{align-items:center;background:#0000004d;bottom:0;display:flex;justify-content:center;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.video-item:hover .video-overlay{opacity:1}.play-icon{align-items:center;background:#2997ffe6;border-radius:50%;color:#fff;display:flex;font-size:28px;height:60px;justify-content:center;width:60px}.gallery-video,.photo-item img{display:block;height:100%;object-fit:cover;width:100%}.item-caption{background:linear-gradient(0deg,#000000e6,#0000);bottom:0;color:#fff;font-size:14px;left:0;opacity:0;padding:20px 16px 12px;position:absolute;right:0;transition:opacity .3s ease}.gallery-item:hover .item-caption{opacity:1}.photos-grid,.videos-grid{display:none}#root,body,html{background-color:#fff;min-height:100vh;width:100%}:root{--white:#fff;--off-white:#fbfbfd;--light-gray:#f5f5f7;--border:#00000014;--black:#1d1d1f;--text:#1d1d1f;--text-muted:#6e6e73;--text-light:#86868b;--blue:#0071e3;--blue-hover:#0077ed;--blue-dim:#0071e314;--green:#30d158;--orange:#ff9500;--surface:#f5f5f7;--surface-2:#e8e8ed;--font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",sans-serif;--ease-apple:cubic-bezier(0.25,0.1,0.25,1);--radius-card:18px;--col-pad:60px}.projects-page{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fff;background:var(--white);color:#1d1d1f;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-family:var(--font);min-height:100vh;width:100%}.container{padding-left:60px;padding-left:var(--col-pad);padding-right:60px;padding-right:var(--col-pad);width:100%}.projects-header{padding:44px 60px 0;padding:44px var(--col-pad) 0;width:100%}.back-button{align-items:center;color:#0071e3;color:var(--blue);display:inline-flex;font-size:17px;font-weight:400;gap:6px;margin-bottom:52px;text-decoration:none;transition:opacity .2s ease;transition:opacity .2s var(--ease-apple)}.back-button svg{stroke:#0071e3;stroke:var(--blue);height:16px;width:16px}.back-button:hover{opacity:.7}.header-content{padding-bottom:0}.header-eyebrow{color:#1d1d1f;color:var(--text);display:inline-block;font-size:21px;font-weight:600;margin-bottom:8px}.projects-header h1{animation:fadeUp .7s ease .05s both;animation:fadeUp .7s var(--ease-apple) .05s both;color:#1d1d1f;color:var(--text);font-size:clamp(48px,6vw,80px);font-weight:700;letter-spacing:-.015em;line-height:1.05;margin-bottom:16px}.subtitle{animation:fadeUp .7s ease .15s both;animation:fadeUp .7s var(--ease-apple) .15s both;color:#6e6e73;color:var(--text-muted);font-size:clamp(17px,1.8vw,21px);font-weight:400;letter-spacing:-.002em;line-height:1.47;margin-bottom:48px;max-width:600px}.stats-grid{animation:fadeUp .7s ease .25s both;animation:fadeUp .7s var(--ease-apple) .25s both;border-bottom:1px solid #00000014;border-bottom:1px solid var(--border);border-top:1px solid #00000014;border-top:1px solid var(--border);display:flex;margin-bottom:0;padding:32px 0}.stat-card{flex:1 1;padding-right:40px}.stat-card+.stat-card{border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:40px}.stat-number{color:#1d1d1f;color:var(--text);font-size:clamp(32px,4vw,56px);font-weight:600;letter-spacing:-.02em;line-height:1;margin-bottom:6px}.stat-label{color:#6e6e73;color:var(--text-muted);font-size:14px;font-weight:400}.filter-bar{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffc;border-bottom:1px solid #00000014;border-bottom:1px solid var(--border);padding:12px 0;position:-webkit-sticky;position:sticky;top:0;width:100%;z-index:100}.category-filters{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.category-btn{align-items:center;background:#0000;border:1px solid #00000014;border:1px solid var(--border);border-radius:980px;border-radius:var(--radius-pill);color:#1d1d1f;color:var(--text);cursor:pointer;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-family:var(--font);font-size:14px;font-weight:400;gap:6px;padding:8px 16px;transition:background .2s ease,border-color .2s ease,color .2s ease;transition:background .2s var(--ease-apple),border-color .2s var(--ease-apple),color .2s var(--ease-apple)}.category-btn:hover{background:#f5f5f7;background:var(--surface);border-color:#0000001f}.category-btn.active{background:#0071e3;background:var(--blue);border-color:#0071e3;border-color:var(--blue);color:#fff}.category-count{background:#00000014;border-radius:980px;border-radius:var(--radius-pill);font-size:12px;font-weight:500;padding:2px 6px}.category-btn.active .category-count{background:#ffffff40}.projects-main{padding:56px 0 80px;width:100%}.section-header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:28px}.section-eyebrow{color:#1d1d1f;color:var(--text);font-size:24px;font-weight:600;letter-spacing:-.01em}.project-count{color:#6e6e73;color:var(--text-muted);font-size:14px;font-weight:400}.projects-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);width:100%}.project-card{animation:cardIn .55s ease both;animation:cardIn .55s var(--ease-apple) both;background:#fff;background:var(--white);border:1px solid #00000014;border:1px solid var(--border);border-radius:18px;border-radius:var(--radius-card);display:flex;flex-direction:column;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease,border-color .2s ease;transition:transform .3s var(--ease-apple),box-shadow .3s var(--ease-apple),border-color .2s var(--ease-apple)}.project-card:hover{border-color:#00000026;box-shadow:0 8px 24px #0000001f;transform:translateY(-4px)}.project-image-container{aspect-ratio:16/10;background:#f5f5f7;background:var(--light-gray);overflow:hidden;position:relative;width:100%}.project-image{display:block;height:100%;object-fit:cover;object-position:center top;transition:transform .5s ease;transition:transform .5s var(--ease-apple);width:100%}.project-card:hover .project-image{transform:scale(1.04)}.project-image-placeholder{align-items:center;display:flex;flex-direction:column;gap:12px;height:100%;justify-content:center;width:100%}.project-image-placeholder.type-tech{background:linear-gradient(135deg,#e3f2ff,#cfe9ff)}.project-image-placeholder.type-nontech{background:linear-gradient(135deg,#f0f0f5,#e5e5ea)}.placeholder-icon{font-size:36px;opacity:.6}.placeholder-category{color:#0000004d;font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase}.project-overlay{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;display:flex;inset:0;justify-content:center;opacity:0;position:absolute;transition:opacity .25s ease;transition:opacity .25s var(--ease-apple)}.project-card:hover .project-overlay{opacity:1}.view-details-btn{align-items:center;background:#0071e3;background:var(--blue);border:none;border-radius:980px;border-radius:var(--radius-pill);color:#fff;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;font-family:var(--font);font-size:14px;font-weight:500;gap:6px;padding:10px 20px;text-decoration:none;transition:background .2s ease;transition:background .2s var(--ease-apple)}.view-details-btn:hover{background:#0077ed;background:var(--blue-hover)}.view-details-btn svg{height:14px;width:14px}.project-content{display:flex;flex:1 1;flex-direction:column;gap:8px;padding:20px}.project-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}.status-badge,.type-badge,.year-badge{align-items:center;border-radius:980px;border-radius:var(--radius-pill);display:inline-flex;font-size:11px;font-weight:500;letter-spacing:.01em;padding:4px 10px}.status-completed{background:#30d1581f;border:1px solid #30d15833;color:#28a745}.status-ongoing{background:#ff95001f;border:1px solid #ff950033;color:#ff9500}.tech-type{background:#0071e314;background:var(--blue-dim);border:1px solid #0071e333;color:#0071e3;color:var(--blue)}.nontech-type{background:#0000000a;border:1px solid #00000014;border:1px solid var(--border);color:#6e6e73;color:var(--text-muted)}.year-badge{background:#0000;border:none;color:#86868b;color:var(--text-light);font-size:11px;padding-left:2px}.project-title{color:#1d1d1f;color:var(--text);font-size:19px;font-weight:600;letter-spacing:-.01em;line-height:1.2}.project-role-label{color:#0071e3;color:var(--blue);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.tech-stack{margin-top:4px}.tech-tags{display:flex;flex-wrap:wrap;gap:6px}.tech-tag{background:#0071e3;background:var(--blue);border:1px solid #00000014;border:1px solid var(--border);border-radius:980px;border-radius:var(--radius-pill);color:#fff;color:var(--white);font-size:11px;font-weight:400;padding:4px 10px;transition:background .2s ease;transition:background .2s var(--ease-apple)}.project-card:hover .tech-tag{background:#e8e8ed;background:var(--surface-2)}.project-links{border-top:1px solid #00000014;border-top:1px solid var(--border);margin-top:auto;padding-top:12px}.project-link{align-items:center;color:#0071e3;color:var(--blue);display:inline-flex;font-size:14px;font-weight:400;gap:6px;text-decoration:none;transition:opacity .2s ease;transition:opacity .2s var(--ease-apple)}.project-link:hover{opacity:.7}.link-icon{font-size:14px}.no-results{padding:100px 20px;text-align:center}.no-results-icon{color:#e8e8ed;color:var(--surface-2);display:block;font-size:48px;margin-bottom:24px}.no-results h3{color:#1d1d1f;color:var(--text);font-size:24px;font-weight:600;margin-bottom:8px}.no-results p{color:#6e6e73;color:var(--text-muted);font-size:17px;font-weight:400}.projects-footer{border-top:1px solid #00000014;border-top:1px solid var(--border);padding:40px 0;width:100%}.footer-content{align-items:center;display:flex;gap:32px;justify-content:space-between;margin-bottom:24px}.footer-info h3{color:#1d1d1f;color:var(--text);font-size:17px;font-weight:600;margin-bottom:6px}.footer-info p{color:#6e6e73;color:var(--text-muted);font-size:14px;font-weight:400}.footer-links{display:flex;gap:20px}.footer-link{align-items:center;color:#6e6e73;color:var(--text-muted);display:inline-flex;font-size:14px;gap:6px;text-decoration:none;transition:color .2s ease;transition:color .2s var(--ease-apple)}.footer-icon{filter:brightness(100%);height:16px;width:16px}.footer-link:hover{color:#1d1d1f;color:var(--text)}.copyright{border-top:1px solid #00000014;border-top:1px solid var(--border);color:#86868b;color:var(--text-light);font-size:12px;letter-spacing:.01em;padding-top:20px}.reveal{transition:opacity .65s ease,transform .65s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1200px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){:root{--col-pad:28px}.stats-grid{flex-wrap:wrap}.stat-card{flex:1 1 45%;padding:20px 0}.stat-card+.stat-card{border-left:none;padding-left:0}.stat-card:nth-child(2n){border-left:1px solid #00000014;border-left:1px solid var(--border);padding-left:20px}.stat-card:nth-child(n+3){border-top:1px solid #00000014;border-top:1px solid var(--border)}.footer-content{align-items:flex-start;flex-direction:column}}@media (max-width:640px){:root{--col-pad:20px}.projects-grid{grid-template-columns:1fr}.section-header{align-items:flex-start;flex-direction:column;gap:4px}.category-btn{font-size:13px;padding:7px 14px}}:root{--bg:#f1f1f8;--surface:#968f8fb8;--surface-solid:#bab7b7;--border:#c4b9b9a1;--border-light:#e2d7d7;--text-primary:#000;--text-secondary:#6e6e73;--text-tertiary:#121111;--accent:#0071e3;--accent-hover:#0077ed;--accent-soft:rgba(0,119,239,.578);--green:#34c759;--tag-bg:#cac3c3f7;--shadow-sm:0 2px 12px #0000000f;--shadow-md:0 8px 32px #0000001a;--shadow-lg:0 24px 64px #0000001f;--shadow-xl:0 40px 96px #0000002e;--radius-sm:10px;--radius-md:18px;--radius-lg:24px;--radius-xl:32px;--radius-pill:980px;--blur:20px;--blur-heavy:32px;--font-display:"DM Serif Display",Georgia,"Times New Roman",serif;--font-body:"DM Sans",-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;--ease-smooth:cubic-bezier(0.25,0.46,0.45,0.94);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--ease-out:cubic-bezier(0.16,1,0.3,1);--space-xs:8px;--space-sm:16px;--space-md:24px;--space-lg:48px;--space-xl:80px;--space-2xl:120px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}.project-detail{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f1f1f8;background:var(--bg);color:#000;color:var(--text-primary);min-height:100vh;overflow-x:hidden}.loading,.project-detail{font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body)}.loading{align-items:center;color:#121111;color:var(--text-tertiary);display:flex;font-size:15px;gap:6px;height:100vh;justify-content:center;letter-spacing:.01em}.loading:after{animation:dot-pulse 1.4s cubic-bezier(.25,.46,.45,.94) infinite;animation:dot-pulse 1.4s var(--ease-smooth) infinite;background:#121111;background:var(--text-tertiary);border-radius:50%;content:"";display:inline-block;height:6px;width:6px}@keyframes dot-pulse{0%,80%,to{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.back-link-wrap{left:50%;position:fixed;top:16px;transform:translateX(-50%);z-index:100}@keyframes nav-slide-in{0%{opacity:0;transform:translateX(-50%) translateY(-14px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.back-link{align-items:center;animation:nav-slide-in .6s cubic-bezier(.25,.46,.45,.94) both;animation:nav-slide-in .6s var(--ease-smooth) both;backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(var(--blur)) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(var(--blur)) saturate(180%);background:none;background:#968f8fb8;background:var(--surface);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:980px;border-radius:var(--radius-pill);box-shadow:0 8px 32px #0000001a;box-shadow:var(--shadow-md);color:#0071e3;color:var(--accent);cursor:pointer;display:flex;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body);font-size:14px;font-weight:500;gap:6px;gap:8px;gap:var(--space-xs);letter-spacing:-.01em;padding:8px 18px 8px 12px;text-decoration:none;transition:background .2s cubic-bezier(.25,.46,.45,.94);transition:background .2s var(--ease-smooth);white-space:nowrap;width:-webkit-fit-content;width:fit-content}.back-link:hover{background:rgba(0,119,239,.578);background:var(--accent-soft)}.back-link svg{flex-shrink:0;height:16px;transition:transform .2s cubic-bezier(.34,1.56,.64,1);transition:transform .2s var(--ease-spring);width:16px}.back-link:hover svg{transform:translateX(-3px)}.reveal{transform:translateY(28px);transition:opacity .7s cubic-bezier(.25,.46,.45,.94),transform .7s cubic-bezier(.25,.46,.45,.94);transition:opacity .7s var(--ease-smooth),transform .7s var(--ease-smooth)}.disclaimer-wrap{margin:0 auto 24px;margin:0 auto var(--space-md);max-width:900px;padding:0 24px;padding:0 var(--space-md)}.disclaimer{align-items:flex-start;background:#ffcc001a;border:1px solid #ffcc004d;border-radius:18px;border-radius:var(--radius-md);display:flex;gap:14px;padding:16px 20px}.disclaimer-icon{flex-shrink:0;font-size:18px;line-height:1;margin-top:1px}.disclaimer p{color:#6e6e73;color:var(--text-secondary);font-size:14px;font-weight:400;line-height:1.65}.project-header{margin:0 auto;max-width:900px;padding:120px 24px 48px;padding:var(--space-2xl) var(--space-md) var(--space-lg)}.project-eyebrow{align-items:center;background:#cac3c3f7;background:var(--tag-bg);border-radius:980px;border-radius:var(--radius-pill);color:#6e6e73;color:var(--text-secondary);display:inline-flex;font-size:11px;font-weight:600;gap:6px;letter-spacing:.09em;margin-bottom:22px;padding:5px 12px;text-transform:uppercase}.project-eyebrow:before{background:#0071e3;background:var(--accent);border-radius:50%;content:"";display:inline-block;flex-shrink:0;height:5px;width:5px}.project-header h1{animation:fadeUp .7s var(--ease-apple) .05s both;color:#000;color:var(--text-primary);font-family:var(--apple-system);font-size:clamp(52px,7vw,96px);font-weight:700;letter-spacing:-.03em;line-height:1.05;margin-bottom:18px}.project-header h1 em{animation:fadeUp .7s var(--ease-apple) .1s both;font-style:italic}.project-header h1 em,.project-role{color:#6e6e73;color:var(--text-secondary)}.project-role{animation:fadeUp .7s var(--ease-apple) .15s both;font-size:19px;font-weight:300;letter-spacing:-.01em;line-height:1.5}.meta-card{margin:0 auto 48px;margin:0 auto var(--space-lg);max-width:720px;padding:0 24px;padding:0 var(--space-md)}.meta-card,.meta-card-inner{animation:fadeUp .7s var(--ease-apple) .25s both}.meta-card-inner{grid-gap:24px;grid-gap:var(--space-md);backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(var(--blur)) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(var(--blur)) saturate(180%);background:#968f8fb8;background:var(--surface);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:24px;border-radius:var(--radius-lg);box-shadow:0 2px 12px #0000000f;box-shadow:var(--shadow-sm);display:grid;gap:24px;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));padding:28px 32px}.meta-item{display:flex;flex-direction:column;gap:6px}.meta-label{color:#121111;color:var(--text-tertiary);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.meta-value{color:#000;color:var(--text-primary);font-size:15px;font-weight:500;letter-spacing:-.01em}.exact-gallery{animation:fadeUp .7s var(--ease-apple) .35s both;flex-direction:column;margin:0 auto 80px;margin:0 auto var(--space-xl);max-width:1100px;padding:0 24px;padding:0 var(--space-md)}.exact-gallery,.gallery-row{display:flex;gap:16px}.gallery-row.two-col>.gallery-item{flex:1 1}.gallery-item{animation:fadeUp .7s var(--ease-apple) .35s both;background:#e0e0e5;border-radius:24px;border-radius:var(--radius-lg);box-shadow:0 2px 12px #0000000f;box-shadow:var(--shadow-sm);cursor:zoom-in;flex:1 1;overflow:hidden;position:relative;transition:transform .4s cubic-bezier(.34,1.56,.64,1),box-shadow .4s cubic-bezier(.25,.46,.45,.94);transition:transform .4s var(--ease-spring),box-shadow .4s var(--ease-smooth)}.gallery-item:hover{box-shadow:0 24px 64px #0000001f;box-shadow:var(--shadow-lg);transform:translateY(-5px) scale(1.006)}.gallery-item.hero-item{aspect-ratio:16/9}.gallery-item.contact-item,.gallery-item.services-item{aspect-ratio:4/3}.gallery-item.footer-item{aspect-ratio:21/7}.gallery-image{display:block;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.25,.46,.45,.94);transition:transform .6s var(--ease-smooth);width:100%}.gallery-item:hover .gallery-image{transform:scale(1.04)}.image-caption{align-items:flex-end;background:linear-gradient(0deg,#00000094 0,#0000);bottom:0;display:flex;justify-content:space-between;left:0;opacity:0;padding:36px 20px 18px;position:absolute;right:0;transition:opacity .3s cubic-bezier(.25,.46,.45,.94);transition:opacity .3s var(--ease-smooth)}.gallery-item:hover .image-caption{opacity:1}.image-caption>span:first-child{color:#ffffffeb;font-size:13px;font-weight:500;letter-spacing:.01em}.caption-hover{color:#ffffff80;font-size:11px;font-weight:400}.image-modal{align-items:center;animation:lightbox-in .28s cubic-bezier(.25,.46,.45,.94) both;animation:lightbox-in .28s var(--ease-smooth) both;backdrop-filter:blur(32px) saturate(120%);backdrop-filter:blur(var(--blur-heavy)) saturate(120%);-webkit-backdrop-filter:blur(32px) saturate(120%);-webkit-backdrop-filter:blur(var(--blur-heavy)) saturate(120%);background:#000000d6;cursor:zoom-out;display:flex;flex-direction:column;gap:16px;inset:0;justify-content:center;padding:24px;padding:var(--space-md);position:fixed;z-index:999}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.close-modal{align-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:#ffffff24;border:1px solid #ffffff2e;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:22px;height:40px;justify-content:center;line-height:1;position:absolute;right:20px;top:20px;transition:background .2s,transform .2s cubic-bezier(.34,1.56,.64,1);transition:background .2s,transform .2s var(--ease-spring);width:40px}.close-modal:hover{background:hsla(0,3%,7%,.615);transform:scale(1.1) rotate(90deg)}.modal-image{animation:modal-image-in .35s cubic-bezier(.34,1.56,.64,1) both;animation:modal-image-in .35s var(--ease-spring) both;border-radius:18px;border-radius:var(--radius-md);box-shadow:0 32px 96px #000000a3;cursor:default;display:block;max-height:84vh;max-width:90vw;object-fit:contain}@keyframes modal-image-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.modal-caption{color:#ffffff59;font-size:12px;font-weight:400;letter-spacing:.04em;text-align:center}.project-section{margin:0 auto 48px;margin:0 auto var(--space-lg);margin-top:20px;max-width:720px;padding:0 24px;padding:0 var(--space-md)}.project-section,.project-section h3{animation:fadeUp .7s var(--ease-apple) .35s both}.project-section h3{align-items:center;color:#121111;color:var(--text-tertiary);display:flex;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body);font-size:11px;font-weight:600;gap:10px;letter-spacing:.1em;margin-bottom:20px;text-transform:uppercase}.project-section h3:after{background:#e2d7d7;background:var(--border-light);content:"";flex:1 1;height:1px}.project-section h3:after,.project-section p{animation:fadeUp .7s var(--ease-apple) .35s both}.project-section p{color:#6e6e73;color:var(--text-secondary);font-size:17px;font-weight:300;letter-spacing:-.005em;line-height:1.78}.skills-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.skill-tag,.skills-tags{animation:fadeUp .7s var(--ease-apple) .35s both}.skill-tag{background:#bab7b7;background:var(--surface-solid);border:1px solid #c4b9b9a1;border:1px solid var(--border);border-radius:980px;border-radius:var(--radius-pill);box-shadow:0 2px 12px #0000000f;box-shadow:var(--shadow-sm);color:#0077ed;cursor:default;display:inline-block;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;font-family:var(--font-body);font-size:13px;font-weight:500;letter-spacing:-.01em;padding:6px 16px;transition:background .22s cubic-bezier(.25,.46,.45,.94),color .22s cubic-bezier(.25,.46,.45,.94),border-color .22s cubic-bezier(.25,.46,.45,.94),transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s cubic-bezier(.25,.46,.45,.94);transition:background .22s var(--ease-smooth),color .22s var(--ease-smooth),border-color .22s var(--ease-smooth),transform .22s var(--ease-spring),box-shadow .22s var(--ease-smooth)}.skill-tag:hover{background:#000;background:var(--text-primary);border-color:#0000;box-shadow:0 8px 32px #0000001a;box-shadow:var(--shadow-md);color:#00eaff;transform:translateY(-2px)}.features-list{flex-direction:column;gap:0;list-style:none}.features-list,.features-list li{animation:fadeUp .7s var(--ease-apple) .35s both;display:flex}.features-list li{align-items:flex-start;border-bottom:1px solid #e2d7d7;border-bottom:1px solid var(--border-light);color:#6e6e73;color:var(--text-secondary);font-size:16px;font-weight:300;gap:16px;letter-spacing:-.005em;line-height:1.65;padding:18px 0;transition:padding-left .3s cubic-bezier(.25,.46,.45,.94);transition:padding-left .3s var(--ease-smooth)}.features-list li:first-child{border-top:1px solid #e2d7d7;border-top:1px solid var(--border-light)}.features-list li:hover{padding-left:10px}.features-list li:before{background:#0071e3;background:var(--accent);border-radius:50%;content:"";display:inline-block;flex-shrink:0;height:6px;margin-top:8px;width:6px}.tech-stack-grid{grid-gap:30px;gap:30px}.architecture-diagram{background:#f1f1f8;border-radius:18px;margin:20px 0;padding:30px}.arch-row{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:center;margin:15px 0}.arch-box,.arch-row{animation:fadeUp .7s var(--ease-apple) .35s both}.arch-box{background:#f1f1f8;border:1px solid #ffffff1a;border-radius:12px;color:#000;font-size:14px;font-weight:500;min-width:120px;padding:12px 24px;text-align:center}.arch-box.frontend{background:#2997ff}.arch-box.domain{background:#ff9f0a}.arch-box.browser{background:#30b0c0}.arch-box.storage{background:#bf5af2}.arch-box.cloudflare{background:#f6821f}.arch-arrow{color:#86868b;font-size:24px}.arch-arrow,.arch-note{animation:fadeUp .7s var(--ease-apple) .35s both}.arch-note{border-top:1px solid #333;margin-top:25px;padding-top:20px;text-align:center}.arch-badge{background:#2997ff;border-radius:20px;color:#f1f1f8;font-size:12px;margin-right:8px;padding:4px 12px}.arch-badge,.tech-stack-grid{animation:fadeUp .7s var(--ease-apple) .35s both}.tech-stack-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));margin:30px 0}.tech-stack-item{align-items:center;animation:fadeUp .7s var(--ease-apple) .35s both;background:#f1f1f9;border-color:#e2d7d7;border-color:var(--border-light);border-radius:18px;display:flex;flex-direction:column;gap:12px;padding:20px;transition:transform .3s ease}.tech-stack-item:hover{background:#bab7b7;background:var(--surface-solid);border-color:#0071e3;border-color:var(--accent);box-shadow:0 24px 64px #0000001f;box-shadow:var(--shadow-lg);transform:translateY(-6px)}.tech-logo{animation:fadeUp .7s var(--ease-apple) .35s both;height:48px;object-fit:contain;width:48px}.tech-logo:hover{transform:scale(2.2)}.tech-name{animation:fadeUp .7s var(--ease-apple) .35s both;color:#0f0f12;font-size:14px;font-weight:500;text-align:center}.reveal{opacity:0;transform:translateY(24px);transition:opacity .65s var(--ease-apple),transform .65s var(--ease-apple)}.reveal.visible{opacity:1;transform:translateY(0)}@media (max-width:768px){.project-header{padding-top:96px}.gallery-row.two-col{flex-direction:column}.gallery-item.footer-item{aspect-ratio:4/3}.meta-card-inner{grid-template-columns:1fr 1fr;padding:20px 24px}}@media (max-width:480px){.back-link-wrap{max-width:calc(100vw - 32px)}.gallery-row{flex-direction:column}.gallery-item.hero-item{aspect-ratio:4/3}.meta-card-inner{grid-template-columns:1fr 1fr}.project-section p{font-size:16px}.coming-soon-message{font-size:15px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}.back-link:focus-visible,.close-modal:focus-visible,.coming-soon-back:focus-visible,.gallery-item:focus-visible,.skill-tag:focus-visible{outline:2px solid #0071e3;outline:2px solid var(--accent);outline-offset:3px}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#00000024;border-radius:980px;border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:#0000003d}::selection{background:#0071e32e;color:#000;color:var(--text-primary)}
/*# sourceMappingURL=main.d50fe9bc.css.map*/