:root{--paper:#fdfdfb;--paper-soft:#f7f8fb;--ink:#414a66;--ink-soft:#6b7390;--blue:#6c8dc7;--blue-pale:#dbe6f6;--mint:#7ec9ad;--mint-pale:#ddf0e8;--lavender:#a291d6;--lavender-pale:#e9e3f7;--butter:#e8c96a;--butter-pale:#faf0d3;--blush:#e89a90;--radius:20px;--shadow:0 6px 24px #414a661a;--font-display:"Zen Maru Gothic", sans-serif;--font-body:"Zen Kaku Gothic New", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--ink);background:var(--paper);font-size:16px;line-height:1.9;overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:var(--blue)}:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:4px}.site-header{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--blue-pale);background:#fdfdfbe0;position:sticky;top:0}.site-header .inner{justify-content:space-between;align-items:center;gap:16px;max-width:1100px;margin:0 auto;padding:14px 24px;display:flex}.wordmark{font-family:var(--font-display);color:var(--ink);align-items:center;gap:10px;font-size:1.5rem;font-weight:700;text-decoration:none;display:flex}.site-nav{flex-wrap:wrap;gap:4px;display:flex}.site-nav a{font-family:var(--font-display);color:var(--ink-soft);border-radius:999px;padding:6px 14px;font-size:.92rem;text-decoration:none;transition:background .2s,color .2s}.site-nav a:hover{background:var(--blue-pale);color:var(--ink)}.nav-toggle{border:2px dashed var(--blue-pale);cursor:pointer;background:0 0;border-radius:14px;justify-content:center;align-items:center;width:44px;height:44px;padding:0;display:none}.nav-toggle-bars{width:20px;height:14px;display:block;position:relative}.nav-toggle-bars span{background:var(--ink);border-radius:999px;width:100%;height:2.5px;transition:top .25s,transform .25s,opacity .15s;position:absolute;left:0}.nav-toggle-bars span:first-child{top:0}.nav-toggle-bars span:nth-child(2){top:5.75px}.nav-toggle-bars span:nth-child(3){top:11.5px}.site-header.is-open .nav-toggle-bars span:first-child{top:5.75px;transform:rotate(45deg)}.site-header.is-open .nav-toggle-bars span:nth-child(2){opacity:0}.site-header.is-open .nav-toggle-bars span:nth-child(3){top:5.75px;transform:rotate(-45deg)}.spine{z-index:0;pointer-events:none;width:4px;position:absolute;left:50%;transform:translate(-50%)}.section-node{justify-content:center;margin:0 auto 18px;display:flex}.section-node span{background:var(--paper);width:18px;height:18px;box-shadow:0 0 0 6px var(--paper);border:3px solid;border-radius:50%;position:relative}.section-node span:after{content:"";background:currentColor;border-radius:50%;position:absolute;inset:3px}main{position:relative}main:before{content:"";border-left:3px dashed var(--blue-pale);z-index:-1;position:absolute;top:0;bottom:0;left:50%}.section{background:var(--paper);max-width:1100px;margin:0 auto;padding:88px 24px;position:relative}.eyebrow{font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;text-align:center;color:var(--ink-soft);margin-bottom:6px;font-size:.85rem}.section-title{font-family:var(--font-display);text-align:center;margin-bottom:14px;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:700}.section-lead{text-align:center;color:var(--ink-soft);max-width:620px;margin:0 auto 48px}.hero{text-align:center;background:var(--paper);max-width:1100px;margin:0 auto;padding:72px 24px 40px;position:relative}.hero h1{font-family:var(--font-display);margin-bottom:18px;font-size:clamp(2rem,6vw,3.4rem);font-weight:700;line-height:1.5}.hero h1 .hl{background:linear-gradient(transparent 68%, var(--butter-pale) 68%);padding:0 2px}.hero p.sub{color:var(--ink-soft);max-width:560px;margin:0 auto 30px}.hero-cta{flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:48px;display:flex}.btn{font-family:var(--font-display);border-radius:999px;padding:13px 32px;font-size:1rem;font-weight:700;text-decoration:none;transition:transform .2s,box-shadow .2s;display:inline-block}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 6px 18px #6c8dc766}.btn-ghost{background:var(--paper);color:var(--ink);border:2px dashed var(--blue)}.hero-illust{border-radius:var(--radius);overflow:hidden}.hero-illust img{width:100%}.about-grid{grid-template-columns:320px 1fr;align-items:center;gap:56px;display:grid}.about-portrait{width:320px;height:320px;box-shadow:var(--shadow), 0 0 0 3px var(--lavender-pale);border-radius:50%;justify-self:center;overflow:hidden}.about-portrait img{object-fit:cover;width:100%;height:100%;transform:scale(1.165)}.about-body h3{font-family:var(--font-display);margin-bottom:12px;font-size:1.3rem}.about-body p{margin-bottom:14px}.about-tags{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.tag{font-family:var(--font-display);border-radius:999px;padding:5px 14px;font-size:.82rem}.tag-break{display:none}.tag.t-blue{background:var(--blue-pale);color:#47679f}.tag.t-mint{background:var(--mint-pale);color:#3f8b6f}.tag.t-lav{background:var(--lavender-pale);color:#7a63b5}.tag.t-yel{background:var(--butter-pale);color:#a0821f}.skills-grid{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.skill-card{border-radius:var(--radius);text-align:center;box-shadow:var(--shadow);border-top:5px solid var(--blue);background:#fff;padding:28px 24px 30px;transition:transform .25s}.skill-card:nth-child(2){border-top-color:var(--mint)}.skill-card:nth-child(3){border-top-color:var(--lavender)}.skill-card:hover{transform:translateY(-6px)}.skill-card img{aspect-ratio:1;width:100%;max-width:240px;height:auto;margin:0 auto 18px}.skill-card h3{font-family:var(--font-display);margin-bottom:10px;font-size:1.12rem}.skill-card p{color:var(--ink-soft);text-align:left;font-size:.92rem}.skill-tech{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;display:flex}.skill-tech span{font-family:var(--font-display);color:var(--ink-soft);border:1.5px dashed var(--blue-pale);border-radius:999px;padding:3px 12px;font-size:.78rem}.works-grid{grid-template-columns:repeat(2,1fr);gap:28px;max-width:720px;margin:0 auto;display:grid}.work-card{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;transition:transform .25s;overflow:hidden}.work-card:hover{transform:translateY(-6px)}.work-thumb{aspect-ratio:1;background:var(--paper);overflow:hidden}.work-thumb img{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.work-body{padding:20px 22px 24px}.work-body .work-kind{font-family:var(--font-display);letter-spacing:.1em;color:var(--blue);background:var(--blue-pale);border-radius:999px;margin-bottom:10px;padding:3px 12px;font-size:.78rem;display:inline-block}.work-card:nth-child(2) .work-kind{color:#3f8b6f;background:var(--mint-pale)}.work-body h3{font-family:var(--font-display);margin-bottom:6px;font-size:1.08rem}.work-body p{color:var(--ink-soft);font-size:.9rem}.skill-demo{border-top:2px dashed var(--blue-pale);flex-wrap:wrap;gap:4px 14px;margin-top:14px;padding-top:12px;font-size:.85rem;display:flex}.skill-demo a{font-family:var(--font-display);border-bottom:2px solid #0000;font-weight:700;text-decoration:none;transition:border-color .2s}.skill-demo a:after{content:" ↗";font-size:.8em}.skill-demo a:hover{border-bottom-color:var(--blue)}.demo-note{text-align:center;max-width:640px;color:var(--ink-soft);background:var(--butter-pale);border-radius:999px;margin:-28px auto 44px;padding:12px 20px;font-size:.86rem}.demo-note strong{color:var(--ink)}.demo-grid{grid-template-columns:repeat(3,1fr);align-items:start;gap:24px;display:grid}.demo-card{border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;flex-direction:column;height:100%;transition:transform .25s;display:flex;overflow:hidden}.demo-card:hover{transform:translateY(-6px)}.demo-thumb{aspect-ratio:16/9;background:var(--paper-soft);display:block;overflow:hidden}.demo-thumb img{object-fit:cover;width:100%;height:100%}.demo-body{flex-direction:column;flex:1;padding:20px 22px 24px;display:flex}.demo-kind{font-family:var(--font-display);letter-spacing:.1em;color:var(--blue);background:var(--blue-pale);border-radius:999px;align-self:flex-start;padding:2px 12px;font-size:.78rem;display:inline-block}.demo-card:nth-child(2) .demo-kind{color:#3f8b6f;background:var(--mint-pale)}.demo-card:nth-child(3) .demo-kind{color:#6f5bb0;background:var(--lavender-pale)}.demo-body h3{font-family:var(--font-display);margin:10px 0 8px;font-size:1.08rem}.demo-body>p{color:var(--ink-soft);font-size:.88rem}.demo-points{gap:6px;margin:14px 0 0;list-style:none;display:grid}.demo-points li{padding-left:18px;font-size:.82rem;line-height:1.7;position:relative}.demo-points li:before{content:"";background:var(--mint);border-radius:50%;width:8px;height:8px;position:absolute;top:.72em;left:0}.demo-links{flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:20px;display:flex}.demo-links .btn{padding:10px 20px;font-size:.86rem}.demo-covers{color:var(--ink-soft);opacity:.85;margin-top:12px;font-size:.74rem}.process-illust{margin-bottom:8px}.process-illust img{width:100%}.process-steps{grid-template-columns:repeat(4,1fr);gap:16px;max-width:980px;margin:0 auto;display:grid}.step{text-align:center}.step-icon{display:none}.step .step-num{font-family:var(--font-display);border:2px solid var(--blue);width:30px;height:30px;color:var(--blue);background:#fff;border-radius:50%;justify-content:center;align-items:center;margin:0 auto 8px;font-size:.8rem;font-weight:700;line-height:1;display:inline-flex}.step:nth-child(2) .step-num{border-color:var(--lavender);color:var(--lavender)}.step:nth-child(3) .step-num{border-color:var(--mint);color:var(--mint)}.step:nth-child(4) .step-num{border-color:var(--butter);color:#b8952c}.step h3{font-family:var(--font-display);margin-bottom:4px;font-size:1.02rem}.step p{color:var(--ink-soft);font-size:.85rem}.contact{background:var(--paper-soft);border-radius:32px}.contact-grid{grid-template-columns:1.2fr .8fr;align-items:center;gap:48px;display:grid}.contact-form label{font-family:var(--font-display);margin:18px 0 6px;font-size:.9rem;font-weight:700;display:block}.contact-form input,.contact-form textarea{width:100%;font-family:var(--font-body);color:var(--ink);border:2px solid var(--blue-pale);background:#fff;border-radius:12px;padding:12px 14px;font-size:1rem;transition:border-color .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--blue);outline:none}.contact-form textarea{resize:vertical;min-height:140px}.contact-form .btn{cursor:pointer;border:none;margin-top:24px}.contact-illust img{max-width:320px;margin:0 auto}.contact-mail{text-align:center;color:var(--ink-soft);margin-top:14px;font-size:.9rem}.site-footer{border-top:2px dashed var(--blue-pale);text-align:center;color:var(--ink-soft);padding:36px 24px;font-size:.88rem}.site-footer .wordmark{justify-content:center;margin-bottom:8px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.btn,.skill-card,.work-card,.demo-card{transition:none}}@media (max-width:860px){.about-grid{grid-template-columns:1fr;gap:32px}.about-portrait{width:240px;height:240px}.skills-grid{grid-template-columns:1fr;max-width:420px;margin:0 auto}.works-grid{grid-template-columns:1fr;max-width:300px;margin:0 auto}.demo-grid{grid-template-columns:1fr;max-width:460px;margin:0 auto}.demo-note{border-radius:16px;margin:-20px auto 32px}.contact-grid{grid-template-columns:1fr}.contact-illust{order:-1}.contact-illust img{max-width:200px}.process-steps{grid-template-columns:1fr;gap:20px;max-width:340px}.section{padding:64px 20px}main:before{display:none}}@media (max-width:640px){.site-header .inner{padding:12px 16px}.nav-toggle{display:flex}.site-nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--blue-pale);opacity:0;visibility:hidden;background:#fdfdfbf7;flex-direction:column;align-items:stretch;gap:2px;padding:10px 16px 16px;transition:opacity .22s,transform .22s,visibility .22s;position:absolute;top:100%;left:0;right:0;transform:translateY(-8px)}.site-header.is-open .site-nav{opacity:1;visibility:visible;transform:none}.site-nav a{border-radius:12px;padding:12px 14px;font-size:1rem}.process-illust{display:none}.process-steps{gap:0;max-width:400px;position:relative}.process-steps:before{content:"";border-left:3px dashed var(--blue-pale);position:absolute;top:36px;bottom:36px;left:35px}.step{text-align:left;grid-template-columns:72px 1fr;align-items:start;gap:18px;padding-bottom:30px;display:grid;position:relative}.step:last-child{padding-bottom:0}.step-icon{border:3px solid var(--blue-pale);width:72px;height:72px;box-shadow:0 0 0 6px var(--paper);background:#fff;border-radius:50%;display:block}.step:nth-child(2) .step-icon{border-color:var(--lavender-pale)}.step:nth-child(3) .step-icon{border-color:var(--mint-pale)}.step:nth-child(4) .step-icon{border-color:var(--butter-pale)}.step .step-num{vertical-align:middle;margin:0 8px 4px 0}.step h3{vertical-align:middle;display:inline-block}.step p{font-size:.88rem}}@media (max-width:560px){.about-tags{gap:6px}.tag{padding:5px 12px;font-size:.76rem}.tag-break{flex-basis:100%;height:0;display:block}}.contact-direct{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.contact-direct-label{font-family:var(--font-display);color:var(--ink-soft);font-size:.95rem;font-weight:700}.contact-direct-mail{font-family:var(--font-display);letter-spacing:.01em;color:var(--ink);border-bottom:3px dashed var(--blue-pale);word-break:break-all;padding-bottom:4px;font-size:clamp(1.1rem,4.6vw,1.7rem);font-weight:700;line-height:1.4;text-decoration:none;transition:border-color .2s,color .2s}.contact-direct-mail:hover{color:var(--blue);border-bottom-color:var(--blue)}.contact-direct-actions{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.contact-direct-actions .btn{padding:11px 24px;font-size:.9rem}.contact-direct-note{gap:8px;margin-top:10px;list-style:none;display:grid}.contact-direct-note li{color:var(--ink-soft);padding-left:20px;font-size:.85rem;line-height:1.85;position:relative}.contact-direct-note li:before{content:"";background:var(--blush);border-radius:50%;width:9px;height:9px;position:absolute;top:.72em;left:0}.page-404{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:80vh;padding:60px 24px;display:flex}.page-404 img{width:320px;margin-bottom:8px}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(24px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.btn,.skill-card,.work-card,.demo-card{transition:none}}@media (max-width:860px){.about-grid{grid-template-columns:1fr;gap:32px}.about-portrait{width:240px;height:240px}.skills-grid{grid-template-columns:1fr;max-width:420px;margin:0 auto}.works-grid{grid-template-columns:1fr;max-width:300px;margin:0 auto}.demo-grid{grid-template-columns:1fr;max-width:460px;margin:0 auto}.demo-note{border-radius:16px;margin:-20px auto 32px}.contact-grid{grid-template-columns:1fr}.contact-illust{order:-1}.contact-illust img{max-width:200px}.process-steps{grid-template-columns:1fr;gap:20px;max-width:340px}.section{padding:64px 20px}main:before{display:none}}@media (max-width:640px){.site-header .inner{padding:12px 16px}.nav-toggle{display:flex}.site-nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--blue-pale);opacity:0;visibility:hidden;background:#fdfdfbf7;flex-direction:column;align-items:stretch;gap:2px;padding:10px 16px 16px;transition:opacity .22s,transform .22s,visibility .22s;position:absolute;top:100%;left:0;right:0;transform:translateY(-8px)}.site-header.is-open .site-nav{opacity:1;visibility:visible;transform:none}.site-nav a{border-radius:12px;padding:12px 14px;font-size:1rem}.process-illust{display:none}.process-steps{gap:0;max-width:400px;position:relative}.process-steps:before{content:"";border-left:3px dashed var(--blue-pale);position:absolute;top:36px;bottom:36px;left:35px}.step{text-align:left;grid-template-columns:72px 1fr;align-items:start;gap:18px;padding-bottom:30px;display:grid;position:relative}.step:last-child{padding-bottom:0}.step-icon{border:3px solid var(--blue-pale);width:72px;height:72px;box-shadow:0 0 0 6px var(--paper);background:#fff;border-radius:50%;display:block}.step:nth-child(2) .step-icon{border-color:var(--lavender-pale)}.step:nth-child(3) .step-icon{border-color:var(--mint-pale)}.step:nth-child(4) .step-icon{border-color:var(--butter-pale)}.step .step-num{vertical-align:middle;margin:0 8px 4px 0}.step h3{vertical-align:middle;display:inline-block}.step p{font-size:.88rem}}@media (max-width:560px){.about-tags{gap:6px}.tag{padding:5px 12px;font-size:.76rem}.tag-break{flex-basis:100%;height:0;display:block}}.field-error{color:#c2564c;margin-top:6px;font-size:.82rem}.form-failure{border-left:4px solid var(--blush);background:#fdecea;border-radius:14px;margin-top:18px;padding:12px 16px;font-size:.86rem;line-height:1.8}.form-failure a{font-weight:700}.contact-done{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.contact-done-title{font-family:var(--font-display);color:var(--ink);font-size:1.2rem;font-weight:700}.contact-done-title:before{content:"✓";text-align:center;background:var(--mint);color:#fff;border-radius:50%;width:26px;height:26px;margin-right:10px;font-size:.9rem;line-height:26px;display:inline-block}.contact-done-note{color:var(--ink-soft);font-size:.82rem}.contact-done .btn{margin-top:8px}.contact-form input:disabled,.contact-form textarea:disabled{opacity:.6}.page-404{text-align:center;max-width:640px;margin:0 auto;padding:80px 24px 100px}.page-404 img{max-width:260px;margin:0 auto 24px}.page-404 h1{font-family:var(--font-display);margin-bottom:12px;font-size:1.5rem}.page-404 p{color:var(--ink-soft);margin-bottom:28px}@media (max-width:640px){.contact-direct{text-align:center;align-items:center}.contact-direct-actions{justify-content:center;width:100%}.contact-direct-note{text-align:left}}::selection{background:var(--blue-pale);color:var(--ink)}
