.calendar-timeline-container{background:var(--card-bg);padding:var(--spacing-md);border-radius:2px;max-width:100vw;box-shadow:0 1px 3px #0000001f,0 4px 8px #00000014}.calendar-timeline-scroll{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;scroll-behavior:smooth;scroll-snap-type:x proximity;will-change:scroll-position;overflow:auto hidden}.calendar-timeline-scroll::-webkit-scrollbar{display:none}.calendar-timeline-scroll.dragging{cursor:grabbing;scroll-behavior:auto}.calendar-timeline-scroll.dragging *{pointer-events:none;-webkit-user-select:none;user-select:none}.calendar-timeline-days{min-width:max-content;padding-bottom:var(--spacing-sm);align-items:flex-end;gap:2px;display:flex}.calendar-timeline-day-wrapper{align-items:center;gap:var(--spacing-xs);flex-direction:column;display:flex}.calendar-timeline-month-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;background:var(--card-bg-subtle);white-space:nowrap;transition:var(--transition-fast);border-radius:2px;padding:2px 6px;font-size:10px;font-weight:600}.calendar-timeline-day{width:24px;height:24px;transition:var(--transition-fast);cursor:default;background:var(--card-bg-subtle);border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.calendar-timeline-day-number{color:var(--text-secondary);font-size:9px;font-weight:500;line-height:1}.calendar-timeline-day-today{background:#0000001a;border-radius:50%;position:relative}.calendar-timeline-day-today .calendar-timeline-day-number{color:var(--text-primary);font-weight:600}.calendar-timeline-day-with-image{cursor:pointer;width:40px;height:40px;transition:var(--transition-normal);background:#fff;border:1px solid #00000014}.calendar-timeline-day-with-image:hover{z-index:100;border-color:#0000001f;transform:scale(1.1)translateY(-2px);box-shadow:0 2px 4px #0000001f,0 4px 8px #00000014}.calendar-timeline-day-image-wrapper{width:100%;height:100%;position:relative;overflow:hidden}.calendar-timeline-day-image{object-fit:cover;width:100%;height:100%;transition:var(--transition-fast);display:block}.calendar-timeline-day-with-image:hover .calendar-timeline-day-image{transform:scale(1.1)}.calendar-timeline-day-number-overlay{color:#fff;-webkit-backdrop-filter:blur(4px);background:#000000b3;border-radius:2px;padding:1px 3px;font-size:7px;font-weight:700;line-height:1.2;position:absolute;top:1px;left:1px}@media only screen and (max-width:768px){.calendar-timeline-container{padding:var(--spacing-md)}.calendar-timeline-day{width:22px;height:22px}.calendar-timeline-day-number{font-size:8px}.calendar-timeline-day-with-image{width:36px;height:36px}.calendar-timeline-day-with-image:hover{width:44px;height:44px}.calendar-timeline-month-label{font-size:9px}}@media only screen and (max-width:576px){.calendar-timeline-container{padding:var(--spacing-sm)}.calendar-timeline-days{gap:2px}.calendar-timeline-day{width:20px;height:20px}.calendar-timeline-day-number{font-size:8px}.calendar-timeline-day-with-image{width:32px;height:32px}.calendar-timeline-day-with-image:hover{width:42px;height:42px}.calendar-timeline-month-label{font-size:9px}.calendar-timeline-day-number-overlay{font-size:8px}}.calendar-image-preview-container{-webkit-backdrop-filter:blur(6px);z-index:10000;width:100vw;height:100vh;padding:var(--spacing-xl);cursor:pointer;background:#f9f9f9d9;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;top:0;left:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.calendar-image-preview-card{cursor:default;background:#fff;border-radius:2px;max-width:420px;padding:18px 18px 70px;transition:transform .3s;animation:.3s cubic-bezier(.34,1.56,.64,1) slideUp;position:relative;transform:rotate(-1deg);box-shadow:0 2px 4px #0000001f,0 8px 16px #0000001a,0 16px 24px #00000014}.calendar-image-preview-card:hover{transform:rotate(0)}.calendar-image-preview-date{text-align:center;font-size:var(--font-sm);color:#666;background:0 0;padding:14px;font-family:Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;position:absolute;bottom:18px;left:18px;right:18px}.calendar-image-preview-img{object-fit:cover;width:100%;height:auto;max-height:480px;display:block;box-shadow:0 1px 2px #00000014}@media only screen and (max-width:576px){.calendar-image-preview-container{padding:var(--spacing-md)}.calendar-image-preview-card{max-width:90%;padding:12px 12px 50px}.calendar-image-preview-date{padding:8px;font-size:11px;bottom:12px;left:12px;right:12px}.calendar-image-preview-img{max-height:320px}}
:root{--portfolio-bg:#f9f9f9;--card-bg:white;--card-bg-subtle:#01010105;--text-primary:black;--text-secondary:#b9b9b9;--link-hover-bg:#d9d9d9;--hoverable-hover-bg:#e9e9e9;--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}.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);flex-direction:row;justify-content:space-between;align-items:center;display:flex}.window-controls{gap:6px;margin-right:4px;display:flex}.window-control-btn{cursor:pointer;width:10px;height:10px;transition:var(--transition-fast);border:none;border-radius:50%;padding:0;position:relative}.window-control-btn:hover{opacity:.8}.window-control-close{background-color:#ff5f57}.window-control-minimize{background-color:#febc2e}.window-control-maximize{background-color:#28c840}.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);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;display:block}.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)}.desktop-icon{cursor:pointer;z-index:100;-webkit-user-select:none;user-select:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:30px;left:30px}.desktop-icon-image{justify-content:center;align-items:center;width:80px;height:80px;display:flex}.guestbook-icon-emoji{-webkit-user-select:none;user-select:none;font-size:48px;line-height:1}.desktop-icon-label{color:var(--text-primary);font-size:12px;font-weight:500}.minimize-animation{animation:.5s ease-out forwards minimize}@keyframes minimize{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.1)}}@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:600}.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:600;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{font-size:11px}.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 (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:500}.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);margin:0;font-size:15px;font-weight:500}.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}}
.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}
