.project-detail{min-height:100dvh;background:transparent;color:var(--text);font-family:var(--font-pt-mono),monospace;line-height:1.7;padding:0 24px 80px}.project-detail *,.project-detail :after,.project-detail :before{box-sizing:border-box}.project-detail a{color:var(--accent);text-decoration:none;transition:color .15s}.project-detail a:hover{color:var(--accent-bright)}.project-detail ::selection{background:rgba(34,211,238,.25);color:var(--text)}.scroll-reveal{will-change:opacity,filter,transform}.spotlight-card{position:relative;border-radius:8px;border:1px solid var(--line);background:var(--bg-elev-2);overflow:hidden;padding:20px;transition:border-color .2s,background .2s}.spotlight-card:hover{border-color:var(--line-strong);background:var(--bg-elev)}.spotlight-card-glare,.spotlight-card-spot{display:none}.project-detail-inner,.spotlight-card-content{position:relative;z-index:1}.project-detail-inner{max-width:1120px;margin:0 auto;padding-top:24px}.pd-hero{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:end;margin-bottom:32px;min-height:480px}.pd-hero-text{display:flex;flex-direction:column;gap:20px;padding-bottom:16px}.pd-hero-eyebrow{font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:8px}.pd-hero-eyebrow:before{content:"";display:block;width:12px;height:2px;background:var(--accent)}.pd-hero-title{font-size:clamp(2rem,4.5vw,3rem);font-weight:700;letter-spacing:-.03em;line-height:1.08;color:var(--text);margin:0}.pd-hero-desc{font-size:1rem;color:var(--text-muted);margin:0;max-width:440px;line-height:1.7}.pd-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.pd-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 20px;border-radius:8px;font-size:.85rem;font-weight:600;text-decoration:none;transition:all .15s;border:1px solid transparent;cursor:pointer}.pd-btn svg{width:14px;height:14px}.pd-btn:active{transform:scale(.97)}.pd-btn-primary{background:var(--accent);color:#fff!important;border-color:var(--accent);box-shadow:0 0 20px rgba(34,211,238,.25)}.pd-btn-primary:hover{background:var(--accent-bright);border-color:var(--accent-bright);box-shadow:0 0 30px rgba(34,211,238,.35)}.pd-btn-outline{background:transparent;color:var(--text)!important;border-color:var(--line)}.pd-btn-outline:hover{border-color:var(--accent);background:rgba(34,211,238,.06)}.pd-hero-image-wrap{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:16/10;border:1px solid var(--line);box-shadow:var(--shadow-card)}.pd-hero-image-wrap:hover{box-shadow:var(--shadow-card-hover)}.pd-hero-image{width:100%;height:100%;object-fit:cover;display:block}.pd-tech-strip{display:flex;gap:6px;flex-wrap:wrap;padding:20px 0;margin-top:8px;margin-bottom:48px}.pd-tech-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;font-size:.75rem;font-weight:500;color:var(--text-muted);background:transparent;border:1px solid var(--line);transition:all .2s ease;white-space:nowrap}.pd-tech-tag:hover{border-color:var(--line-strong);color:var(--text);background:rgba(34,211,238,.04)}.pd-tech-tag svg{width:12px;height:12px;flex-shrink:0}.pd-grid{display:grid;grid-template-columns:1fr 200px;gap:48px;align-items:start}.pd-toc{position:sticky;top:32px}.pd-toc-inner{display:flex;flex-direction:column;gap:1px;max-height:calc(100dvh - 64px);overflow-y:auto}.pd-toc-label{font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);padding:0 10px 8px}.pd-toc-link{display:block;padding:5px 10px;font-size:.8rem;color:var(--text-muted);text-decoration:none;border-left:2px solid transparent;transition:all .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pd-toc-link:hover{color:var(--text)}.pd-toc-link-active{color:var(--accent);border-left-color:var(--accent)}.pd-content{min-width:0;display:flex;flex-direction:column;gap:64px}.pd-section{scroll-margin-top:24px}.pd-section-title{font-size:1.1rem;font-weight:700;letter-spacing:-.01em;color:var(--text);margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}.pd-section-body{color:var(--text-muted);font-size:.92rem;line-height:1.8;max-width:62ch}.pd-section-body p{margin:0 0 14px}.pd-section-body p:last-child{margin-bottom:0}.pd-mermaid-wrap{border:1px solid var(--line);border-radius:8px;background:var(--bg-elev-2);padding:20px 16px;overflow-x:auto;box-shadow:var(--shadow-card)}.pd-mermaid{min-height:200px;display:flex;align-items:center;justify-content:center}.pd-mermaid svg{display:block;margin:0 auto}.pd-mermaid-skeleton{display:flex;flex-direction:column;gap:10px;width:100%;max-width:460px;padding:24px 8px}.pd-mermaid-skel-bar{height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(34,211,238,.04),rgba(34,211,238,.08),rgba(34,211,238,.04));background-size:200% 100%;animation:pd-shimmer 1.4s linear infinite}.pd-mermaid-skel-bar-short{width:55%}.pd-mermaid-error{margin:0;color:#ef4444;font-size:.85rem;text-align:center;padding:8px 0}@keyframes pd-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.pd-mermaid-skel-bar{animation:none}}.pd-carousel-wrap{margin:4px 0}.pd-carousel .depth-carousel__arrow{background:var(--bg-elev-2);border:1px solid var(--line);color:var(--text);border-radius:8px;transition:all .15s}.pd-carousel .depth-carousel__arrow:hover{background:var(--bg-elev);border-color:var(--accent)}.pd-carousel .depth-carousel__dot{background:rgba(34,211,238,.15)}.pd-carousel .depth-carousel__dot.is-active{background:var(--accent)}.pd-overview{position:relative;padding:32px 0 32px 24px}.pd-overview-accent{position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--accent),var(--accent-dark));border-radius:2px}.pd-overview-text{margin:0;font-size:1.15rem;line-height:1.85;color:var(--text-muted);max-width:58ch}.pd-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.pd-split-col{padding:20px;border-radius:8px;border:1px solid var(--line);background:var(--bg-elev)}.pd-split-problem{border-left:3px solid #eab308}.pd-split-solution{border-left:3px solid var(--accent)}.pd-split-label{display:flex;align-items:center;gap:8px;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:12px}.pd-split-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.pd-split-dot-warn{background:#eab308}.pd-split-dot-ok{background:var(--accent)}.pd-split-col p{margin:0;color:var(--text-muted);font-size:.88rem;line-height:1.75}.pd-bento{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.pd-bento-cell{position:relative;padding:18px 20px;border-radius:8px;border:1px solid var(--line);background:var(--bg-elev);transition:border-color .15s,background .15s,box-shadow .15s;overflow:hidden}.pd-bento-cell:hover{box-shadow:0 0 20px rgba(34,211,238,.06)}.pd-bento-cell--hero,.pd-bento-cell:hover{border-color:var(--line-strong);background:var(--bg-elev-2)}.pd-bento-cell--hero{grid-column:span 2}.pd-bento-idx{font-size:.65rem;font-weight:600;color:var(--accent);opacity:.6;display:block;margin-bottom:6px}.pd-bento-cell p{margin:0;color:var(--text-muted);font-size:.86rem;line-height:1.65}.pd-contribution{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.pd-contribution-row{display:flex;align-items:flex-start;gap:14px;padding:14px 18px;border-bottom:1px solid var(--line);transition:background .12s}.pd-contribution-row:last-child{border-bottom:none}.pd-contribution-row:hover{background:rgba(34,211,238,.03)}.pd-contribution-num{font-size:.65rem;font-weight:600;color:var(--accent);opacity:.5;flex-shrink:0;width:20px;padding-top:2px}.pd-contribution-row p{margin:0;color:var(--text-muted);font-size:.86rem;line-height:1.7}.pd-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.pd-result-card{padding:18px 20px;border-radius:8px;border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--bg-elev);transition:border-color .15s,box-shadow .15s}.pd-result-card:hover{border-color:var(--line-strong);border-left-color:var(--accent-bright);box-shadow:0 0 16px rgba(34,211,238,.08)}.pd-result-card p{margin:0;color:var(--text-muted);font-size:.86rem;line-height:1.65}.pd-challenges{display:flex;flex-direction:column;gap:8px}.pd-challenge{border:1px solid var(--line);border-radius:8px;overflow:hidden}.pd-challenge-a,.pd-challenge-q{padding:14px 18px;font-size:.86rem;line-height:1.65}.pd-challenge-q{background:var(--bg-elev);color:var(--text-muted);border-left:3px solid #eab308}.pd-challenge-a{color:var(--text-muted);border-left:3px solid var(--accent);border-top:1px solid var(--line)}.pd-learnings{display:flex;flex-direction:column;gap:6px}.pd-learning{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;border-radius:8px;transition:background .12s}.pd-learning:hover{background:rgba(34,211,238,.03)}.pd-learning-num{font-size:.65rem;font-weight:600;color:var(--accent);opacity:.5;flex-shrink:0;width:20px;padding-top:2px}.pd-learning p{margin:0;color:var(--text-muted);font-size:.86rem;line-height:1.7}.pd-future{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.pd-future-item{padding:14px 16px;border-radius:8px;border:1px solid var(--line);background:var(--bg-elev);transition:border-color .15s,box-shadow .15s}.pd-future-item:hover{border-color:var(--line-strong);box-shadow:0 0 12px rgba(34,211,238,.06)}.pd-future-item p{margin:0;color:var(--text-muted);font-size:.84rem;line-height:1.65}.pd-cta-row{display:flex;gap:10px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line)}.pd-btn-ghost{background:transparent;color:var(--text-muted)!important;border-color:transparent}.pd-btn-ghost:hover{color:var(--text)!important;background:var(--bg-elev-2)}.pd-footer{margin-top:72px;padding:20px 0;border-top:1px solid var(--line)}.pd-footer-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.pd-footer-brand{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted);text-decoration:none;font-size:.8rem;transition:color .15s}.pd-footer-brand:hover{color:var(--text)}.pd-footer-brand svg{width:14px;height:14px}.pd-footer-meta{font-size:.75rem;color:var(--text-muted)}.pd-footer-contact{color:var(--text-muted);text-decoration:none;font-size:.8rem;transition:color .15s}.pd-footer-contact:hover{color:var(--accent)}.pd-back-top{position:fixed;right:20px;bottom:24px;z-index:60;width:38px;height:38px;border-radius:8px;border:1px solid var(--line);background:var(--bg-elev-2);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;text-decoration:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pd-back-top:hover{color:var(--accent);border-color:var(--line-strong);box-shadow:0 0 16px rgba(34,211,238,.15)}.pd-back-top svg{width:16px;height:16px}@media (max-width:960px){.pd-grid{grid-template-columns:1fr;gap:32px}.pd-toc{position:static;order:-1}.pd-toc-inner{max-height:none;flex-direction:row;flex-wrap:wrap;gap:4px}.pd-toc-label{width:100%;padding-bottom:2px}.pd-toc-link{border-left:none;padding:4px 10px;border:1px solid var(--line);border-radius:8px;font-size:.75rem}.pd-toc-link-active{background:var(--accent);border-color:var(--accent);color:#fff}}@media (max-width:768px){.project-detail{padding:0 16px 60px}.pd-hero{grid-template-columns:1fr;gap:20px;min-height:auto}.pd-hero-text{order:1}.pd-hero-image-wrap{order:0;aspect-ratio:16/9}.pd-hero-title{font-size:1.8rem}.pd-bento,.pd-split{grid-template-columns:1fr}.pd-bento-cell--hero{grid-column:span 1}.pd-future,.pd-results{grid-template-columns:1fr}.pd-cta-row{flex-direction:column}.pd-cta-row .pd-btn{justify-content:center;width:100%}}@media (max-width:480px){.pd-hero-actions{flex-direction:column}.pd-btn{justify-content:center;width:100%}.pd-overview-text{font-size:1rem}}.depth-carousel{position:relative;width:100%;height:100%;min-height:320px;display:flex;align-items:center;justify-content:center;perspective:var(--dc-perspective,1400px);perspective-origin:50% 50%;touch-action:pan-y;outline:none;user-select:none;-webkit-user-select:none;cursor:grab}.depth-carousel:active{cursor:grabbing}.depth-carousel:focus-visible{outline:2px solid rgba(255,255,255,.5);outline-offset:4px;border-radius:12px}.depth-carousel__stage{position:absolute;inset:0;transform-style:preserve-3d}.depth-carousel__card{position:absolute;top:50%;left:50%;transform-origin:center center;overflow:hidden;background:#060818;box-shadow:0 40px 80px -20px rgba(0,0,0,.7),0 12px 30px -10px rgba(0,0,0,.5);will-change:transform,opacity,filter;cursor:pointer;transform:translate(-50%,-50%);border:1px solid rgba(255,255,255,.08)}.depth-carousel__img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;-webkit-user-drag:none;transition:transform .3s ease}.depth-carousel__card:hover .depth-carousel__img{transform:scale(1.05)}.depth-carousel__tint{position:absolute;inset:0;opacity:0;pointer-events:none;mix-blend-mode:multiply}.depth-carousel__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3000;width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(18,20,26,.55);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease}.depth-carousel__arrow:hover{background:rgba(28,31,40,.85);border-color:rgba(255,255,255,.4)}.depth-carousel__arrow:active{transform:translateY(-50%) scale(.94)}.depth-carousel__arrow--prev{left:16px}.depth-carousel__arrow--next{right:16px}.depth-carousel__dots{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:3000;display:flex;gap:8px;padding:8px 12px;border-radius:999px;background:rgba(14,16,22,.4);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.depth-carousel__dot{width:7px;height:7px;padding:0;border:none;border-radius:999px;background:rgba(255,255,255,.32);cursor:pointer;transition:width .25s ease,background .25s ease}.depth-carousel__dot.is-active{width:20px;background:#fff}@media (prefers-reduced-motion:reduce){.depth-carousel__card{will-change:auto}.depth-carousel__arrow,.depth-carousel__dot{transition:none}}