@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #0a0a0a;--text: #e8e8e8;--text-dim: #999;--accent: #4a6741;--accent-light: #6a9a5c;--border: #2a2a2a;--border-accent: #3a5332;--font-mono: "IBM Plex Mono", "SFMono-Regular", "Menlo", "Monaco", "Consolas", monospace;--font-jp: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;--header-h: 80px;--content-h: calc(100dvh - var(--header-h));--scroll-h: calc(100svh - var(--header-h));--section-gap: clamp(6rem, 12dvh, 10rem)}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-jp);line-height:1.6;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loader{position:fixed;inset:0;z-index:999;display:flex;align-items:center;justify-content:center;background:var(--bg);transition:opacity .5s ease,visibility .5s ease}.loader.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.loader-text{font-family:var(--font-mono);font-size:1.1rem;color:var(--accent-light);letter-spacing:.05em}.loader-dots:after{content:"";animation:dots 1.2s steps(4,end) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}.header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:flex-end;align-items:center;padding:1.25rem clamp(1.5rem,4vw,3rem);background:#0a0a0acc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.header-nav{display:flex;gap:2rem}.header-nav a{font-family:var(--font-mono);color:var(--text-dim);text-decoration:none;font-size:.85rem;transition:color .3s}.header-nav a:hover{color:var(--accent-light)}.hero{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(1.5rem,4vw,3rem);padding-top:5rem;position:relative}.hero-inner{text-align:center}.hero-logo{margin-bottom:2rem}.hero-logo-img{max-width:clamp(240px,40vw,400px);height:auto;opacity:.75}.hero-logo-fallback{font-family:var(--font-jp);display:none;font-size:clamp(3.5rem,8vw,6rem);font-weight:600;letter-spacing:.08em;line-height:1.2}.hero-tagline{font-family:var(--font-mono);color:var(--text);font-size:clamp(.9rem,1.6vw,1.1rem);letter-spacing:.12em;margin-bottom:.75rem;opacity:.9}.hero-sub{font-family:var(--font-mono);color:var(--text-dim);font-size:15px;letter-spacing:.1em;margin-bottom:.5rem}.hero-sub:last-of-type{margin-bottom:1.5rem}.hero-sub a{color:var(--text-dim);text-decoration:none;transition:color .3s}.hero-sub a:hover{color:var(--accent-light)}.hero-sns{display:flex;justify-content:center;gap:1.5rem}.hero-sns a{color:var(--text-dim);transition:color .3s;display:flex;align-items:center;justify-content:center;width:28px;height:28px}.hero-sns a svg{width:100%;height:100%}.hero-sns a[aria-label=Instagram] svg{width:90%;height:90%}.hero-sns a[aria-label=X] svg{width:90%;height:90%}.hero-sns a:hover{color:var(--accent-light)}.sns-icon-mask{display:block;width:100%;height:100%;background-color:currentColor;-webkit-mask-image:var(--icon-url);mask-image:var(--icon-url);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.scroll-hint{font-family:var(--font-mono);position:absolute;bottom:2.5rem;display:flex;flex-direction:column;align-items:center;gap:.4rem;color:var(--text-dim);font-size:.7rem;letter-spacing:.15em;opacity:.5;animation:scroll-fade 2.5s ease-in-out infinite}@keyframes scroll-fade{0%,to{opacity:.3;transform:translateY(0)}50%{opacity:.6;transform:translateY(4px)}}.tech-stack{padding:48px 0;overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.marquee-wrapper{display:flex;flex-direction:column;gap:1.5rem}.marquee{overflow:hidden}.marquee-track{display:flex;width:max-content;gap:1rem;will-change:transform;transform:translateZ(0)}.marquee-content{display:flex;flex-shrink:0;gap:1rem}.marquee-content span{font-family:var(--font-mono);display:inline-block;padding:.5rem 1.5rem;font-size:clamp(.8rem,1.2vw,.95rem);color:var(--text-dim);border:1px solid var(--border-accent);border-radius:2px;white-space:nowrap;transition:color .3s,border-color .3s}.marquee-content span:before{content:"$ ";color:var(--accent)}.marquee-content span:hover{color:var(--text);border-color:var(--accent-light)}.tooltip{position:fixed;z-index:200;padding:.4rem .75rem;font-family:var(--font-jp);font-size:.78rem;color:var(--accent-light);background:#111;border:1px solid var(--border-accent);border-radius:2px;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease;white-space:nowrap;max-width:90vw}.tooltip:before{content:"# ";color:var(--text-dim)}.tooltip.is-visible{opacity:1;transform:translateY(0)}.dir-section{padding:var(--section-gap) clamp(1.5rem,4vw,4rem);display:flex;justify-content:center}.dir-section-inner{max-width:800px;width:100%}.cli-line{font-family:var(--font-mono);font-size:clamp(1.3rem,2.5vw,1.8rem);font-weight:400;margin-bottom:2rem;letter-spacing:.02em}.cli-line[data-toggle-all]{cursor:pointer;transition:color .2s}.cli-line[data-toggle-all]:hover .cli-path{text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--border-accent)}.cli-prompt{color:var(--accent-light)}.cli-cmd{color:var(--text)}.cli-path{color:var(--accent-light)}.cli-path a{color:var(--accent-light);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s}.cli-path a:hover{border-bottom-color:var(--accent-light)}.dir-tree{padding-left:.5rem}.dir-entry{margin-bottom:1rem}.dir-branch{color:var(--border-accent);user-select:none}.dir-pipe{flex-shrink:0;color:var(--border-accent);user-select:none;margin-right:.5ch}.dir-name{font-family:var(--font-mono);color:var(--accent-light);font-weight:500;cursor:default}.status-tag{font-family:var(--font-mono);font-size:.75em;color:var(--bg);background:var(--accent-light);padding:.1em .5em;border-radius:2px;margin-left:.75ch;font-weight:600;vertical-align:middle}.category-tag{font-family:var(--font-mono);font-size:.75em;color:var(--fg);background:transparent;border:1px solid var(--border);padding:.1em .5em;border-radius:2px;margin-left:0;font-weight:600;vertical-align:middle}.dir-entry>.category-tag{margin-left:1.5ch}.dir-entry[data-toggle]>.dir-name{cursor:pointer;transition:color .2s}.dir-entry[data-toggle]>.dir-name:hover{color:#7aad6e}.dir-entry[data-toggle]>.dir-name:before{content:"[+] ";color:var(--text-dim);font-weight:300;font-size:.8em}.dir-entry[data-toggle].is-open>.dir-name:before{content:"[-] ";color:var(--accent-light)}.dir-expand{overflow:hidden;max-height:0;opacity:0;transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .25s ease;padding-left:2.5ch}.dir-entry.is-open>.dir-expand{max-height:600px;opacity:1}.dir-file{font-family:var(--font-jp);display:flex;align-items:baseline;font-size:clamp(.78rem,1.1vw,.88rem);color:var(--text-dim);line-height:2;padding:.35rem 0}.file-label{font-family:var(--font-mono);flex-shrink:0;display:inline-block;width:9ch;text-align:right;color:var(--text-dim);opacity:.6;margin-right:.75ch}.file-value{flex:1;min-width:0;word-break:break-word}.file-more{font-family:var(--font-mono);color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--border-accent);font-size:clamp(.78rem,1.1vw,.88rem);transition:color .3s,text-decoration-color .3s;margin-left:.75ch}.file-more:hover{color:var(--text);text-decoration-color:var(--accent-light)}.dir-desc{color:var(--text);opacity:.8;line-height:2}.tag{font-family:var(--font-mono);display:inline-block;font-size:.7rem;color:var(--accent-light);border:1px solid var(--border-accent);padding:.15rem .5rem;border-radius:2px;margin:.15rem .25rem .15rem 0}.profile-logo{width:clamp(80px,12vw,120px);height:auto;opacity:.75;margin:.5rem 0 .25rem}.cli-reveal{opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease}.cli-reveal.is-visible{opacity:1;transform:translateY(0)}.hp-field{position:absolute;left:-9999px;top:-9999px;opacity:0;height:0;width:0;overflow:hidden;pointer-events:none}.contact-form{list-style:none}.contact-form input,.contact-form textarea,.contact-form select{font-family:var(--font-jp);font-size:.88rem;color:var(--text);background:transparent;border:none;border-bottom:1px solid var(--border-accent);padding:.5rem .75rem;margin-left:.75rem;outline:none;width:min(100%,400px);transition:border-color .3s}.contact-form select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236a9a5c' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2rem}.contact-form input::placeholder,.contact-form textarea::placeholder,.contact-form select:invalid{color:var(--text-dim);letter-spacing:.1em}.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{border-color:var(--accent-light)}.contact-form textarea{resize:vertical;min-height:80px;display:block;margin-top:.25rem}.dir-submit{font-family:var(--font-mono);font-size:inherit;background:none;border:1px solid var(--border-accent);color:var(--accent-light);font-weight:500;cursor:pointer;padding:.5rem 1.25rem;border-radius:2px;transition:color .3s,border-color .3s,background .3s}.dir-submit:hover{color:#7aad6e;border-color:var(--accent-light);background:#4a67411a}.status-ok{color:var(--accent-light)}.status-error{color:#c44}.cursor-blink{animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.work-detail{padding-top:calc(var(--section-gap) + 3rem)}.work-detail-url{margin-top:.75rem;font-family:var(--font-mono);font-size:clamp(.8rem,1.1vw,.9rem);display:flex;align-items:baseline;gap:.5em;flex-wrap:wrap}.work-detail-url a{color:var(--accent-light);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s}.work-detail-url a:hover{border-bottom-color:var(--accent-light)}.work-detail-thumbnails{margin:1.5rem 0}.work-detail-thumbnails img{max-width:100%;height:auto;border:1px solid var(--border);border-radius:4px}.work-detail-thumbnails img[src*=toban-app]{border:none;border-radius:0}.work-detail-body{margin:2rem 0;padding-left:.5rem;border-left:1px solid var(--border-accent)}.work-detail-body p{color:var(--text);opacity:.85;font-size:clamp(.85rem,1.2vw,.95rem);line-height:2;margin-bottom:1.25rem}.work-detail-body p:last-child{margin-bottom:0}.work-detail-body h2{color:var(--accent-light);font-family:var(--font-mono);font-size:clamp(.9rem,1.3vw,1.05rem);font-weight:600;margin:2rem 0 1rem}.work-detail-body h3{color:var(--text);font-family:var(--font-mono);font-size:clamp(.85rem,1.2vw,.95rem);font-weight:600;margin:1.5rem 0 .75rem}.work-detail-body table{width:100%;border-collapse:collapse;font-size:clamp(.75rem,1vw,.85rem);margin:1rem 0 1.5rem}.work-detail-body th,.work-detail-body td{border:1px solid var(--border);padding:.5rem .75rem;text-align:left;color:var(--text);opacity:.85}.work-detail-body th{background:#1a1a1a;font-family:var(--font-mono);font-weight:600;opacity:1;white-space:nowrap}.work-detail-body pre{background:#111;border:1px solid var(--border);border-radius:4px;padding:1rem;margin:1rem 0 1.5rem;overflow-x:auto}.work-detail-body code{font-family:var(--font-mono);font-size:clamp(.75rem,1vw,.85rem);color:var(--text);opacity:.85}.work-detail-body ul,.work-detail-body ol{margin:.75rem 0 1.25rem 1.25rem;color:var(--text);opacity:.85;font-size:clamp(.85rem,1.2vw,.95rem);line-height:2}.work-detail-body li{margin-bottom:.25rem}.work-back{margin-top:2rem}.card-wrapper{position:relative;width:100%;height:clamp(480px,70vh,680px);margin-bottom:2rem;overflow:hidden}.card-canvas{display:flex;align-items:center;justify-content:center;width:100%;height:100%;perspective:1000px;background:transparent}.card-tilt{width:clamp(300px,52vw,500px);aspect-ratio:1075 / 650;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform .26s ease-out}.card-tilt.is-dragging{transition:none;will-change:transform}.card-orientation{width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.card-orientation[data-orientation=portrait]{transform:rotate(90deg)}.card-orientation.is-ready{transition:transform .42s cubic-bezier(.22,1,.36,1)}.card-body{position:relative;width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transform-origin:center center}.card-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-style:flat;-webkit-transform-style:flat;width:clamp(300px,52vw,500px);aspect-ratio:1075 / 650;z-index:10;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.card-overlay[data-orientation=portrait]{transform:translate(-50%,-50%) rotate(90deg);transform-style:flat;-webkit-transform-style:flat}.card-overlay:focus-visible{outline:1px solid var(--accent-light);outline-offset:4px}.card-overlay.is-dragging{cursor:grabbing}.card-face{position:absolute;inset:0;border-radius:6px;overflow:hidden;border:1px solid var(--border-accent);box-shadow:0 8px 24px #00000059;opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s ease;pointer-events:none}.card-body[data-side=front] .card-front,.card-body[data-side=back] .card-back{opacity:1;visibility:visible}.card-body.is-switching{animation-duration:.56s;animation-timing-function:ease-in-out;animation-fill-mode:both}.card-body.is-switching-forward{animation-name:card-side-swap-forward}.card-body.is-switching-reverse{animation-name:card-side-swap-reverse}@keyframes card-side-swap-forward{0%{transform:rotateY(0) scale(1)}50%{transform:rotateY(-90deg) scale(.97)}50.1%{transform:rotateY(90deg) scale(.97)}to{transform:rotateY(0) scale(1)}}@keyframes card-side-swap-reverse{0%{transform:rotateY(0) scale(1)}50%{transform:rotateY(90deg) scale(.97)}50.1%{transform:rotateY(-90deg) scale(.97)}to{transform:rotateY(0) scale(1)}}.card-body[data-side=front] .card-back,.card-body[data-side=back] .card-front{opacity:0;visibility:hidden}.card-face img{display:block;width:100%;height:100%;object-fit:cover;border-radius:6px;-webkit-touch-callout:none}.card-wrapper--inline{--card-w: clamp(260px, 40vw, 380px);height:clamp(340px,48vh,460px);margin:1rem 0 .5rem;overflow:visible}.card-wrapper--inline .card-canvas{justify-content:flex-start;perspective-origin:calc(var(--card-w) * .302) 50%}.card-wrapper--inline .card-tilt{width:var(--card-w);margin-left:calc(var(--card-w) * -.198)}.card-wrapper--inline .card-overlay{width:var(--card-w);left:calc(var(--card-w) * .302)}.card-wrapper--inline .card-overlay[data-orientation=portrait]{left:calc(var(--card-w) * .302);transform:translate(-50%,-50%) rotate(90deg)}.dir-entry--meishi>.dir-expand{max-height:0;padding-left:3.5ch;overflow:visible;clip-path:inset(0 -200px 100% -200px);transition:max-height .35s cubic-bezier(.4,0,.2,1),opacity .25s ease,clip-path .35s cubic-bezier(.4,0,.2,1)}.dir-entry--meishi.is-open>.dir-expand{max-height:800px;opacity:1;clip-path:inset(0 -200px 0% -200px)}.lightbox{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#000000d9;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease}.lightbox[aria-hidden=false]{opacity:1;visibility:visible}.lightbox img{max-width:min(80vw,500px);max-height:65vh;object-fit:contain;border-radius:50%;border:1px solid var(--border-accent);box-shadow:0 8px 24px #00000059;pointer-events:none}.footer{border-top:1px solid var(--border);padding:3rem clamp(1.5rem,4vw,3rem);margin-top:var(--section-gap)}.footer-inner{display:flex;flex-direction:column;align-items:center;gap:1.25rem}.footer-sns{display:flex;gap:1.25rem}.footer-sns a{color:var(--text-dim);transition:color .3s;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.footer-sns a svg{width:100%;height:100%}.footer-sns a[aria-label=Instagram] svg{width:90%;height:90%}.footer-sns a[aria-label=X] svg{width:90%;height:90%}.footer-sns a:hover{color:var(--accent-light)}.footer-copy{font-family:var(--font-mono);font-size:.75rem;color:var(--text-dim);letter-spacing:.08em;text-align:center}@media(max-width:600px){.footer-copy{display:flex;flex-direction:column;align-items:center;gap:.35rem}.footer-copy-sep{display:none}}.footer-link{color:var(--text-dim);text-decoration:none;transition:color .3s}.footer-link:hover{color:var(--accent-light)}@media(prefers-reduced-motion:reduce){.marquee-track{animation:none!important}.scroll-hint,.cursor-blink{animation:none}.cli-reveal{opacity:1;transform:none;transition:none}.dir-expand{transition:none}}@media(max-width:1024px){.card-tilt,.card-overlay{width:clamp(300px,68vw,500px)}.card-wrapper{height:clamp(440px,68vh,620px)}.card-wrapper--inline{--card-w: clamp(240px, 52vw, 360px);height:clamp(320px,46vh,420px)}}@media(max-width:768px){.header{padding:.85rem 1rem}.header-nav{gap:1rem}.header-nav a{font-size:.75rem}.hero-logo-fallback{font-size:2.8rem}.scroll-hint{bottom:1.5rem}.dir-section{padding-left:1rem;padding-right:1rem}.dir-tree{padding-left:0}.dir-expand{padding-left:1.5ch}.dir-pipe{display:none}.dir-file{font-size:.78rem;line-height:1.7;padding:.2rem 0}.dir-entry{margin-bottom:1.25rem}.tag{font-size:.65rem;padding:.1rem .4rem}.contact-form input,.contact-form textarea{width:100%;margin-left:0}.contact-form textarea{margin-left:0}.card-wrapper{height:clamp(400px,65vh,560px)}.card-tilt,.card-overlay{width:clamp(280px,88vw,460px)}.card-wrapper--inline{--card-w: clamp(220px, 72vw, 340px);height:clamp(280px,52vh,380px)}}
