@import "https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;500;600;700&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&family=Noto+Serif+JP:wght@400;500;600&display=swap";.about-grid{grid-template-columns:.7fr 1.3fr;align-items:start;gap:64px;display:grid}.about-portrait{aspect-ratio:4/5;border:1px solid var(--line);background:radial-gradient(at 50% 40%,#8a5e2a26,#0000 70%),repeating-linear-gradient(0deg,#0000 0 40px,#1a1d240a 40px 41px);flex-direction:column;max-height:600px;display:flex;position:relative;overflow:hidden}.about-portrait:after{content:"";background:linear-gradient(to bottom, transparent 0%, transparent 70%, color-mix(in oklab, var(--bg) 50%, transparent) 100%);z-index:0;pointer-events:none;position:absolute;inset:0}.portrait-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.about-body p{font-family:var(--font-display);color:var(--ink-soft);margin-bottom:20px;font-size:18px;line-height:1.75}.about-body p strong{color:var(--ink);font-weight:500}.languages-row{font-family:var(--font-mono);letter-spacing:.1em;flex-wrap:wrap;align-items:center;gap:24px;margin-top:32px;margin-bottom:8px;font-size:11px;display:flex}.lang-label{color:var(--ink-mute);letter-spacing:.2em;text-transform:uppercase}.lang{align-items:baseline;gap:6px;display:flex}.lang-name{color:var(--ink)}.lang-level{color:var(--accent);font-size:10px}.about-stats{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:24px;margin-top:40px;padding-top:32px;display:grid}.about-stats .stat .k{font-family:var(--font-display);color:var(--accent);margin-bottom:8px;font-size:32px;line-height:1;display:block}.about-stats .stat .v{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ink-mute);text-transform:uppercase;font-size:10px}@media (width<=900px){.about-grid{grid-template-columns:1fr;gap:40px}.about-portrait{max-height:400px}.about-stats{grid-template-columns:repeat(3,1fr)}.about-stats .stat .v{letter-spacing:.1em;font-size:9px}}.contact-grid{grid-template-columns:1fr 1fr;gap:48px;display:grid}.contact-text h3{font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:16px;font-size:36px;font-weight:500;line-height:1.1}.jp-tag{font-family:var(--font-display);color:var(--accent);letter-spacing:.4em;opacity:.8;margin-bottom:24px;font-size:14px}.contact-text p{color:var(--ink-soft);margin-bottom:32px;font-size:15px;line-height:1.7}.contact-list{list-style:none}.contact-list li{border-top:1px solid var(--line);font-family:var(--font-mono);justify-content:space-between;align-items:center;padding:18px 0;font-size:13px;display:flex}.contact-list li:last-child{border-bottom:1px solid var(--line)}.contact-list .key{color:var(--ink-mute);letter-spacing:.2em;text-transform:uppercase;font-size:11px}.contact-list .val{color:var(--ink);text-decoration:none;transition:color .2s}.contact-list .val:hover{color:var(--accent)}.form-panel{border:1px solid var(--line);background:var(--bg-elev);padding:36px;position:relative}.form-panel:before{content:"";border-top:1px solid var(--accent);border-left:1px solid var(--accent);width:16px;height:16px;position:absolute;top:-1px;left:-1px}.form-panel:after{content:"";border-bottom:1px solid var(--accent);border-right:1px solid var(--accent);width:16px;height:16px;position:absolute;bottom:-1px;right:-1px}.field{margin-bottom:18px}.field label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px;font-size:10px;display:block}.field input,.field textarea{background:var(--bg);border:1px solid var(--line);width:100%;color:var(--ink);font-family:var(--font-body);resize:vertical;padding:12px 14px;font-size:14px;transition:border-color .2s}.field input:focus,.field textarea:focus{border-color:var(--accent);outline:none}.field textarea{resize:none;min-height:110px}.form-foot{justify-content:space-between;align-items:center;margin-top:24px;display:flex}.form-status{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ok);text-transform:uppercase;opacity:0;font-size:10px;transition:opacity .3s}.form-status.show{opacity:1}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}@media (width<=900px){.contact-grid{grid-template-columns:1fr}.form-foot{flex-direction:column;align-items:flex-start;gap:12px}.form-foot .btn{justify-content:center;width:100%}}@media (width<=720px){.contact-list li{flex-direction:column;align-items:flex-start;gap:4px}}.hero{grid-template-columns:1.1fr .9fr;align-items:start;gap:48px;max-width:1200px;min-height:calc(100vh - 60px);margin:0 auto;padding:80px 32px;display:grid}.hero-meta{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute);align-items:center;gap:14px;margin-bottom:28px;font-size:11px;display:flex}.hero-meta .dot{background:var(--ok);width:6px;height:6px;box-shadow:0 0 12px var(--ok);border-radius:50%;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.hero-name{font-family:var(--font-display);letter-spacing:-.02em;margin-bottom:12px;font-size:clamp(48px,7.5vw,96px);line-height:1.15}.hero-name span{color:var(--accent);font-style:italic;font-weight:400}.hero-jp{font-family:var(--font-display);color:var(--accent);letter-spacing:.4em;opacity:.8;margin-bottom:40px;font-size:16px}.hero-role{font-family:var(--font-mono);color:var(--ink-soft);letter-spacing:.15em;text-transform:uppercase;margin-bottom:8px;font-size:13px}.hero-role:before{content:"";background:var(--accent);vertical-align:middle;width:32px;height:1px;margin-right:12px;display:inline-block}.hero-ctas{flex-wrap:wrap;gap:14px;margin-top:40px;display:flex}.btn{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:10px;padding:14px 22px;font-size:12px;text-decoration:none;transition:all .2s;display:inline-flex;position:relative;overflow:hidden}.btn:before{content:"";background:var(--accent);z-index:-1;width:100%;height:100%;transition:left .3s;position:absolute;top:0%;left:-100%}.btn:hover:before{left:0}.btn:hover{border-color:var(--accent);color:var(--bg)}.btn-primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.btn-primary:hover{opacity:.85}.vn-box{border:1px solid var(--line);background:color-mix(in oklab, var(--bg-elev) 60%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);margin-top:32px;margin-bottom:32px;padding:28px 32px;position:relative;box-shadow:0 30px 60px #00000026}.vn-box:before{content:"";border-top:1px solid var(--accent);border-left:1px solid var(--accent);width:14px;height:14px;position:absolute;top:-1px;left:-1px}.vn-box:after{content:"";border-bottom:1px solid var(--accent);border-right:1px solid var(--accent);width:14px;height:14px;position:absolute;bottom:-1px;right:-1px}.vn-speaker{background:var(--bg);font-family:var(--font-mono);letter-spacing:.2em;color:var(--accent);text-transform:uppercase;padding:0 12px;font-size:11px;position:absolute;top:-12px;left:24px}.vn-text{font-family:var(--font-display);color:var(--ink);min-height:90px;font-size:17px;line-height:1.7}.cursor{background:var(--accent);vertical-align:middle;width:6px;height:18px;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero-visual{aspect-ratio:3/4;border:1px solid var(--line);background:var(--bg-elev);max-height:630px;position:relative;overflow:hidden}.hero-visual:before{content:"";background:repeating-linear-gradient(135deg,#0000 0 20px,#8a5e2a14 20px 21px),radial-gradient(at 30% 20%,#8a5e2a40,#0000 60%);position:absolute;inset:0}.hero-visual-frame{border:1px solid var(--accent);opacity:.4;pointer-events:none;position:absolute;inset:12px}.hero-visual-corner{border-color:var(--accent);pointer-events:none;border-style:solid;width:24px;height:24px;position:absolute}.hero-visual-corner.tl{border-width:1px 0 0 1px;top:4px;left:4px}.hero-visual-corner.tr{border-width:1px 1px 0 0;top:4px;right:4px}.hero-visual-corner.bl{border-width:0 0 1px 1px;bottom:4px;left:4px}.hero-visual-corner.br{border-width:0 1px 1px 0;bottom:4px;right:4px}.hero-visual-id{font-family:var(--font-mono);color:var(--accent);letter-spacing:.2em;writing-mode:vertical-rl;background:color-mix(in oklab, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:4px 6px;font-size:10px;position:absolute;top:16px;left:16px}.hero-visual-jp{font-family:var(--font-display);color:var(--ink);writing-mode:vertical-rl;letter-spacing:.2em;opacity:.7;font-size:32px;position:absolute;top:24px;right:24px}.hero-visual-label{font-family:var(--font-mono);color:var(--ink-mute);letter-spacing:.2em;text-transform:uppercase;background:color-mix(in oklab, var(--bg) 70%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:space-between;padding:8px 12px;font-size:10px;display:flex;position:absolute;bottom:16px;left:16px;right:16px}.hero-visual-img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}@media (width<=900px){.hero{grid-template-columns:1fr;padding:48px 24px 80px}.hero-visual{display:none}}.nav{z-index:50;border-bottom:1px solid var(--line);background:color-mix(in oklab, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:16px 32px;display:flex}.nav-mark{font-family:var(--font-display);color:var(--ink);align-items:center;gap:10px;font-size:18px;text-decoration:none;display:flex}.nav-mark .kanji{color:var(--accent);font-size:22px}.nav-links{letter-spacing:.06em;text-transform:uppercase;gap:28px;font-size:13px;display:flex}.nav-links a{color:var(--ink);font-family:var(--font-mono);text-decoration:none;transition:color .2s}.nav-links a:hover{color:var(--accent)}.nav-links a:before{content:"0" attr(data-num);font-family:var(--font-mono);color:var(--accent);opacity:.6;margin-right:6px;font-size:10px}.lang-toggle{border:1px solid var(--line);font-family:var(--font-mono);border-radius:4px;font-size:11px;display:flex;overflow:hidden}.lang-toggle button{color:var(--ink);cursor:pointer;font-family:inherit;font-size:inherit;letter-spacing:.1em;background:0 0;border:none;padding:6px 10px;transition:all .2s}.lang-toggle button.active{background:var(--accent);color:var(--bg)}.lang-toggle button:hover:not(.active){color:var(--accent)}.nav-actions{align-items:center;gap:12px;display:flex}.theme-toggle{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;transition:all .2s;display:flex}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.hamburger{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;transition:all .2s;display:none}.hamburger:hover{border-color:var(--accent);color:var(--accent)}@media (width<=720px){.hamburger{display:flex}.nav-links{background:var(--bg);border-bottom:1px solid var(--line);z-index:100;flex-direction:column;gap:20px;padding:16px 32px;display:none;position:absolute;top:100%;left:0;right:0}.nav-links.open{display:flex}.nav-mark span:not(.kanji){display:none}}.skills-grid{grid-template-columns:repeat(3,1fr);gap:32px;display:grid}.skill-block{border:1px solid var(--line);background:var(--bg-elev);padding:28px}.skill-block-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;margin-bottom:24px;padding-bottom:14px;display:flex}.skill-block-head .label{font-family:var(--font-display);font-size:22px;font-weight:500}.skill-block-head .num{font-family:var(--font-mono);color:var(--accent);letter-spacing:.2em;font-size:11px}.skill-icons{flex-wrap:wrap;gap:20px;display:flex}.skill-icon{color:var(--ink);opacity:.6;cursor:pointer;transition:opacity .2s,color .2s;position:relative}.skill-icon:hover{opacity:1;color:var(--accent)}.skill-tooltip{background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.1em;white-space:nowrap;opacity:0;pointer-events:none;padding:4px 8px;font-size:10px;transition:opacity .2s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.skill-icon:hover .skill-tooltip{opacity:1}.learning{border:1px dashed var(--line);background:var(--bg-elev);flex-wrap:wrap;align-items:center;gap:24px;margin-top:40px;padding:20px 28px;display:flex}.learning .lbl{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);font-size:11px}.learning .items{flex-wrap:wrap;gap:14px;display:flex}.learning .items span{font-family:var(--font-display);color:var(--ink);align-items:center;gap:8px;font-size:16px;display:inline-flex}.learning .items span:before{content:"▸";color:var(--accent)}@media (width<=900px){.skills-grid{grid-template-columns:1fr}}.featured{border:1px solid var(--line);background:var(--bg-elev);grid-template-columns:1.2fr 1fr;gap:48px;margin-bottom:80px;display:grid;position:relative;overflow:hidden}.featured-tag{background:var(--accent);color:var(--bg);font-family:var(--font-mono);letter-spacing:.25em;z-index:2;padding:6px 14px;font-size:10px;position:absolute;top:0;right:0}.featured-body{flex-direction:column;gap:16px;padding:48px;display:flex}.featured-name{font-family:var(--font-display);letter-spacing:-.01em;font-size:40px;font-weight:500;line-height:1.05}.featured-jp{font-family:var(--font-display);letter-spacing:.4em;color:var(--accent);opacity:.8;font-size:14px}.featured-type{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ink-mute);text-transform:uppercase;font-size:11px}.featured-desc{color:var(--ink-soft);font-size:15px;line-height:1.75}.featured-cta{margin-top:8px;display:flex}.feature-list{flex-direction:column;gap:10px;padding-left:0;list-style:none;display:flex}.feature-list li{color:var(--ink-soft);padding-left:22px;font-size:14px;line-height:1.6;position:relative}.feature-list li:before{content:"◆";color:var(--accent);font-size:10px;position:absolute;top:4px;left:0}.tech-row{flex-wrap:wrap;gap:8px;display:flex}.tech-tag{font-family:var(--font-mono);letter-spacing:.12em;background:color-mix(in oklab, var(--accent) 10%, transparent);border:1px solid color-mix(in oklab, var(--accent) 30%, transparent);color:var(--accent);text-transform:uppercase;padding:6px 10px;font-size:10px}.featured-visual{background:var(--bg-panel);border-right:1px solid var(--line);justify-content:center;align-items:center;min-height:480px;display:flex;position:relative}.featured-placeholder{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ink-mute);text-transform:uppercase;opacity:.5;flex-direction:column;align-items:center;gap:8px;font-size:11px;display:flex}.project-grid{grid-template-columns:1fr 1fr;gap:32px;display:grid}.project-card{border:1px solid var(--line);background:var(--bg-elev);will-change:transform;flex-direction:column;gap:16px;min-height:360px;padding:32px;transition:all .3s;display:flex;position:relative}.project-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 20px 50px #0000001a}.card-num{font-family:var(--font-mono);color:var(--accent);letter-spacing:.2em;font-size:11px}.card-jp{font-family:var(--font-display);color:var(--ink);opacity:.9;letter-spacing:.1em;font-size:36px;line-height:1}.card-name{font-family:var(--font-display);letter-spacing:-.01em;font-size:26px;font-weight:500}.card-type{font-family:var(--font-mono);letter-spacing:.2em;color:var(--ink-mute);text-transform:uppercase;font-size:10px}.card-desc{color:var(--ink-soft);flex:1;font-size:14px;line-height:1.65}.card-foot{border-top:1px dashed var(--line);font-family:var(--font-mono);letter-spacing:.1em;justify-content:space-between;align-items:center;padding-top:16px;font-size:11px;display:flex}.card-foot .stack{color:var(--ink-mute);text-transform:uppercase}.card-foot .link{color:var(--accent);align-items:center;gap:6px;text-decoration:none;display:inline-flex;position:relative}.card-foot .link:after{content:"";background:var(--accent);width:0;height:1px;transition:width .3s;position:absolute;bottom:-2px;left:0}.project-card:hover .card-foot .link:after{width:100%}@media (width<=900px){.featured{grid-template-columns:1fr}.featured-visual{border-right:none;border-bottom:1px solid var(--line);min-height:200px}.featured-body{padding:32px 24px}}@media (width<=720px){.project-grid{grid-template-columns:1fr}}:root{--bg:#f3efe6;--bg-elev:#ebe6da;--bg-panel:#e4dfd2;--line:#c9c2b1;--line-soft:#d8d2c1;--ink:#1a1d24;--ink-soft:#4a4d54;--ink-mute:#7a766c;--accent:#8a5e2a;--accent-soft:#6a4520;--accent-glow:#8a5e2a26;--ok:#7aa898;--font-display:"Shippori Mincho", "Noto Serif JP", serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.6}html{scroll-behavior:smooth}[data-theme=dark]{--bg:#0b0d12;--bg-elev:#11141b;--bg-panel:#14181f;--line:#232830;--line-soft:#1a1e25;--ink:#e6e1d6;--ink-soft:#b6afa1;--ink-mute:#6e6a60;--accent:#b48a5a;--accent-soft:#8a6a45;--accent-glow:#b48a5a2e}.footer{border-top:1px solid var(--line);max-width:1200px;margin-top:80px;margin-left:auto;margin-right:auto;padding:40px 32px}.footer-inner{font-family:var(--font-mono);color:var(--ink-mute);letter-spacing:.15em;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;font-size:11px;display:flex}main{z-index:1;position:relative}::selection{background:var(--accent);color:var(--bg)}@media (width<=720px){.footer{padding:32px 24px}}.section{max-width:1200px;margin:0 auto;padding:120px 32px;position:relative}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:24px;margin-bottom:64px;padding-bottom:20px;display:flex}.section-num{font-family:var(--font-mono);color:var(--accent);letter-spacing:.2em;font-size:12px}.section-title{font-family:var(--font-display);letter-spacing:-.01em;flex:1;font-size:clamp(32px,4vw,48px);font-weight:500}.section-title .jp{color:var(--ink-mute);letter-spacing:.3em;margin-left:16px;font-size:.55em;font-weight:400}.section-meta{font-family:var(--font-mono);color:var(--ink-mute);letter-spacing:.2em;font-size:11px}@media (width<=720px){.section{padding:60px 24px}.section-head{flex-wrap:wrap;gap:12px;margin-bottom:40px}.section-meta,.section-title .jp{display:none}}
