.dock-container{z-index:10000;pointer-events:none;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.dock{-webkit-backdrop-filter:blur(20px);pointer-events:auto;transition:all var(--transition-normal);background:#fffc;border:1px solid #0000001a;border-radius:12px;align-items:center;gap:6px;padding:6px 10px;display:flex;box-shadow:0 4px 12px #0000001a,0 8px 32px #00000014}:root[data-theme=dark] .dock{background:#282828cc;border-color:#ffffff26;box-shadow:0 4px 12px #0000004d,0 8px 32px #0003}.dock:hover{transform:scale(1.02)}.dock-item{cursor:pointer;width:32px;height:32px;color:var(--text-secondary);transition:all var(--transition-fast);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex;position:relative}.dock-item:hover{color:var(--text-primary);background:#0000000d;transform:translateY(-3px)scale(1.08)}:root[data-theme=dark] .dock-item:hover{background:#ffffff1a}.dock-item.active{color:var(--text-primary);background:#00000014}:root[data-theme=dark] .dock-item.active{background:#ffffff26}.dock-item.active:after{content:"";background:var(--text-primary);border-radius:50%;width:4px;height:4px;position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}.dock-item svg{display:block}.dock-divider{background:#0000001a;width:1px;height:20px;margin:0 4px}:root[data-theme=dark] .dock-divider{background:#ffffff26}.dock-minimized-app{position:relative}.dock-app-icon{object-fit:cover;border-radius:4px;width:20px;height:20px;display:block}.dock-minimized-indicator{background:var(--text-primary);opacity:.7;border-radius:50%;width:4px;height:4px;position:absolute;bottom:-2px;left:50%;transform:translate(-50%)}@media only screen and (max-width:768px){.dock-container{bottom:16px}.dock{border-radius:14px;gap:6px;padding:6px 10px}.dock-item{width:36px;height:36px}.dock-item svg{width:18px;height:18px}.dock:hover{transform:scale(1.02)}.dock-item:hover{transform:translateY(-2px)scale(1.05)}}@media only screen and (max-width:576px){.dock-container{bottom:12px}.dock{border-radius:12px;gap:4px;padding:4px 8px}.dock-item{width:32px;height:32px}.dock-item svg{width:16px;height:16px}.dock-divider{height:20px}}
.tooltip{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:10000;white-space:nowrap;transform-origin:0;background:#1c1c1ef2;border-radius:8px;padding:6px 12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:12px;font-weight:500;position:fixed;box-shadow:0 4px 12px #00000040,0 0 0 1px #ffffff1a}
*,:before,:after{transition:background-color .3s,color .3s,border-color .3s,box-shadow .3s}.card:active,.window-control-btn,button:active{transition:none!important}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--portfolio-bg:#f9f9f9;--card-bg:white;--card-bg-subtle:#01010105;--text-primary:black;--text-secondary:#b9b9b9;--link-hover-bg:#d9d9d9;--hoverable-hover-bg:#e9e9e9;--border-dashed:#0000001a;--font-heading:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","Malgun Gothic",sans-serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","Malgun Gothic",sans-serif;--font-mono:"JetBrains Mono","SF Mono",Monaco,Consolas,monospace;--spacing-xs:2px;--spacing-sm:4px;--spacing-md:8px;--spacing-lg:16px;--spacing-xl:24px;--radius-sm:6px;--radius-md:8px;--font-xs:12px;--font-sm:13px;--transition-fast:.1s ease;--transition-normal:.2s ease;--shadow-card:#0e3f7e0f 0px 0px 0px 1px,#2a334608 0px 1px 1px -.5px,#2a33460a 0px 2px 2px -1px,#2a33460a 0px 3px 3px -1.5px,#2a334608 0px 5px 5px -2.5px,#2a334608 0px 10px 10px -5px,#2a334608 0px 24px 24px -8px;--shadow-active:#091e4240 0px 4px 8px -2px,#091e4214 0px 0px 0px 1px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--portfolio-bg:#1a1a1a;--card-bg:#2a2a2a;--card-bg-subtle:#ffffff0d;--text-primary:#e0e0e0;--text-secondary:#6b6b6b;--link-hover-bg:#3a3a3a;--hoverable-hover-bg:#2e2e2e;--border-dashed:#ffffff26}.portfolio-container{background-color:var(--portfolio-bg);width:100vw;height:100vh;position:relative;overflow:hidden}.portfolio-header{margin:var(--spacing-lg);justify-content:space-between;gap:var(--spacing-xl);font-size:var(--font-sm);flex-flow:wrap;animation:1s forwards header-animation;display:flex}.header-card{padding:var(--spacing-sm);padding-top:var(--spacing-xs);background-color:var(--card-bg);box-shadow:var(--shadow-card);will-change:transform,z-index;transition:var(--transition-normal);display:inline-block}@keyframes header-animation{0%{opacity:0}to{opacity:1}}.card-container{cursor:grab;position:relative}.card-container:active{cursor:grabbing}.card{padding:var(--spacing-sm);padding-top:var(--spacing-xs);background-color:var(--card-bg-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card);will-change:transform,filter,z-index;transition:var(--transition-normal);display:inline-block;overflow:hidden}.card:hover{transform:translateY(-4px)}.card:active{box-shadow:var(--shadow-active);-webkit-backdrop-filter:blur(2px);scale:1.01}.card-header{margin:var(--spacing-sm);margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;gap:var(--spacing-md);min-height:20px;font-family:var(--font-heading);flex-direction:row;display:flex}.status-indicator{text-transform:uppercase;letter-spacing:.6px;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;font-size:11px;font-weight:500;font-family:var(--font-heading);background-color:#0000000f;border:1px solid #00000014;border-radius:6px;align-items:center;gap:5px;padding:4px 8px;display:flex}.status-indicator:hover{background-color:#00000014;transform:translateY(-1px)}:root[data-theme=dark] .status-indicator{background-color:#ffffff14;border-color:#ffffff1f}:root[data-theme=dark] .status-indicator:hover{background-color:#ffffff1f}.status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.status-dot.live{background-color:#28c840;animation:2s ease-in-out infinite pulse-live;box-shadow:0 0 #28c84066}.status-dot.building{background-color:#ff9500;animation:1.5s ease-in-out infinite pulse-building;box-shadow:0 0 #ff950066}.status-dot.archived{background-color:#8e8e93}:root[data-theme=dark] .status-dot.archived{background-color:#636366}.status-text{color:var(--text-primary);opacity:.9;font-size:10px;line-height:1}@keyframes pulse-live{0%,to{opacity:1;box-shadow:0 0 #28c84099}50%{opacity:.85;box-shadow:0 0 0 5px #28c84000}}@keyframes pulse-building{0%,to{opacity:1;box-shadow:0 0 #ff950099}50%{opacity:.85;box-shadow:0 0 0 5px #ff950000}}.window-controls{align-items:center;gap:7px;padding:2px;display:flex}.window-control-btn{cursor:pointer;width:11px;height:11px;transition:all var(--transition-fast);border:none;border-radius:50%;padding:0;position:relative;box-shadow:inset 0 0 0 .5px #0000001a}.window-control-btn:hover{opacity:.85;transform:scale(1.05);box-shadow:inset 0 0 0 .5px #00000026,0 1px 3px #00000026}.window-control-btn:active{opacity:.7;transform:scale(.95)}.window-control-close{background:linear-gradient(135deg,#ff6159 0%,#ff4d45 100%)}.window-control-minimize{background:linear-gradient(135deg,#ffbd2e 0%,orange 100%)}.window-control-maximize{background:linear-gradient(135deg,#27c93f 0%,#1fb334 100%)}.card-link{gap:var(--spacing-md);transition:var(--transition-normal);cursor:pointer;flex-direction:row;align-items:baseline;display:flex}.card-link:hover{opacity:.5;gap:10px}.card-name{color:var(--text-primary);width:fit-content;font-size:var(--font-xs);font-family:var(--font-heading);letter-spacing:-.02em;font-weight:400;text-decoration:none}.growth-badge{transition:var(--transition-fast);margin-left:4px;font-size:14px;line-height:1;display:inline-block}.growth-badge:hover{transform:scale(1.2)}.card-footer{padding:var(--spacing-sm)var(--spacing-md);padding-top:var(--spacing-md);gap:var(--spacing-sm);background-color:#f9f9f980;border-top:1px solid #0000000d;flex-direction:column;font-size:11px;display:flex}.card-tags{flex-wrap:wrap;gap:4px;display:flex}.card-tag{color:var(--text-primary);transition:var(--transition-fast);background-color:#0000000d;border-radius:3px;padding:2px 6px;font-size:10px;display:inline-block}.card-tag:hover{background-color:#0000001a}.card-tag-more{background-color:#00000014;font-weight:500}.card-updated{color:var(--text-secondary);font-size:10px;font-style:italic}.link,.hoverable-work{transition:var(--transition-fast);color:inherit;text-decoration:none}.link:hover{background-color:var(--link-hover-bg);box-shadow:4px 0 0 var(--link-hover-bg),-4px 0 0 var(--link-hover-bg);color:var(--text-primary)}.hoverable-work{cursor:pointer;padding-inline:var(--spacing-sm);display:block}.hoverable-work:hover{background-color:var(--hoverable-hover-bg)}.about-link{transition:var(--transition-fast);color:inherit;gap:var(--spacing-md);flex-direction:row;align-items:baseline;width:fit-content;text-decoration:none;display:flex}.about-link:hover{opacity:.5;gap:10px}.works-index{gap:var(--spacing-xs);flex-direction:column;display:flex}.header-cards-wrapper{gap:var(--spacing-lg);flex-direction:row;display:flex}.header-card-name{gap:var(--spacing-sm);height:fit-content;padding-inline:var(--spacing-md);padding-block:var(--spacing-sm);flex-direction:column;display:flex;transform:rotate(-2deg)}.header-card-name a{color:inherit;text-decoration:none}.header-card-intro{padding-inline:var(--spacing-md);padding-block:var(--spacing-sm);max-width:258px;height:fit-content;transform:rotate(2deg)}.header-card-works{transform:rotate(-1deg)}.works-index-wrapper{padding-top:var(--spacing-xs);flex-direction:row;display:flex}.work-year{color:var(--text-secondary)}.card-year{color:var(--text-secondary);opacity:.8}.card-image{border-radius:var(--radius-sm);pointer-events:none;image-rendering:high-quality;image-rendering:-webkit-optimize-contrast;backface-visibility:hidden;display:block;transform:translateZ(0)}.iframe-overlay{cursor:pointer;z-index:10;width:100%;height:100%;transition:background-color var(--transition-fast);background:0 0;position:absolute;top:0;left:0}.iframe-overlay:hover{background-color:#00000005}:root[data-theme=dark] .iframe-overlay:hover{background-color:#ffffff08}.card-image-clickable{transition:transform var(--transition-normal),opacity var(--transition-fast);pointer-events:auto!important;cursor:pointer!important}.card-image-clickable:hover{opacity:.9;transform:scale(1.02)}@keyframes toss-0{0%{transform:translate(102vw,-104vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-0{animation:.8s cubic-bezier(.22,.61,.36,1) 20ms forwards toss-0;position:absolute;transform:translate(102vw,-104vh)rotate(0)}@keyframes toss-1{0%{transform:translate(-104vw,-106vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-1{animation:.8s cubic-bezier(.22,.61,.36,1) 40ms forwards toss-1;position:absolute;transform:translate(-104vw,-106vh)rotate(0)}@keyframes toss-2{0%{transform:translate(-120vw,-104vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-2{animation:.8s cubic-bezier(.22,.61,.36,1) 60ms forwards toss-2;position:absolute;transform:translate(-120vw,-104vh)rotate(0)}@keyframes toss-3{0%{transform:translate(124vw,104vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-3{animation:.8s cubic-bezier(.22,.61,.36,1) 80ms forwards toss-3;position:absolute;transform:translate(124vw,104vh)rotate(0)}@keyframes toss-4{0%{transform:translateY(-120vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-4{animation:.8s cubic-bezier(.22,.61,.36,1) .1s forwards toss-4;position:absolute;transform:translateY(-120vh)rotate(0)}@keyframes toss-5{0%{transform:translate(102vw,108vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-5{animation:.8s cubic-bezier(.22,.61,.36,1) .12s forwards toss-5;position:absolute;transform:translate(102vw,108vh)rotate(0)}@keyframes toss-6{0%{transform:translate(-110vw,110vh)rotate(0)}to{transform:translate(0,0)rotate(0)}}.card-6{animation:.8s cubic-bezier(.22,.61,.36,1) .14s forwards toss-6;position:absolute;transform:translate(-110vw,110vh)rotate(0)}.detail-card{z-index:10000;cursor:grab;width:90vw;max-width:380px;max-height:70vh;padding:var(--spacing-xl);gap:var(--spacing-lg);background:linear-gradient(135deg,#fef9e7 0%,#fcf3cf 100%);border-radius:2px;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000014,0 4px 12px #00000014,inset 0 0 0 1px #ffffff80}.detail-card:active{cursor:grabbing}.detail-card-sticky-top{opacity:.8;background:#fff6;border-radius:0 0 4px 4px;width:60px;height:20px;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 2px 4px #0000001a,inset 0 -1px 2px #0000000d}.detail-card-header-bar{justify-content:space-between;align-items:flex-start;gap:var(--spacing-lg);margin-bottom:var(--spacing-sm);display:flex}.detail-card-title-section{flex:1}.detail-card-title{color:#5a4a2f;margin:0 0 var(--spacing-sm)0;letter-spacing:-.01em;font-size:15px;font-weight:500;font-family:var(--font-heading)}.detail-card-meta{align-items:center;gap:var(--spacing-md);color:#8b7355;letter-spacing:.02em;font-size:11px;display:flex}.detail-card-separator{color:#c9b896}.detail-card-close-btn{cursor:pointer;color:#8b7355;transition:var(--transition-fast);opacity:.6;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:20px;line-height:1;display:flex}.detail-card-close-btn:hover{color:#5a4a2f;opacity:1}.detail-card-body{color:#3e3529;letter-spacing:.01em;font-size:13px;line-height:1.7}.detail-card-body p{margin:0 0 var(--spacing-md)0}.detail-card-body p:last-child{margin-bottom:0}.detail-card-footer{margin-top:var(--spacing-sm)}.detail-card-link{align-items:center;gap:var(--spacing-sm);color:#5a4a2f;font-size:var(--font-xs);transition:var(--transition-fast);background:#ffffff80;border:1px solid #5a4a2f26;border-radius:2px;padding:6px 12px;font-weight:500;text-decoration:none;display:inline-flex}.detail-card-link:hover{background:#fffc;gap:10px;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}@media only screen and (max-width:796px){.works-index-container{display:none!important}.header-cards-wrapper{gap:var(--spacing-md)}.header-card-intro{max-width:100%}}@media only screen and (max-width:576px){.portfolio-header{margin:var(--spacing-md);gap:var(--spacing-md)}.header-cards-wrapper{gap:var(--spacing-md);flex-direction:column}.header-card-name,.header-card-intro{max-width:100%;transform:rotate(0)!important}.card{scale:.8}.card:active{scale:.81}.card-header{gap:var(--spacing-sm);font-size:11px}.status-indicator{gap:3px;padding:3px 6px;font-size:9px}.status-dot{width:5px;height:5px}.status-text{font-size:9px}.window-controls{gap:5px}.window-control-btn{width:9px;height:9px}.detail-card{width:95vw;max-height:85vh}.filter-bar{padding:var(--spacing-sm)var(--spacing-md)}.filter-bar-content{align-items:stretch;gap:var(--spacing-md);flex-direction:column}.filter-search{max-width:100%}.filter-categories{-webkit-overflow-scrolling:touch;padding-bottom:var(--spacing-sm);justify-content:flex-start;overflow:auto hidden}.filter-category-btn{white-space:nowrap;flex-shrink:0}.filter-results{text-align:center;margin-left:0}}.view-mode-toggle{box-shadow:var(--shadow-card);background-color:#fff;border:1px solid #0000001a;border-radius:4px;gap:4px;padding:2px;display:flex}.view-mode-btn{cursor:pointer;transition:var(--transition-fast);color:var(--text-secondary);background-color:#0000;border:none;border-radius:3px;justify-content:center;align-items:center;padding:6px 8px;display:flex}.view-mode-btn:hover{color:var(--text-primary);background-color:#0000000d}.view-mode-btn.active{background-color:var(--text-primary);color:#fff}.gallery-container{padding:var(--spacing-xl);min-height:100vh;padding-top:40px;padding-left:80px;position:relative}.gallery-card-wrapper{cursor:default;position:absolute}.gallery-card-wrapper .card{cursor:default;position:relative}.gallery-card-wrapper .card:hover{transform:translateY(-4px)}@media only screen and (min-width:1500px) and (min-height:850px){.card:hover{transform:translateY(-5px)}.card:active{scale:1.21}}@media only screen and (max-width:1199px) and (min-width:768px){.card{scale:.95}.card:hover{transform:translateY(-4px)}.card:active{scale:.96}}@media only screen and (max-width:1200px){.gallery-container{padding-left:40px}}@media only screen and (max-width:768px){.gallery-container{padding:var(--spacing-lg)}}@media only screen and (max-width:576px){.gallery-container{padding:var(--spacing-md)}.view-mode-toggle{order:-1}}.view-mode-controls{gap:8px;max-width:1400px;margin:0 auto;padding:20px 60px;display:flex}.view-mode-btn{font-size:var(--font-sm);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000001a;padding:8px 16px;font-weight:400}.view-mode-btn:hover{background:var(--hoverable-hover-bg);border-color:#0003}.view-mode-btn.active{background:var(--text-primary);color:#fff;border-color:var(--text-primary)}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:32px;max-width:1400px;margin:0 auto;padding:20px 60px 80px;display:grid}.gallery-item{border-radius:var(--radius-md);background:var(--card-bg);transition:transform var(--transition-normal),box-shadow var(--transition-normal);position:relative;overflow:hidden}.gallery-item:hover{box-shadow:var(--shadow-active);transform:translateY(-4px)}.gallery-image{object-fit:cover;aspect-ratio:4/3;width:100%;height:auto;display:block}.gallery-iframe-wrapper{aspect-ratio:4/3;width:100%;position:relative;overflow:hidden}.gallery-iframe{border:none;width:100%;height:100%}.gallery-component-wrapper{aspect-ratio:4/3;width:100%;position:relative;overflow:hidden}.gallery-item-info{border-top:1px solid #0000000f;justify-content:space-between;align-items:center;padding:16px;display:flex}.gallery-item-title{color:var(--text-primary);font-size:15px;font-weight:400;font-family:var(--font-heading);margin:0}.gallery-item-year{font-size:var(--font-sm);color:var(--text-secondary)}@media only screen and (max-width:1024px){.view-mode-controls{padding:20px 40px}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:24px;padding:20px 40px 60px}}@media only screen and (max-width:768px){.view-mode-controls{padding:16px 24px}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;padding:16px 24px 40px}}@media only screen and (max-width:576px){.view-mode-controls{padding:12px 16px}.gallery-grid{grid-template-columns:1fr;gap:16px;padding:12px 16px 24px}}
