/* ayarion · gradient editorial · upright contour-cut artwork */
@font-face{font-family:"DotGothic16";src:url("assets/fonts/DotGothic16-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
:root{
  --paper:#f3ecdf;--ink:#242322;--muted:#5e5a53;--line:#88857b;
  --blue:#bbd8df;--peach:#f3c8a7;--pink:#ecc2cf;--sage:#d2ddb9;
  --font-display:"Baskerville","Times New Roman","Yu Mincho","Hiragino Mincho ProN",serif;
  --font-japanese:"Yu Mincho","Hiragino Mincho ProN","Times New Roman",serif;
  --font-body:"DotGothic16","Yu Gothic",sans-serif;
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);
  --press-duration:160ms;--morph-duration:240ms;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:32px;overflow-x:clip}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:17px;line-height:1.9;overflow-x:clip}
body::before{content:"";position:fixed;inset:0;z-index:5;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' opacity='.4' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-weight:400;font-style:normal}
a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:6px}
.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}
.skip-link{position:fixed;z-index:10;top:12px;left:12px;padding:10px 18px;background:var(--paper);border:1px solid var(--ink);transform:translateY(-160%)}
.skip-link:focus{transform:none}
.site-header{position:absolute;inset:0 0 auto;z-index:3;max-width:1440px;margin:auto;padding:24px clamp(24px,5vw,76px);display:flex;align-items:center;justify-content:space-between;gap:24px}
.wordmark{text-decoration:none;font:400 32px/1.1 var(--font-display)}
.site-nav{display:flex;gap:clamp(16px,3vw,42px)}
.nav-link{position:relative;display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font:400 14px/1.2 var(--font-display);letter-spacing:.16em}
.nav-link::after{content:"";position:absolute;left:0;right:.16em;bottom:6px;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 180ms var(--ease-out)}
.nav-link:focus-visible::after{transform:scaleX(1)}
.hero{position:relative;isolation:isolate;min-height:min(760px,88svh);padding:150px 24px 112px;display:grid;place-items:center;background:radial-gradient(ellipse at 3% 46%,var(--blue),transparent 65%),radial-gradient(ellipse at 76% 12%,var(--pink),transparent 55%),radial-gradient(ellipse at 100% 68%,var(--peach),transparent 65%),radial-gradient(ellipse at 36% 100%,var(--sage),transparent 55%),var(--paper)}
.hero-type{width:min(100%,870px);position:relative;z-index:1;text-align:center}
.hero-kicker{margin-bottom:24px;font:400 15px/1.4 var(--font-display);letter-spacing:.46em;padding-left:.46em}
.hero-frame{position:relative;border:1px solid var(--line);border-radius:999px;padding:0 34px 16px}
.hero h1{font-family:var(--font-display);font-size:clamp(88px,16.5vw,220px);line-height:1.12;letter-spacing:-.055em;padding-right:.055em}
.hero-tagline{margin-top:32px;font-family:var(--font-japanese);font-size:clamp(19px,2.1vw,27px);letter-spacing:.2em}
.spark{display:block;width:35px;aspect-ratio:1;background:var(--ink);clip-path:polygon(50% 0,55% 43%,100% 50%,55% 56%,50% 100%,45% 56%,0 50%,45% 43%);pointer-events:none}
.spark--hero{position:absolute;width:78px;right:8%;top:-42px}
.sunburst{position:absolute;width:380px;aspect-ratio:1;border-radius:50%;pointer-events:none;background:repeating-conic-gradient(from 3deg,#8e6a573a 0deg .5deg,transparent .5deg 6deg);-webkit-mask-image:radial-gradient(circle,transparent 0 12%,#0009 13%,#0008 27%,transparent 71%);mask-image:radial-gradient(circle,transparent 0 12%,#0009 13%,#0008 27%,transparent 71%)}
.sunburst--hero{top:42px;right:1%;width:470px}
.sunburst--blue{width:360px;left:-140px;bottom:-46px;background:repeating-conic-gradient(#527b8738 0deg .5deg,transparent .5deg 7deg)}
.page-content{width:min(1200px,calc(100% - 96px));margin:0 auto}
.about{display:grid;grid-template-columns:1fr 2.4fr .8fr;gap:36px;padding:78px 0 82px;position:relative;border-bottom:1px solid var(--line);align-items:start}
.about h2,.section-heading h2{font-family:var(--font-japanese);font-size:clamp(29px,3vw,40px);letter-spacing:.09em;line-height:1.5}
.about h2::after{content:"";display:block;width:40px;height:1px;background:var(--line);margin-top:18px}
.profile-name{font:400 38px/1.25 var(--font-display);margin-bottom:8px}
.about-copy>p:not(.profile-name){color:var(--muted);font-size:17px}
.contact-links{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.orbit{display:block;width:170px;height:170px;border:1px solid #88857b65;border-radius:50%;justify-self:end;position:relative}
.orbit .spark{position:absolute;width:22px;left:9px;top:10px}
.section-heading{display:flex;align-items:center;gap:28px;padding-top:55px}
.section-heading h2{flex-shrink:0}
.heading-rule{height:1px;background:var(--line);flex:1}
.section-caption{color:var(--muted);font:400 12px/1.5 var(--font-display);letter-spacing:.19em}
.project{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr);align-items:center;gap:9%;min-height:530px;padding:64px 0;isolation:isolate}
.project+.project{margin-top:24px}
.project--reverse{grid-template-columns:minmax(0,.85fr) minmax(0,1.25fr)}
.project--reverse .project-visual{order:2}
.project--reverse .project-copy{order:1;padding-left:36px}
/* Artwork stays on the content grid; each color field reaches both viewport edges. */
.project::before{content:"";z-index:-1;position:absolute;pointer-events:none;top:-8%;bottom:-8%;left:50%;width:100vw;transform:translateX(-50%);background:radial-gradient(ellipse at 12% 65%,#bbd8df85,transparent 62%),radial-gradient(ellipse at 85% 30%,#ecc2cf75,transparent 64%);-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}
.project--ojimate::before{background:radial-gradient(ellipse at 76% 45%,#d2ddb9a6,transparent 62%),radial-gradient(ellipse at 5% 70%,#f3c8a78a,transparent 54%)}
.project--kinto-log::before{background:radial-gradient(ellipse at 12% 40%,#bbd8df94,transparent 68%),radial-gradient(ellipse at 94% 80%,#ecc2cf80,transparent 58%)}
.project-visual{position:relative;min-width:0;margin:0;width:100%}
.project-visual img{width:100%;object-fit:contain}
.project-copy{position:relative;min-width:0}
.project-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px}
.project-visual--placeholder{min-height:360px;display:grid;place-items:center;padding:32px;background:linear-gradient(135deg,#d8e2dd,#f0d6c4 52%,#cbdde4);border:1px solid #88857b80;border-radius:2px;box-shadow:10px 12px 0 #24232218}
.project-visual--placeholder span{max-width:80%;font:400 clamp(24px,4vw,50px)/1.25 var(--font-display);text-align:center;letter-spacing:.02em}
.project-copy h3{font:400 clamp(44px,5.6vw,72px)/1.15 var(--font-display);letter-spacing:-.035em;margin-bottom:32px;overflow-wrap:anywhere}
.project--togame .project-copy{display:flex;flex-direction:column;align-items:center;justify-self:start;width:fit-content;max-width:100%}
.project-copy h3:has(+.project-description){margin-bottom:16px}
.project-description{max-width:32ch;margin:0 0 26px;color:var(--muted);font:400 clamp(15px,1.2vw,17px)/1.8 var(--font-japanese);letter-spacing:.025em;text-wrap:pretty;word-break:keep-all}
.project-visual--arch{width:min(370px,86%);height:480px;margin-inline:auto;border-radius:49% 49% 0 0 / 34% 34% 0 0;overflow:hidden;-webkit-mask-image:linear-gradient(#000 94%,transparent);mask-image:linear-gradient(#000 94%,transparent)}
.project-visual--arch img{width:100%;height:auto}
.project--businessai-origin-2026 .project-visual{width:min(65%,340px);margin-inline:auto}
.project--mersampo{min-height:490px}
.team{border-top:1px solid var(--line);margin-top:42px}
.footer-content{position:relative;display:grid;grid-template-columns:1fr 1px 1fr;gap:72px;padding:68px 64px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.footer-content h2{font:400 24px/1.3 var(--font-display);margin-bottom:20px}
.footer-content h2::after{content:"";display:block;width:32px;height:1px;background:var(--line);margin-top:10px}
.skill-list{display:flex;flex-wrap:wrap;list-style:none;gap:8px 22px;padding:0;margin:0;font-size:16px}
.footer-divider{background:var(--line);position:relative}
.footer-divider .spark{position:absolute;width:24px;top:45%;left:-12px}
#contact-status{color:var(--muted);font-size:16px}
.site-footer{position:relative;text-align:center;padding:38px 0 64px;font:400 13px var(--font-display);color:var(--muted)}
.sunburst--footer{right:-180px;bottom:-150px;width:380px}

/* Keep paint separate from controls: Safari's toolbar changes the fixed viewport.
   The fabric wrapper itself extends above/below it, with no parent clipping.
   Safe-area padding belongs to controls, never to the edge-to-edge fabric. */
/* A small time-of-day pixel Chihuahua on a soft gradient. */
.opening{display:none;position:fixed;inset:0;z-index:20;overflow:hidden;isolation:isolate;touch-action:none;overscroll-behavior:none;background:var(--paper);transition:opacity 750ms ease}
.opening::before{content:"";position:absolute;inset:-15%;z-index:-1;background:radial-gradient(ellipse at 12% 35%,#bbd8dfb3,transparent 60%),radial-gradient(ellipse at 80% 20%,#ecc2cf91,transparent 58%),radial-gradient(ellipse at 90% 82%,#f3c8a799,transparent 62%),radial-gradient(ellipse at 20% 95%,#d2ddb966,transparent 58%),var(--paper);filter:blur(45px)}
html[data-opening],html[data-opening] body{background-color:var(--paper);overscroll-behavior:none}
html[data-opening]{overflow:hidden;scroll-behavior:auto;overflow-anchor:none}
html[data-opening] body{position:fixed;top:0;left:0;right:0;width:100%;overflow:hidden}
html[data-opening] .opening{display:grid;place-items:center}
html[data-opening] main,html[data-opening] .site-header,html[data-opening] .skip-link{pointer-events:none}
html[data-opening] main,html[data-opening] .site-header{transition:opacity 750ms ease}
html[data-opening="pending"] main,html[data-opening="pending"] .site-header,html[data-opening="active"] main,html[data-opening="active"] .site-header,html[data-opening="paused"] main,html[data-opening="paused"] .site-header{opacity:0}
html[data-opening="leaving"] main,html[data-opening="leaving"] .site-header{opacity:1}
.opening-dog,.opening-dog canvas{width:144px;height:144px}
.opening-dog canvas{display:block;image-rendering:pixelated}
.opening-dog canvas[hidden]{display:none}
.opening-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;position:relative;z-index:1}
.opening-status{height:20px;color:var(--ink);font:400 13px/20px var(--font-body);letter-spacing:.16em;padding-left:.16em}
.opening-dots{display:inline-flex;letter-spacing:0}
.opening-dots span{animation:opening-dot 1.2s ease-in-out infinite;opacity:.3}
.opening-dots span:nth-child(2){animation-delay:.2s}
.opening-dots span:nth-child(3){animation-delay:.4s}
.opening-progress{width:128px;height:2px;overflow:hidden;background:#24232225;border-radius:999px}
.opening-progress span{display:block;width:38%;height:100%;background:var(--ink);border-radius:inherit;animation:opening-scan 1.5s ease-in-out infinite}
@keyframes opening-dot{50%{opacity:1}}
@keyframes opening-scan{0%{transform:translateX(-110%)}100%{transform:translateX(365%)}}
.opening.is-leaving{opacity:0;pointer-events:none}
@media(prefers-reduced-motion:reduce){.opening{transition:opacity 150ms linear}.opening-dots span,.opening-progress span{animation:none;opacity:1}.opening-progress span{width:100%;transform:none}}

/* Two layers morph with transform/opacity. Native links open immediately. */
.pressable{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:9px 18px;font:400 17px/1.55 var(--font-body);text-decoration:none;cursor:pointer;transition:transform var(--press-duration) var(--ease-out)}
.pressable::before,.pressable::after{content:"";position:absolute;z-index:-1;pointer-events:none;transition:transform var(--morph-duration) var(--ease-in-out),opacity var(--morph-duration) var(--ease-out)}
.text-link::before,.project-link::before{height:1px;background:var(--ink);left:18px;right:18px;bottom:7px;transform-origin:center}
.pressable::after{inset:0;border:1px solid #88857b70;border-radius:999px;background:linear-gradient(110deg,#bbd8dfbd,#ecc2cf9e 65%,#f3c8a7a3);opacity:0;transform:scale(.94,.82)}
.pressable.is-pressed,.pressable:active{transform:scale(.97)}
.pressable.is-pressed::after,.pressable:active::after{opacity:1;transform:scale(1)}
.pressable.is-pressed::before,.pressable:active::before{opacity:0;transform:scaleX(.72)}
.link-arrow{display:inline-block;transition:transform var(--press-duration) var(--ease-out)}
.pressable.is-pressed .link-arrow,.pressable:active .link-arrow{transform:translate(2px,-2px)}
.download-link{flex-direction:column;gap:3px;padding:12px 24px 14px;margin-left:0}
.download-icon{width:30px;height:32px;margin-bottom:5px;transition:transform var(--press-duration) var(--ease-out)}
.download-label{font:400 13px/1.4 var(--font-body);letter-spacing:.13em}
.download-store{font:400 14px/1.5 var(--font-display);color:var(--muted)}
.download-link:active .download-icon,.download-link.is-pressed .download-icon{transform:translateY(3px) scale(.96)}
.pressable:focus-visible::after{opacity:.55;transform:scale(1)}
.section-reveal{opacity:1;transform:none}
.section-reveal[data-pending]{opacity:0;transform:translateY(20px)}
.section-reveal[data-animate]{transition:opacity 500ms var(--ease-out),transform 500ms var(--ease-out)}
.noscript{padding:24px;border-top:1px solid var(--line);text-align:center}
.noscript a{display:inline-block;margin:12px}
@media(hover:hover) and (pointer:fine){
  .nav-link:hover::after{transform:scaleX(1)}
  .pressable:hover::after{opacity:.65;transform:scale(1)}
  .pressable:hover::before{opacity:0;transform:scaleX(.8)}
  .pressable:hover .link-arrow{transform:translate(2px,-2px)}
  .pressable.is-pressed::after,.pressable:active::after{opacity:1}
}
@media(max-width:1000px){
  .hero-type{width:min(86%,770px)}
  .hero h1{font-size:clamp(88px,16.5vw,176px)}
  .page-content{width:calc(100% - 64px)}
  .about{grid-template-columns:1fr 2fr}.orbit{display:none}
  .project{min-height:430px;gap:6%;padding-block:48px}
  .project--reverse .project-copy{padding-left:12px}
  .project-visual--arch{height:400px}
  .footer-content{gap:36px;padding:54px 20px}
}
@media(max-width:600px){
  /* The gradient fills the first view, including notches and browser-bar changes.
     Keep its paint separate from the safe-area padding of the title/navigation. */
  html{background:var(--paper)}
  body{font-size:16px}.site-header{padding:calc(22px + env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) 22px max(20px,env(safe-area-inset-left,0px));gap:12px;flex-wrap:wrap}
  .wordmark{font-size:27px}.site-nav{gap:15px}
  .nav-link{font-size:12px;letter-spacing:.06em}
  .hero{min-height:max(535px,100vh);min-height:max(535px,100svh);padding:calc(132px + env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) calc(96px + env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}
  @supports(height:100dvh){.hero{min-height:max(535px,100dvh)}}
  .hero-type{width:100%}
  .hero-kicker{font-size:12px;letter-spacing:.34em;margin-bottom:28px}
  .hero-frame{padding:5px 12px 13px}.hero h1{font-size:clamp(82px,20vw,126px)}
  .hero-tagline{margin-top:26px;font-size:17px;letter-spacing:.1em}
  .spark--hero{width:45px;right:7%;top:-25px}
  .sunburst--hero{width:310px;top:50px;right:-140px}
  .sunburst--blue{width:240px;left:-120px;bottom:-55px}
  .page-content{width:calc(100% - 40px)}
  .about{grid-template-columns:1fr;gap:26px;padding:48px 4px 46px}
  .about h2,.section-heading h2{font-size:28px;letter-spacing:.04em}
  .about h2::after{margin-top:12px;width:30px}
  .profile-name{font-size:33px}.about-copy>p:not(.profile-name){font-size:16px}
  .section-heading{padding-top:40px;gap:18px}
  .section-caption{display:none}
  .project,.project--reverse{grid-template-columns:minmax(0,1fr);gap:26px;min-height:0;padding:48px 0 40px}
  .project+.project{margin-top:20px}
  .project--reverse .project-visual,.project-visual{order:0}
  .project--reverse .project-copy,.project-copy{order:1;padding-left:0;text-align:center}
  .project-copy h3{font-size:44px;margin-bottom:16px}
  .project--togame .project-copy{justify-self:center}
  .project-description{margin-inline:auto;margin-bottom:22px}
  .project-actions{justify-content:center}
  .project-visual{width:min(100%,440px);margin-inline:auto}
  .project-visual--arch{width:min(280px,85%);height:365px}
  .project--mersampo .project-visual{width:108%;max-width:none;margin-left:-4%}
  .download-link{margin-left:0}.download-icon{width:28px;height:30px}
  .project-visual--placeholder{min-height:260px}
  .team{margin-top:18px}
  .footer-content{grid-template-columns:minmax(0,1fr);gap:40px;padding:42px 8px}
  .footer-divider{display:none}.footer-content h2{font-size:22px}
  .skill-list{gap:8px 20px}
  .site-footer{padding-block:30px 46px}
}
/* Safari paints the status/toolbar regions itself. Match that solid paper color
   at the actual viewport edges instead of extending patterned paint offscreen.
   Keep the middle saturated; only the first/last ~10% gently blend into paper. */
@media(max-width:600px){
  :root{--screen-edge-fade:clamp(64px,10svh,96px);--screen-edge-blend:linear-gradient(to bottom,var(--paper) 0 6px,transparent var(--screen-edge-fade),transparent calc(100% - var(--screen-edge-fade)),var(--paper) calc(100% - 6px) 100%)}
  .hero{overflow:clip}
  .hero::after,.opening::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:var(--screen-edge-blend)}
  .opening-center{position:relative;z-index:1}
  .opening-skip{z-index:1}
  .opening::after{transition:opacity 750ms ease}
  .opening.is-leaving::after{opacity:0}
  body::before{-webkit-mask-image:linear-gradient(transparent,#000 var(--screen-edge-fade),#000 calc(100% - var(--screen-edge-fade)),transparent);mask-image:linear-gradient(transparent,#000 var(--screen-edge-fade),#000 calc(100% - var(--screen-edge-fade)),transparent)}
}
@media(max-width:380px){
  .site-header{justify-content:center}
  .wordmark{font-size:26px}
  .site-nav{gap:20px}
  .hero{padding-top:calc(172px + env(safe-area-inset-top,0px))}
  .hero h1{font-size:77px}
  .hero-tagline{font-size:16px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .opening,html[data-opening] main,html[data-opening] .site-header{transition-duration:150ms}
  .opening::after{transition:none}
  .opening.is-leaving::after{opacity:1}
  .section-reveal,.section-reveal[data-pending]{transform:none}
  .section-reveal[data-animate]{transition:opacity 150ms linear}
  .pressable,.pressable::before,.pressable::after,.download-icon,.link-arrow,.nav-link::after{transition:opacity 150ms linear}
  .pressable:active,.pressable.is-pressed,.pressable::after,.pressable:hover .link-arrow,.pressable .link-arrow,.pressable .download-icon{transform:none!important}
}
