*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--paper: #f5f0e8;--paper-warm: #f0ebe0;--paper-dark: #e8e2d6;--paper-alt: #ede8df;--ink: #1a1a1a;--ink-soft: #3a3a3a;--ink-light: #6b6560;--ink-faint: #b5afa3;--ink-ghost: #d5d0c4;--accent: #c97a82;--accent-light: #e8b4b8;--accent-faint: #f3d5d8;--accent-deep: #a85660;--indigo: #6b78a0;--indigo-light: #a8b2c8;--sketch-dark: #f0eef8;--sketch-dark-hover: #e8e5f5;--sketch-green: #edf5ed;--sketch-green-hover: #e2f0e2;--live: #4d8a4d;--live-border: #5a9a5a;--live-bg: transparent;--sent: #4a7a5a;--nav-bg: rgba(245, 240, 232, .85);--mobile-bg: rgba(245, 240, 232, .97);--accent-glow: rgba(200, 122, 130, .3);--accent-glow-soft: rgba(200, 122, 130, .2);--accent-glow-faint: rgba(200, 122, 130, .06);--accent-spot: rgba(200, 122, 130, .1);--accent-ripple: rgba(200, 122, 130, .25);--accent-text-glow: rgba(168, 86, 96, .3);--shimmer: rgba(255, 255, 255, .25);--shimmer-peak: rgba(255, 255, 255, .35);--particle-rgb: 26, 26, 26;--radius: 8px;--radius-lg: 16px;--shadow-soft: 0 2px 20px rgba(44, 44, 44, .06);--shadow-card: 0 4px 30px rgba(44, 44, 44, .08);--shadow-hover: 0 8px 40px rgba(44, 44, 44, .12);--gradient-border: linear-gradient( 135deg, var(--accent-light), var(--indigo-light), var(--accent) );--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--duration: .4s;--fs-xs: .75rem;--fs-sm: .875rem;--fs-base: 1rem;--fs-md: 1.125rem;--fs-lg: 1.5rem;--fs-xl: 2rem;--fs-2xl: 2.75rem;--fs-3xl: 3.5rem;--fs-hero: clamp(2.8rem, 6vw, 5.5rem)}[data-theme=dark]{--paper: #141218;--paper-warm: #1a1820;--paper-dark: #111015;--paper-alt: #181620;--ink: #e8e4de;--ink-soft: #c8c4bc;--ink-light: #908b82;--ink-faint: #444038;--ink-ghost: #2a2730;--accent: #e8949c;--accent-light: #6b4a50;--accent-faint: #2e1f22;--accent-deep: #f0a8b0;--indigo: #9aa4c4;--indigo-light: #5a6488;--sketch-dark: #1e1c28;--sketch-dark-hover: #262432;--sketch-green: #182018;--sketch-green-hover: #1e281e;--live: #6bcc6b;--live-border: #5ab85a;--live-bg: rgba(107, 204, 107, .08);--sent: #6bcc6b;--nav-bg: rgba(20, 18, 24, .88);--mobile-bg: rgba(20, 18, 24, .97);--accent-glow: rgba(232, 148, 156, .25);--accent-glow-soft: rgba(232, 148, 156, .15);--accent-glow-faint: rgba(232, 148, 156, .04);--accent-spot: rgba(232, 148, 156, .08);--accent-ripple: rgba(232, 148, 156, .2);--accent-text-glow: rgba(240, 168, 176, .3);--shimmer: rgba(255, 255, 255, .06);--shimmer-peak: rgba(255, 255, 255, .1);--particle-rgb: 232, 228, 222;--shadow-soft: 0 2px 20px rgba(0, 0, 0, .2);--shadow-card: 0 4px 30px rgba(0, 0, 0, .25);--shadow-hover: 0 8px 40px rgba(0, 0, 0, .35);--gradient-border: linear-gradient( 135deg, var(--accent-light), var(--indigo-light), var(--accent) )}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:400;font-size:var(--fs-base);line-height:1.7;color:var(--ink);background-color:var(--paper);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:default}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:10px}::selection{background:var(--accent-faint);color:var(--ink)}a{color:inherit;text-decoration:none}button{font-family:inherit;border:none;background:none;cursor:pointer;color:inherit}img{max-width:100%;display:block}.paper-texture{position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat}#ink-canvas{position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.5}.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0%;background:linear-gradient(90deg,var(--accent),var(--indigo));z-index:10001;transition:width .1s linear}.nav{position:fixed;top:0;left:0;right:0;z-index:10000;padding:0 2rem;transition:background var(--duration) var(--ease-out),box-shadow var(--duration) var(--ease-out),padding var(--duration) var(--ease-out)}.nav.scrolled{background:var(--nav-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--ink-ghost)}.nav-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:72px;transition:height var(--duration) var(--ease-out)}.nav.scrolled .nav-inner{height:60px}.nav-logo{display:flex;align-items:center;gap:.5rem;transition:transform var(--duration) var(--ease-out);position:relative}.nav-logo:after{content:attr(data-jp);position:absolute;left:calc(100% + 8px);font-family:"Noto Serif JP",serif;font-size:var(--fs-xs);color:var(--ink-light);opacity:0;transform:translate(-4px);transition:all .3s var(--ease-out);white-space:nowrap}.nav-logo:hover:after{opacity:1;transform:translate(0)}.nav-logo:hover{transform:scale(1.05)}.logo-brush{color:var(--ink)}.nav-links{display:flex;align-items:center;gap:2.5rem}.nav-link{font-size:var(--fs-sm);font-weight:500;letter-spacing:.02em;position:relative;padding:.25rem 0;transition:color .3s var(--ease-out)}.nav-link:before{content:attr(data-jp);position:absolute;bottom:-14px;left:50%;transform:translate(-50%) translateY(2px);font-family:"Noto Serif JP",serif;font-size:9px;color:var(--accent);opacity:0;transition:all .3s var(--ease-out);white-space:nowrap}.nav-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1.5px;background:var(--accent);transition:width .4s var(--ease-out);border-radius:2px}.nav-link:hover:after,.nav-link.active:after{width:100%}.nav-link:hover:before{opacity:1;transform:translate(-50%) translateY(0)}.nav-link:hover{color:var(--accent-deep)}.nav-menu-btn{display:none;flex-direction:column;gap:5px;padding:4px;z-index:10002}.nav-menu-btn span{display:block;width:22px;height:1.5px;background:var(--ink);border-radius:2px;transition:all .3s var(--ease-out);transform-origin:center}.nav-menu-btn.active span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}.nav-menu-btn.active span:nth-child(2){opacity:0;transform:scaleX(0)}.nav-menu-btn.active span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}.mobile-menu{position:fixed;inset:0;z-index:9999;background:var(--mobile-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;opacity:0;pointer-events:none;transition:opacity .4s var(--ease-out)}.mobile-menu.open{opacity:1;pointer-events:all}.mobile-link{font-size:var(--fs-xl);font-weight:300;font-family:"Noto Serif JP",serif;letter-spacing:.04em;transform:translateY(20px);opacity:0;transition:all .4s var(--ease-out)}.mobile-menu.open .mobile-link{transform:translateY(0);opacity:1}.mobile-menu.open .mobile-link:nth-child(1){transition-delay:.1s}.mobile-menu.open .mobile-link:nth-child(2){transition-delay:.15s}.mobile-menu.open .mobile-link:nth-child(3){transition-delay:.2s}.mobile-menu.open .mobile-link:nth-child(4){transition-delay:.25s}.mobile-link .jp{display:block;font-size:var(--fs-sm);color:var(--accent);margin-top:.25rem}.mobile-link:hover{color:var(--accent-deep)}.section{position:relative;z-index:2}.section-container{max-width:1100px;margin:0 auto;padding:6rem 2rem}.section-header{margin-bottom:4rem;text-align:center}.section-title{font-family:"Noto Serif JP",serif;font-weight:400;font-size:var(--fs-2xl);letter-spacing:-.01em;position:relative;display:inline-block;line-height:1.2}.section-num{font-family:Caveat,cursive;font-size:var(--fs-xl);color:var(--accent);margin-right:.5rem;font-weight:700}.section-title-jp{display:block;font-size:var(--fs-xs);font-weight:200;color:var(--ink-faint);margin-top:.4rem;letter-spacing:.25em;text-transform:uppercase}.section-line{width:80px;height:1.5px;background:linear-gradient(90deg,var(--accent),var(--indigo));margin:1.5rem auto 0;border-radius:2px;position:relative}.section-line:after{content:"✦";position:absolute;right:-22px;top:-9px;font-size:11px;color:var(--accent)}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:6rem 2rem 2rem;background-color:var(--paper)}.hero:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,var(--ink-ghost) 1px,transparent 1px);background-size:28px 28px;opacity:.45;pointer-events:none;z-index:0;mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 40%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black 40%,transparent 100%)}.hero>*{position:relative;z-index:1}.hero-content{display:flex;align-items:center;justify-content:center;gap:3rem;max-width:1200px;width:100%}.hero-text{text-align:center;max-width:600px}.hero-greeting{font-family:Caveat,cursive;font-size:var(--fs-xl);color:var(--accent);margin-bottom:.5rem;font-weight:600}.hero-name{font-family:"Noto Serif JP",serif;font-weight:700;margin-bottom:1rem;line-height:1.1}.hero-name-main{display:block;font-size:var(--fs-hero);letter-spacing:-.02em;background:linear-gradient(135deg,var(--ink) 0%,var(--ink-soft) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-name-jp{display:block;font-size:var(--fs-lg);font-weight:200;color:var(--ink-light);letter-spacing:.2em;margin-top:.25rem;-webkit-text-fill-color:var(--ink-light)}.hero-role{font-family:Caveat,cursive;font-size:var(--fs-xl);color:var(--ink-soft);margin-bottom:1.5rem;min-height:2.5rem}.cursor{display:inline-block;animation:blink .8s infinite;color:var(--accent);font-weight:300}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.hero-desc{font-size:var(--fs-md);color:var(--ink-soft);line-height:1.8;margin-bottom:2.5rem;max-width:480px;margin-left:auto;margin-right:auto}.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.hero-scroll-hint{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--ink-light);font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;animation:float 3s ease-in-out infinite}.scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--ink-light),transparent);animation:scrollLine 2s ease-in-out infinite}@keyframes float{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-6px)}}@keyframes scrollLine{0%{opacity:0;transform:scaleY(0);transform-origin:top}50%{opacity:1;transform:scaleY(1);transform-origin:top}to{opacity:0;transform:scaleY(0);transform-origin:bottom}}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.8rem 1.8rem;font-size:var(--fs-sm);font-weight:500;letter-spacing:.03em;border-radius:100px;transition:all .35s var(--ease-out);position:relative;overflow:hidden}.btn-primary{background:var(--ink);color:var(--paper);border:1.5px solid var(--ink)}.btn-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);transform:translateY(-2px);box-shadow:0 6px 25px var(--accent-glow)}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink-faint)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-2px)}.btn-ghost:active{transform:translateY(0)}.draw-path{stroke-dasharray:500;stroke-dashoffset:500}.draw-path.animated{animation:drawIn 2s var(--ease-out) forwards}@keyframes drawIn{to{stroke-dashoffset:0}}.about{background:var(--paper-alt)}.about-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:3rem;align-items:center}.portrait-frame{position:relative;padding:1rem;max-width:300px;margin:0 auto}.portrait-frame:before{content:"";position:absolute;inset:0;border-radius:calc(var(--radius) + 4px);background:var(--paper-dark);opacity:1;z-index:0}.portrait-placeholder{background:var(--paper-warm);border-radius:var(--radius);overflow:hidden;aspect-ratio:4/5;border:1px solid var(--ink-ghost);position:relative;z-index:1}.portrait-img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;filter:sepia(8%) contrast(1.02) brightness(1.01)}.frame-corner{position:absolute;width:24px;height:24px;border-color:var(--accent);border-style:solid;border-width:0;z-index:2;opacity:.7}.frame-corner-tl{top:0;left:0;border-top-width:2px;border-left-width:2px;border-top-left-radius:4px}.frame-corner-tr{top:0;right:0;border-top-width:2px;border-right-width:2px;border-top-right-radius:4px}.frame-corner-bl{bottom:0;left:0;border-bottom-width:2px;border-left-width:2px;border-bottom-left-radius:4px}.frame-corner-br{bottom:0;right:0;border-bottom-width:2px;border-right-width:2px;border-bottom-right-radius:4px}.about-text{padding-top:0}.about-intro{font-size:var(--fs-md);line-height:1.9;margin-bottom:1.25rem}.about-intro strong{color:var(--accent-deep);font-weight:600}.about-text p{color:var(--ink-soft);margin-bottom:1.25rem;line-height:1.85}.about-stats{display:flex;gap:2.5rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--ink-ghost)}.stat{text-align:center}.stat-number{display:block;font-family:Caveat,cursive;font-size:var(--fs-3xl);font-weight:700;color:var(--accent-deep);line-height:1}.stat-number[data-suffix="+"]:after{content:"+";font-size:.6em}.stat-label{display:block;font-size:var(--fs-xs);color:var(--ink-light);margin-top:.3rem;letter-spacing:.03em}.work{background:var(--paper)}.work-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem}.project-card{position:relative;border-radius:var(--radius-lg);overflow:hidden;background:var(--paper);border:1px solid var(--ink-ghost);transition:all .5s var(--ease-out)}.project-card:before{content:"";position:absolute;inset:0;border-radius:var(--radius-lg);padding:1.5px;background:var(--gradient-border);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .4s var(--ease-out);pointer-events:none;z-index:1}.project-card:hover:before{opacity:1}.project-card:hover{border-color:transparent;box-shadow:var(--shadow-hover);transform:translateY(-4px)}.project-card-inner{padding:0}.project-sketch{padding:1.5rem 1.5rem 0;display:flex;align-items:center;justify-content:center;background:var(--paper-warm);border-bottom:1px dashed var(--ink-ghost);overflow:hidden;transition:background .4s var(--ease-out)}.project-sketch--dark{background:var(--sketch-dark)}.project-card:hover .project-sketch--dark{background:var(--sketch-dark-hover)}.project-sketch--green{background:var(--sketch-green)}.project-card:hover .project-sketch--green{background:var(--sketch-green-hover)}.project-card:hover .project-sketch{background:var(--paper-dark)}.project-illustration{width:100%;max-width:400px;height:auto;transition:transform .6s var(--ease-out)}.project-card:hover .project-illustration{transform:scale(1.03)}.project-info{padding:1.5rem}.project-category{font-family:Caveat,cursive;font-size:var(--fs-sm);color:var(--accent);font-weight:600;letter-spacing:.03em}.project-badge--live{font-size:var(--fs-xs);font-weight:600;padding:.18rem .6rem;border-radius:100px;border:1px solid var(--live-border);color:var(--live);background:var(--live-bg);display:inline-flex;align-items:center;gap:.4rem;letter-spacing:.04em}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--live);animation:livePulse 1.8s ease-in-out infinite}@keyframes livePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.project-title{font-family:"Noto Serif JP",serif;font-size:var(--fs-lg);font-weight:400;margin:.4rem 0 .75rem;letter-spacing:-.01em}.project-desc{font-size:var(--fs-sm);color:var(--ink-soft);line-height:1.7;margin-bottom:1rem}.project-tech{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}.project-tech span{font-size:var(--fs-xs);padding:.25rem .75rem;border-radius:100px;border:1px solid var(--ink-ghost);color:var(--ink-light);font-weight:500;letter-spacing:.02em;transition:all .3s var(--ease-out)}.project-tech span:hover{border-color:var(--accent-light);color:var(--accent-deep);background:var(--accent-faint)}.project-links{display:flex;gap:1.25rem}.project-link{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--fs-sm);font-weight:500;color:var(--ink-soft);transition:all .3s var(--ease-out);position:relative}.project-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--accent);transition:width .3s var(--ease-out)}.project-link:hover{color:var(--accent-deep)}.project-link:hover:after{width:100%}.project-link svg{transition:transform .3s var(--ease-out)}.project-link:hover svg{transform:translate(2px,-2px)}.skills{background:var(--paper-alt)}.bento-grid{display:grid;grid-template-columns:280px 1fr 1fr;grid-template-rows:auto auto;gap:1.25rem}.bento-card--languages{grid-column:1;grid-row:1 / 3}.bento-card--web{grid-column:2 / 4;grid-row:1}.bento-card--cp{grid-column:2;grid-row:2}.bento-card--tools{grid-column:3;grid-row:2}.bento-card--core{grid-column:1 / 4;grid-row:3}.bento-card{background:var(--paper);border:1px solid var(--ink-ghost);border-radius:var(--radius-lg);padding:1.75rem;transition:border-color .4s var(--ease-out),box-shadow .4s var(--ease-out),transform .4s var(--ease-out);display:flex;flex-direction:column;gap:1.25rem}.bento-card:hover{border-color:var(--ink-faint);box-shadow:var(--shadow-card);transform:translateY(-2px)}.bento-card--languages{background:var(--paper-warm)}.bento-card--cp{background:linear-gradient(135deg,var(--accent-faint) 0%,var(--paper) 100%)}.bento-card--core{background:var(--paper)}.bento-label{display:flex;align-items:center;gap:.6rem;font-family:"Noto Serif JP",serif;font-size:var(--fs-sm);font-weight:400;color:var(--ink-soft);letter-spacing:.02em;padding-bottom:1rem;border-bottom:1px dashed var(--ink-ghost)}.bento-icon{font-family:Caveat,cursive;font-size:1.1rem;color:var(--accent);line-height:1}.bento-pills{display:flex;flex-wrap:wrap;gap:.5rem;flex:1;align-content:flex-start}.bento-pill{font-size:var(--fs-xs);font-weight:500;padding:.3rem .85rem;border-radius:100px;border:1px solid var(--ink-ghost);color:var(--ink-soft);letter-spacing:.02em;transition:all .25s var(--ease-out);white-space:nowrap}.bento-pill:hover,.bento-pill--accent{border-color:var(--accent-light);color:var(--accent-deep);background:var(--accent-faint)}.bento-note{font-family:Caveat,cursive;font-size:var(--fs-md);color:var(--ink-light);margin-top:auto}.bento-card--cp{position:relative}.bento-card--cp:after{content:"{ CP }";position:absolute;bottom:1.5rem;right:1.75rem;font-family:Caveat,cursive;font-size:2.5rem;color:var(--accent);opacity:.07;pointer-events:none;line-height:1;font-weight:700}.bento-stats-row{display:flex;gap:1.75rem;flex-wrap:wrap;flex:1;align-items:center}.bento-stat{display:flex;flex-direction:column;gap:.2rem;text-decoration:none;transition:transform .25s var(--ease-out)}a.bento-stat:hover{transform:translateY(-2px)}a.bento-stat:hover .bento-stat-num{color:var(--accent)}a.bento-stat:hover .bento-stat-sub{color:var(--accent-deep)}.bento-stat-num{font-family:Caveat,cursive;font-size:2rem;font-weight:700;color:var(--accent-deep);line-height:1}.bento-stat-plus{font-size:.75em}.bento-stat-sub{font-size:var(--fs-xs);color:var(--ink-light);letter-spacing:.04em}.contact{background:var(--paper)}.contact-content{display:grid;grid-template-columns:1fr 1.4fr;gap:5rem;align-items:start}.contact-text{padding-top:.5rem}.contact-text p{font-size:var(--fs-md);color:var(--ink-soft);line-height:1.9;margin-bottom:2.5rem}.contact-info{display:flex;flex-direction:column;gap:.85rem;margin-bottom:2.5rem}.contact-info-item{display:flex;align-items:center;gap:.65rem;font-size:var(--fs-sm);color:var(--ink-soft);text-decoration:none;transition:color .25s var(--ease-out)}.contact-info-item svg{color:var(--accent);flex-shrink:0}.contact-info-item:hover{color:var(--accent-deep)}.contact-crane{opacity:.5;transition:opacity .4s var(--ease-out),transform .6s var(--ease-out);margin-top:1rem}.contact-crane:hover{opacity:.85;transform:translateY(-5px) rotate(-3deg)}.contact-form{display:flex;flex-direction:column;gap:2rem}.form-group{position:relative}.form-label{display:block;font-size:var(--fs-sm);font-weight:500;margin-bottom:.5rem;color:var(--ink)}.form-label .jp-small{font-family:"Noto Serif JP",serif;font-size:var(--fs-xs);color:var(--ink-light);font-weight:200;margin-left:.5rem}.form-input{width:100%;padding:.85rem 0;font-family:inherit;font-size:var(--fs-base);color:var(--ink);background:transparent;border:none;border-bottom:1.5px solid var(--ink-ghost);outline:none;transition:border-color .3s var(--ease-out);resize:none}.form-input::placeholder{color:var(--ink-faint);font-style:italic}.form-input:focus{border-color:var(--accent)}.form-line{position:absolute;bottom:0;left:0;width:0;height:1.5px;background:var(--accent);transition:width .4s var(--ease-out)}.form-input:focus~.form-line{width:100%}.form-textarea{min-height:120px;line-height:1.8}.btn-submit{align-self:flex-start;margin-top:.5rem}.btn-submit .check-icon{display:none}.btn-submit.sent{background:var(--sent);border-color:var(--sent)}.btn-submit.sent .send-icon{display:none}.btn-submit.sent .check-icon{display:inline-block!important}.footer{position:relative;z-index:2;padding:0 2rem;background:var(--paper-dark);border-top:1px solid var(--ink-ghost)}.footer-inner{max-width:1100px;margin:0 auto;padding:2rem 0}.footer-content{text-align:center}.footer-copy{font-size:var(--fs-sm);color:var(--ink-light);letter-spacing:.01em}.footer-year:before{content:" · "}.footer-jp{font-family:"Noto Serif JP",serif;font-size:var(--fs-xs);color:var(--ink-faint);margin-top:.35rem;letter-spacing:.2em;font-weight:200;text-transform:uppercase}.petals-container{position:fixed;inset:0;pointer-events:none;z-index:3;overflow:hidden}.petal{position:absolute;width:12px;height:12px;pointer-events:none;opacity:0}.petal svg{width:100%;height:100%}.anim-fade-up{opacity:0;transform:translateY(30px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.anim-fade-up.visible{opacity:1;transform:translateY(0)}.anim-fade-up:nth-child(1){transition-delay:0s}.anim-fade-up:nth-child(2){transition-delay:.1s}.anim-fade-up:nth-child(3){transition-delay:.2s}.anim-fade-up:nth-child(4){transition-delay:.3s}.anim-fade-up:nth-child(5){transition-delay:.4s}.anim-reveal{opacity:0;transform:translateY(15px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out)}.anim-reveal.visible{opacity:1;transform:translateY(0)}@media(max-width:1024px){.bento-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}.bento-card--languages{grid-column:1;grid-row:1}.bento-card--web{grid-column:1 / 3;grid-row:2}.bento-card--cp{grid-column:1;grid-row:3}.bento-card--tools{grid-column:2;grid-row:3}.bento-card--core{grid-column:1 / 3;grid-row:4}.about-grid{gap:3rem}}@media(max-width:768px){.nav-links{display:none}.nav-menu-btn{display:flex}.hero-content{flex-direction:column;gap:2rem}.hero-name-main{font-size:clamp(2.2rem,8vw,3.5rem)}.about-grid{grid-template-columns:1fr;gap:2.5rem}.about-portrait{order:-1}.portrait-frame{max-width:250px}.about-stats{gap:1.5rem}.work-grid,.bento-grid{grid-template-columns:1fr}.bento-card--languages,.bento-card--web,.bento-card--cp,.bento-card--tools,.bento-card--core{grid-column:1;grid-row:auto}.contact-content{grid-template-columns:1fr;gap:2.5rem}.contact-crane{display:none}.section-container{padding:4rem 1.5rem}.section-title{font-size:var(--fs-lg)}.hero-actions{flex-direction:column;align-items:center}}@media(max-width:480px){.nav{padding:0 1rem}.hero{padding:5rem 1rem 2rem}.hero-desc{font-size:var(--fs-base)}.hero-role{font-size:var(--fs-lg)}.about-stats{flex-direction:column;gap:1rem;align-items:center}.section-container{padding:3rem 1rem}.bento-card{padding:1.25rem}}.theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--ink-ghost);background:transparent;color:var(--ink-soft);cursor:pointer;transition:border-color .3s var(--ease-out),color .3s var(--ease-out),transform .3s var(--ease-out),background .3s var(--ease-out);flex-shrink:0}.theme-toggle:hover{border-color:var(--accent);color:var(--accent-deep);transform:rotate(15deg);background:var(--accent-faint)}.theme-toggle svg{width:18px;height:18px;transition:transform .4s var(--ease-bounce)}.theme-toggle:hover svg{transform:scale(1.1)}.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon,[data-theme=dark] .theme-toggle .icon-sun{display:block}[data-theme=dark] .theme-toggle .icon-moon{display:none}[data-theme=dark] .paper-texture{opacity:.015}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--ink-faint)}[data-theme=dark] .portrait-img{filter:brightness(.92) contrast(1.05)}[data-theme=dark] .portrait-frame:hover .portrait-img{filter:brightness(.96) contrast(1.08)}[data-theme=dark] .hero-name-main{background:linear-gradient(135deg,var(--ink) 0%,var(--ink-soft) 100%);-webkit-background-clip:text;background-clip:text}body.theme-transitioning p,body.theme-transitioning h1,body.theme-transitioning h2,body.theme-transitioning h3,body.theme-transitioning span,body.theme-transitioning a,body.theme-transitioning button,body.theme-transitioning input,body.theme-transitioning textarea,body.theme-transitioning label,body.theme-transitioning svg,body.theme-transitioning section,body.theme-transitioning nav,body.theme-transitioning footer,body.theme-transitioning div,body.theme-transitioning article{transition:color .4s var(--ease-out),background-color .4s var(--ease-out),border-color .4s var(--ease-out),box-shadow .4s var(--ease-out)!important}.toast{position:fixed;bottom:2rem;right:2rem;z-index:99999;display:flex;align-items:center;gap:.75rem;padding:1rem 1.4rem;background:var(--ink);color:var(--paper);border-radius:var(--radius-lg);font-size:var(--fs-sm);font-weight:500;box-shadow:var(--shadow-hover);pointer-events:none;transform:translateY(120%);opacity:0;transition:transform .45s var(--ease-bounce),opacity .3s var(--ease-out);max-width:320px}.toast.toast--show{transform:translateY(0);opacity:1}.toast.toast--error{background:#7a2a30}.toast-icon{flex-shrink:0;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent)}.toast.toast--error .toast-icon{background:var(--accent-deep)}.toast-text{display:flex;flex-direction:column;gap:.15rem}.toast-title{font-weight:600;letter-spacing:.01em}.toast-sub{font-size:var(--fs-xs);opacity:.75;font-family:"Noto Serif JP",serif;font-weight:200;letter-spacing:.08em}@media(max-width:480px){.toast{bottom:1rem;right:1rem;left:1rem;max-width:unset}}@media print{.nav,.petals-container,.paper-texture,#ink-canvas,.scroll-progress,.hero-scroll-hint{display:none!important}.section{page-break-inside:avoid}body{background:#fff;color:#000}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.petal{display:none}.anim-fade-up,.anim-reveal{opacity:1;transform:none}.cursor-ring,.cursor-dot{display:none!important}}.cursor-ring{position:fixed;width:36px;height:36px;border:1.5px solid var(--accent);border-radius:50%;pointer-events:none;z-index:99999;transform:translate(-50%,-50%);transition:width .25s var(--ease-out),height .25s var(--ease-out),border-color .25s var(--ease-out),opacity .25s var(--ease-out),background .25s var(--ease-out);opacity:.6;mix-blend-mode:exclusion}.cursor-dot{position:fixed;width:5px;height:5px;background:var(--accent-deep);border-radius:50%;pointer-events:none;z-index:99999;transform:translate(-50%,-50%);transition:opacity .2s}.cursor-ring.hovering{width:56px;height:56px;border-color:var(--accent-deep);opacity:.35;background:var(--accent-glow-faint)}.cursor-ring.clicking{width:28px;height:28px;opacity:.9}@media(hover:none){.cursor-ring,.cursor-dot{display:none!important}}.btn-magnetic{transition:transform .3s var(--ease-out),background .35s var(--ease-out),border-color .35s var(--ease-out),box-shadow .35s var(--ease-out)}.bento-card{position:relative;overflow:hidden}.bento-card:before{content:"";position:absolute;width:250px;height:250px;border-radius:50%;background:radial-gradient(circle,var(--accent-spot) 0%,transparent 70%);pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .4s var(--ease-out);z-index:0}.bento-card:hover:before{opacity:1}.bento-card>*{position:relative;z-index:1}.project-sketch:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,var(--shimmer) 45%,var(--shimmer-peak) 50%,var(--shimmer) 55%,transparent 60%);transform:translate(-100%);transition:none;pointer-events:none;z-index:2}.project-card:hover .project-sketch:after{animation:shimmer .8s ease-out forwards}@keyframes shimmer{to{transform:translate(100%)}}.section-line{position:relative;overflow:visible}.section-line:before{content:"";position:absolute;left:0;top:0;width:0%;height:100%;background:var(--accent-deep);border-radius:2px;transition:width .8s var(--ease-out)}.section-line.visible:before{width:100%}.nav-link{overflow:visible}.nav-link .link-ripple{position:absolute;bottom:-2px;left:50%;width:6px;height:6px;border-radius:50%;background:var(--accent);transform:translate(-50%) scale(0);opacity:0;pointer-events:none}.nav-link:hover .link-ripple{animation:linkRipple .6s var(--ease-out) forwards}@keyframes linkRipple{0%{transform:translate(-50%) scale(0);opacity:.7}to{transform:translate(-50%) scale(8,2);opacity:0}}.bento-pill{position:relative;overflow:hidden;cursor:default;-webkit-user-select:none;user-select:none;transform:translateY(0);transition:all .25s var(--ease-out),transform .15s var(--ease-bounce)}.bento-pill:active{transform:translateY(1px) scale(.96)}.bento-pill .pill-ripple{position:absolute;border-radius:50%;background:var(--accent-ripple);transform:scale(0);animation:pillRipple .5s ease-out forwards;pointer-events:none}@keyframes pillRipple{to{transform:scale(2.5);opacity:0}}.bento-stat-num{transition:text-shadow .3s var(--ease-out)}a.bento-stat:hover .bento-stat-num{text-shadow:0 0 20px var(--accent-text-glow)}.section-header{position:relative}.section-num{display:inline-block;transition:transform .5s var(--ease-bounce)}.section-title:hover .section-num{transform:translateY(-3px) rotate(-8deg) scale(1.15)}.hero-name-main{position:relative;background-size:200% 100%;transition:background-position .6s var(--ease-out)}.hero-name-main:hover{background-position:100% 0}.project-sketch{position:relative;overflow:hidden}
