:root{--color-bg: #FAFAFA;--color-surface: #EEEADF;--color-accent: #4B5F9C;--color-text: #222222;--color-muted: #888888;--color-border: #E0DBCF;--font-heading: "Bebas Neue", sans-serif;--font-body: "Source Serif 4", serif;--nav-height: 60px;--ease-out: cubic-bezier(.16, 1, .3, 1);--window-shadow: 0 4px 6px rgba(0,0,0,.04), 0 12px 40px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.06)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow:hidden;height:100vh}a{text-decoration:none;color:inherit}ul{list-style:none}img{display:block;max-width:100%}button{font-family:inherit;cursor:pointer;border:none;background:none}.nav{position:fixed;top:0;left:0;right:0;z-index:200;height:var(--nav-height);display:flex;align-items:center;justify-content:space-between;padding:0 36px}.nav-logo{font-family:var(--font-heading);font-size:1.5rem;letter-spacing:.08em;color:var(--color-accent);transition:opacity .2s ease}.nav-logo:hover{opacity:.65}.nav-actions{display:flex;gap:8px;align-items:center}.nav-icon-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:8px;color:var(--color-text);transition:background .2s ease,color .2s ease}.nav-icon-btn:hover{background:var(--color-surface);color:var(--color-accent)}.desktop{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.hero-textwall{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;z-index:0;font-family:var(--font-heading);font-size:clamp(64px,8vw,104px);line-height:.93;letter-spacing:.04em;color:var(--color-accent);opacity:.07;word-break:break-all;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}.desktop-scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-top:var(--nav-height);gap:12px;transition:opacity .4s ease}.desktop[data-state=projects] .desktop-scene,.desktop[data-state=project-detail] .desktop-scene{opacity:0;pointer-events:none}.desktop[data-state=about] .desktop-scene{opacity:.25;pointer-events:none}.desktop-portrait-wrap{position:relative}.desktop-portrait{width:clamp(200px,26vw,340px);height:auto;filter:drop-shadow(0 20px 60px rgba(75,95,156,.22))}.desktop-portrait-placeholder{display:none;width:260px;height:260px;border-radius:50%;background:var(--color-surface);border:2px dashed var(--color-border);align-items:center;justify-content:center;font-size:.75rem;color:var(--color-muted)}.desktop-tagline{font-family:var(--font-body);font-size:clamp(.85rem,1.4vw,1.1rem);font-style:italic;color:var(--color-muted)}.desktop-folders{position:absolute;top:calc(var(--nav-height) + 20px);right:16%;display:flex;flex-direction:column;align-items:center;gap:8px;transition:opacity .4s ease}.folder{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border-radius:10px;transition:background .2s ease;cursor:pointer}.folder:hover{background:#4b5f9c12}.folder:hover .folder-icon{transform:scale(1.06)}.folder:hover .folder-label{background:var(--color-accent);color:#fff}.folder-icon{position:relative;width:72px;height:56px;border-radius:3px 10px 10px;transition:transform .2s var(--ease-out),box-shadow .2s ease;box-shadow:0 3px 10px #0000001f;animation:folder-pulse 2.8s ease-in-out infinite}.folder:nth-child(2) .folder-icon{animation-delay:.5s}@keyframes folder-pulse{0%,to{box-shadow:0 3px 10px #0000001f}50%{box-shadow:0 3px 10px #0000001f,0 0 0 5px #4b5f9c21}}.folder:hover .folder-icon{animation:none}.folder-icon:before{content:"";position:absolute;top:-11px;left:0;width:28px;height:13px;border-radius:4px 4px 0 0}.folder-icon--warm{background:linear-gradient(160deg,#e8d5b0,#d4b87a)}.folder-icon--warm:before{background:#e8d5b0}.folder-icon--blue{background:linear-gradient(160deg,#a8b8dc,#7a90c8)}.folder-icon--blue:before{background:#a8b8dc}.folder-label{font-family:var(--font-body);font-size:.8rem;letter-spacing:.01em;color:var(--color-text);padding:2px 7px;border-radius:4px;transition:background .2s ease,color .2s ease}.folders-hint{display:flex;flex-direction:row;align-items:center;gap:4px;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);white-space:nowrap;opacity:0;animation:hint-appear .5s ease 1.4s forwards;pointer-events:none;transition:opacity .35s ease}@keyframes hint-appear{to{opacity:1}}.desktop-folders.used .folders-hint{opacity:0}.hint-text{font-family:var(--font-body);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-muted)}.hint-chevron{color:var(--color-accent);font-size:.75rem;animation:hint-bob 1.3s ease-in-out infinite;animation-delay:1.4s}@keyframes hint-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.os-window{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.96);z-index:150;width:min(800px,92vw);max-height:82vh;display:flex;flex-direction:column;background:#fafaf8eb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:12px;box-shadow:var(--window-shadow);opacity:0;pointer-events:none;transition:opacity .3s ease,transform .35s var(--ease-out),width .32s var(--ease-out),height .32s var(--ease-out),max-height .32s var(--ease-out),top .32s var(--ease-out),left .32s var(--ease-out),border-radius .25s ease;overflow:hidden}.os-window--wide{width:min(940px,92vw);max-height:86vh}.desktop[data-state=about] #about-window,.desktop[data-state=project-detail] #detail-window{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}.desktop[data-state=about] #about-window.fullscreen{top:var(--nav-height);left:0;width:100vw;max-width:100vw;height:calc(100vh - var(--nav-height));max-height:calc(100vh - var(--nav-height));border-radius:0;transform:none}.os-window.dragging{transition:none}.os-titlebar{display:flex;align-items:center;gap:12px;padding:11px 16px;background:#faf8f485;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(0,0,0,.07);cursor:move;-webkit-user-select:none;user-select:none;flex-shrink:0}.traffic-lights{display:flex;gap:6px;flex-shrink:0}.tl-dot{width:13px;height:13px;border-radius:50%;cursor:pointer;border:none;transition:opacity .15s ease;position:relative}.tl-dot[disabled]{cursor:default;opacity:.6}.tl-red{background:#ff5f57}.tl-yellow{background:#febc2e}.tl-green{background:#28c840}.tl-red:not([disabled]):hover:after{content:"×";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#00000080;line-height:1}.os-wintitle{font-family:var(--font-body);font-size:.82rem;color:var(--color-muted);letter-spacing:.01em;flex:1;text-align:center;padding-right:60px}.os-body{overflow-y:auto;padding:28px 32px;flex:1}.os-body::-webkit-scrollbar{width:6px}.os-body::-webkit-scrollbar-track{background:transparent}.os-body::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.about-name{font-family:var(--font-heading);font-size:2.4rem;letter-spacing:.05em;color:var(--color-accent);margin-bottom:20px}.about-text p{font-family:var(--font-body);font-size:1.05rem;line-height:1.8;color:var(--color-text);margin-bottom:16px}.about-text p:last-child{margin-bottom:0}.about-text strong{font-weight:600;color:var(--color-accent)}.about-img{display:block;width:100%;max-width:260px;height:auto;border-radius:8px;border:1px solid var(--color-border);margin:6px 0 4px;object-fit:cover}.about-img-caption{display:block;font-family:var(--font-body);font-size:.78rem;color:var(--color-text-muted, #888);margin-bottom:20px}.about-img-caption a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.about-img-caption a:hover{opacity:.72}.about-link{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.about-link:hover{opacity:.75}#about-window.fullscreen .os-body{padding:36px 12%}#about-window.fullscreen .about-img{max-width:340px;margin-left:auto;margin-right:auto}#about-window.fullscreen .about-img-caption{text-align:center}.desktop[data-state=project-detail] #detail-window.fullscreen{top:var(--nav-height);left:0;width:100vw;max-width:100vw;height:calc(100vh - var(--nav-height));max-height:calc(100vh - var(--nav-height));border-radius:0;transform:none}.os-body--detail{padding:0;display:flex;flex-direction:column;overflow-y:auto}.detail-content{padding:28px 32px;flex:1}.detail-content--with-image{display:flex;gap:28px;align-items:flex-start}.detail-text-col{flex:1;min-width:0}.detail-image-col{flex-shrink:0;width:200px;position:sticky;top:0}.detail-image{width:100%;height:auto;border-radius:10px;border:1px solid var(--color-border);box-shadow:0 4px 20px #00000014;display:block}.detail-tag{font-family:var(--font-body);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin-bottom:8px}.detail-title{font-family:var(--font-heading);font-size:clamp(1.8rem,3.5vw,2.6rem);letter-spacing:.04em;color:var(--color-text);margin-bottom:20px;line-height:1}.detail-para{font-family:var(--font-body);font-size:.9rem;line-height:1.75;color:var(--color-text);margin-bottom:14px}.detail-section-title{font-family:var(--font-heading);font-size:1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent);margin:28px 0 10px}.detail-section-title:first-child{margin-top:0}.detail-list{font-family:var(--font-body);font-size:.9rem;line-height:1.75;color:var(--color-text);padding-left:18px;margin:0 0 14px}.detail-list li{margin-bottom:12px}.detail-list li:last-child{margin-bottom:0}.detail-link{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-family:var(--font-body);font-size:.88rem;letter-spacing:.04em;color:#fff;background:var(--color-accent);padding:10px 22px;border-radius:6px;transition:opacity .2s ease,transform .2s ease}.detail-link:hover{opacity:.85;transform:translateY(-1px)}.detail-wip{display:inline-block;margin-top:8px;font-family:var(--font-body);font-size:.82rem;font-style:italic;color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-border);padding:8px 16px;border-radius:6px}.carousel-scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .4s ease}.desktop[data-state=projects] .carousel-scene{opacity:1;pointer-events:auto}.carousel-track{display:flex;align-items:center;justify-content:center;gap:24px;padding:0 60px}.carousel-card{--scale: 1;--opacity: 1;flex-shrink:0;width:260px;cursor:pointer;transform:scale(var(--scale));opacity:var(--opacity);transition:transform .4s var(--ease-out),opacity .4s ease,box-shadow .3s ease;border-radius:14px;overflow:hidden;background:var(--color-surface);box-shadow:0 8px 32px #0000001a}.carousel-card--active{z-index:10;box-shadow:0 20px 60px #4b5f9c42}.cc-img{width:100%;height:180px}.cc-info{padding:18px 20px 22px}.cc-tag{font-family:var(--font-body);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent);margin-bottom:6px}.cc-name{font-family:var(--font-heading);font-size:1.5rem;letter-spacing:.04em;color:var(--color-text);margin-bottom:6px}.cc-desc{font-family:var(--font-body);font-size:.78rem;color:var(--color-muted);font-style:italic;line-height:1.45}.carousel-card--soon{cursor:default;filter:grayscale(.3)}.carousel-controls{position:absolute;bottom:80px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;z-index:5}.carousel-arrow{width:28px;height:28px;border-radius:50%;border:1.5px solid rgba(75,95,156,.35);background:#4b5f9c14;color:var(--color-accent);font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease,opacity .2s ease;flex-shrink:0}.carousel-arrow:hover:not([disabled]){background:#4b5f9c2e}.carousel-arrow[disabled]{opacity:.2;cursor:default}.carousel-dots{display:flex;align-items:center;gap:7px}.carousel-dot{width:7px;height:7px;border-radius:50%;border:none;padding:0;background:#4b5f9c40;cursor:pointer;transition:background .25s ease,transform .25s ease,width .25s ease}.carousel-dot--active{background:var(--color-accent);transform:scale(1.35)}.carousel-dot:hover:not(.carousel-dot--active){background:#4b5f9c80}.scene-back-btn{position:fixed;bottom:32px;left:50%;transform:translate(-50%);font-family:var(--font-body);font-size:.8rem;letter-spacing:.08em;color:var(--color-muted);padding:8px 20px;border-radius:100px;background:#eeeadfb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--color-border);cursor:pointer;transition:color .2s ease,border-color .2s ease,background .2s ease}.scene-back-btn:hover{color:var(--color-accent);border-color:var(--color-accent);background:#eeeadff2}.portrait-presenter{position:fixed;bottom:0;left:48px;z-index:140;width:clamp(140px,16vw,200px);transform:translateY(30px);opacity:0;pointer-events:none;transition:transform .55s var(--ease-out),opacity .45s ease;transition-delay:.15s}.desktop[data-state=project-detail] .portrait-presenter{transform:translateY(0);opacity:1}.presenter-img{width:100%;height:auto;filter:drop-shadow(0 -8px 24px rgba(75,95,156,.15))}@media (max-width: 640px){.desktop[data-state=about] #about-window,.desktop[data-state=project-detail] #detail-window{top:var(--nav-height);left:0;width:100vw;max-width:100vw;height:calc(100vh - var(--nav-height));height:calc(100dvh - var(--nav-height));max-height:calc(100vh - var(--nav-height));max-height:calc(100dvh - var(--nav-height));border-radius:0;transform:none}.os-body{padding:20px;padding-bottom:max(20px,env(safe-area-inset-bottom))}#about-window.fullscreen .os-body{padding:20px}#maximize-about,#maximize-detail{display:none}.desktop-folders{position:relative;flex-direction:row;top:unset;right:unset}.carousel-track{justify-content:flex-start;gap:20px;padding:0 20px;width:100%;transition:transform .35s cubic-bezier(.16,1,.3,1)}.carousel-card{flex-shrink:0;width:78vw;max-width:300px;transform:scale(1)!important;opacity:1!important}.detail-content--with-image{flex-direction:column;align-items:center}.detail-image-col{order:-1;width:140px;position:static;margin-bottom:20px}.detail-text-col{order:1}.portrait-presenter{display:none}}
